Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Current »

The Notifications Centre is a feature available to all users in LiteFarm. It is accessed on the status bar and houses all the relevant notifications for that user.

Notifications serve as the communication layer for ensuring that individuals on the farm learn about important farm events as quickly as possible. In most cases, notifications are system generated messages based on some change of state in the system, rather than a user specifically creating a notification. These messages are sent to users to bring something to a users' attention. In some cases a notification will go to an individual while in others it may go to a whole farm. The key attributes of a notification are:

  • Timeliness: Notifications will be generated for events where timeliness is the key attribute. For example, creating a notification when the details of a task have changed when someone will do that task later that day is incredibly valuable as long as it’s received prior to doing the work. If it’s received after the task has been completed, it’s basically worthless. As such, we strive for near real-time notifications and acknowledge that notifications quickly become stale. Another consequence of this attribute is that notifications are mostly immutable. The only attributes that will be modified after creation are around the status of the notification, rather than the content.

  • Audience: Notifications need to target the right audience. For example, modifications to an existing task (from the timeliness example) are only relevant to the person doing the work. Other individuals would quickly learn to tune out notifications if they are not consistently relevant for the notified audience.

  • Brevity: Notifications are a “sneak peek” into events on the farm. The Notifications Centre should give the user a “window” into the relevant happenings on the farm with the option to drill-down into the events that catch that user’s attention. As such, we need to be efficient with how we describe a notification. Brevity is more important than completeness.

Notification Attributes

This is not a complete list.

Attribute

Data type

Entered / modified at…

Required?

Example data

Notes

Title

String

Entered at creation, immutable

Yes

Planting

See above. Also needs to support custom task types

Body

String

Entered at creation, immutable

Yes

Planned, Late, For review, Completed, Abandoned

Assigned via actions rather than being editable via the UI

Reference to notifying object

Ref: Record_id

Entered at creation, immutable

No

  • See “Take me there” in detail view above for an example

  • This reference will also serve as the foundation for “related notifications” and threading on the notification detail page described below

Notification scope

Enum

Entered at creation, immutable

Yes

  • Defaults to “farm-wide” unless provided

  • To start with, notifications can either be for a specific user or for all users at a farm

  • Implementation should leave the door open for role based, access-based (e.g. extension worker), and all users at all farms

Base model attributes

Implements https://lite-farm.atlassian.net/browse/LF-294

  • CreateByUserId = null

  • OwnerUserId = null

  • AssigneeUserId = null

Alert

Bool

Entered at creation

Modified when viewing the notification centre

True or false

A notification is Alert = TRUE when it is created and become FALSE when the user views the notification centre (but not necessarily the notification detail). The alert, describes where the “bell” on the status bar should have a red dot or not.

Status

Enum

Entered at creation

Modified when viewing the notification detail or a user applies a new status

  • Defaults to “Unread”

  • Other valid values: {“Read”, “Archived”}

Notification threading

There are some cases where a notification has been posted, and before being viewed becomes irrelevant or less relevant. For example, a user may be assigned a task and then that task is deleted or re-assigned. To this point, some sort of “notification stack” for each referenced object, would be helpful. With acknowledgement of our key attributes of timeliness and brevity, this stack should be:

  • heavily geared towards the most recent, relevant notifications in the thread

  • very brief in how notifications in the thread are displayed

One visual example of how we could show this threading is shown below:

Thoughts on pagination

We may or may not need to support pagination with notifications. One argument against implementing a pagination strategy would be that notifications are only valuable when recent and quickly become stale. In this case, we could likely get away with the idea of only returning the X most recent notifications. However, this would hamper future implementation of searching and filtering.

Answered questions

Open questions

Q: What clickable actions on notifications tile?

A:

Q: How do you mark something read?

A:

Notification types?

  • Change in task

  • Task assigned to you

  • Task you created assigned to someone else

  • Task (you created) completed

Types of filters:

  • Tasks

  • Irrigation

  • Observations (future?)

  • Crop

  • Location

  • People

  • Weather

Status:

  • Alert: Has the dot, disapears when the notification centre is opened

  • Unread

  • Read:

  • Archived:

Notification settings:

Actions for notifications:

  • Nothing

  • Mark as read

  • See detail (modal)

  • Jump to contextual object

Views:

  • Notification preview (card)

  • Notification detail (modal)


Attributes:

  • Reference to objects (be it task, observation, person, etc.)

  • No labels