@nubz/gds-task-list-ops

0.4.3 • Public • Published

example workflow Coverage Status

GDS task list ops

Making a GDS task list work in a GOVUK prototype. Report the latest status for each task and provide a link that represents the next thing required of a task.

Task lists need data modelling, we need to describe the task list in a schema.

A schema is essentially an object containing tasks, tasks contain page models and page models contain fields. This package provides tools to compare the session data with the schema and return a status object defining the status of each task and a link URL for the first page that is invalid within that task, this link URL should be used in the task list template as the link to enter that task. If the task is deemed complete then the link should go into the Check Your Answers page for that task where users can review their answers and change any if required.

Examples

Examples of simple and complex use cases can be seen on https://prototype-strategies.herokuapp.com/task-lists/

Schema description

The PageModel definition is as required in the @nubz/gds-validation package as this is what is used to tell us whether pages are valid. It is added to this package as a peer dependency.

// using TypeScript interfaces as documentation

interface Schema {
  [key: String]: TaskModel
}

interface TaskModel {
  title: String
  customTitle?: (data: Payload) => String // if the task title is dependendent on payload content
  path: String
  summaryPath: String
  pages: PageMap
}

interface PageMap {
  [key: String]: PageModel
}

Responses

returnTaskList accepts the schema and the data set to compare against - usually req.session.data The response is of the following type

interface TaskListStatusMap {
    [key: TaskName]: TaskListStatus
}

interface TaskListStatus {
    status: Status
    link: String // a uri to the first page that is invalid within the task
    title: String // the value of the `title` property for this task in your schema
}
type TaskName = String // name/key of task in your schema model
type Status = 'complete' | 'in-progress' | 'to-do' | 'cannot-start'

Package Sidebar

Install

npm i @nubz/gds-task-list-ops

Weekly Downloads

1

Version

0.4.3

License

ISC

Unpacked Size

17.1 kB

Total Files

5

Last publish

Collaborators

  • nubz