FoodItemMaster
Backend
1. Variables
// food item unit
ensure var VarSetOfTextFoodItemUnit kind: setOfText
modules: ["MyFitnessPal"]
deploy: fixedOnDeploy
value: "<root>
<node key='keyGm'>gm</node>
<node key='keyMl'>ml</node>
</root>"
2. FoodItemMaster
// fields ending with "*" suffix are required
ensure spreadsheet: FoodItemMaster
withFields: ["FoodName*", "ServingSize*", "Unit*", "Calories*", "Protein",
"Carbohydrate", "Fat"]
ofTypes: [text, number, pickText, number, decimal,
decimal, decimal]
modules: ["MyFitnessPal"]
readRoleSet: [Member]
insertRoleSet: [Member]
updateRoleSet: [Member]
removeRoleSet: [Member]
ensure form EntityFoodItem
modules: ["MyFitnessPal"]
ensure section: Details
ensure field ServingSize min: 0
ensure field Unit sourceVar: VarSetOfTextFoodItemUnit
ensure field Calories suffix: " cal" min: 0
ensure field Protein min: 0.0 numberOfDigitsAfterPeriod: 2
ensure field Carbohydrate min: 0.0 numberOfDigitsAfterPeriod: 2
ensure field Fat min: 0.0 numberOfDigitsAfterPeriod: 2
ensure formula FormulaCalcProtein
assignToField: Details.Protein
formula: "(${f:Details.Calories})/4"
ensure formula FormulaCalcCarbs
assignToField: Details.Carbohydrate
formula: "(${f:Details.Calories})/4"
ensure formula FormulaCalcFat
assignToField: Details.Fat
formula: "(${f:Details.Calories})/9"
ensure spreadsheet FoodItemMaster
ensure layoutSpreadsheet List kind: list
firstLine.first.lineFields: [Details.FoodName]
firstLine.caption.lineFields: [Details.Calories]
secondLine.first.lineFields: [Details.ServingSize]
secondLine.first.showLabels: true
thirdLine.first.lineFields: [Details.Unit]
thirdLine.first.showLabels: true
fourthLine.first.showLabels: true
fifthLine.first.showLabels: true
Frontend
1. Actions
a. AddFoodItem
ensure action AddFoodItem kind: rowInsert
modules: ["MyFitnessPal"]
icon: "AddCircleOutlineRounded"
spreadsheet: FoodItemMaster
sendMessageToInbox: true
b. EditFoodItemSheet
ensure action EditFoodItemSheet kind: spreadsheetEditor
modules: ["MyFitnessPal"]
icon: "DescriptionRounded"
spreadsheet: FoodItemMaster
layoutSpreadsheet: List
2. Group actions
ensure group MyFitnessPal
modules: ["MyFitnessPal"]
allowPromptAssistant: true
actionPermission: {
'EditFoodItemSheet': {
'menuGroup': '3',
'roles': [
'Member'
]
}
}