Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .github/workflows/ied-simulator-qt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,25 @@ jobs:
if-no-files-found: error
retention-days: 14

- name: Render and validate selected Quality and TimeQuality in native Browser
env:
QT_QPA_PLATFORM: offscreen
run: |
./build-ied-simulator-qt/arstack_ied_simulator \
--browser-model ./tests/fixtures/scl/minimal-station-brcb.scd \
--qa-browser-evidence-output ./ied-browser-typed-evidence
for name in data-model-quality data-model-timestamp datasets-quality datasets-timestamp; do
test -s "ied-browser-typed-evidence/${name}.png"
done

- name: Upload selected typed-evidence visual regression
uses: actions/upload-artifact@v4
with:
name: ied-browser-typed-evidence-m2i
path: ied-browser-typed-evidence/*.png
if-no-files-found: error
retention-days: 14

- name: Prove GUI value is visible through MMS
run: >-
python3 apps/ied_simulator/test_gui_live_value.py
Expand Down
11 changes: 6 additions & 5 deletions apps/ied_simulator/qml/BrowserDataModelPane.qml
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,12 @@ Rectangle {
}
}

BrowserEngineeringEvidence {
objectName: "browserDataModelTypedEvidence"
theme: root.theme
engineeringEvidence: root.currentNode.engineeringEvidence || ({})
}

Repeater {
model: [
{label: "Reference", value: root.currentNode.reference},
Expand Down Expand Up @@ -302,11 +308,6 @@ Rectangle {
}
}

BrowserEngineeringEvidence {
theme: root.theme
engineeringEvidence: root.currentNode.engineeringEvidence || ({})
}

Label {
visible: !root.currentNode.kind
Layout.fillWidth: true
Expand Down
31 changes: 21 additions & 10 deletions apps/ied_simulator/qml/BrowserDataSetPane.qml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,18 @@ Rectangle {
return modelProvider.treeModel.nodeForReference(reference)
}

// Shared canonical DA selection for user input and deterministic GUI QA.
// Never perform an MMS Read, duplicate q/t decoding, or cache semantic data.
function selectEvidenceAttribute(domain, item, expectedReference) {
const selected = root.modelProvider.treeModel.selectMmsItem(domain, item)
const canonical = selected ? root.modelProvider.treeModel.selectedNode : ({})
const exact = selected && canonical.kind === "DA"
&& canonical.reference === expectedReference
root.selectedAttributeReference = exact ? canonical.reference : ""
root.showSelectedEvidence = exact
return exact
}

function toggleMember(row, raw) {
showSelectedEvidence = false
selectedAttributeReference = ""
Expand Down Expand Up @@ -239,11 +251,10 @@ Rectangle {
else if (memberRow.resolved.readable === true) {
// Direct FCDA/DA members must expose typed q/t too,
// without expansion or an implicit MMS Read.
const selected = root.modelProvider.treeModel.selectMmsItem(
memberRow.resolved.mmsDomain, memberRow.resolved.mmsItem)
root.selectedAttributeReference = selected
? memberRow.resolved.reference : ""
root.showSelectedEvidence = selected
root.selectEvidenceAttribute(
memberRow.resolved.mmsDomain,
memberRow.resolved.mmsItem,
memberRow.resolved.reference)
}
}
}
Expand Down Expand Up @@ -288,11 +299,10 @@ Rectangle {
MouseArea {
anchors.fill: parent
onClicked: {
const selected = root.modelProvider.treeModel.selectMmsItem(
attributeRow.modelData.mmsDomain, attributeRow.modelData.mmsItem)
root.selectedAttributeReference = selected
? attributeRow.modelData.reference : ""
root.showSelectedEvidence = selected
root.selectEvidenceAttribute(
attributeRow.modelData.mmsDomain,
attributeRow.modelData.mmsItem,
attributeRow.modelData.reference)
}
}
}
Expand Down Expand Up @@ -346,6 +356,7 @@ Rectangle {
}
}
BrowserEngineeringEvidence {
objectName: "browserDataSetTypedEvidence"
theme: root.theme
engineeringEvidence: root.selectedAttributeEvidence
}
Expand Down
2 changes: 2 additions & 0 deletions apps/ied_simulator/qml/IedBrowserWorkspace.qml
Original file line number Diff line number Diff line change
Expand Up @@ -760,12 +760,14 @@ Item {
currentIndex: root.activeSection

BrowserDataModelPane {
objectName: "browserDataModelPane"
theme: root.theme
client: root.client
modelProvider: root.context
}

BrowserDataSetPane {
objectName: "browserDataSetPane"
theme: root.theme
reports: root.reports
modelProvider: root.context
Expand Down
Loading
Loading