Roomle Content Naming Conventions
Patterns for Naming Parameters and Variables in Given Situations
Can change element type to
canBe-
canBeFootstool
Boolean
Can change to a situation
can(Be)-
canBeFreestanding
Boolean
Can have accessory or neighbour of type docked
canHave-
canHaveFootstool
Boolean
Has accessory or neighbour of type docked
has-
hasFootstool, hasLegs
Boolean
Has child behind a dock mask
has<Mask>Child
hasLeftChild, hasTopChild
Boolean
Has accessory of type
<accessory>Type
legsType, handleType
String / matching with that accessory's parameter
The main type of this component
elementType
elementType
String
Is child behind parent's mask
is<Parent's Mask>Child
isLeftChild, isTopChild
Boolean
Is in a situation
is-
isFreestanding, isOnFloor, isRoot, isCorner
Boolean
Is of type
is-
isFootstool
Boolean
Situation of a [neighbour/child] behind a connection mask
<mask> -[Neighbour/Child/][Is/Has/CanBe]
leftNeighbourElementType, topChildHasBottomShelf, rightNeighbourIsCorner
depends on the situation
Docking mask should be allowed <=> can dock with that mask
allow- <mask> -Dock
allowLeftDock
Boolean
Count of accessories docked
count- (-docked)
countFootstools(Docked), countPillows
Integer
Main component's material
material
material
Material
Distinguish between main component's materials if we can't say one of them is the main
<part>Material
countertopMaterial, sidesMaterial, frontsMaterial
Material
Material of some accessory
<accessory>Material
legsMaterial, handleMaterial
Material
Dimensions of components that go in volume
width, depth, height, diameter, radius
width, depth, height, diameter, radius
Decimal (!)
Position of docking points or accessories
<situation>Pos[X/Y/Z]
leftDockPosX, topDockPosZ
Decimal (!)
Base dimensions for accessories or dock placement
<situation>[Width/Depth/Height/Length]
legsBaseWidth, dockDepth
Decimal (!)
Sizes of construction elements
<part>[Width/Depth/Height/Length/Thickness]
woodThickness,
Decimal (!)
Gaps or distance between, offset of first
<situation>[Gap\Offset]
freestandingDockGap, holesOffset, holesDistance
Decimal (!)
Always use camelCase to separate words in variable and parameter names instead of using underlines_to_separate_words. If the identifier has an abbreviation, let only the first character of the abbreviation be uppercase, like weHaveAbcAbbreviation or abcAbbreviation instead of weHaveABCAbbreviation or aBCAbbreviation.
Naming Components
Since the componentId (also referred to as External Identifier
) already has the catalogId, it is clearly distinguishable to which project it belongs. A delimiter _
follows. Last part of the componentId should denote what the actual thing is.
It is strogly recommended to use lowercase characters for componentId only.
The format should then be: catalogid:projectname_partname
The reason is that this is much easier to remember as for example having to remember Celeste_FootStool or Celeste_Footstool.
It might be necessary to use uppercase characters in the componentId in some rare cases. This is possible but you will have to accept a warning pop-up to reduce the chances of using uppercase characters by unintended.
Examples:
We have a Celeste sofa system by ABC-Design:
abcdesign:celeste_master
- the master component for following subcomponents
abcdesign:celeste_1seater
abcdesign:celeste_corner
abcdesign:celeste_longchair
If there are more articles in one component, use plural.
abcdesign:celeste_pillows
Naming items
ItemIds should carry information on to which componentId they lead to. It does not have to be equal, but the content creator should understand this from reading the itemId already. Pattern for selecting itemId:
catalogueId:projectname_partname_[distinctiveParameterValue]
Examples:
abcdesign:celeste_longchair_left
, abcdesign:celeste_longchair_right
(longchair_left and longchair_right are elementType values, we omit "master" in itemId)
abcdesign:celeste_1seater_1200
- single seater of width 1200 (you expect that this is width in sofa elements)
shelfmasters:supershelf_frame_800_400
leads to a frame of size 800x400 (probably width x height) -> If there are more dimensions in the itemId, follow the natural width x depth x height order
Language Specific Characters for Identifiers
Use english equivalents for the identifiers and componentIds. If, for any reason, you need to write them in any different language, handle the language specific characters in a way that is common to that given language, for example:
German
ä, ö, ü -> replace with ae, oe, ue
ß -> replace with ss
Czech
ignore diacritic marks ě, š, ž, ý, á, ů -> e, s, z, y, a, u etc.
This is of course not relevant for labels or string content, where you should display the texts correctly.
Naming docking masks
The docking masks should contain information about what can be docked behind it. Imagine it as a connector, where you specify the standard you need for the other part to connect. There can be several situations:
you dock a part of a modular product (sofa, shelf frame) - use the same prefix of the product as you use for the componentId
you can dock one concrete part - use a docking mask describing the part
you can dock a type of accessories - use an umbrella term of matching accessories
Use the masks as they are described above in cases, where there is only one child docking point on the child side - that means that the child has only one connector and the position of the docking does not influence the child further. However, if you need to distinguish this (generally if the child is not smaller than parent or is not lower in the product hierarchy), use one of words like: left, right, bottom, top, back, forward etc. from the perspective of the parent. Example: sofamoduleLeft, where the parent docking point is on the left in the parent component and on the right in the child component. Be aware that this takes some time to get used to this when you work in the child's perspective.
Last updated