📁 Showcase
Master Data

Master data

Backend

1. ItemSizeMaster

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"

2. ItemTypeMaster

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"

3. ItemMaster

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 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
  showComps: [Name, Description, Price, ItemType, ItemSize]
  columnSizeSet: ["AutoSize"]

Frontend

1. Actions

a. 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]

b. EditItemTypeMaster

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

c. EditItemMaster

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

2. Group actions

ensure group MasterData
  pinnedActions: [EditItemMaster]
  actionPermission: {
      'EditItemTypeMaster': {
        'roles': [
          'Owner'
        ]
      },
      'EditItemSizeMaster': {
        'roles': [
          'Owner'
        ]
      },
      'EditItemMaster': {
        'roles': [
          'Owner'
        ]
      }
    }