📁 Showcase
Frontend

Frontend

1. Actions

a. AddTask

Implement an AddTask action to add a new task to the TaskSheet spreadsheet.

ensure action AddTask kind: rowInsert 
  label: "Add Task" 
  modules: ["TaskList"] 
  icon: "AddTaskRounded" 
  spreadsheet: TaskSheet 
  sendMessageToInbox: true

b. EditTaskSheet

Implement an EditTaskSheet action to modify existing tasks in the TaskSheet spreadsheet.

// switch context to TaskSheet
ensure spreadsheet TaskSheet 

//************
// Table layout
//************

ensure layoutSpreadsheet TableLayout kind: table 
  showComps: [Date, Task, Priority, Status, $CreatedBy]
  columnSizeSet: ["AutoSize", "Flex"] 
  columnAlignmentArray: ["Center", "Start", "End"] 
  showCommentCount: true

//************
// Calendar layout
//************

ensure layoutSpreadsheet CalendarLayout kind: calendar 
  fromDateField: DueDate 
  titleField: Task
  showFields: [Task, Priority, Status, DueDate, Notes]

//************
// Kanban layout
//************

ensure layoutSpreadsheet KanbanLayout kind: kanban 
  sortByFields: [Date] 
  sortOrder: ascending
  kanbanField: Status

ensure swimlane Swimlane1 
  valueOptionId: "keyPending" 
  color.value: yellow 
  color.shade: s50
ensure swimlane Swimlane2 
  valueOptionId: "keyStarted" 
  color.value: blue 
  color.shade: s50
ensure swimlane Swimlane3 
  valueOptionId: "keyDone" 
  color.value: green 
  color.shade: s50
ensure swimlane Swimlane4
  color.value: red 
  color.shade: s50

ensure layoutSpreadsheet CalendarLayout 
  allowToSwitchLayouts: [TableLayout, KanbanLayout] 

ensure layoutSpreadsheet KanbanLayout 
  allowToSwitchLayouts: [TableLayout, CalendarLayout] 

ensure layoutSpreadsheet TableLayout 
  allowToSwitchLayouts: [CalendarLayout, KanbanLayout] 

//******************************
// Action to expose EditNoteSheet
//******************************

ensure action EditTaskSheet kind: spreadsheetEditor 
  modules: ["TaskList"] 
  icon: "DensitySmallRounded" 
  spreadsheet: TaskSheet 
  layoutSpreadsheet: KanbanLayout

c. TaskReport

Implement a TaskReport action to get tasks based on filter condition.

ensure var VarConditionFilterTasks kind: condition 
  modules: ["TaskList"] 
  deploy: fixedOnDeploy 
  value: "<root>
    <and>
      <or>
        <and>
          <stmt>${in:Details.Priority} has value</stmt>
          <stmt>${f:Details.Priority} == ${in:Details.Priority}</stmt>
        </and>
        <stmt>${in:Details.Priority} has no value</stmt>
      </or>
      <or>
        <and>
          <stmt>${in:Details.Status} has value</stmt>
          <stmt>${f:Details.Status} == ${in:Details.Status}</stmt>
        </and>
        <stmt>${in:Details.Status} has no value</stmt>
      </or>
    </and>
  </root>" 
  sourceForm: EntityTask 
  inputForm: FilterTask

ensure action TaskReport kind: spreadsheetEditor 
  modules: ["TaskList"] 
  icon: "PendingActionsRounded" 
  spreadsheet: TaskSheet 
  inputForm: FilterTask 
  layoutSpreadsheet: TableLayout 
  filterConditionVar: VarConditionFilterTasks

2. Prompts

ensure root
  promptMap.acceptPromptViaEmail: true
  promptMap.acceptPromptViaWhatsapp: true

//** prompt, AddTaskCompact
ensure prompt AddTaskCompact 
  modules: ["TaskList"] 
  action: AddTask 
  promptText: "task ${f:Task}" 
  permissionRoles: [Member]

//** prompt, AddTaskBasic
ensure prompt AddTaskBasic 
  modules: ["TaskList"] 
  action: AddTask 
  promptText: "task ${f:Task}${sep}${f:Priority}${sep}${f:Description}" 
  permissionRoles: [Member]

//** prompt, AddTaskWithoutDate
ensure prompt AddTaskWithoutDate 
  modules: ["TaskList"] 
  action: AddTask 
  promptText: "task ${f:Task}${sep}${f:Priority}${sep}${f:Status}${sep}${f:Description}" 
  permissionRoles: [Member]

//** prompt, AddTaskWithDate
ensure prompt AddTaskWithDate 
  modules: ["TaskList"] 
  action: AddTask 
  promptText: "task ${f:Task}${sep}${f:Priority}${sep}${f:Status}${sep}${f:DueDate}${sep}${f:Description}" 
  permissionRoles: [Member]

//** prompt, AddTaskFull
ensure prompt AddTaskFull 
  modules: ["TaskList"] 
  action: AddTask 
  promptText: "task ${f:Date}${sep}${f:Task}${sep}${f:Priority}${sep}${f:Status}${sep}${f:DueDate}${sep}${f:Description}" 
  permissionRoles: [Member]

3. Group actions

Group these actions under a section named TaskList for easy access.

ensure group TaskList 
  modules: ["TaskList"] 
  allowPromptAssistant: true 
  hideActionMenu: true
  pinnedActions: [AddTask, EditTaskSheet, TaskReport] 
  pinnedActionSetMobile: [AddTask, EditTaskSheet, TaskReport] 
  actionPermission: {
      'AddTask': {
        'menuGroup': '1',
        'roles': [
          'Member'
        ]
      },
      'EditTaskSheet': {
        'menuGroup': '2',
        'roles': [
          'Member'
        ]
      },
      'TaskReport': {
        'menuGroup': '2',
        'roles': [
          'Member'
        ]
      }
    }