Quick Start
Type a city name (e.g.
Mesa, AZ) and click Add City. This creates a slot that CSVs can be uploaded into.
On the Settings page, drag your export CSV directly onto the city's drop zone, or click the zone to browse. Only
.csv files are accepted.
Navigate to Overview to see gig counts, aging, and status breakdowns across all cities. The dashboard updates immediately after each upload.
Each time you upload a new CSV for a city, a snapshot is recorded. After two uploads you'll see trend charts and +/− delta columns on the dashboard. A new upload for a city always replaces the old file rather than stacking on top of it, so totals never double up.
If your CSVs come from an ArcGIS-style dashboard, the GigDash Sync extension can auto-import them the moment they download. See Chrome Extension below.
Managing Cities & Files
Adding a city
Go to Settings and type a name in the Add City box. The name you type is exactly what appears on the dashboard — use whatever label makes sense to you (e.g. Logan, Logan, UT, Logan Utah).
Renaming a city
Click Rename in the city header to change its label without losing its uploaded files, contractor mappings, or auto-routing keywords. Useful when you start out with a generic name (e.g. Englewood) and want to switch it to the name your CSVs actually use (e.g. Denver).
Uploading a CSV
Drag a CSV file onto a city's drop zone. You can also drop multiple files at once onto the same city. The file is saved to that region's data folder on the server and linked to that city. Files uploaded this way are the only ones the dashboard reads — nothing is auto-detected from the folder. Uploading a new file for a city automatically removes the previous one so counts don't stack.
Removing a file
Click Remove next to any file inside a city block. The file is deleted from the server immediately.
Deleting a city
Click Delete in the city header. This removes the city, unlinks all its files, and deletes those files from the server. The action asks for confirmation first.
Last Updated per City
The Settings page has a panel listing every city, the timestamp of its most recent CSV upload, and how it was uploaded (Batch, Manual, or Extension sync). Use this to spot cities that haven't been refreshed recently.
Batch Upload
Instead of uploading one file per city, drag multiple CSVs at once onto the Batch Upload zone on the Settings page. The app tries to detect the correct city for each file automatically (see Auto-Routing Keywords below), then shows a single Confirm Batch Upload page listing every file with its detected (or blank) city in a dropdown.
- Files with a city already detected are outlined in green and marked Auto.
- Files that couldn't be matched are outlined in amber and marked Manual — pick a city from the dropdown before confirming.
- Click Preview ▾ under any filename to see the first 10 rows of that CSV before you commit to a city assignment.
- Click Confirm & Upload All to save everything in one step. Any file left without a city selected is skipped.
This is also the page used to confirm files captured by the Chrome extension when it couldn't auto-detect a city — click Confirm X pending files → on the Settings page's Extension Sync Log panel to review them all together.
Auto-Routing Keywords
Each city has a collapsible Auto-Route Keywords section on Settings. Add one keyword per line (e.g. denver, den, vero_n) and the app will match it against the filename or the project_id column to assign incoming CSVs to that city automatically — used by both Batch Upload and the Chrome extension.
If no keyword matches, the app falls back to built-in pattern recognition for the two known filename/project_id formats (see CSV Formats), then fuzzy-matches the result against your existing city names. Only if nothing matches at all does a file require manual confirmation.
Chrome Extension — Download & Install
The GigDash Sync extension watches your browser's downloads. When a CSV finishes downloading from a tracked ArcGIS-style dashboard, it re-fetches the file using your existing logged-in session and uploads it to GigDash automatically — no manual download/upload step needed.
Save and unzip it anywhere on the new computer.
chrome://extensions.gigdash-extension folder.http://39.loganqc.work) if it isn't already correct.Chrome Extension — How Sync Works
The extension currently watches downloads from:
*.arcgis.comecc-gis.mycompanyview.com
When a matching CSV download completes, the extension:
- Re-fetches the file's URL using your active browser session (so SSO logins work without re-authenticating).
- Uploads it to GigDash's
/<region>/api/extension-uploadendpoint, using the region selected in the extension popup. - If a city is detected automatically, the file is saved and you get a Chrome notification confirming success.
- If no city can be detected, a confirmation tab opens automatically to the Confirm Batch Upload page.
Sync Log
Every sync attempt — success, failure, or needs-confirmation — is recorded. You can see it in two places:
- Extension popup — click the toolbar icon for a live-updating list of recent syncs.
- Settings page — the Extension Sync Log panel at the top shows the same history with ✓ / ✗ / ? status icons, refreshes automatically, and lets you delete individual entries.
CSV Formats
The app handles two export formats automatically. You don't need to rename or convert files — just drop them in.
Format A AddMarkup exports
Exported from ArcGIS with "AddMarkup" in the filename (e.g. Google_ECC_AZ_Mesa_AddMarkup_…csv). The city is parsed directly from the filename. Uses column names like gigstatus, gigtype, datecreated, crewsupervisor, constructioncrew, ServinareaID.
Format B Open Gig List exports
Exported as a flat gig list (e.g. Open Gig List.csv). Uses column names like gig_status, gig_type, created_date, supervisor, crew, workorder_id. The city is parsed from the project_id column (e.g. C00001695_A02253_OK_STILLWATER → Stillwater, OK) and fuzzy-matched to your city list.
Column name variations
The app uses an alias table to map common column name spellings to a single internal field. If a future export uses a slightly different header, it will still be recognized. Fields that can't be matched are left blank.
Fields Explained
| Field | What it means | Source column(s) |
|---|---|---|
| city | The city label assigned in Settings — either detected automatically or chosen manually on the Confirm page. | set by you / auto-detected |
| project_name | The work order or service area identifier for the gig. Shown in the All Gigs and Over 30 Days tables. | ServinareaID, workorderid, workorder_id |
| status | Current workflow state of the gig. Stored in uppercase (e.g. OPEN, INPROG, QCINPROG, CMPLT). |
gigstatus, gig_status, workflow_status |
| gig_type | The type of work. Normalized to Title_Case with underscores (e.g. Restoration_Trench, Conduit_Length). Known abbreviations are expanded automatically. |
gigtype, gig_type, work_type |
| crew | Construction crew assigned. If you've entered a display name for the crew code in Settings → Contractors, that name is shown instead of the raw code. Shown as Unassigned if blank. |
constructioncrew, crew |
| created_date | Date the gig was created. Parsed from ISO format (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS). |
datecreated, created_date |
| age_days | Number of days since created_date as of when the dashboard loads. Blank if no creation date exists. |
calculated |
| comments | Free-text notes attached to the gig. | comments |
PRG Quality Reports
PRG files use a completely different schema from the standard gig CSVs and are tracked in a separate PRG section (nav link at the top of every page).
Uploading PRG files
Go to Settings → PRG Quality Reports at the bottom of the page. Drag a PRG CSV onto the upload zone. The app reads the Project # column to extract the city code prefix (e.g. DEN from DEN201d-905) and asks you to map that code to one of your cities if it hasn't been mapped yet.
City code mapping
Use the PRG City Codes table in Settings to link codes like DEN → Denver. Once mapped, all rows with that prefix are automatically assigned to the correct city.
PRG page
The PRG page shows a stats row (Total Issues, Pending Resolution, Pending >30 Days, Resolved) and a filterable table with City, Project #, Address (Google Maps linked), Issue, Contractor, Crew Lead, Age, Inspected date, and Notes. Use the City / Contractor / Status dropdowns to narrow the view, and the Show Resolved checkbox to include closed issues.
File encoding
PRG exports are often saved in Windows-1252 encoding. The app detects this automatically — no conversion needed.
Overview Stats
The four stat cards at the top of the Overview page show totals across all cities:
- Total Gigs — every row across all uploaded CSVs.
- Cities Tracked — number of cities with at least one uploaded file.
- Gigs Over 30 Days — gigs whose
age_daysexceeds 30, regardless of status. - Avg Age (days) — mean age across all gigs that have a creation date.
City Rankings Table
Every column header is clickable to sort. Click again to reverse direction. The columns are:
| Column | What it shows |
|---|---|
| Total | All gigs for the city. |
| Open | Gigs with status exactly OPEN. |
| Over 30d | Gigs older than 30 days (any status). |
| Δ Total | Change in total gig count vs. the previous upload for that city. Green = fewer gigs, red = more. — until 2 uploads exist. |
| Δ Over 30d | Change in over-30 count vs. previous upload. Green = fewer aging gigs, red = more. |
| Critical | Gigs flagged as critical. |
| Avg Age | Mean age in days for all gigs with a creation date. |
| Oldest | Age in days of the single oldest gig. |
| Top Type | The most common gig type for that city, with its count. |
| Type Count | Number of distinct gig types present. |
All Gigs Page
Shows every individual gig row. Use the filter dropdowns at the top to narrow by city, status, or gig type, then click Apply. The table columns are:
| Column | What it shows |
|---|---|
| City | The city this gig belongs to. |
| Project | Work order or service area ID (ServinareaID / workorderid / workorder_id). |
| Created | Date the gig was created (YYYY-MM-DD). |
| Type | Normalized gig type (e.g. Restoration_Trench). |
| Crew | Assigned crew — mapped to a display name if one has been set in Settings → Contractors. |
| Age (days) | Days since creation, color-coded: green <30, amber 30–89, red 90+. |
| Comments | Free-text notes from the CSV. |
The Export CSV button downloads the currently filtered and sorted view as a CSV file — useful for sharing a subset of gigs.
Trends & History
Every time you upload a CSV for a city, the app records a snapshot: the date, total gig count, open count, and over-30 count for that city at that moment. Snapshots are stored per region in /data/<region>/snapshots.json.
The Trends panel on the Overview page shows a small chart per city once at least two uploads exist. Each chart has:
- A solid red line — total gig count over time.
- A dashed amber line — gigs over 30 days over time.
- A delta badge in the top-left corner showing the change from the second-to-last upload to the most recent one.
The Δ columns in the City Rankings table show the same last-to-previous delta in numeric form.
Gig Statuses
Statuses come directly from the CSV and are stored in uppercase. Common values seen in these exports:
| Status | Meaning |
|---|---|
| OPEN | Gig is active and awaiting action. |
| MISSING_PHOTO | Work is complete but a photo is required before closing. Tracked separately from Open. |
| CMPLT | Gig is complete. |
| INPROG | Work is in progress. |
| QCINPROG | QC review is in progress. |
Any other status values found in the CSV will appear on the dashboard as-is.
Aging Buckets
The Aging table on the Overview page groups gigs by how old they are. Age is calculated from created_date to today's date each time the page loads.
The color coding on individual age cells in the Gig List follows the same scale — green for new, amber for aging, red/bold for old.
Gigs with no created_date in the CSV appear in the Unknown bucket and are excluded from average age calculations.
Resetting Data
The Danger Zone panel at the bottom of the Settings page lets you wipe all data for testing or a fresh start. Type RESET exactly into the confirmation box and click the button.
What gets deleted:
- All uploaded gig CSV files (registered and any unregistered files in
/data) - All PRG CSV files
- Snapshot history (
snapshots.json) - Extension sync log (
extension_log.json) - Last-upload timestamps per city
What is kept:
- City names
- Contractor code → display name mappings
- Auto-routing keywords
- PRG city code mappings
There is no undo. After a reset, re-upload CSVs to each city to restore data.