# Using the OPSCOM-ARC System Dashboard & Widgets

<p class="callout info">The OperationsCommander (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.</p>

## 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 <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">general</span> (Violation Stats, LPR Stats, Permit Stats)

[![Dashboard10326.png](https://opscom.wiki/uploads/images/gallery/2026-03/scaled-1680-/dashboard10326.png)](https://opscom.wiki/uploads/images/gallery/2026-03/dashboard10326.png)

---

### 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 <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">admin</span> (LPR Stats)

[![Dashboard20326.png](https://opscom.wiki/uploads/images/gallery/2026-03/scaled-1680-/dashboard20326.png)](https://opscom.wiki/uploads/images/gallery/2026-03/dashboard20326.png)

---

## 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 <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">dashboard\_browse</span> 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.

<p class="callout success">If you navigate away without saving you will be prompted to confirm discarding unsaved changes.</p>

### Sharing &amp; Collaboration

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-feature-how-to-use-c"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-ba7ed9d9-3c9e-4d1d-9202-be80e41e60d9" data-ssr-placeholder-replace="table-ba7ed9d9-3c9e-4d1d-9202-be80e41e60d9" data-table-local-id="ba7ed9d9-3c9e-4d1d-9202-be80e41e60d9" data-table-width="760" style="width: 100%;"><colgroup><col style="width: 15.4936%;"></col><col style="width: 84.5064%;"></col></colgroup><tbody><tr data-local-id="f8da3e43-8a07-4a24-95eb-8d90382544b0" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="c30001f2-caac-4201-8e38-a0b86c633a5d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Feature

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="a5fb4436-7b98-418b-ba30-c57fe82e951c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">How to use

</th></tr><tr data-local-id="e9f499ab-b13e-43ae-802d-c7c676850197" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="99f383f8-a9bf-464d-b248-4f488951cb55" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Collaborators**

</td><td class="pm-table-cell-content-wrap" data-local-id="3eaec3e3-c4f5-42e2-84c1-8bd355979510" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Add other admins as collaborators (Edit button → Collaborators tab). Collaborators can view and edit the dashboard.

</td></tr><tr data-local-id="3e4026d1-c1c5-4b4d-a515-ca9783a22a6a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="06233844-1692-4d6d-bada-c2b02c2c0fcf" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Visibility**

</td><td class="pm-table-cell-content-wrap" data-local-id="a471df7c-41c3-4ec0-af42-761ee3747ff2" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Set to *Visible* to allow anyone with <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">dashboard\_browse</span> permission to view it (read-only).

</td></tr><tr data-local-id="66b6aa46-c533-4b30-a907-e4f1c0426f21" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="1d15d053-72d6-42d0-8157-068325116b2b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Organization Default**

</td><td class="pm-table-cell-content-wrap" data-local-id="684d5e6a-9d06-44b3-9ef2-1d1867be1f11" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Admins with <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">dashboard\_set\_org\_default</span> permission can mark one dashboard as the org default — it appears as the landing dashboard for all admins.

</td></tr><tr data-local-id="21364dfe-2736-48b4-810b-46547bd8906f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="aefd9228-6147-4057-8576-b0a1e1e7b09b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Personal Default**

</td><td class="pm-table-cell-content-wrap" data-local-id="00525059-bed6-4c01-8458-ccb2e6e4cefb" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Each user can star ⭐ a dashboard to mark it as their personal landing page.

</td></tr></tbody></table>

</div></div></div></div></div></div>### Deleting a Dashboard

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

<p class="callout danger">**Please Note:** Deletion is permanent.</p>

---

## 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:

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-chart-type-descripti"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-cb2c8b35-8269-4e72-8052-3e31d2c5b45b" data-ssr-placeholder-replace="table-cb2c8b35-8269-4e72-8052-3e31d2c5b45b" data-table-local-id="cb2c8b35-8269-4e72-8052-3e31d2c5b45b" data-table-width="760"><colgroup><col></col><col></col></colgroup><tbody><tr data-local-id="80c4b503-831f-4615-b238-9e53aa0e2205" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="217be8ef-44d4-4b15-8abb-59a70c79bb8e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Chart Type

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="2acd11d9-b329-4d20-b671-221e06fa194d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="580b3f22-79f6-4608-ab3d-cd3e547b73c7" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="091708ba-53a5-46f9-a6cc-5186f626cf0d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Bar**

</td><td class="pm-table-cell-content-wrap" data-local-id="8b5502e9-7700-4705-ad27-00f004b43d86" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Vertical bars — good for comparing counts over time.

</td></tr><tr data-local-id="fd7f4ea9-e417-4e62-aadd-273e8981fa4f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="58e5b82d-f8c9-4134-afb3-dc9cdfa84f63" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Stacked Bar**

</td><td class="pm-table-cell-content-wrap" data-local-id="92d6f857-79d6-4837-8392-339ea65748c8" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multiple datasets stacked — ideal for group-by breakdowns.

</td></tr><tr data-local-id="40524efa-4c56-468a-b297-d754d2c121b1" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="9a8e5e1a-c1cd-4eb7-b775-39645c68d7ed" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Line**

</td><td class="pm-table-cell-content-wrap" data-local-id="89ebae05-5813-4d14-adeb-e3b9adcf8e98" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Trend line — best for continuous time-series.

</td></tr><tr data-local-id="65b9f781-2f2e-44f4-81f1-6ad48b006278" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="e60fc3fb-1d8c-4f78-a821-2608fe3d01ce" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Pie**

</td><td class="pm-table-cell-content-wrap" data-local-id="25b5e49d-6694-4d3b-83a7-9f58cc4596c8" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Proportional slices — best for a small number of categories.

</td></tr><tr data-local-id="4f52be8a-d036-45a7-a592-0375bcdeef70" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="6d0376c2-072c-4205-b49a-e69bb0ff7b7f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Doughnut**

</td><td class="pm-table-cell-content-wrap" data-local-id="492826ff-7a1d-42bc-8baf-42775e36cb1d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Like Pie but with a hollow centre.

</td></tr></tbody></table>

</div></div></div></div></div></div>**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:

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-feature-description-"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-88bb0ff2-7212-44d2-bba2-e27bc1e7f3ac" data-ssr-placeholder-replace="table-88bb0ff2-7212-44d2-bba2-e27bc1e7f3ac" data-table-local-id="88bb0ff2-7212-44d2-bba2-e27bc1e7f3ac" data-table-width="760"><colgroup><col></col><col></col></colgroup><tbody><tr data-local-id="06fb3b4e-c371-436e-83cc-fd70fc81a90d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="9321fedb-7b7c-432d-8760-e1bc73145493" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Feature

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="ae69a9f1-fff9-40c2-bd43-0bcf49b5444e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="24fd6360-a7ba-446d-9361-224c0723410c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="0a22e932-4526-4e8f-8d93-7d81d262400c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Cluster Pins**

</td><td class="pm-table-cell-content-wrap" data-local-id="57b4edc3-949c-4a4e-b30b-9f94e39940ed" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Groups nearby pins into numbered clusters that expand on zoom. Configurable minimum cluster size and maximum zoom level.

</td></tr><tr data-local-id="14563220-2c4a-4fa9-802a-ed1fafa81dd9" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="213dd5ee-7c2a-43e7-a641-5093d4889e11" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Color by Age**

</td><td class="pm-table-cell-content-wrap" data-local-id="c758deb1-67cc-4324-8d6f-fd629cbc00ba" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Pins are coloured from green (recent) to red (older) based on record age.

</td></tr><tr data-local-id="d25050f5-cf29-46a2-a34e-0e2a4b5be1cb" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="fca39ead-8212-4708-a383-3d9427775dea" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Draw Path**

</td><td class="pm-table-cell-content-wrap" data-local-id="b086648a-e63f-429e-9182-f5a24e92ef1e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Connects sequential records with a polyline — useful for patrol route visualization.

</td></tr><tr data-local-id="ffd3776a-7c5a-4571-a6f3-15b1467024ba" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="e24938be-9637-4a51-9a55-02417a697d0e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Bounding Box Filter**

</td><td class="pm-table-cell-content-wrap" data-local-id="76fb54f3-79f4-45b0-9eb2-2eaa06292f9c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Restrict visible records to a lat/long bounding box configured in settings.

</td></tr></tbody></table>

</div></div></div></div></div></div>---

### 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:** <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">admin-violations</span>  
**Compatible widgets:** Graph, Filterable Graph, List, Map

#### Display Settings

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-options-desc"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-88c11fa5-6372-479f-84ef-4b3e8f85dec7" data-ssr-placeholder-replace="table-88c11fa5-6372-479f-84ef-4b3e8f85dec7" data-table-local-id="88c11fa5-6372-479f-84ef-4b3e8f85dec7" data-table-width="760"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr data-local-id="cd0b7030-748a-4d3b-96ae-fa64707e85c8" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="08248846-d085-4307-b8eb-5ac0c9756fd9" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="73f1ffa6-0c2d-4efb-ae43-50f1cc94a443" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Options

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="3dddc100-3307-4bf9-9db4-072585a55052" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="501ef697-f486-42c9-89c9-e599a4ce352a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="10dc451c-9a92-49eb-bdc6-ec8cc54f9387" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Time Period**

</td><td class="pm-table-cell-content-wrap" data-local-id="64678ddd-1de8-4312-b19f-607f04c00f96" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">All Time / Last 7 Days / Last 30 Days / Last 3 Months / Last 6 Months / Year to Date / Last Year

</td><td class="pm-table-cell-content-wrap" data-local-id="904ad7c8-4c34-4008-9394-af2213e2898e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Limits records to a relative date window.

</td></tr><tr data-local-id="6b7df12f-ef16-4eda-8846-9f7153aa3740" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="13e68eb4-70d6-4bee-a8df-a8178ef56783" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Group by Time**

</td><td class="pm-table-cell-content-wrap" data-local-id="47027db9-0ab0-4f0c-934f-5b77624e7def" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">None / Day / Week / Month / Year

</td><td class="pm-table-cell-content-wrap" data-local-id="4b3e31d2-55c0-4025-8037-935d7598d21c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Buckets records by time period on the X-axis.

</td></tr><tr data-local-id="7ef8fd8e-3e29-41ed-a3c1-0049a4135abf" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="4c85450b-6301-45fc-acdf-e1f911d63b94" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Group by Entity**

</td><td class="pm-table-cell-content-wrap" data-local-id="c04ffd3b-01ad-4de2-bd05-693ea2d6e608" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">None / Plate / Location / Writer / Category

</td><td class="pm-table-cell-content-wrap" data-local-id="577cace3-5271-450a-b205-f8d04df37007" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Splits data into one dataset per entity value.

</td></tr><tr data-local-id="cba9662c-b0c1-44be-8ceb-80ebb94c00ff" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="c15c87d4-61b5-47f9-a091-35a767ad4f50" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Entity Limit**

</td><td class="pm-table-cell-content-wrap" data-local-id="d492c94c-240c-45bd-83e3-20f72e3a3985" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Auto / Manual

</td><td class="pm-table-cell-content-wrap" data-local-id="aa6a90d5-aca5-409e-9a62-ba6192d9f20b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Auto = top N entities; Manual = pick specific values.

</td></tr><tr data-local-id="f6d72136-7435-44a0-9978-5a32769bcca2" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="211b4f3a-1129-46cd-99ac-9bdefef0e8b9" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Entity Filter**

</td><td class="pm-table-cell-content-wrap" data-local-id="8864efc1-6f96-45fa-8864-dcd2f51b50a8" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multi-select (up to 10)

</td><td class="pm-table-cell-content-wrap" data-local-id="ffb8d9d6-46f7-4195-836c-e2e4fb652c14" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Visible when Group by Entity + Manual limit is set.

</td></tr><tr data-local-id="0e8c2a1f-3ed2-4af6-842c-3b669eee9d85" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="e70f9b65-96e4-4c8f-82dd-28624168085a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Measure**

</td><td class="pm-table-cell-content-wrap" data-local-id="ba2f5a4f-2fcf-431e-a425-63366dbb0e69" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Count / Revenue

</td><td class="pm-table-cell-content-wrap" data-local-id="d44c1f32-85b1-4df7-9268-ed94faec51c5" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Whether Y-axis shows number of violations or dollar revenue.

</td></tr><tr data-local-id="68d85f54-0faf-49ca-bbed-9cc71de8f001" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="e71a7d47-b5a3-4ced-9cc5-620db22f1e70" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Columns** *(List only)*

</td><td class="pm-table-cell-content-wrap" data-local-id="60996b91-8c3b-4a5d-bded-96007d35f319" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Ticket, Issued, Fine, Towing, Adjusted Fine, Due Date, Warning, Spoiled, Collections, Plate, Location, Writer, Category, Lat, Long, Revenue, Count

</td><td class="pm-table-cell-content-wrap" data-local-id="9f28b3f8-d44d-43e9-8400-bd04d69472c6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Columns to include in the list table.

</td></tr><tr data-local-id="80d0b3dd-a523-42ca-abd7-58e67b7118c1" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="0c71d1a7-eec6-4e0a-b1f1-ff0b0ef61c2b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Sort Order**

</td><td class="pm-table-cell-content-wrap" data-local-id="07be609c-3f4d-4697-afc5-9d7ba24cb50e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Ascending / Descending

</td><td class="pm-table-cell-content-wrap" data-local-id="b9567225-3635-4065-960e-778616a91d67" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr></tbody></table>

</div></div></div></div></div></div>#### Filter Settings

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-options-desc-1"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-e44b66e9-f1a5-45de-bdb6-07d0f609a657" data-ssr-placeholder-replace="table-e44b66e9-f1a5-45de-bdb6-07d0f609a657" data-table-local-id="e44b66e9-f1a5-45de-bdb6-07d0f609a657" data-table-width="760"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr data-local-id="271d71f7-d604-40c3-a1d3-17ea0cbeed6c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="b87f3658-9319-4b12-9fc1-1b69a433ba2d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="9c6b0bd9-d2f9-4114-98c3-ecdd30ac44b6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Options

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="e3f6eff8-61ff-4944-958a-3cac3f1985c8" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="b1fb6a61-052c-4492-8244-4eee185ee989" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="22d30b3c-1475-460d-a6d9-8f361cd45c38" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Payment Status**

</td><td class="pm-table-cell-content-wrap" data-local-id="3ea642c4-060a-41ff-bf42-d5ba759239f6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Unpaid / Overdue / Paid / Collections (multi-select)

</td><td class="pm-table-cell-content-wrap" data-local-id="f0cc8e4c-e88a-4604-ac46-bd4af3d3cedc" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Filter by payment state.

</td></tr><tr data-local-id="93b0d3b5-b226-4896-9424-6f1421d9efd5" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="a68bed46-5d67-4320-b5f0-8c9cf08371ba" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Payable Only**

</td><td class="pm-table-cell-content-wrap" data-local-id="d17e004a-6b37-482a-bf77-3d268b540973" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Toggle

</td><td class="pm-table-cell-content-wrap" data-local-id="9b240c56-df2b-46ed-a90b-7eb0398139e1" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Show only violations that are currently payable.

</td></tr><tr data-local-id="d169f190-62b4-444c-b92d-bf679b255c23" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="31c099ea-796e-4a20-928b-b12d0921d739" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Geocoded Only**

</td><td class="pm-table-cell-content-wrap" data-local-id="d43b2f1f-c520-455b-8348-2344ec26e063" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Toggle

</td><td class="pm-table-cell-content-wrap" data-local-id="1157b5b2-d5b1-44eb-9c18-8559edf91622" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Show only violations with GPS coordinates (useful for Map widget).

</td></tr><tr data-local-id="3ff05c5b-8981-46fa-993a-6a676240409b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="21cd6320-b021-4fa0-b5cd-c7eef1ed40e6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Active Writer Only**

</td><td class="pm-table-cell-content-wrap" data-local-id="60c5ac3e-f639-4378-8200-110f9edf549e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Toggle (default: on)

</td><td class="pm-table-cell-content-wrap" data-local-id="557e8af6-c4bb-4f54-a5e6-409f41316b84" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Exclude records from deactivated admin accounts.

</td></tr></tbody></table>

</div></div></div></div></div></div>---

### Permit Stats

**Identifier:** <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">permit-stats</span>  
**Compatible widgets:** Graph, List

#### Display Settings

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-options-desc-2"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-36d8a72c-23c2-43c0-a874-49628dbae33e" data-ssr-placeholder-replace="table-36d8a72c-23c2-43c0-a874-49628dbae33e" data-table-local-id="36d8a72c-23c2-43c0-a874-49628dbae33e" data-table-width="760" style="width: 100%;"><colgroup><col style="width: 14.4219%;"></col><col style="width: 58.5229%;"></col><col style="width: 27.0552%;"></col></colgroup><tbody><tr data-local-id="34a1a5c1-7618-4ef7-b21a-d22d64921991" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="e0ba9ea8-b745-42ee-8148-8dc5173a12b4" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="78ae24c1-3839-4b9d-8aae-284758ce9360" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Options

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="0bc6b5db-075f-4337-94b3-b9890ed6d4bf" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="01508e0d-974a-4747-9e11-dbd60d18c19c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="0a50a11a-90a4-4654-97a1-59aaf0a0ce03" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Time Period**

</td><td class="pm-table-cell-content-wrap" data-local-id="58e444d5-f716-4cf7-a034-465b87262315" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">All Time / Last 7 Days / Last 30 Days / Last 3 Months / Last 6 Months / Year to Date / Last Year

</td><td class="pm-table-cell-content-wrap" data-local-id="fb2ae182-5671-482b-9d10-4683fa1f5930" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Date window filter on permit submit date.

</td></tr><tr data-local-id="820bcfbb-9195-4a0e-99b7-8d31afa27931" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="bb81a8e9-9ebe-4f0c-b48f-d9718be4563f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Group by** *(Graph only)*

</td><td class="pm-table-cell-content-wrap" data-local-id="17759546-26d0-4a78-bbbb-d15c8be406ba" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">None / Permit Type / Lot / User Type / Lot Group / Lot Zone

</td><td class="pm-table-cell-content-wrap" data-local-id="0dc65833-bc9e-43b3-85ab-0f1fed866244" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Splits into one dataset per group value.

</td></tr><tr data-local-id="ccb1affc-24d5-4f04-bf38-3d8e1785cf08" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="50306d55-5c64-414e-8071-a5b71754883a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Entity Limit** *(Graph only)*

</td><td class="pm-table-cell-content-wrap" data-local-id="c4f380aa-2700-4362-ae50-4f07e318e3c2" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Auto / Manual

</td><td class="pm-table-cell-content-wrap" data-local-id="ae795832-f257-4297-a9b3-c33e3df6141c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Auto = top N; Manual = pick specific values.

</td></tr><tr data-local-id="52675a8b-c068-4265-8201-da35b8d0a075" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="82e01c02-c21a-4a8e-bbed-16dffbe0325a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Entity Filter**

</td><td class="pm-table-cell-content-wrap" data-local-id="c0ee0444-0eac-421d-94b8-f5e34ef51088" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multi-select (up to 10)

</td><td class="pm-table-cell-content-wrap" data-local-id="ed58f85f-7433-40db-b385-62f47eb3342d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Shown when Manual limit is active.

</td></tr><tr data-local-id="eb895c1e-6431-4239-b152-65249559d788" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="1d312626-fd70-48d5-b42d-a92de6dc76d7" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Measure**

</td><td class="pm-table-cell-content-wrap" data-local-id="25b48892-e2e5-40ea-9fac-ff84c33b0502" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Count / Revenue

</td><td class="pm-table-cell-content-wrap" data-local-id="d8aaae01-a227-4da8-9745-8bc4e8f48792" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Count of permits vs. revenue generated.

</td></tr><tr data-local-id="10312c2c-c559-4c15-a3c1-c4e8b8cde7df" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="6ad5128c-d45c-4158-afd5-52c4f64d5d88" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Columns** *(List only)*

</td><td class="pm-table-cell-content-wrap" data-local-id="d3a2a732-d8d2-4733-b979-b8e9c520b19b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">User Type, Lot, Active Start, Active End, Lot Group, Price, Permit Type, Source, Lot Zone

</td><td class="pm-table-cell-content-wrap" data-local-id="6c9e201a-174b-4cd6-861d-856ce147c7cd" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr><tr data-local-id="4d7fff58-656e-4f5a-8be4-7ad101b2a9a3" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="99919879-b1b8-402e-ae6e-3d8a3e280fbd" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Sort Order**

</td><td class="pm-table-cell-content-wrap" data-local-id="884097a6-e279-443a-a857-f80c590e1e35" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Ascending / Descending

</td><td class="pm-table-cell-content-wrap" data-local-id="343cf6bf-ab13-46bf-b5c0-eafc1aa4c024" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr></tbody></table>

</div></div></div></div></div></div>#### Filter Settings

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-options-desc-3"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-445418c6-5c20-42b8-98a9-a2a50f79c6dc" data-ssr-placeholder-replace="table-445418c6-5c20-42b8-98a9-a2a50f79c6dc" data-table-local-id="445418c6-5c20-42b8-98a9-a2a50f79c6dc" data-table-width="760"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr data-local-id="ff65fdb5-227f-4ccd-bd6a-631417cf91e6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="91bb314c-5ddc-43b9-bccd-dd87c5c96b34" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="b456a512-fc9e-4240-9987-a8815e4374bd" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Options

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="82cab756-c9cd-4583-a1fe-1ae967974fca" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="7b24305d-6c1f-4392-804c-a708573864a0" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="671623e6-20bb-45bb-afde-bc73d082ae56" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Active Only**

</td><td class="pm-table-cell-content-wrap" data-local-id="5a9820b0-8699-4d13-ab65-6ac1014e6822" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Toggle

</td><td class="pm-table-cell-content-wrap" data-local-id="957c1de8-d507-42d9-8882-bac47cd155a4" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Show only currently active permits.

</td></tr><tr data-local-id="6b138370-dca1-429c-9df2-aa9ba975f364" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="482caeb1-927d-4eed-8fa7-c1ef1b5f01f7" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Permit Type**

</td><td class="pm-table-cell-content-wrap" data-local-id="7da25288-5d42-4258-83ad-cef74cb9fc3c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Standard, Temp, Cale sources (multi-select)

</td><td class="pm-table-cell-content-wrap" data-local-id="1dc0c471-d151-4496-ab01-19960d9a2644" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Filter by permit type/source.

</td></tr><tr data-local-id="d9a19cf9-e83a-4d42-8717-e4b134ac4539" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="df9fb3ee-5807-4fea-a2d2-a40f2b169a6f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Lots**

</td><td class="pm-table-cell-content-wrap" data-local-id="58d75bf4-eae2-4624-a0e1-2054eb2441bd" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multi-select (all lots)

</td><td class="pm-table-cell-content-wrap" data-local-id="267d55d4-c582-4ae1-990e-6c7bb4837515" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Restrict to specific parking lots.

</td></tr><tr data-local-id="72c0d811-e1fb-4250-90f5-d8bbd13115de" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="a912b8d2-fb80-437a-9252-d64493c6025e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Lot Groups**

</td><td class="pm-table-cell-content-wrap" data-local-id="a550a4d5-051c-4742-9916-91b2cbfa67b6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multi-select

</td><td class="pm-table-cell-content-wrap" data-local-id="ff3c21e7-db8c-4638-944b-c2bb5d0d2178" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Restrict to one or more lot groups.

</td></tr><tr data-local-id="3c311fe7-765f-4ccf-9531-627cc706f976" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="bb19b06c-f9b0-4381-a28c-643a7bcf511e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Lot Zones**

</td><td class="pm-table-cell-content-wrap" data-local-id="f99e5832-005f-4ea3-a8b3-852cab95f2f7" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multi-select

</td><td class="pm-table-cell-content-wrap" data-local-id="02d26e56-4676-4656-ae27-2045acf9b83a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Restrict to specific lot zones.

</td></tr></tbody></table>

</div></div></div></div></div></div>---

### LPR Stats

**Identifier:** <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">lpr-stats</span>  
**Compatible widgets:** Graph, Filterable Graph, List, Map

#### Display Settings

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-options-desc-4"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-a4ebe3df-8585-4959-9e1a-761cb0775d0b" data-ssr-placeholder-replace="table-a4ebe3df-8585-4959-9e1a-761cb0775d0b" data-table-local-id="a4ebe3df-8585-4959-9e1a-761cb0775d0b" data-table-width="760"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr data-local-id="cb72f1a7-7bcd-4eec-a91f-98c027b228f3" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="664dde51-c6b9-429a-994f-fab04def2d0d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="8ee21d52-4286-4c64-bcf2-4ce5866ab90a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Options

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="73669384-3842-4c1d-8adf-5de2e69f56fa" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="838e0e78-3bbc-4fbe-88e9-f72835a801d2" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="ed5702e0-2d07-4270-964e-10e9ac953106" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Time Period** *(Graph/List)*

</td><td class="pm-table-cell-content-wrap" data-local-id="c4155adb-be62-42c7-ba73-65df92ee7c90" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">All Time / Last 7 Days / Last 30 Days / Last 3 Months / Last 6 Months / YTD / Last Year

</td><td class="pm-table-cell-content-wrap" data-local-id="350cb5b1-6483-40d1-849d-7b3fb738ec9a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr><tr data-local-id="3cd81422-c73f-43bb-9555-73344fb9a1c4" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="7cca64f6-5c6c-44cc-8cee-af1f79bb3023" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Time Period** *(Map only —* <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">since\_geo</span>*)*

</td><td class="pm-table-cell-content-wrap" data-local-id="f473c5be-657c-4d69-acc4-e5d78b7951f3" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Last 4 Hours / Last 8 Hours / Last Day / Last 7 Days

</td><td class="pm-table-cell-content-wrap" data-local-id="c3d939fc-6968-43eb-bc40-a801fad88c34" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Short-term windows optimized for real-time map views.

</td></tr><tr data-local-id="01d7f83b-0f8f-46f0-a96b-98bade412c37" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="823b67c6-6e4c-499f-a944-60c64627a21e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Group by Time**

</td><td class="pm-table-cell-content-wrap" data-local-id="b8f4609f-5eeb-443b-b90a-35fc57e12cb6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">None / Day / Week / Month / Year

</td><td class="pm-table-cell-content-wrap" data-local-id="e768496b-1d9d-47db-9d24-be29c2ee0205" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Time-bucket for X-axis.

</td></tr><tr data-local-id="9cf8b7ff-a4ca-47cf-975e-6c025d1387cc" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="d26fb1ac-fdc1-4ef1-ba06-26ef23a1d02d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Group by Entity**

</td><td class="pm-table-cell-content-wrap" data-local-id="634392a3-7fa0-4680-b9c9-32c56c1a90fb" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">None / Camera / Permit Type / Device Type / Entry-Exit Type

</td><td class="pm-table-cell-content-wrap" data-local-id="1505f451-3582-401c-8241-4b7378f90ee5" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr><tr data-local-id="7f0ccaef-4ad5-470c-916f-77c4fb90346d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="1752a9ab-61b3-4e51-8512-c1a78d46e192" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Entity Limit**

</td><td class="pm-table-cell-content-wrap" data-local-id="2a6c3bf7-4a33-44fd-9f4a-5764fa22b08f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Auto / Manual

</td><td class="pm-table-cell-content-wrap" data-local-id="27ee22d5-c91d-49ef-a494-2fc7ad55ef44" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr><tr data-local-id="31ead3be-a646-4242-b830-b6c76df8c860" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="95deab6f-7a8f-483a-8ddf-f2b81cf4b615" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Entity Filter**

</td><td class="pm-table-cell-content-wrap" data-local-id="c5a7b1c1-6f1d-424f-8df1-190e6f28bf4d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multi-select (up to 10)

</td><td class="pm-table-cell-content-wrap" data-local-id="313fdf1e-866a-4c42-af12-25de13a60095" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr><tr data-local-id="3729d6b2-e53a-4c49-b7a8-e08683e3b756" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="cb40a923-e145-4705-bd32-5df8573b552e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Filter Dimension** *(Filterable Graph only)*

</td><td class="pm-table-cell-content-wrap" data-local-id="a3a194b5-ecd7-40d6-8cdb-6657afdcfbaf" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Camera / Permit Type / Device Type / Entry-Exit Type

</td><td class="pm-table-cell-content-wrap" data-local-id="a59e09e4-35a6-4392-a3a2-a8e7f7989450" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Sets the inline filter dropdown on the widget face.

</td></tr><tr data-local-id="e08e6757-ecd6-475c-8da2-e8ba383a8620" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="f6b0dbed-41e2-4abf-99fc-464a6476eada" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Columns** *(List only)*

</td><td class="pm-table-cell-content-wrap" data-local-id="f75a99fb-eb6c-4f49-be8f-62dbfc0a0d04" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Plate, Camera, Permit Type, Recorded, Device Type, Entry/Exit Type

</td><td class="pm-table-cell-content-wrap" data-local-id="1be0ab85-33f7-4c5b-be4e-d8bc2a8177cf" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Visible when Group by Entity is not set.

</td></tr><tr data-local-id="88df2011-80d7-4d69-807e-8592b98cde91" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="5f9de360-a19f-4b97-8632-56c55eb667ea" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Sort Order**

</td><td class="pm-table-cell-content-wrap" data-local-id="234ef3f4-6ac7-4892-b0f6-45ea4b5b6016" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Ascending / Descending

</td><td class="pm-table-cell-content-wrap" data-local-id="2139caf3-ef18-4f3e-9707-231f19c1d765" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr></tbody></table>

</div></div></div></div></div></div>#### Filter Settings

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-options-desc-5"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-cbc8dc03-bca3-4e95-b0a4-2a0421caadb5" data-ssr-placeholder-replace="table-cbc8dc03-bca3-4e95-b0a4-2a0421caadb5" data-table-local-id="cbc8dc03-bca3-4e95-b0a4-2a0421caadb5" data-table-width="760"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr data-local-id="c7d8fb10-f790-4ed3-90e1-acd1d92df464" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="0d025891-ca88-43cd-97d2-a29b48fe1ba0" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="5ec89390-b7eb-451b-8e76-7b095368f003" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Options

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="b2bc3c05-cc38-4e8b-9c2d-6e40b7a35a45" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="d1940939-418d-47fd-ba7e-3535922e271f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="659bcfa7-41c7-4d27-b886-552d48eebd77" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Permit Type**

</td><td class="pm-table-cell-content-wrap" data-local-id="db27091f-c9a5-44df-bf9b-487784ea195e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">All / Temp / Standard / None (multi-value)

</td><td class="pm-table-cell-content-wrap" data-local-id="3368ed6c-7489-46ac-a964-ad5f34eb4603" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Filter reads by permit validation result.

</td></tr><tr data-local-id="aaecd548-9bd0-4704-9011-96990b23fe0c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="3384c7af-ec7b-434a-ac52-5decc0434367" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Camera Type**

</td><td class="pm-table-cell-content-wrap" data-local-id="83b80366-edbc-4035-ad7a-04a2a1ce679c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Entry / Exit / Monitor / Patrol (multi-select)

</td><td class="pm-table-cell-content-wrap" data-local-id="0728623f-468a-426e-931f-64e12be9c0a6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Filter by camera classification.

</td></tr></tbody></table>

</div></div></div></div></div></div>#### Map-only Settings (Geo Display)

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-description-"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-6bfb5854-ad05-4ba6-847a-bc63d0552ab1" data-ssr-placeholder-replace="table-6bfb5854-ad05-4ba6-847a-bc63d0552ab1" data-table-local-id="6bfb5854-ad05-4ba6-847a-bc63d0552ab1" data-table-width="760"><colgroup><col></col><col></col></colgroup><tbody><tr data-local-id="7ccfdf94-ba10-403d-905d-8aec12c083d1" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="c1b63b81-8160-492e-a452-50088a247363" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="64879938-83d3-4a00-ad88-7e5baf5d7487" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="10a5052d-39af-4608-ac90-03b17f09592a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="445e0b7e-614b-4cc9-bffc-61a2376fe6e6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Cluster Pins**

</td><td class="pm-table-cell-content-wrap" data-local-id="86e34ae5-794c-4104-86f4-55afc9447388" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Enable/disable pin clustering.

</td></tr><tr data-local-id="d568ad95-fd2f-4a16-b813-dfa52b56b32d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="01d197d3-5602-40d0-9fcb-8da763b8be1a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Cluster Min Size**

</td><td class="pm-table-cell-content-wrap" data-local-id="27d1fb47-2d69-467c-857a-4bd4e6430c66" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Minimum number of pins before they cluster.

</td></tr><tr data-local-id="c5274147-c73d-47fc-abe2-850457c676d1" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="bcde94ca-58e3-4a85-a769-3d8839091250" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Cluster Max Zoom**

</td><td class="pm-table-cell-content-wrap" data-local-id="2fc51053-d5b8-4117-94cf-8c5c4f0f2f6d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Zoom level at which clusters dissolve into individual pins.

</td></tr><tr data-local-id="2035425b-e31c-4632-b187-3a22ae7483ff" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="24b91e0c-d7d9-4335-859a-279f88c63395" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Color by Age**

</td><td class="pm-table-cell-content-wrap" data-local-id="1e276372-2cf8-44e9-8001-41005d54956c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Colour-code pins by record age.

</td></tr><tr data-local-id="7763436a-16b7-4860-b75f-1fc8076050dd" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="11ab2f19-d033-4c5e-ac4a-d96fdc4c9a8f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Draw Path**

</td><td class="pm-table-cell-content-wrap" data-local-id="fc4f0c1c-ae5e-48cc-b873-76b3fda3f637" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Connect pins in chronological order with a line.

</td></tr><tr data-local-id="5cce493e-2f7c-4c44-b836-a5cd67174ca8" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="63c3dcb1-1f6d-4132-8750-714bad96f48b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Bounding Box**

</td><td class="pm-table-cell-content-wrap" data-local-id="21b02f1d-472a-4995-ae55-079e002292af" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Lat/Long min/max to limit the visible area.

</td></tr></tbody></table>

</div></div></div></div></div></div>---

## 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

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-permission-effect-da"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-bace80b3-4fe0-4317-ade0-e23204d7ba71" data-ssr-placeholder-replace="table-bace80b3-4fe0-4317-ade0-e23204d7ba71" data-table-local-id="bace80b3-4fe0-4317-ade0-e23204d7ba71" data-table-width="760" style="width: 82.1429%; height: 230.641px;"><colgroup><col style="width: 36.8116%;"></col><col style="width: 63.1884%;"></col></colgroup><tbody><tr data-local-id="beea7fd8-54f0-4a37-976c-a6d946b11f04" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow" style="height: 34.1094px;"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="0d2291c5-505c-45ae-baa4-4528a8f5f426" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader" style="height: 34.1094px;">Permission

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="f3172294-ab78-41bd-9e30-39874e45a30f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader" style="height: 34.1094px;">Effect

</th></tr><tr data-local-id="fcfb143f-6aee-4d63-b4fd-b873a2ed0842" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow" style="height: 35.7344px;"><td class="pm-table-cell-content-wrap" data-local-id="ad009ce6-83a2-4790-80d6-2e643a652d78" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 35.7344px;"><span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">dashboard\_browse</span>

</td><td class="pm-table-cell-content-wrap" data-local-id="efcc30bd-79c9-45e2-882f-62e11276d973" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 35.7344px;">Can view dashboards marked *Visible*.

</td></tr><tr data-local-id="b0d0a933-be89-4085-a7d7-1d8876d31c03" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow" style="height: 35.7344px;"><td class="pm-table-cell-content-wrap" data-local-id="926a4695-5edd-43a2-b1e5-48269cf04326" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 35.7344px;"><span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">dashboard\_edit\_any</span>

</td><td class="pm-table-cell-content-wrap" data-local-id="4945ac06-f3d7-4ac9-b9e7-172fd1ac446f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 35.7344px;">Can edit any dashboard regardless of ownership.

</td></tr><tr data-local-id="38afac24-7ee8-431f-afa9-2f1805b48b49" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow" style="height: 35.7344px;"><td class="pm-table-cell-content-wrap" data-local-id="7da15acf-2129-458d-84b4-f473fe407eab" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 35.7344px;"><span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">dashboard\_set\_org\_default</span>

</td><td class="pm-table-cell-content-wrap" data-local-id="edd0527d-6ee6-4824-9757-9a026987e8e4" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 35.7344px;">Can promote a dashboard to org-wide default.

</td></tr><tr data-local-id="bf9a9d6c-9536-4b6a-81a5-bffaff877b5e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow" style="height: 34.1094px;"><td class="pm-table-cell-content-wrap" data-local-id="e9cd4b96-5244-40e3-ad52-00302227e012" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 34.1094px;">*(Owner)*

</td><td class="pm-table-cell-content-wrap" data-local-id="cbd562cc-bc5c-4d4d-8ea3-0ea50605f2ce" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 34.1094px;">Full edit rights on own dashboards.

</td></tr><tr data-local-id="e33f4dbd-ce25-42ae-9603-401bea520d13" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow" style="height: 55.2188px;"><td class="pm-table-cell-content-wrap" data-local-id="e02b8de4-0b5e-4a5e-9720-bce57dc01bc9" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 55.2188px;">*(Collaborator)*

</td><td class="pm-table-cell-content-wrap" data-local-id="46f9d5c0-c54e-4e1b-9630-0eb862134cf2" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 55.2188px;">View and edit rights on dashboards shared with them.

</td></tr></tbody></table>

</div></div></div></div></div></div>---

## <span style="color: rgb(22, 145, 121);">Tips &amp; Best Practices</span>

- <span style="color: rgb(22, 145, 121);">**Use the Filterable Graph** for LPR Camera data — set *Filter Dimension* to <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">Camera</span> to get a per-camera dropdown directly on the widget without opening settings.</span>
- <span style="color: rgb(22, 145, 121);">**Star your most-used dashboard** so it loads automatically when you navigate to the dashboard page.</span>
- <span style="color: rgb(22, 145, 121);">**Group by Entity + Stacked Bar** is the most readable combination for comparing multiple cameras, lots, or writers side by side.</span>
- <span style="color: rgb(22, 145, 121);">**Year to Date + Group by Month** gives a clean year-progress chart that resets automatically each January.</span>
- <span style="color: rgb(22, 145, 121);">**Geo widgets work best** with *Last 4–8 Hours* time range and *Cluster Pins* enabled for busy patrol routes.</span>
- <span style="color: rgb(22, 145, 121);">**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.</span>