Oregon |

Quick Start

1
Settings → Add Project
Type a project name (e.g. Mesa, AZ) and click Add Project. This creates a slot that CSVs can be uploaded into.
2
Drop a CSV onto the project
On the Settings page, drag your export CSV directly onto the project's drop zone, or click the zone to browse. Only .csv files are accepted.
3
Check the Overview
Navigate to Overview to see gig counts, aging, and status breakdowns across all projects. The dashboard updates immediately after each upload.
4
Re-upload weekly to track trends
Each time you upload a new CSV for a project, a snapshot is recorded. After two uploads you'll see trend charts and +/− delta columns on the dashboard. A new upload for a project always replaces the old file rather than stacking on top of it, so totals never double up.
5
Optional: install the Chrome Extension
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 Projects & Files

Adding a project

Go to Settings and type a name in the Add Project 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 project

Click Rename in the project 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 project's drop zone. You can also drop multiple files at once onto the same project. The file is saved to that region's data folder on the server and linked to that project. Files uploaded this way are the only ones the dashboard reads — nothing is auto-detected from the folder. Uploading a new file for a project automatically removes the previous one so counts don't stack.

Removing a file

Click Remove next to any file inside a project block. The file is deleted from the server immediately.

Deleting a project

Click Delete in the project header. This removes the project, unlinks all its files, and deletes those files from the server. The action asks for confirmation first.

Last Updated per Project

The Settings page has a panel listing every project, the timestamp of its most recent CSV upload, and how it was uploaded (Batch, Manual, or Extension sync). Use this to spot projects that haven't been refreshed recently.

Batch Upload

Instead of uploading one file per project, drag multiple CSVs at once onto the Batch Upload zone on the Settings page. The app tries to detect the correct project 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) project in a dropdown.

  • Files with a project already detected are outlined in green and marked Auto.
  • Files that couldn't be matched are outlined in amber and marked Manual — pick a project from the dropdown before confirming.
  • Click Preview ▾ under any filename to see the first 10 rows of that CSV before you commit to a project assignment.
  • Click Confirm & Upload All to save everything in one step. Any file left without a project selected is skipped.

This is also the page used to confirm files captured by the Chrome extension when it couldn't auto-detect a project — click Confirm X pending files → on the Settings page's Extension Sync Log panel to review them all together.

Auto-Routing Keywords

Each project 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 project 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 project names. Only if nothing matches at all does a file require manual confirmation.

Chrome Extension — How Sync Works

The extension currently watches downloads from:

  • *.arcgis.com
  • ecc-gis.mycompanyview.com

When a matching CSV download completes, the extension:

  1. Re-fetches the file's URL using your active browser session (so SSO logins work without re-authenticating).
  2. Uploads it to GigDash's /<region>/api/extension-upload endpoint, using the region selected in the extension popup.
  3. If a project is detected automatically, the file is saved and you get a Chrome notification confirming success.
  4. If no project 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 project 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 project is parsed from the project_id column (e.g. C00001695_A02253_OK_STILLWATER → Stillwater, OK) and fuzzy-matched to your project 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

FieldWhat it meansSource 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. Uploading a new PRG file for a city replaces its previous PRG file — counts never stack — and records a snapshot used by the trend chart below.

City code mapping

Use the PRG City Codes table in Settings to link codes like DENDenver. 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), an Issue Count Trends chart per city (total vs. pending, one line each, appears once a city has at least two PRG uploads), 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 projects:

  • Total Gigs — every row across all uploaded CSVs.
  • Projects Tracked — number of projects with at least one uploaded file.
  • Gigs Over 30 Days — gigs whose age_days exceeds 30, regardless of status.
  • Avg Age (days) — mean age across all gigs that have a creation date.

Project Rankings Table

Every column header is clickable to sort. Click again to reverse direction. The columns are:

ColumnWhat it shows
TotalAll gigs for the project.
OpenGigs with status exactly OPEN.
Over 30dGigs older than 30 days (any status).
Δ TotalChange in total gig count vs. the previous upload for that project. Green = fewer gigs, red = more. until 2 uploads exist.
Δ Over 30dChange in over-30 count vs. previous upload. Green = fewer aging gigs, red = more.
CriticalGigs flagged as critical.
Avg AgeMean age in days for all gigs with a creation date.
OldestAge in days of the single oldest gig.
Top TypeThe most common gig type for that project, with its count.

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:

ColumnWhat it shows
CityThe city this gig belongs to.
ProjectWork order or service area ID (ServinareaID / workorderid / workorder_id).
CreatedDate the gig was created (YYYY-MM-DD).
TypeNormalized gig type (e.g. Restoration_Trench).
CrewAssigned 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+.
CommentsFree-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.

Gig Statuses

Statuses come directly from the CSV and are stored in uppercase. Common values seen in these exports:

StatusMeaning
OPENGig is active and awaiting action.
MISSING_PHOTOField work is done but a required photo is still outstanding. Counted as Open.
CMPLTStill under construction in some form -- counted as Open, same as every other status below.
INPROGWork is in progress. Counted as Open.
QCINPROGQC review is in progress. Counted as Open.

A gig only stops being "Open" by disappearing from the next CSV upload for its city entirely -- there is no status value that marks a gig closed in place. Any other status value found in the CSV will appear on the dashboard as-is and is also counted as Open.

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.

0–7 days
8–14 days
15–30 days
31–60 days
61–90 days
90+ days

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, prg_snapshots.json)
  • Extension sync log (extension_log.json)
  • Last-upload timestamps per project

What is kept:

  • Project 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 project to restore data.