📁 Showcase
Master Data

Master data

Backend

1. Variables

// picker variable for stock status

ensure var VarSetOfTextStockStatus kind: setOfText 
  deploy: fixedOnDeploy 
  value: "<root>
      <node color='success' key='1'>In Stock</node>
      <node color='primary' key='2'>Low Stock</node>
      <node color='error' key='3'>Out of Stock</node>
    </root>"

2. ItemSizeMaster

// this spreadsheet stores item size information

ensure spreadsheet: ItemSizeMaster
  withFields: [Size, Stock]
  ofTypes: [text, logNumber]
  removeRoleSet: [Owner]
  insertRoleSet: [Owner]
  updateRoleSet: [Owner]
  readRoleSet: [Owner]

ensure layoutSpreadsheet ListLayout kind: list 
  filter.showSearchBar: true 
  firstLine.first.lineFields: [Size]

ensure spreadsheet ItemSizeMaster searchables: [Size] 

ensure form EntityItemSize label: "Tile Size"

3. ItemTypeMaster

// this spreadsheet stores item type information

ensure spreadsheet: ItemTypeMaster
  withFields: [Type, Stock]
  ofTypes: [text, logNumber]
  removeRoleSet: [Owner]
  insertRoleSet: [Owner]
  updateRoleSet: [Owner]
  readRoleSet: [Owner]

ensure layoutSpreadsheet ListLayout kind: list 
  filter.showSearchBar: true 
  firstLine.first.lineFields: [Type]

ensure spreadsheet ItemTypeMaster searchables: [Type] 

ensure form EntityItemType label: "Tile Type"

4. ItemMaster

// this spreadsheet stores item information

ensure spreadsheet: ItemMaster
  withFields: [Name, Description, Price]
  ofTypes: [text, paragraph, number]
  removeRoleSet: [Owner]
  insertRoleSet: [Owner]
  updateRoleSet: [Owner]
  readRoleSet: [Owner]

ensure form EntityItem label: "Tile" 
ensure section: Details
ensure field Description lineCount: 5
ensure field Price prefix: "₹"
ensure field ItemTypeRef kind: ref
  spreadsheet: ItemTypeMaster
  layoutSpreadsheet: ListLayout
  copyFieldMap: {
    'ItemTypeMasterRowId': '$RowId',
    'ItemType': 'Type'
  }
ensure field ItemSizeRef kind: ref
  spreadsheet: ItemSizeMaster
  layoutSpreadsheet: ListLayout
  copyFieldMap: {
    'ItemSizeMasterRowId': '$RowId',
    'ItemSize': 'Size'
  }
ensure field AvailableQuantity kind: logNumber
ensure field StockStatus kind: pickText   
  sourceVar: VarSetOfTextStockStatus 
  defaultOptionId: "1"

ensure spreadsheet ItemMaster
  searchables: [Name, Price, ItemType, ItemSize] 
  queryables: [ItemTypeMasterRowId, ItemSizeMasterRowId, Price, ItemType, ItemSize] 

ensure layoutSpreadsheet ListLayout kind: list 
  filter.kind: tree 
  filter.showSearchBar: true 
  filter.categoryFields: [Details.ItemTypeRef, Details.ItemSizeRef] 
  filter.advanceFilterFields: [Details.Price] 
  firstLine.first.lineFields: [Details.Name] 
  secondLine.first.lineFields: [Details.Price] 
  secondLine.first.showLabels: true 
  thirdLine.first.lineFields: [Details.ItemType, Details.ItemSize] 
  thirdLine.first.showLabels: true

ensure layoutSpreadsheet TableLayout kind: table 
  columnSizeSet: ["AutoSize"]
  showComps: [Name, Description, Price, ItemType, ItemSize, AvailableQuantity, StockStatus]

Frontend

1. AddItemSize

// this action will add item size to spreadsheet

ensure action AddItemSize kind: rowInsert 
  icon: "AddRounded" 
  spreadsheet: ItemSizeMaster 
  sendMessageToInbox: true

2. AddItemType

// this action will add item type to spreadsheet

ensure action AddItemType kind: rowInsert 
  icon: "AddRounded" 
  spreadsheet: ItemTypeMaster 
  sendMessageToInbox: true

3. AddItem

// this action will add item to spreadsheet

ensure action AddItem kind: rowInsert 
  icon: "AddRounded" 
  spreadsheet: ItemMaster 
  sendMessageToInbox: true

4. EditItemSizeMaster

// this action will allow you to edit or add new size

ensure action EditItemSizeMaster kind: spreadsheetEditor 
  icon: "CategoryRounded" 
  spreadsheet: ItemSizeMaster 
  layoutSpreadsheet: ListLayout 
  bulkInsertRoleSet: [Owner]

5. EditItemTypeMaster

// this action will allow you to edit or add new type

ensure action EditItemTypeMaster kind: spreadsheetEditor 
  icon: "CategoryRounded" 
  spreadsheet: ItemTypeMaster 
  layoutSpreadsheet: ListLayout 
  bulkInsertRoleSet: [Owner]

6. EditItemMaster

// this action will allow you to edit or add new item

ensure action EditItemMaster kind: spreadsheetEditor 
  icon: "FeaturedPlayListRounded" 
  spreadsheet: ItemMaster 
  layoutSpreadsheet: TableLayout 
  bulkInsertRoleSet: [Owner]

7. Group actions

// this group has all the actions those can be performed for master data

ensure group MasterData 
  allowPromptAssistant: false
  pinnedActions: [EditItemTypeMaster, EditItemSizeMaster, EditItemMaster] 
  actionPermission: {
      'AddItemType': {
        'menuGroup': '1',
        'roles': [
          'Owner'
        ]
      },
      'AddItemSize': {
        'menuGroup': '1',
        'roles': [
          'Owner'
        ]
      },
      'AddItem': {
        'menuGroup': '1',
        'roles': [
          'Owner'
        ]
      },
      'EditItemTypeMaster': {
        'menuGroup': '2',
        'roles': [
          'Owner'
        ]
      },
      'EditItemSizeMaster': {
        'menuGroup': '2',
        'roles': [
          'Owner'
        ]
      },
      'EditItemMaster': {
        'menuGroup': '2',
        'roles': [
          'Owner'
        ]
      }
    }