Skip to main content
Version: 6.14

ICA Dashboard

The ICA Dashboard feature provides ICA users with an interactive overview of their data.

Both the content and layout of the dashboard are able to be configured.

This document outlines the following:

Dashboard Panel widths on a full sized screen
Example Dashboard

Required Security Right

The ICA Dashboard is available only to users with "Extended Access" or "Monitoring". See more details at Web Access Levels.

Following options become available when above groups are selected.

  • Built-in Dashboard Access: Users can access the default dashboard template which is provided by Patriot.
  • Full Dashboard Access: Users can access all templates in the maintenance menu. If this option is un-ticked, users can only access specific templates.

Import Customised Dashboard

We support JSON to customise dashboard. The JSON file can be imported via Maintenance > General > Dashboard.

Configuration JSON Format

The dashboard configuration JSON allows specifying:

  • Which panel types are visible.
  • The configuration options for each panel.
  • The size and location of each panel

The configuration must be valid JSON. The structure is as follows:

[
// For each row in the dashboard:
[
// For each panel in this row:
{
"type": "ClientCount", // See Available Panels for available panel types
"width": "Sixth", // See Layout Overview
"options": {
... // See Available Panels for options per panel type
}
}
]
]

Download an example config file

Layout Overview

A dashboard is made up of a number of horizontal Rows where each Row contains a number of Panels.

The width of each panel can be configured to one of the following options:

  • Full
  • Half
  • Third
  • Quarter
  • Sixth

The configured width represents the horizontal ratio of the screen that will be used for that panel.

note

On small screens (i.e. mobile) panels may extend to better display their content.

Dashboard Panel widths on a full sized screen
Dashboard Panel widths on a full sized screen.
Dashboard Panel widths on a small screen
Dashboard Panel widths on a small screen.

Available Panel Types

note

In the following list TypeScript style type annotations are used.

I.e.: "?" Indicates that a property is optional

Panel: Completed Activations By Action Plan

"type": "ActivationsByActionPlan"

ActivationsByActionPlan
ActivationsByActionPlan

Options Structure

{
title?: string;
subtitle?: string;
// How often to refresh the data for this panel
refreshInterval?: Duration
// The timespan to fetch data for
windowSize?: Duration
}

Options Example

"options": {
"title": "Completed Activations By Action Plan",
"subtitle": "Last 7 days",
"refreshInterval": { "minutes": 10 },
"windowSize": { "days": 7 }
}

Panel: Completed Activations By Reason

"type": "ActivationsByReason"

ActivationsByReason
ActivationsByReason

Options Structure

{
title?: string;
subtitle?: string;
// How often to refresh the data for this panel
refreshInterval?: Duration
// The timespan to fetch data for
windowSize?: Duration
}

Options Example

"options": {
"title": "Completed Activations By Reason",
"subtitle": "Last 7 days",
"refreshInterval": { "minutes": 10 },
"windowSize": { "days": 7 }
}

Panel: Work Orders By Category

"type": "WorkOrderByCategory"

WorkOrderByCategory
WorkOrderByCategory

Options Structure

{
title?: string;
subtitle?: string;
// How often to refresh the data for this panel
refreshInterval?: Duration;
// Set true to fetch in-process work orders (requested, pending and accepted)
includePending?: Boolean;
// Set true to fetch completed work orders
includeComplete?: Boolean;
// Set true to fetch cancelled work orders
includeCancelled?: Boolean;
// Filter results by chargeable state ['PENDING_REVIEW', 'NOT_CHARGEABLE', 'CHARGEABLE']
chargeableStates?: ChargeableState[];
// Filter results by work order type (defaults to "Standard")
workOrderType?: "Standard" | "DispatchJobs" | "PatrolJobs";
// Filter results by work orders with a particular assigned category
workOrderCategoryIds?: number[];
}

Options Example

"options": {
"title": "Completed Activations By Reason",
"subtitle": "Last 7 days",
"refreshInterval": { "minutes": 10 },
"includeComplete": true,
"chargeableStates": ["Chargeable", "PendingReview"],
"workOrderCategoryIds": [7, 12, 23]
}

Panel: Top Active Clients By Activations

"type": "ActiveClients"

ActiveClients
ActiveClients

Options Structure

{
title?: string;
subtitle?: string;
// How often to refresh the data for this panel
refreshInterval?: Duration
// The timespan to fetch data for
windowSize?: Duration
}

Options Example

"options": {
"title": "Top Active Clients",
"subtitle": "Last 7 days",
"refreshInterval": { "minutes": 10 },
"windowSize": { "days": 7 }
}

Panel: Top Active Clients By Signals

"type": "ClientsBySignal"

ClientsBySignal
ClientsBySignal

Options Structure

{
title?: string;
subtitle?: string;
// How often to refresh the data for this panel
refreshInterval?: Duration;
// Signal threshold for showing the runaway alarm alert
alertThreshold?: number;
// The timespan to fetch data for
windowSize?: Duration
}

Options Example

"options": {
"title": "Top Active Clients (Signals)",
"refreshInterval": { "hours": 1 },
"alertThreshold": 1440,
"windowSize": { "hours": 24 }
}

Panel: Online / Offline Client Count

"type": "ClientCount"

ClientCount
ClientCount

Options Structure

{
title?: string;
// whether to show offline count (defaults to true)
includeOffline?: boolean;
// determines if a client's commissioned date must be set to be counted as online (defaults to false)
onlyCommissioned?: boolean;
// How often to refresh the data for this panel
refreshInterval?: Duration
}

Options Example

"options": {
"includeOffline": true,
"onlyCommissioned": false,
"refreshInterval": { "minutes": 10 },
}

Panel: Completed Activations

"type": "CompletedActivationsCount"

CompletedActivationsCount
CompletedActivationsCount

Options Structure

{
title?: string;
subtitle?: string;
// How often to refresh the data for this panel
refreshInterval?: Duration;
// The timespan to fetch data for
windowSize?: Duration;
// Filter results by activation reason
reasonsIds?: number[];
// Filter results by related action plan
actionPlanIds?: number[];
// Filter results by action plan
actionPlanGroupIds?: number[];
}

Options Example

"options": {
"title": "Completed Activations",
"subtitle": "Last 7 days",
"refreshInterval": { "minutes": 10 },
"windowSize": { "days": 7 }
"actionPlanIds": [4, 15, 16],
"actionPlanGroupIds": [3]
}

Panel: Client Commissioning

"type": "OnlineOfflineCount"

OnlineOfflineCount
OnlineOfflineCount

Options Structure

{
title?: string;
subtitle?: string;
// How often to refresh the data for this panel
refreshInterval?: Duration
// The timespan to fetch data for
windowSize?: Duration
}

Options Example

"options": {
"title": "Client Commissioning",
"subtitle": "Last 7 days",
"refreshInterval": { "minutes": 10 },
"windowSize": { "days": 7 }
}

Panel: Outstanding Work Orders

"type": "OutstandingWorkOrderCount"

OutstandingWorkOrderCount
OutstandingWorkOrderCount

Options Structure

{
title?: string;
subtitle?: string;
// How often to refresh the data for this panel
refreshInterval?: Duration;
// Set true to fetch in-process work orders (requested, pending and accepted)
includePending?: Boolean;
// Set true to fetch completed work orders
includeComplete?: Boolean;
// Set true to fetch cancelled work orders
includeCancelled?: Boolean;
// Filter results by chargeable state ['PENDING_REVIEW', 'NOT_CHARGEABLE', 'CHARGEABLE']
chargeableStates?: ChargeableState[];
// Filter results by work order type (defaults to "Standard")
workOrderType?: "Standard" | "DispatchJobs" | "PatrolJobs";
// Filter results by work orders with a particular assigned category
workOrderCategoryIds?: number[];
}

Options Example

"options": {
"title": "Completed Activations By Reason",
"subtitle": "Last 7 days",
"refreshInterval": { "minutes": 10 },
"includeComplete": true,
"chargeableStates": ["CHARGEABLE", "PENDING_REVIEW"],
"workOrderCategoryIds": [7, 12, 23]
}

Panel: Temporary Test Mode Count

"type": "TemporaryTestModeCount"

TemporaryTestModeCount
TemporaryTestModeCount

Options Structure

{
title?: string;
subtitle?: string;
// How often to refresh the data for this panel
refreshInterval?: Duration
}

Options Example

"options": {
"refreshInterval": { "minutes": 10 },
}

Type Definitions

Duration

A duration can be one of:

  • Object

    {
    years?: number;
    quarters?: number;
    months?: number;
    weeks?: number;
    days?: number;
    hours?: number;
    minutes?: number;
    seconds?: number;
    milliseconds?: number;
    }

    i.e. to represent 10 minutes: "refreshinterval": { "minutes": 10 }

  • Number - Indicates a value in milliseconds.
    i.e. to represent 10 minutes: "refreshinterval": 600000

  • String - Indicates an ISO8601 Duration.
    i.e. to represent 10 minutes: "refreshinterval": 600000