📁 Showcase
Backend

Backend

1. Variables

// priority list
ensure var VarSetOfTextPriority kind: setOfText 
  modules: ["TaskList"] 
  deploy: fixedOnDeploy 
  value: "<root>
      <node color='error' key='1'>High</node>
      <node color='primary' key='2'>Medium</node>
      <node color='success' key='3'>Low</node>
    </root>"

// status list
ensure var VarSetOfTextStatus kind: setOfText 
  modules: ["TaskList"] 
  deploy: fixedOnDeploy 
  value: "<root>
      <node key='1'>Pending</node>
      <node key='2'>Started</node>
      <node key='3'>Done</node>
    </root>"

// date variable for current date
ensure var VarDateNow kind: date modules: ["TaskList"] deploy: fixedOnDeploy value: "now"

// WhatsApp message variable
ensure var VarInCompleteTaskMessage kind: text 
  modules: ["TaskList"] 
  deploy: fixedOnDeploy 
  value: "This is a quick update to inform you that this task list : ${P} is still on the pending status."

// email subject variable
ensure var VarInCompleteTaskSub kind: text 
  modules: ["TaskList"] 
  deploy: fixedOnDeploy 
  value: "Your incomplete task list"

// email body variable
ensure var VarInCompleteTaskEmailBody kind: paragraph 
  modules: ["TaskList"] 
  deploy: fixedOnDeploy 
  value: "Dear User,

2. TaskSheet

// fields ending with "*" suffix are required
ensure spreadsheet: TaskSheet
withFields: [
    "Date",
    "Task*",
    "Priority",
    "Status",
    "DueDate",
    "CreatedBy",
    "Divider",
    "Notes"
  ]
ofTypes: [date, text, pickText, pickText, date, text, divider, paragraph]
modules: ["TaskList"] 
readRoleSet: [Member] 
insertRoleSet: [Member] 
updateRoleSet: [Member] 
removeRoleSet: [Member]

ensure spreadsheet TaskSheet
  searchables: [Task, Priority, Status] 
  queryables: [Task, Priority, Status, Date, DueDate] 

ensure form EntityTask 
  label: "Task" 
  modules: ["TaskList"] 
  commentRoleSet: [Member] 
  allowToPrintForm: true
ensure section: Details
ensure field Date defaultValue: "now"
ensure field Priority sourceVar: VarSetOfTextPriority defaultOptionId: "3"
ensure field Status sourceVar: VarSetOfTextStatus defaultOptionId: "1"
ensure field CreatedBy
  permissionMatrix: {
      'defaultPermission': 'invisible'
    }
ensure field Divider dividerKind: thick
ensure field Notes flexHeight: true

ensure section: Attachments
ensure field Attachments kind: document fileTypeSet: ["any"]

3. InCompleteTaskReport

a. Output form

ensure form OutputPendingTask modules: ["TaskList"]
ensure grid: TaskDetails
ensure field Date kind: date 
ensure field Task kind: text 

ensure layoutGrid TableLayout kind: table 
  showComps: [TaskDetails.Date, TaskDetails.Task]
ensure layout ContentLayout kind: content 
  direction: vertical 
  contentPadding: thick
  flexCenter.gridLayouts: [TaskDetails.TableLayout]

b. Report

ensure var VarMappingReportTask kind: mapping modules: ["TaskList"] deploy: fixedOnDeploy
  fromForm: EntityTask 
  toForm: OutputPendingTask 
  toGrid: TaskDetails 
  fieldMappingMap: {
      'map': {
        '${f:Details.Date}': 'TaskDetails.Date',
        '${f:Details.Task}': 'TaskDetails.Task'
      }
    }
ensure report InCompleteTaskReport kind: spreadsheet 
  modules: ["TaskList"] 
  outputForm: OutputPendingTask 
  fromSpreadsheet: TaskSheet 
  filterConditionVar: VarFilterConditionInCompletedTasks 
  outputFormMappingVar: VarMappingReportTask