Skip to content

Views pack and the PDF report

The full pages (Findings, a finding, Anomaly Watch setup and queue, the detector, Alarm KPIs, Playbooks and the context-model editor) open with a What this page is for box (what the page is for, how to use it, what happens next); Hide folds it for the session. The text comes from system.artekis.access (views.help).

The module carries a Perspective views pack and installs it from the Status page's Views pack card into the project you choose. An install writes the pack's views and style classes under Artekis/, adds the artekisFinding session message handler and the page routes where they are free, and the artekis-ask right shared dock (new sessions only; a side shows one dock at a time, so Ask replaces another right dock while it is open). It never overwrites a handler, route or dock of yours, and reports what it left alone. A project that inherits its session events or page configuration from a parent gets neither written into it, since a copy would shadow the parent's for good. For the artekisFinding handler the card then offers Add the handler to (handlerToParent=true on the install route): the handler is merged into the parent's own session events, where the child's sessions find it, and the child still inherits everything else. Page routes from a parent are added there by installing into the parent, or by hand. Re-installing a newer build replaces only the pack's own files; a view of yours under Artekis/ stays. Installing from a script (one gateway or many): POST /data/artekis/web/views/install?project=<name> with the header X-Ignition-API-Token: <keyName>:<secret> for a gateway API token at the Write level (without one the call is refused, 403), e.g. curl -X POST -H "X-Ignition-API-Token: $TOKEN" -H "Content-Type: application/json" -d '{}' "https://<gateway>/data/artekis/web/views/install?project=<name>"; add &handlerToParent=true for a child project. The audit line names the token (api-token:<keyName>). From a browser the route still needs a signed-in session with Write and the X-CSRF-Token header set to the csrfToken that GET /data/artekis/web/status returns to that session, as the page does. Take ownership stays browser-session only.

View Route What it does
Artekis/Findings /artekis/findings findings, worst first, then newest (sort: "severity"; 1.5.19 and earlier ranked them costliest first) (one cause on several assets is one row, "(on 3 assets: …)", opening its newest member; a detector's past fires waiting for review are one row, "Detector fired 23 times: DCM-203 fill time high, Oct 28 to Nov 6", costed as its fires together, and a verdict on it is recorded on each of those fires — its judged fires are another row, two detectors on one tag two rows, and each press's detector its own row), filtered by severity, status (Open when it opens), playbook, asset, text and dates; select one to record a verdict or open it; a Cost column (section 7.8; the figure and its kind — "USD 719 attributed", "USD 9,005 above normal", a time to a limit, or "Not priced: ..." with why); kinds are never added, so the list is not ranked by it (getFindings still takes sort: "cost"; the header follows labels.colCost); the Playbook column shows the playbook's whole name, wrapping a long one; param collection narrows it; below 640 px the filters sit behind a Filters (n on) button and the table shows Severity and Finding
Artekis/FindingDetail /artekis/finding/:findingId a story read top to bottom (issue #307): the finding, What was found, then The evidence — every proof at once, expanded, each an Artekis/EvidenceCard labelled "Proof n of N" with what it is and where it came from, ordered the chart of the check's own reading first, then other charts, tables, sentences and records (a record with no sentence as a What / Value table; an item that cannot be drawn as text; the screening window and peak severity left to the full list at the bottom); on a setpoint chart only the readings outside the band are filled and dotted (the whole flagged stretch when it was filed as biased) — then why it matters, what to do now, cost, prevention, the proposed change with its reach line and, when one is offered, the instance-only alternative; each item rendered as (trends as charts with the tag's limits and normal range as dashed lines — limits labelled on the right, the normal range on the left, a label too close to another on its side left off while its line still draws; the caption under the chart names only the lines drawn, and the value axis is titled with the reading's unit, e.g. "ms" (it shows from 1.5.21) — tables as tables with named columns where the evidence or its label names them, an alarm event and an anomaly metric as a sentence in plant time), the feedback history, the verdict buttons, Ask about this; for a past detector fire (only), Every fire of this detector (each fire's start, verdict and title; select one to open it) and Open the detector, and a verdict is recorded on every fire of that detector with this fire's status when it is waiting for review or judged (a resolved, hidden or suppressed fire's verdict on that fire alone; the detector's page judges one fire at a time); a note says when not every fire of the detector could be read (the detector's page lists them all); refreshes on the artekisFinding session message and every 60 s
Artekis/AlarmKPIs /artekis/alarm-kpis/:collection the newest Alarm Health run's KPIs for a collection: tiles with benchmark and change against the previous run, the rate trend against the ISA-18.2 band, top alarms, open findings, shift and area tables; no model calls
Artekis/IncidentCard — (embed it) the asset's Incident headline, confidence and action, live from the [Artekis] tags, titled with the asset's name; "Latest analysis failed at …" when the newest analysis failed
Artekis/Dock/Ask right dock artekis-ask (520 px, resizable; a project installed before keeps its 420 px dock until you resize it in the page configuration) the Ask panel; open it with system.perspective.openDock('artekis-ask', params={'collection': 'line2'}); add 'question': '…', 'nonce': <millis> to pre-fill a question, and 'send': True to ask it at once
Artekis/Admin/Playbooks /artekis/admin/playbooks the project's playbooks as a form or JSON
Artekis/Admin/ContextModel /artekis/admin/context-model the context-model editor (section 7.1)
Artekis/AnomalyWatch/Queue /artekis/anomaly/:collection Anomaly Watch's review queue (read level): open anomalies as cards with their trend (its value axis titled with the reading's unit; a setpoint finding plots the gap from setpoint with labelled dashed lines at the edges of its allowed band and a line at 0, draws the readings outside the band as dots, and says so in a caption under the chart, issue #304), the reading named as the Findings list names it (the context model's names), when each was first seen and, for a drift episode, how many spans it joined, filtered by kind with the Show list (Drift, Slow trend, Setpoint and control, Outside normal band, Stuck, Rate of change, Per run, the three per-part kinds (Per part: share outside limits, shift in the mean, same value), Quality; a kind is listed while it has open anomalies; the list comes from system.artekis.access's anomalyFamilies, and data-health findings go to Gateway Health and the Findings page instead), and the Past fires and Reviewed lists; a detector's past fires are one card ("Fired 23 times"); Real issue, Known and Not an issue on each card at the feedback level (on a card of fires, recorded on each of its fires); a Setup link; refreshes on the artekisFinding session message and every 60 s
Artekis/AnomalyWatch/Detector /artekis/detector/:collection/:detectorId one detector (read level): the trend over the backtest window with its threshold and past fires by verdict, the rule in words, Why, the four counts (matched counts real and known issues), the fires with their verdicts, Download the tag import; Edit the rule and Reject at the admin level
Artekis/AnomalyWatch/Setup /artekis/anomaly-setup/:collection the Anomaly Watch setup form (section 8.5): what already watches the area (each Anomaly Watch playbook naming it, its machines, checks, schedule and whether it is off), run signals per asset, checks, sensitivity, how often, baseline days; while only playbooks Save did not create watch the area, Save is off and a button opens the Playbooks page; Save and Save and run now at the admin level; param prefill takes Ask's draft; Ask Artekis to fill this in sends Ask a fixed setup request for the machines that still need a choice (never refused as off-topic; a sensitive question is still refused) (Ask Artekis to check this setup once all are set); a group asset with no tags of its own gets no row

The views use Perspective's theme variables only (light, dark or your theme), no images and no gateway theme. What a session may do comes from policy.security (section 6.2); the views hide what the session lacks and the gateway checks again on every call.

The PDF Alarm Health report (Artekis/AlarmHealth) is installed with the pack when the Reporting module is active; otherwise it is skipped and the card says why. Its data source is system.artekis.report.dataset(playbook, window) from its playbook and window parameters; playbook may be left blank only in a project with exactly one Alarm Health playbook. It renders the KPIs with the previous run and change, the rate chart, priority distribution, shifts (when params.shiftStarts is set), top alarms and areas — 8 pages in about 1 s from system.report.executeReport. It ships unscheduled: schedule it in the Designer's report editor with your recipients, timed after the playbook's run (a weekly email action is typical). The report and the AlarmKPIs view both need one DONE run first (a run made by a build before the KPI document existed carries none), and week-over-week needs two runs of the same window length. The module never renders, stores or mails the PDF itself.