GIG/DASH

Quick Start

1
Settings → Add City
Type a city name (e.g. Mesa, AZ) and click Add City. This creates a slot that CSVs can be uploaded into.
2
Drop a CSV onto the city
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.
3
Check the Overview
Navigate to Overview to see gig counts, aging, and status breakdowns across all cities. The dashboard updates immediately after each upload.
4
Re-upload weekly to track trends
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.

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).

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 the /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.

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.

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). Uses column names like gigstatus, gigtype, datecreated, crewsupervisor, constructioncrew.

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. The city name comes from the city you selected in Settings — not from the filename or any column.

Column name variations

The app uses an alias table to map many common column name spellings to the same field. If a future export uses a slightly different header name, it will still be recognized as long as it matches a known alias. Fields that can't be matched are left blank.

Fields Explained

FieldWhat it meansSource column(s)
city The city label you assigned in Settings when uploading the file. set by you
status Current workflow state of the gig. Stored in uppercase (e.g. OPEN, MISSING_PHOTO, 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
critical Whether the gig is flagged critical. Values: Yes / No. critical
origin Who originated the gig (e.g. ECC, SEA). origin
supervisor Assigned crew supervisor ID or name. Shown as Unassigned if blank. crewsupervisor, supervisor, assigned_to
crew Construction crew assigned. 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

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_days exceeds 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:

ColumnWhat it shows
TotalAll gigs for the city.
OpenGigs with status exactly OPEN.
Over 30dGigs older than 30 days (any status).
Δ TotalChange in total gig count vs. the previous upload for that city. 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 city, with its count.
Type CountNumber 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. Click any column header to sort.

The Export CSV button downloads the currently filtered and sorted view as a single 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_PHOTOWork is complete but a photo is required before closing. Tracked separately from Open.
CMPLTGig is complete.
INPROGWork is in progress.
QCINPROGQC 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.

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.