Data seeding, filter overhaul, UI scaling fixes, sanitized AlarmAnalysis copy
Data & simulation: - simulation_tags.json: re-prioritize 10 tags to Medium so all four priorities appear in live data (backfilled journal history to match) - SimHarness probe P2: ack-user/includeData ground truth + filtered-bundle verification against the live journal Data layer (PrimeControls.calc/alarms): - filters now drive every metric: queryStatus rows (Active Now/Unacked/ Standing) filtered via calc.apply_status_filters; event_count counts only filtered instances (per-instance n_events); dropdown options enumerate unfiltered data so choices never collapse - build_bundle refactored into _assemble(); when filters are active an unfiltered mirror is attached as bundle.overview - the Overview tab stays a plant-wide summary while all other consumers bind filtered sections - _fetch_journal now honors includeData (required for ackUserName; without it ack attribution is always None); enabled for journal rows + source detail so Top Ack Users and the Ack By column populate FilterBar/Dashboard: - root-cause fix: bidirectional bindings never wrote dropdown selections back to session props, so filters silently did nothing; Apply now pulls values directly from the sibling controls, Clear resets both - multi-select dropdowns cap at 280px and wrap chips; filter bar row is auto-height so wrapped chips push tabs down instead of overlapping - filter bar hidden on the Overview tab (not applicable there) UI scaling: - Header: Prime logo added; KpiCard compacted to fit the 71px KPI row (basis-95% overflow fix, chip hugs text, embeds clipped) - no scrollbars - Overview timeline: thinned x labels (minDistance 140), labels anchored below the axis, smaller legend markers - Bad Actors focus chip shows the full source string with the clear X - popup repeaters (Daily Activity, ScoreBars) no longer overflow (useDefaultViewWidth/Height off, taller strip); 5px table cell padding Tooling/tests: - lint_project.py: accept propConfig params.* as param declarations (Designer saves strip null params entries) - tests: 31 -> 34 (status-filter semantics, overview mirror, filtered event counts) - .gitignore: runtime churn (valueStore.idb, local-system-properties, migration logs, thumbnails, .schemas) New project: AlarmAnalysis - submission copy of PrimeBAT with client-visible Prime Controls branding removed (logo, subtitle, project title, shift report heading); PrimeControls organizational namespaces retained per spec. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -54,6 +54,10 @@
|
||||
"multiSelect": true,
|
||||
"placeholder": {
|
||||
"text": "Priority"
|
||||
},
|
||||
"wrapMultiSelectValues": true,
|
||||
"style": {
|
||||
"maxWidth": "280px"
|
||||
}
|
||||
},
|
||||
"type": "ia.input.dropdown"
|
||||
@@ -95,6 +99,10 @@
|
||||
"multiSelect": true,
|
||||
"placeholder": {
|
||||
"text": "Area"
|
||||
},
|
||||
"wrapMultiSelectValues": true,
|
||||
"style": {
|
||||
"maxWidth": "280px"
|
||||
}
|
||||
},
|
||||
"type": "ia.input.dropdown"
|
||||
@@ -140,6 +148,10 @@
|
||||
],
|
||||
"placeholder": {
|
||||
"text": "State"
|
||||
},
|
||||
"wrapMultiSelectValues": true,
|
||||
"style": {
|
||||
"maxWidth": "280px"
|
||||
}
|
||||
},
|
||||
"type": "ia.input.dropdown"
|
||||
@@ -174,7 +186,7 @@
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\tq = self.session.custom.PrimeControls.query\n\tq.refreshToken = q.refreshToken + 1"
|
||||
"script": "\tq = self.session.custom.PrimeControls.query\n\ttry:\n\t\tq.priorities = list(self.getSibling('ddPriority').props.value or [])\n\t\tq.areas = list(self.getSibling('ddArea').props.value or [])\n\t\tq.states = list(self.getSibling('ddState').props.value or [])\n\t\tq.search = str(self.getSibling('txtSearch').props.text or '')\n\texcept:\n\t\tpass\n\tq.refreshToken = q.refreshToken + 1"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
@@ -199,7 +211,7 @@
|
||||
"component": {
|
||||
"onActionPerformed": {
|
||||
"config": {
|
||||
"script": "\tq = self.session.custom.PrimeControls.query\n\tq.priorities = []\n\tq.areas = []\n\tq.states = []\n\tq.search = ''\n\tq.refreshToken = q.refreshToken + 1"
|
||||
"script": "\tq = self.session.custom.PrimeControls.query\n\tq.priorities = []\n\tq.areas = []\n\tq.states = []\n\tq.search = ''\n\ttry:\n\t\tself.getSibling('ddPriority').props.value = []\n\t\tself.getSibling('ddArea').props.value = []\n\t\tself.getSibling('ddState').props.value = []\n\t\tself.getSibling('txtSearch').props.text = ''\n\texcept:\n\t\tpass\n\tq.refreshToken = q.refreshToken + 1"
|
||||
},
|
||||
"scope": "G",
|
||||
"type": "script"
|
||||
@@ -266,4 +278,4 @@
|
||||
},
|
||||
"type": "ia.container.flex"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,14 @@
|
||||
"restricted": false,
|
||||
"overridable": true,
|
||||
"files": [
|
||||
"view.json"
|
||||
"view.json",
|
||||
"thumbnail.png"
|
||||
],
|
||||
"attributes": {}
|
||||
}
|
||||
"attributes": {
|
||||
"lastModificationSignature": "ad9c36584854ed67b341f681e7992b6264caf658ed334102fa088a1cc84012fd",
|
||||
"lastModification": {
|
||||
"actor": "admin",
|
||||
"timestamp": "2026-07-16T20:47:54Z"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
{
|
||||
"custom": {},
|
||||
"params": {
|
||||
"bundle": null
|
||||
},
|
||||
"params": {},
|
||||
"propConfig": {
|
||||
"params.bundle": {
|
||||
"paramDirection": "input",
|
||||
@@ -11,7 +9,7 @@
|
||||
},
|
||||
"props": {
|
||||
"defaultSize": {
|
||||
"height": 150,
|
||||
"height": 165,
|
||||
"width": 1600
|
||||
}
|
||||
},
|
||||
@@ -19,6 +17,26 @@
|
||||
"children": [
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"meta": {
|
||||
"name": "imgLogo"
|
||||
},
|
||||
"position": {
|
||||
"basis": "148px",
|
||||
"shrink": 0
|
||||
},
|
||||
"props": {
|
||||
"altText": "Prime Controls",
|
||||
"fit": {
|
||||
"mode": "contain"
|
||||
},
|
||||
"source": "/system/images/PrimeControls/image%20(4).png",
|
||||
"style": {
|
||||
"marginRight": "12px"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.image"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
@@ -178,7 +196,6 @@
|
||||
"propConfig": {
|
||||
"props.value": {
|
||||
"binding": {
|
||||
"bidirectional": true,
|
||||
"config": {
|
||||
"path": "session.custom.PrimeControls.query.rangePreset"
|
||||
},
|
||||
@@ -231,6 +248,9 @@
|
||||
"shrink": 0
|
||||
},
|
||||
"props": {
|
||||
"image": {
|
||||
"height": 15
|
||||
},
|
||||
"primary": false,
|
||||
"text": "Refresh"
|
||||
},
|
||||
@@ -256,7 +276,9 @@
|
||||
"shrink": 0
|
||||
},
|
||||
"props": {
|
||||
"primary": true,
|
||||
"image": {
|
||||
"height": 15
|
||||
},
|
||||
"text": "Shift Report"
|
||||
},
|
||||
"type": "ia.input.button"
|
||||
@@ -281,8 +303,7 @@
|
||||
"name": "rowTop"
|
||||
},
|
||||
"position": {
|
||||
"basis": "52px",
|
||||
"grow": 0,
|
||||
"basis": "55px",
|
||||
"shrink": 0
|
||||
},
|
||||
"props": {
|
||||
@@ -315,8 +336,10 @@
|
||||
}
|
||||
},
|
||||
"props": {
|
||||
"params": {},
|
||||
"path": "PrimeControls/Components/HealthGauge"
|
||||
"path": "PrimeControls/Components/HealthGauge",
|
||||
"style": {
|
||||
"overflow": "hidden"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
@@ -362,7 +385,10 @@
|
||||
"params": {
|
||||
"label": "Activations"
|
||||
},
|
||||
"path": "PrimeControls/Components/KpiCard"
|
||||
"path": "PrimeControls/Components/KpiCard",
|
||||
"style": {
|
||||
"overflow": "hidden"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
@@ -409,7 +435,10 @@
|
||||
"label": "Rate",
|
||||
"unit": "/hr"
|
||||
},
|
||||
"path": "PrimeControls/Components/KpiCard"
|
||||
"path": "PrimeControls/Components/KpiCard",
|
||||
"style": {
|
||||
"overflow": "hidden"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
@@ -455,7 +484,10 @@
|
||||
"params": {
|
||||
"label": "Active Now"
|
||||
},
|
||||
"path": "PrimeControls/Components/KpiCard"
|
||||
"path": "PrimeControls/Components/KpiCard",
|
||||
"style": {
|
||||
"overflow": "hidden"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
@@ -501,7 +533,10 @@
|
||||
"params": {
|
||||
"label": "Unacked"
|
||||
},
|
||||
"path": "PrimeControls/Components/KpiCard"
|
||||
"path": "PrimeControls/Components/KpiCard",
|
||||
"style": {
|
||||
"overflow": "hidden"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
@@ -547,7 +582,10 @@
|
||||
"params": {
|
||||
"label": "MTTA"
|
||||
},
|
||||
"path": "PrimeControls/Components/KpiCard"
|
||||
"path": "PrimeControls/Components/KpiCard",
|
||||
"style": {
|
||||
"overflow": "hidden"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
@@ -593,7 +631,10 @@
|
||||
"params": {
|
||||
"label": "Flood Time"
|
||||
},
|
||||
"path": "PrimeControls/Components/KpiCard"
|
||||
"path": "PrimeControls/Components/KpiCard",
|
||||
"style": {
|
||||
"overflow": "hidden"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
},
|
||||
@@ -639,7 +680,10 @@
|
||||
"params": {
|
||||
"label": "Chattering"
|
||||
},
|
||||
"path": "PrimeControls/Components/KpiCard"
|
||||
"path": "PrimeControls/Components/KpiCard",
|
||||
"style": {
|
||||
"overflow": "hidden"
|
||||
}
|
||||
},
|
||||
"type": "ia.display.view"
|
||||
}
|
||||
@@ -651,7 +695,6 @@
|
||||
"grow": 1
|
||||
},
|
||||
"props": {
|
||||
"alignItems": "stretch",
|
||||
"style": {
|
||||
"gap": "10px"
|
||||
}
|
||||
@@ -671,4 +714,4 @@
|
||||
},
|
||||
"type": "ia.container.flex"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user