📁 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 AllTasksTableLayout kind: table 
  columnSizeSet: ["AutoSize", "Flex"] 
  showComps: [Date, Task, Priority, Status, $CreatedBy]
  columnAlignmentArray: ["Center", "Start", "End"] 
  showCommentCount: true

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

ensure layoutSpreadsheet AllTaskCalendar kind: calendar 
  showFields: [Task, Priority, Status, DueDate, Description]
  fromDateField: Details.Date 
  titleField: Details.Task


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

ensure layoutSpreadsheet AllTaskKanban kind: kanban 
  sortByFields: [Details.Date] 
  kanbanField: Details.Status
  sortOrder: ascending

ensure swimlane Swimlane1 
  valueOptionId: "1" 
  color.value: yellow 
  color.shade: s50
ensure swimlane Swimlane2 
  valueOptionId: "2" 
  color.value: blue 
  color.shade: s50
ensure swimlane Swimlane3 
  valueOptionId: "3" 
  color.value: green 
  color.shade: s50
ensure swimlane Swimlane4
  color.value: red 
  color.shade: s50

ensure layoutSpreadsheet AllTaskCalendar 
  allowToSwitchLayouts: [AllTasksTableLayout, AllTaskKanban] 

ensure layoutSpreadsheet AllTaskKanban 
  allowToSwitchLayouts: [AllTasksTableLayout, AllTaskCalendar] 

ensure layoutSpreadsheet AllTasksTableLayout 
  allowToSwitchLayouts: [AllTaskCalendar, AllTaskKanban] 

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

ensure action EditTaskSheet kind: spreadsheetEditor 
  label: "Edit Task Sheet" 
  modules: ["TaskList"] 
  icon: "DensitySmallRounded" 
  spreadsheet: TaskSheet 
  layoutSpreadsheet: AllTaskKanban

c. ViewTasks

Implement an ViewTasks action to get tasks based on filter condition.

ensure form FilterTask 
ensure section: Details
ensure field Priority kind: pickText sourceVar: VarSetOfTextPriority
ensure field Status kind: pickText sourceVar: VarSetOfTextStatus

ensure var VarFilterConditionFilterTaskReport 
  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 ViewTasks kind: spreadsheetEditor 
  label: "View Tasks" 
  modules: ["TaskList"] 
  icon: "PendingActionsRounded" 
  spreadsheet: TaskSheet 
  layoutSpreadsheet: AllTasksTableLayout 
  filterConditionVar: VarFilterConditionFilterTaskReport

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, ViewTasks] 
  pinnedActionSetMobile: [AddTask, EditTaskSheet, ViewTasks] 
  actionPermission: {
      'AddTask': {
        'menuGroup': '1',
        'roles': [
          'Member'
        ]
      },
      'EditTaskSheet': {
        'menuGroup': '2',
        'roles': [
          'Member'
        ]
      },
      'ViewTasks': {
        'menuGroup': '2',
        'roles': [
          'Member'
        ]
      }
    }