feat: add copy DataSet to other IEDs#10
Merged
Merged
Conversation
Contributor
Author
|
Had to update the |
lorenzhoerburgerbearingpointcom
marked this pull request as ready for review
July 6, 2026 12:03
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds a copy DataSet action to the DataSet editor. Users can now copy an existing DataSet from one IED to one or more other IEDs in a single operation — the same workflow already available for GSEControl, ReportControl, and SampledValueControl.
Why
When commissioning multiple IEDs with the same or similar data models (e.g., several protection relays of the same type), engineers often need to define the same DataSet in each IED. Previously this had to be done manually for every IED. This feature automates that.
How It Works
Each DataSet row in the DataSet editor now has a
folder_copyicon. Clicking it opens a dialog listing all other IEDs in the document, with a checkbox per IED. The dialog shows which IEDs are eligible and why others are not. The user selects the targets and confirms — the DataSet is inserted into all selected IEDs in a single undoable edit.When Is a DataSet Compatible?
A
DataSetin source IED A can be copied to target IED B if all three conditions hold:LDevicewith the sameinstvalue, and within it the same logical node (LN0,LN) bylnClass,inst, andprefix. This determines where theDataSetwill be placed.DataSetwith the samename.FCDAin theDataSetreferences a valid data pth in IED B. This means IED B must have the referencedLDevice,LN, and the fullDO/DAchain must exist in itsDataTypeTemplates. FCDAs pointing to non-existing logical nodes are data objects are rejects.Example
Source – IED_A – has the DataSet to copy:
IED_B – ✅ Copy possible – has the same
LDevice[inst="PROTO"]/LN0and an MMXU LN with a matching data model.After copy,
IED_BgainsDS_Measurementswith the identical FCDA entries.IED_C –⚠️ DataSet already exists – already has a
DataSetnameDS_Measurementsin the same LN0:IED_D – ❌ IED structure incompatible – has no
LDevice[inst="PROT"]at all, so there is no valid location to place the DataSet.Changes
data-set-editor.ts– copy logic, dialog rendering, compatibility checkdata-set-editor.testfiles.ts– addeddataSetCopyDocdata-set-editor.spec.ts– added unit test for all three compatibility statuses and the copy edit event