Skip to main content

Using the OPSCOM System Dashboard & Widgets

The OPSCOM Dashboard is a fully customizable, widget-based analytics dashboard built into the admin portal. Each user can create multiple personal dashboards, arrange widgets freely on a drag-and-drop grid, and configure each widget individually to show exactly the data they need. Dashboards and widgets automatically refresh on a configurable schedule and are fully responsive down to mobile widths.

Dashboard Types

OPSCOM has two distinct dashboard types. The type is determined by where the dashboard is accessed from, and controls which widgets and data sources are available.

General Dashboard

The General Dashboard is the main operations dashboard, accessible to all admin users when they first log in and can be returned to at any time from anywhere in the system by clicking on the OPSCOM Logo in the top-left corner. It surfaces organization-wide data and is designed to give a broad operational overview.

Available widgets: Graph, Filterable Graph, List, Map, WYSIWYG, Incident Association
Default data sources: All sources tagged general (Violation Stats, LPR Stats, Permit Stats)


Admin Dashboard

The Admin Dashboard is a per-admin profile dashboard, shown when viewing a specific admin's profile page. It is scoped to that admin — widgets that show violation or activity data are automatically filtered to the admin being viewed, not the person viewing the page.

Available widgets: Graph, Filterable Graph, List, Map, WYSIWYG, Admin Info, Incident Association
Default data sources: Violation Stats + all sources tagged admin (LPR Stats)


Managing Dashboards

Creating a Dashboard

  1. On the Dashboard homepage in the admin portal, click + Create Dashboard.

  2. Enter a Name and choose a Visibility:

    • Private – only you can see it.

    • Visible – any admin with the dashboard_browse permission can browse it.

  3. Click Create. The new dashboard opens immediately.

Switching Between Dashboards

Open the dashboard picker drawer named Browse Dashboard at any time. All dashboards you own, collaborate on, or that are "Visible" are listed. Click any entry to switch. Your personal default and the organization default are highlighted.

Editing a Dashboard

Toggle Edit Mode via the toolbar toggle switch. In edit mode you can:

  • Drag widgets to reposition them on the grid.

  • Resize widgets by dragging their bottom-right corner.

  • Add widgets using the + Add Widget button (opens the widget gallery).

  • Delete or duplicate individual widgets via the icons that appear on each widget header.

  • Rename or change visibility of the dashboard via the Edit button in the toolbar.

When finished, click Save Layout to persist the grid positions.

If you navigate away without saving you will be prompted to confirm discarding unsaved changes.

Sharing & Collaboration

Feature

How to use

Collaborators

Add other admins as collaborators (Edit button → Collaborators tab). Collaborators can view and edit the dashboard.

Visibility

Set to Visible to allow anyone with dashboard_browse permission to view it (read-only).

Organization Default

Admins with dashboard_set_org_default permission can mark one dashboard as the org default — it appears as the landing dashboard for all admins.

Personal Default

Each user can star ⭐ a dashboard to mark it as their personal landing page.

Deleting a Dashboard

Open the dashboard picker, hover over the dashboard entry, and click the trash icon.

Please Note: Deletion is permanent.


Widgets

Widgets are the individual panels that populate a dashboard. Each widget has:

  • A widget type — determines how data is rendered.

  • A data source — determines where the data comes from and what filters are available.

  • A configuration — display settings, filters, and widget-type-specific options.

Adding a Widget

  1. Turn on Edit Mode.

  2. Click + Add Widget.

  3. Browse or search the widget gallery. Each card shows the widget type and compatible data sources.

  4. Click a card to add it. The widget appears on the grid.

  5. Click the ⚙️ Settings icon on the new widget to choose a data source and configure it.


Widget Types

Graph Widget

Displays data as an interactive chart. Supports five chart styles selectable from the settings modal:

Chart Type

Description

Bar

Vertical bars — good for comparing counts over time.

Stacked Bar

Multiple datasets stacked — ideal for group-by breakdowns.

Line

Trend line — best for continuous time-series.

Pie

Proportional slices — best for a small number of categories.

Doughnut

Like Pie but with a hollow centre.

Extra options:

  • Colorful Bars — when there is only one dataset, each bar gets a distinct colour from the palette.

  • View Data (👁 button) — opens a tabular view of the underlying data with a CSV download option.


Filterable Graph Widget

Identical to the Graph widget with one extra feature: an inline filter dropdown displayed directly on the widget header. This lets users slice the chart in real-time without opening settings.

The available filter dimension (e.g. Camera, Permit Type, Device Type) is configured in the widget settings under Filter Dimension. Once set, the dropdown appears on the widget and fetches the available options automatically from the same data source, respecting all other active filter settings.


List Widget

Displays data as a sortable, paginated data table. The columns shown are controlled by the Columns setting in the data source configuration. Useful for raw record-level views (individual violations, permits, LPR reads).


Map Widget (Geo Location)

Displays geocoded records as pins on an interactive map (Leaflet). Features:

Feature

Description

Cluster Pins

Groups nearby pins into numbered clusters that expand on zoom. Configurable minimum cluster size and maximum zoom level.

Color by Age

Pins are coloured from green (recent) to red (older) based on record age.

Draw Path

Connects sequential records with a polyline — useful for patrol route visualization.

Bounding Box Filter

Restrict visible records to a lat/long bounding box configured in settings.


WYSIWYG Widget

A free-form rich-text content panel. Supports formatted text, headings, bullet lists, bold/italic, hyperlinks, and more. Useful for notes, announcements, or instructions embedded directly in the dashboard.

Content is edited in a dedicated editor page (accessible via the widget's settings).


Admin Info Widget

A read-only profile summary card for the admin account currently being viewed. Displays the admin's name, role, contact details, and related account information. This widget is context-aware — it reflects the profile of whichever admin the viewer is currently inspecting, not their own account. No data source configuration required.


Incident Association Widget

Displays incident association data relevant to the dashboard context. Configuration details depend on the deployment.


Data Sources

Data sources connect widgets to the OPSCOM backend APIs. Each data source exposes a set of Display Settings (how data is grouped and presented) and Filter Settings (which records to include). Settings are split across two tabs in the settings modal.


Violation Stats

Identifier: admin-violations
Compatible widgets: Graph, Filterable Graph, List, Map

Display Settings

Setting

Options

Description

Time Period

All Time / Last 7 Days / Last 30 Days / Last 3 Months / Last 6 Months / Year to Date / Last Year

Limits records to a relative date window.

Group by Time

None / Day / Week / Month / Year

Buckets records by time period on the X-axis.

Group by Entity

None / Plate / Location / Writer / Category

Splits data into one dataset per entity value.

Entity Limit

Auto / Manual

Auto = top N entities; Manual = pick specific values.

Entity Filter

Multi-select (up to 10)

Visible when Group by Entity + Manual limit is set.

Measure

Count / Revenue

Whether Y-axis shows number of violations or dollar revenue.

Columns (List only)

Ticket, Issued, Fine, Towing, Adjusted Fine, Due Date, Warning, Spoiled, Collections, Plate, Location, Writer, Category, Lat, Long, Revenue, Count

Columns to include in the list table.

Sort Order

Ascending / Descending

 

Filter Settings

Setting

Options

Description

Payment Status

Unpaid / Overdue / Paid / Collections (multi-select)

Filter by payment state.

Payable Only

Toggle

Show only violations that are currently payable.

Geocoded Only

Toggle

Show only violations with GPS coordinates (useful for Map widget).

Active Writer Only

Toggle (default: on)

Exclude records from deactivated admin accounts.


Permit Stats

Identifier: permit-stats
Compatible widgets: Graph, List

Display Settings

Setting

Options

Description

Time Period

All Time / Last 7 Days / Last 30 Days / Last 3 Months / Last 6 Months / Year to Date / Last Year

Date window filter on permit submit date.

Group by (Graph only)

None / Permit Type / Lot / User Type / Lot Group / Lot Zone

Splits into one dataset per group value.

Entity Limit (Graph only)

Auto / Manual

Auto = top N; Manual = pick specific values.

Entity Filter

Multi-select (up to 10)

Shown when Manual limit is active.

Measure

Count / Revenue

Count of permits vs. revenue generated.

Columns (List only)

User Type, Lot, Active Start, Active End, Lot Group, Price, Permit Type, Source, Lot Zone

 

Sort Order

Ascending / Descending

 

Filter Settings

Setting

Options

Description

Active Only

Toggle

Show only currently active permits.

Permit Type

Standard, Temp, Cale sources (multi-select)

Filter by permit type/source.

Lots

Multi-select (all lots)

Restrict to specific parking lots.

Lot Groups

Multi-select

Restrict to one or more lot groups.

Lot Zones

Multi-select

Restrict to specific lot zones.


LPR Stats

Identifier: lpr-stats
Compatible widgets: Graph, Filterable Graph, List, Map

Display Settings


Setting

Options

Description

Time Period (Graph/List)

All Time / Last 7 Days / Last 30 Days / Last 3 Months / Last 6 Months / YTD / Last Year

 

Time Period (Map only — since_geo)

Last 4 Hours / Last 8 Hours / Last Day / Last 7 Days

Short-term windows optimized for real-time map views.

Group by Time

None / Day / Week / Month / Year

Time-bucket for X-axis.

Group by Entity

None / Camera / Permit Type / Device Type / Entry-Exit Type

 

Entity Limit

Auto / Manual

 

Entity Filter

Multi-select (up to 10)

 

Filter Dimension (Filterable Graph only)

Camera / Permit Type / Device Type / Entry-Exit Type

Sets the inline filter dropdown on the widget face.

Columns (List only)

Plate, Camera, Permit Type, Recorded, Device Type, Entry/Exit Type

Visible when Group by Entity is not set.

Sort Order

Ascending / Descending

 

Filter Settings

Setting

Options

Description

Permit Type

All / Temp / Standard / None (multi-value)

Filter reads by permit validation result.

Camera Type

Entry / Exit / Monitor / Patrol (multi-select)

Filter by camera classification.

Map-only Settings (Geo Display)

Setting

Description

Cluster Pins

Enable/disable pin clustering.

Cluster Min Size

Minimum number of pins before they cluster.

Cluster Max Zoom

Zoom level at which clusters dissolve into individual pins.

Color by Age

Colour-code pins by record age.

Draw Path

Connect pins in chronological order with a line.

Bounding Box

Lat/Long min/max to limit the visible area.


Widget Settings Modal

Every widget has a ⚙️ Settings button (visible in both view and edit modes). The modal contains:

  1. Widget Name — optional custom title shown in the widget header. Defaults to the data source name if left blank.

  2. Data Source — dropdown to choose which data source powers this widget. Only sources compatible with the current widget type are shown.

  3. Widget-type settings — e.g. Chart Type and Colorful Bars (Graph widgets).

  4. Display Settings tab — grouping, columns, sort, measure, entity filter settings.

  5. Filters tab — record-level filters (time period, payment status, lot restrictions, etc.).

Click Save to apply. The widget immediately re-fetches data with the new configuration.


Permissions Reference

Permission

Effect

dashboard_browse

Can view dashboards marked Visible.

dashboard_edit_any

Can edit any dashboard regardless of ownership.

dashboard_set_org_default

Can promote a dashboard to org-wide default.

(Owner)

Full edit rights on own dashboards.

(Collaborator)

View and edit rights on dashboards shared with them.


Tips & Best Practices

  • Use the Filterable Graph for LPR Camera data — set Filter Dimension to Camera to get a per-camera dropdown directly on the widget without opening settings.

  • Star your most-used dashboard so it loads automatically when you navigate to the dashboard page.

  • Group by Entity + Stacked Bar is the most readable combination for comparing multiple cameras, lots, or writers side by side.

  • Year to Date + Group by Month gives a clean year-progress chart that resets automatically each January.

  • Geo widgets work best with Last 4–8 Hours time range and Cluster Pins enabled for busy patrol routes.

  • The List widget is ideal alongside a Graph widget on the same dashboard — use the same data source and filter settings to give both a chart view and a raw-record drill-down on the same screen.