Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(editors/later-binding): Provide later-binding subscriber-oriented view #1187

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
5fe7a6d
feat(editors/laterbinding): Filter later binding GOOSE/SMV by service…
danyill Jan 30, 2023
469364b
Update snapshots
danyill Feb 25, 2023
c8805b9
Make note to come back to test
danyill Feb 25, 2023
bea5f6d
Remove comment line
danyill Feb 25, 2023
99cbd96
Improve CSS to make pane windows fixe to avoid changes on filtering
danyill Feb 25, 2023
361f5d6
Allow filtering of only configured ExtRefs in subscriber view
danyill Feb 25, 2023
56d9621
Correct reading of filter state on load
danyill Feb 25, 2023
91273c4
Tidying and removing disabled from subscriber view ExtRefs
danyill Feb 26, 2023
a0fdc69
Allow disabling of FCDAs with pXX attributes in subscriber-oriented view
danyill Feb 26, 2023
e0af6d0
Use getter and setter for filter
danyill Mar 2, 2023
d615dbc
Update translations, improve filter implementation, add settings to r…
danyill Mar 11, 2023
b60ccd1
Update unsubscribe and revert where appropriate, rename filters
danyill Mar 12, 2023
9c6487a
Refactoring and beginning tests
danyill Mar 12, 2023
2e7e047
Update snapshots
danyill Mar 12, 2023
bd9337a
Cater for pXX attributes in 2007B4
danyill Mar 12, 2023
ce1a428
Refresh counters on document change
danyill Mar 12, 2023
fb3eb30
Remove excessive css for titles
danyill Mar 12, 2023
5eec7a0
Vacuuming and tidying
danyill Mar 12, 2023
dfd674d
wip on tests
danyill Mar 14, 2023
cf83a73
wip on tests
danyill Mar 17, 2023
8eb9723
Update snapshots
danyill Mar 17, 2023
ab1cded
Additional tests and improve subscribe behaviour for pXX attributes
danyill Mar 18, 2023
1e3f00d
Merge branch 'main' into issue-1025-later-binding-subscriber-view-con…
danyill Mar 18, 2023
0c06970
wip on resizer
danyill Mar 18, 2023
fab773f
Allow horizontally resizable extref list window
danyill Mar 18, 2023
5133c32
Slight styling and display improvements
danyill Mar 19, 2023
5dbb1da
Add tests for GOOSE
danyill Mar 19, 2023
3760d6f
Tidying and documentation
danyill Mar 19, 2023
e75211e
faff
danyill Mar 20, 2023
de43f17
Support pServT, remove sorting, carry out click on item, update tests
danyill Mar 20, 2023
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
104 changes: 95 additions & 9 deletions src/editors/GooseSubscriberLaterBinding.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,85 @@
import { css, html, LitElement, property, TemplateResult } from 'lit-element';
import {
css,
html,
LitElement,
property,
query,
TemplateResult,
} from 'lit-element';

import './subscription/fcda-binding-list.js';
import './subscription/later-binding/ext-ref-later-binding-list.js';
import './subscription/later-binding/ext-ref-later-binding-list-subscriber.js';

/** An editor [[`plugin`]] for Subscribe Later Binding (GOOSE). */
export default class GooseSubscribeLaterBindingPlugin extends LitElement {
@property({ attribute: false })
doc!: XMLDocument;

@query('div.container')
containerElement!: Element;

@property({ type: Boolean })
get subscriberView(): boolean {
return (
localStorage.getItem(`subscriber-later-binding-smv$change-view`) ===
'true' ?? false
);
}

set subscriberView(value: boolean) {
const oldValue = this.subscriberView;
localStorage.setItem(
`subscriber-later-binding-smv$change-view`,
`${value}`
);
this.requestUpdate('subscriberView', oldValue);
}

protected firstUpdated(): void {
this.addEventListener('change-view', () => {
this.subscriberView = !this.subscriberView;
localStorage.setItem(
'subscriber-later-binding-goose$change-view',
`${this.subscriberView}`
);
});
}

render(): TemplateResult {
return html`<div>
<div class="container">
const controlTag = 'GSEControl';
if (this.subscriberView) {
return html`<div class="container" ?subscriberview=${this.subscriberView}>
<fcda-binding-list
class="column"
controlTag="GSEControl"
controlTag="${controlTag}"
.subscriberview="${this.subscriberView}"
.includeLaterBinding="${true}"
.doc="${this.doc}"
>
</fcda-binding-list>
<extref-later-binding-list
<extref-later-binding-list-subscriber
class="column"
controlTag="GSEControl"
controlTag="${controlTag}"
.doc="${this.doc}"
>
</extref-later-binding-list>
</div>
></extref-later-binding-list-subscriber>
</div>`;
}
return html`<div class="container" ?subscriberview=${this.subscriberView}>
<fcda-binding-list
class="column"
controlTag="${controlTag}"
.subscriberview="${this.subscriberView}"
.includeLaterBinding="${true}"
.doc="${this.doc}"
>
</fcda-binding-list>
<extref-later-binding-list
class="column"
controlTag="${controlTag}"
.includeLaterBinding="${true}"
.doc="${this.doc}"
></extref-later-binding-list>
</div>`;
}

Expand All @@ -39,12 +94,43 @@ export default class GooseSubscribeLaterBindingPlugin extends LitElement {
height: calc(100vh - 136px);
}

.container:not(subscriberview) {
flex-direction: row;
}

.container[subscriberview] {
width: 100%;
flex-direction: row-reverse;
}

.container[subscriberview] fcda-binding-list.column {
flex: 1;
width: 25%;
}

.column {
flex: 50%;
margin: 0px 6px 0px;
min-width: 300px;
height: 100%;
overflow-y: auto;
}

@media (min-width: 700px) {
.container[subscriberview] {
width: calc(100vw - 20px);
flex: auto;
}

.container[subscriberview] extref-later-binding-list-subscriber.column {
resize: horizontal;
width: 65%;
flex: none;
}

.container[subscriberview] fcda-binding-list.column {
width: auto;
}
}
`;
}
121 changes: 103 additions & 18 deletions src/editors/SMVSubscriberLaterBinding.ts
Original file line number Diff line number Diff line change
@@ -1,31 +1,85 @@
import { css, html, LitElement, property, TemplateResult } from 'lit-element';
import {
css,
html,
LitElement,
property,
query,
TemplateResult,
} from 'lit-element';

import './subscription/fcda-binding-list.js';
import './subscription/later-binding/ext-ref-later-binding-list.js';
import './subscription/later-binding/ext-ref-later-binding-list-subscriber.js';

/** An editor [[`plugin`]] for Subscribe Later Binding (SMV). */
export default class SMVSubscribeLaterBindingPlugin extends LitElement {
@property({ attribute: false })
doc!: XMLDocument;

@query('div.container')
containerElement!: Element;

@property({ type: Boolean })
get subscriberView(): boolean {
return (
localStorage.getItem(`subscriber-later-binding-smv$change-view`) ===
'true' ?? false
);
}

set subscriberView(value: boolean) {
const oldValue = this.subscriberView;
localStorage.setItem(
`subscriber-later-binding-smv$change-view`,
`${value}`
);
this.requestUpdate('subscriberView', oldValue);
}

protected firstUpdated(): void {
this.addEventListener('change-view', () => {
this.subscriberView = !this.subscriberView;
localStorage.setItem(
'subscriber-later-binding-smv$change-view',
`${this.subscriberView}`
);
});
}

render(): TemplateResult {
return html`<div>
<div class="container">
<fcda-binding-list
class="column"
controlTag="SampledValueControl"
.includeLaterBinding="${true}"
.doc="${this.doc}"
>
</fcda-binding-list>
<extref-later-binding-list
class="column"
controlTag="SampledValueControl"
.doc="${this.doc}"
>
</extref-later-binding-list>
</div>
</div>`;
const controlTag = 'SampledValueControl';
return this.subscriberView
? html`<div class="container" ?subscriberview=${this.subscriberView}>
<fcda-binding-list
class="column"
controlTag="${controlTag}"
.subscriberview="${this.subscriberView}"
.includeLaterBinding="${true}"
.doc="${this.doc}"
>
</fcda-binding-list>
<extref-later-binding-list-subscriber
class="column"
controlTag="${controlTag}"
.doc="${this.doc}"
></extref-later-binding-list-subscriber>
</div>`
: html`<div class="container" ?subscriberview=${this.subscriberView}>
<fcda-binding-list
class="column"
controlTag="${controlTag}"
.subscriberview="${this.subscriberView}"
.includeLaterBinding="${true}"
.doc="${this.doc}"
>
</fcda-binding-list>
<extref-later-binding-list
class="column"
controlTag="${controlTag}"
.includeLaterBinding="${true}"
.doc="${this.doc}"
></extref-later-binding-list>
</div>`;
}

static styles = css`
Expand All @@ -39,12 +93,43 @@ export default class SMVSubscribeLaterBindingPlugin extends LitElement {
height: calc(100vh - 136px);
}

.container:not(subscriberview) {
flex-direction: row;
}

.container[subscriberview] {
width: 100%;
flex-direction: row-reverse;
}

.container[subscriberview] fcda-binding-list.column {
flex: 1;
width: 25%;
}

.column {
flex: 50%;
margin: 0px 6px 0px;
min-width: 300px;
height: 100%;
overflow-y: auto;
}

@media (min-width: 700px) {
.container[subscriberview] {
width: calc(100vw - 20px);
flex: auto;
}

.container[subscriberview] extref-later-binding-list-subscriber.column {
resize: horizontal;
width: 65%;
flex: none;
}

.container[subscriberview] fcda-binding-list.column {
width: auto;
}
}
`;
}
Loading