@openremote/or-rules 1.8.0-snapshot.20250725120001 → 1.8.0-snapshot.20250725123024
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -30
- package/custom-elements.json +13 -13
- package/dist/umd/index.bundle.js +4744 -4744
- package/dist/umd/index.bundle.js.map +1 -1
- package/lib/flow-viewer/components/confirmation-dialog.js +24 -61
- package/lib/flow-viewer/components/connection-container.js +1 -35
- package/lib/flow-viewer/components/connection-line.js +28 -117
- package/lib/flow-viewer/components/context-menu.js +45 -140
- package/lib/flow-viewer/components/editor-workspace.js +20 -282
- package/lib/flow-viewer/components/flow-editor.js +47 -160
- package/lib/flow-viewer/components/flow-node-socket.js +31 -146
- package/lib/flow-viewer/components/flow-node.js +29 -192
- package/lib/flow-viewer/components/internal-picker.js +54 -271
- package/lib/flow-viewer/components/node-menu-item.js +32 -132
- package/lib/flow-viewer/components/node-panel.js +60 -104
- package/lib/flow-viewer/components/notification-dialog.js +23 -55
- package/lib/flow-viewer/components/popup-modal.js +54 -113
- package/lib/flow-viewer/components/rule-browser.js +30 -119
- package/lib/flow-viewer/components/selectable-element.js +1 -71
- package/lib/flow-viewer/components/selection-box.js +15 -119
- package/lib/flow-viewer/components/top-bar.js +49 -116
- package/lib/flow-viewer/components/workspace-contextmenu-options.js +5 -128
- package/lib/flow-viewer/components/writable-dropdown.js +5 -51
- package/lib/flow-viewer/converters/node-converter.js +1 -10
- package/lib/flow-viewer/flow-viewer.js +1 -19
- package/lib/flow-viewer/models/camera.js +1 -2
- package/lib/flow-viewer/models/context-menu-button.js +1 -2
- package/lib/flow-viewer/models/light-node-collection.js +1 -2
- package/lib/flow-viewer/models/status.js +1 -8
- package/lib/flow-viewer/node-structure/copy.machine.js +1 -34
- package/lib/flow-viewer/node-structure/identity.assigner.js +1 -10
- package/lib/flow-viewer/node-structure/identity.dom.link.js +1 -4
- package/lib/flow-viewer/node-structure/index.js +1 -5
- package/lib/flow-viewer/node-structure/socket.type.matcher.js +1 -50
- package/lib/flow-viewer/node-structure/utils.js +1 -109
- package/lib/flow-viewer/services/copy-paste-manager.js +1 -59
- package/lib/flow-viewer/services/exporter.js +1 -67
- package/lib/flow-viewer/services/input.js +1 -80
- package/lib/flow-viewer/services/integration.js +1 -27
- package/lib/flow-viewer/services/modal.js +8 -29
- package/lib/flow-viewer/services/project.js +1 -222
- package/lib/flow-viewer/services/shortcuts.js +1 -63
- package/lib/flow-viewer/styles/editor-workspace-style.js +53 -55
- package/lib/flow-viewer/styles/flow-node-style.js +93 -95
- package/lib/flow-viewer/styles/picker-styles.js +29 -31
- package/lib/flow-viewer/utils.js +1 -49
- package/lib/index.js +56 -953
- package/lib/json-viewer/forms/or-rule-form-alarm.js +18 -91
- package/lib/json-viewer/forms/or-rule-form-email-message.js +12 -51
- package/lib/json-viewer/forms/or-rule-form-localized.js +43 -269
- package/lib/json-viewer/forms/or-rule-form-push-notification.js +63 -152
- package/lib/json-viewer/forms/or-rule-form-webhook.js +101 -296
- package/lib/json-viewer/modals/or-rule-alarm-modal.js +17 -173
- package/lib/json-viewer/modals/or-rule-notification-modal.js +11 -196
- package/lib/json-viewer/modals/or-rule-radial-modal.js +17 -142
- package/lib/json-viewer/modals/or-rule-webhook-modal.js +8 -78
- package/lib/json-viewer/or-rule-action-alarm.js +5 -97
- package/lib/json-viewer/or-rule-action-attribute.js +33 -235
- package/lib/json-viewer/or-rule-action-notification.js +56 -465
- package/lib/json-viewer/or-rule-action-webhook.js +18 -49
- package/lib/json-viewer/or-rule-asset-query.js +126 -849
- package/lib/json-viewer/or-rule-condition.js +29 -216
- package/lib/json-viewer/or-rule-json-viewer.js +34 -393
- package/lib/json-viewer/or-rule-then-otherwise.js +113 -609
- package/lib/json-viewer/or-rule-trigger-query.js +57 -227
- package/lib/json-viewer/or-rule-when.js +126 -343
- package/lib/or-rule-group-viewer.js +12 -106
- package/lib/or-rule-text-viewer.js +22 -133
- package/lib/or-rule-tree.js +57 -601
- package/lib/or-rule-validity.js +62 -373
- package/lib/or-rule-viewer.js +81 -361
- package/lib/style.js +64 -89
- package/package.json +11 -11
|
@@ -1,104 +1,60 @@
|
|
|
1
|
-
var __decorate
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
align-items:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return html `
|
|
62
|
-
<!-- <or-mwc-drawer rightsided dismissible transparent> -->
|
|
63
|
-
${this.listTemplate}
|
|
64
|
-
<!-- </or-mwc-drawer> -->
|
|
65
|
-
`;
|
|
66
|
-
}
|
|
67
|
-
nodeTemplate(node) {
|
|
68
|
-
return html `<node-menu-item class="node-item" .node="${node}" .workspace="${this.application.editorWorkspace}"></node-menu-item>`;
|
|
69
|
-
}
|
|
70
|
-
get listTemplate() {
|
|
71
|
-
return html `
|
|
72
|
-
<div class="list">
|
|
73
|
-
<div class="category"> <span>${i18next.t("input", "Input")}</span>
|
|
74
|
-
${this.nodes.filter((n) => n.type === "INPUT" /* NodeType.INPUT */).map((n) => this.nodeTemplate(n))}
|
|
75
|
-
</div>
|
|
76
|
-
|
|
77
|
-
<div class="category"><span>${i18next.t("processors", "Processors")}</span>
|
|
78
|
-
<div class="small-node-grid">
|
|
79
|
-
${this.nodes.filter((n) => n.type === "PROCESSOR" /* NodeType.PROCESSOR */ && n.displayCharacter).sort((a, b) => a.priority - b.priority).map((n) => this.nodeTemplate(n))}
|
|
80
|
-
</div>
|
|
81
|
-
${this.nodes.filter((n) => n.type === "PROCESSOR" /* NodeType.PROCESSOR */ && !n.displayCharacter).map((n) => this.nodeTemplate(n))}
|
|
82
|
-
</div>
|
|
83
|
-
|
|
84
|
-
<div class="category"> <span>${i18next.t("output", "Output")}</span>
|
|
85
|
-
${this.nodes.filter((n) => n.type === "OUTPUT" /* NodeType.OUTPUT */).map((n) => this.nodeTemplate(n))}
|
|
86
|
-
</div>
|
|
87
|
-
</div>
|
|
88
|
-
`;
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
__decorate([
|
|
92
|
-
property({ type: Array })
|
|
93
|
-
], NodePanel.prototype, "nodes", void 0);
|
|
94
|
-
__decorate([
|
|
95
|
-
query("or-mwc-drawer")
|
|
96
|
-
], NodePanel.prototype, "drawer", void 0);
|
|
97
|
-
__decorate([
|
|
98
|
-
property({ attribute: false })
|
|
99
|
-
], NodePanel.prototype, "application", void 0);
|
|
100
|
-
NodePanel = __decorate([
|
|
101
|
-
customElement("node-panel")
|
|
102
|
-
], NodePanel);
|
|
103
|
-
export { NodePanel };
|
|
104
|
-
//# sourceMappingURL=node-panel.js.map
|
|
1
|
+
var __decorate=this&&this.__decorate||function(e,t,r,o){var a,i=arguments.length,d=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)d=Reflect.decorate(e,t,r,o);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(d=(i<3?a(d):i>3?a(t,r,d):a(t,r))||d);return i>3&&d&&Object.defineProperty(t,r,d),d};import{LitElement as e,html as t,css as r}from"lit";import{customElement as o,property as a,query as i}from"lit/decorators.js";import{i18next as d,translate as n}from"@openremote/or-translate";let NodePanel=class extends n(d)(e){constructor(){super(...arguments),this.nodes=[]}static get styles(){return r`
|
|
2
|
+
.list{
|
|
3
|
+
overflow-x: hidden;
|
|
4
|
+
overflow-y: auto;
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
align-items: center;
|
|
8
|
+
height: 100%;
|
|
9
|
+
background: #F9F9F9;
|
|
10
|
+
}
|
|
11
|
+
.category{
|
|
12
|
+
display: flex;
|
|
13
|
+
width: 80%;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
align-items: center;
|
|
16
|
+
text-align: center;
|
|
17
|
+
padding: 15px 15px 0 15px;
|
|
18
|
+
}
|
|
19
|
+
.category span{
|
|
20
|
+
margin:0;
|
|
21
|
+
color: rgb(125,125,125);
|
|
22
|
+
padding: 0 0 15px 0 ;
|
|
23
|
+
}
|
|
24
|
+
.small-node-grid{
|
|
25
|
+
display: grid;
|
|
26
|
+
grid-template-columns: repeat(5, 1fr);
|
|
27
|
+
grid-template-rows: repeat(2, 1fr);
|
|
28
|
+
grid-gap: 6px;
|
|
29
|
+
justify-items: stretch;
|
|
30
|
+
align-items: stretch;
|
|
31
|
+
margin-bottom: 15px;
|
|
32
|
+
width: var(--nodepanel-width);
|
|
33
|
+
}
|
|
34
|
+
.input-node{ background-color: var(--input-color); }
|
|
35
|
+
.processor-node{ background-color: var(--processor-color); }
|
|
36
|
+
.output-node{ background-color: var(--output-color); }
|
|
37
|
+
.input-node:hover{ background-color: var(--input-color-h); }
|
|
38
|
+
.processor-node:hover{ background-color: var(--processor-color-h); }
|
|
39
|
+
.output-node:hover{ background-color: var(--output-color-h); }`}firstUpdated(){this.drawer&&(this.drawer.open=!0)}render(){return t`
|
|
40
|
+
<!-- <or-mwc-drawer rightsided dismissible transparent> -->
|
|
41
|
+
${this.listTemplate}
|
|
42
|
+
<!-- </or-mwc-drawer> -->
|
|
43
|
+
`}nodeTemplate(e){return t`<node-menu-item class="node-item" .node="${e}" .workspace="${this.application.editorWorkspace}"></node-menu-item>`}get listTemplate(){return t`
|
|
44
|
+
<div class="list">
|
|
45
|
+
<div class="category"> <span>${d.t("input","Input")}</span>
|
|
46
|
+
${this.nodes.filter(e=>"INPUT"===e.type).map(e=>this.nodeTemplate(e))}
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<div class="category"><span>${d.t("processors","Processors")}</span>
|
|
50
|
+
<div class="small-node-grid">
|
|
51
|
+
${this.nodes.filter(e=>"PROCESSOR"===e.type&&e.displayCharacter).sort((e,t)=>e.priority-t.priority).map(e=>this.nodeTemplate(e))}
|
|
52
|
+
</div>
|
|
53
|
+
${this.nodes.filter(e=>"PROCESSOR"===e.type&&!e.displayCharacter).map(e=>this.nodeTemplate(e))}
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
<div class="category"> <span>${d.t("output","Output")}</span>
|
|
57
|
+
${this.nodes.filter(e=>"OUTPUT"===e.type).map(e=>this.nodeTemplate(e))}
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
`}};__decorate([a({type:Array})],NodePanel.prototype,"nodes",void 0),__decorate([i("or-mwc-drawer")],NodePanel.prototype,"drawer",void 0),__decorate([a({attribute:!1})],NodePanel.prototype,"application",void 0),NodePanel=__decorate([o("node-panel")],NodePanel);export{NodePanel};
|
|
@@ -1,55 +1,23 @@
|
|
|
1
|
-
var __decorate
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
user-select: text;
|
|
25
|
-
}
|
|
26
|
-
.container{
|
|
27
|
-
display: flex;
|
|
28
|
-
flex-direction: row;
|
|
29
|
-
justify-content: space-between;
|
|
30
|
-
justify-content: space-evenly;
|
|
31
|
-
justify-content: space-around;
|
|
32
|
-
}`;
|
|
33
|
-
}
|
|
34
|
-
render() {
|
|
35
|
-
return html `
|
|
36
|
-
<div class="message">${this.message}</div>
|
|
37
|
-
<div class="container">
|
|
38
|
-
<or-mwc-input type="button" unElevated label="${this.buttonText}"
|
|
39
|
-
@click="${() => { this.dispatchEvent(new CustomEvent("closed")); }}">
|
|
40
|
-
</or-mwc-input>
|
|
41
|
-
</div>
|
|
42
|
-
`;
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
__decorate([
|
|
46
|
-
property({ type: String })
|
|
47
|
-
], NotificationDialog.prototype, "buttonText", void 0);
|
|
48
|
-
__decorate([
|
|
49
|
-
property({ type: String })
|
|
50
|
-
], NotificationDialog.prototype, "message", void 0);
|
|
51
|
-
NotificationDialog = __decorate([
|
|
52
|
-
customElement("notification-dialog")
|
|
53
|
-
], NotificationDialog);
|
|
54
|
-
export { NotificationDialog };
|
|
55
|
-
//# sourceMappingURL=notification-dialog.js.map
|
|
1
|
+
var __decorate=this&&this.__decorate||function(t,e,o,i){var n,r=arguments.length,a=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,o,i);else for(var c=t.length-1;c>=0;c--)(n=t[c])&&(a=(r<3?n(a):r>3?n(e,o,a):n(e,o))||a);return r>3&&a&&Object.defineProperty(e,o,a),a};import{LitElement as t,html as e,css as o}from"lit";import{customElement as i,property as n}from"lit/decorators.js";import{i18next as r,translate as a}from"@openremote/or-translate";let NotificationDialog=class extends a(r)(t){constructor(){super(...arguments),this.buttonText=r.t("ok"),this.message=" "}static get styles(){return o`
|
|
2
|
+
.message{
|
|
3
|
+
width: 100%;
|
|
4
|
+
padding: 15px 5px 25px 5px;
|
|
5
|
+
text-align: center;
|
|
6
|
+
max-width: 50vw;
|
|
7
|
+
overflow: auto;
|
|
8
|
+
user-select: text;
|
|
9
|
+
}
|
|
10
|
+
.container{
|
|
11
|
+
display: flex;
|
|
12
|
+
flex-direction: row;
|
|
13
|
+
justify-content: space-between;
|
|
14
|
+
justify-content: space-evenly;
|
|
15
|
+
justify-content: space-around;
|
|
16
|
+
}`}render(){return e`
|
|
17
|
+
<div class="message">${this.message}</div>
|
|
18
|
+
<div class="container">
|
|
19
|
+
<or-mwc-input type="button" unElevated label="${this.buttonText}"
|
|
20
|
+
@click="${()=>{this.dispatchEvent(new CustomEvent("closed"))}}">
|
|
21
|
+
</or-mwc-input>
|
|
22
|
+
</div>
|
|
23
|
+
`}};__decorate([n({type:String})],NotificationDialog.prototype,"buttonText",void 0),__decorate([n({type:String})],NotificationDialog.prototype,"message",void 0),NotificationDialog=__decorate([i("notification-dialog")],NotificationDialog);export{NotificationDialog};
|
|
@@ -1,114 +1,55 @@
|
|
|
1
|
-
var __decorate
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
open() {
|
|
21
|
-
this.isOpen = true;
|
|
22
|
-
}
|
|
23
|
-
static get styles() {
|
|
24
|
-
return css `
|
|
25
|
-
:host{
|
|
26
|
-
position: absolute;
|
|
27
|
-
left: 0;
|
|
28
|
-
right: 0;
|
|
29
|
-
top: 0;
|
|
30
|
-
bottom: 0;
|
|
31
|
-
|
|
32
|
-
display: flex;
|
|
33
|
-
justify-content: center;
|
|
34
|
-
align-items: center;
|
|
35
|
-
|
|
36
|
-
background: rgba(0, 0, 0, 0.2);
|
|
37
|
-
z-index: 10000;
|
|
38
|
-
|
|
39
|
-
--topbar-height: 42px;
|
|
40
|
-
--closebutton-padding: 12px;
|
|
41
|
-
--modal-padding: 10px;
|
|
42
|
-
}
|
|
43
|
-
:host(:not([isopen])){
|
|
44
|
-
display: none;
|
|
45
|
-
}
|
|
46
|
-
.modal{
|
|
47
|
-
min-width: 300px;
|
|
48
|
-
min-height: 64px;
|
|
49
|
-
width: auto;
|
|
50
|
-
height: auto;
|
|
51
|
-
display: inline-block;
|
|
52
|
-
background: white;
|
|
53
|
-
border-radius: var(--roundness);
|
|
54
|
-
position: relative;
|
|
55
|
-
padding: var(--modal-padding);
|
|
56
|
-
}
|
|
57
|
-
.close-button{
|
|
58
|
-
position: absolute;
|
|
59
|
-
top: 0;
|
|
60
|
-
right: 0;
|
|
61
|
-
width: calc(var(--topbar-height) - var(--closebutton-padding) * 2);
|
|
62
|
-
height: calc(var(--topbar-height) - var(--closebutton-padding) * 2);
|
|
63
|
-
padding: var(--closebutton-padding);
|
|
64
|
-
cursor: pointer;
|
|
65
|
-
}
|
|
66
|
-
.title{
|
|
67
|
-
margin: 0;
|
|
68
|
-
height: calc(var(--topbar-height) - var(--modal-padding));
|
|
69
|
-
width: 100%;
|
|
70
|
-
text-transform: uppercase;
|
|
71
|
-
font-weight: bold;
|
|
72
|
-
}`;
|
|
73
|
-
}
|
|
74
|
-
firstUpdated() {
|
|
75
|
-
modal.element = this;
|
|
76
|
-
this.addEventListener("mousedown", this.close);
|
|
77
|
-
window.addEventListener("keyup", (e) => {
|
|
78
|
-
if (e.key === "Escape") {
|
|
79
|
-
this.close();
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
render() {
|
|
84
|
-
if (!this.isOpen) {
|
|
85
|
-
this.style.display = "none";
|
|
86
|
-
return html ``;
|
|
1
|
+
var __decorate=this&&this.__decorate||function(t,o,e,i){var r,n=arguments.length,a=n<3?o:null===i?i=Object.getOwnPropertyDescriptor(o,e):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,o,e,i);else for(var p=t.length-1;p>=0;p--)(r=t[p])&&(a=(n<3?r(a):n>3?r(o,e,a):r(o,e))||a);return n>3&&a&&Object.defineProperty(o,e,a),a};import{LitElement as t,css as o,html as e}from"lit";import{customElement as i,property as r}from"lit/decorators.js";import{modal as n}from"./flow-editor";import{translate as a,i18next as p}from"@openremote/or-translate";let PopupModal=class extends a(p)(t){constructor(){super(),this.closeButton=!0,this.isOpen=!1}close(){this.isOpen=!1}open(){this.isOpen=!0}static get styles(){return o`
|
|
2
|
+
:host{
|
|
3
|
+
position: absolute;
|
|
4
|
+
left: 0;
|
|
5
|
+
right: 0;
|
|
6
|
+
top: 0;
|
|
7
|
+
bottom: 0;
|
|
8
|
+
|
|
9
|
+
display: flex;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
align-items: center;
|
|
12
|
+
|
|
13
|
+
background: rgba(0, 0, 0, 0.2);
|
|
14
|
+
z-index: 10000;
|
|
15
|
+
|
|
16
|
+
--topbar-height: 42px;
|
|
17
|
+
--closebutton-padding: 12px;
|
|
18
|
+
--modal-padding: 10px;
|
|
87
19
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
20
|
+
:host(:not([isopen])){
|
|
21
|
+
display: none;
|
|
22
|
+
}
|
|
23
|
+
.modal{
|
|
24
|
+
min-width: 300px;
|
|
25
|
+
min-height: 64px;
|
|
26
|
+
width: auto;
|
|
27
|
+
height: auto;
|
|
28
|
+
display: inline-block;
|
|
29
|
+
background: white;
|
|
30
|
+
border-radius: var(--roundness);
|
|
31
|
+
position: relative;
|
|
32
|
+
padding: var(--modal-padding);
|
|
33
|
+
}
|
|
34
|
+
.close-button{
|
|
35
|
+
position: absolute;
|
|
36
|
+
top: 0;
|
|
37
|
+
right: 0;
|
|
38
|
+
width: calc(var(--topbar-height) - var(--closebutton-padding) * 2);
|
|
39
|
+
height: calc(var(--topbar-height) - var(--closebutton-padding) * 2);
|
|
40
|
+
padding: var(--closebutton-padding);
|
|
41
|
+
cursor: pointer;
|
|
42
|
+
}
|
|
43
|
+
.title{
|
|
44
|
+
margin: 0;
|
|
45
|
+
height: calc(var(--topbar-height) - var(--modal-padding));
|
|
46
|
+
width: 100%;
|
|
47
|
+
text-transform: uppercase;
|
|
48
|
+
font-weight: bold;
|
|
49
|
+
}`}firstUpdated(){n.element=this,this.addEventListener("mousedown",this.close),window.addEventListener("keyup",t=>{"Escape"===t.key&&this.close()})}render(){return this.isOpen?(this.style.display="",e`
|
|
50
|
+
<div class="modal" @mousedown="${t=>{t.stopPropagation()}}">
|
|
51
|
+
<div class="title">${this.header}</div>
|
|
52
|
+
${this.content}
|
|
53
|
+
${this.closeButton?e`<or-icon class="close-button" icon="window-close" @click="${this.close}"></or-icon>`:null}
|
|
54
|
+
</div>
|
|
55
|
+
`):(this.style.display="none",e``)}};__decorate([r({type:Boolean})],PopupModal.prototype,"closeButton",void 0),__decorate([r({type:String})],PopupModal.prototype,"header",void 0),__decorate([r({attribute:!1})],PopupModal.prototype,"content",void 0),__decorate([r({type:Boolean,reflect:!0})],PopupModal.prototype,"isOpen",void 0),PopupModal=__decorate([i("popup-modal")],PopupModal);export{PopupModal};
|
|
@@ -1,121 +1,32 @@
|
|
|
1
|
-
var __decorate = (
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
super(...arguments);
|
|
26
|
-
this.status = Status.Idle;
|
|
27
|
-
this.retrievedRules = [];
|
|
28
|
-
this.loadRule = (r) => __awaiter(this, void 0, void 0, function* () {
|
|
29
|
-
this.status = Status.Loading;
|
|
30
|
-
let response;
|
|
31
|
-
try {
|
|
32
|
-
response = yield rest.api.RulesResource.getGlobalRuleset(r.id);
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
modal.notification("Failure", "Something went wrong loading " + r.name);
|
|
36
|
-
this.status = Status.Failure;
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
const ruleset = response.data;
|
|
40
|
-
const collection = exporter.jsonToFlow(ruleset.rules);
|
|
41
|
-
project.fromNodeCollection(collection);
|
|
42
|
-
project.setCurrentProject(r.id, r.name, collection.description);
|
|
43
|
-
this.dispatchEvent(new CustomEvent("ruleloaded"));
|
|
44
|
-
});
|
|
45
|
-
this.getButton = (r) => {
|
|
46
|
-
return html `<div class="list-button" @click="${() => { this.loadRule(r); }}">${Utilities.ellipsis(r.name, 50)}
|
|
47
|
-
${r.error ? html `<or-icon title="${Utilities.humanLike(r.status)}" icon="alert-outline"></or-icon>` : null}
|
|
48
|
-
${r.enabled ? null : html `<or-icon title="${i18next.t("disabled")}" icon="sleep"></or-icon>`}
|
|
49
|
-
</div>`;
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
static get styles() {
|
|
53
|
-
return css `
|
|
54
|
-
.list-button {
|
|
55
|
-
cursor: pointer;
|
|
56
|
-
padding: 8px 0 8px 8px;
|
|
57
|
-
}
|
|
58
|
-
.list-button:hover {
|
|
59
|
-
background: whitesmoke;
|
|
60
|
-
}
|
|
61
|
-
.list-button:active {
|
|
62
|
-
background: none;
|
|
63
|
-
}
|
|
64
|
-
or-icon{
|
|
65
|
-
width: 18px;
|
|
66
|
-
vertical-align: text-top;
|
|
67
|
-
}
|
|
68
|
-
or-icon[icon=loading]{
|
|
69
|
-
animation: spin 600ms infinite linear;
|
|
70
|
-
}
|
|
71
|
-
@keyframes spin{
|
|
72
|
-
0%{
|
|
73
|
-
transform: rotateZ(0deg);
|
|
74
|
-
}
|
|
75
|
-
100%{
|
|
76
|
-
transform: rotateZ(360deg);
|
|
77
|
-
}
|
|
78
|
-
}`;
|
|
79
|
-
}
|
|
80
|
-
firstUpdated() {
|
|
81
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
this.status = Status.Loading;
|
|
83
|
-
try {
|
|
84
|
-
const response = yield rest.api.RulesResource.getGlobalRulesets();
|
|
85
|
-
this.retrievedRules = response.data;
|
|
86
|
-
this.status = Status.Success;
|
|
1
|
+
var __decorate=this&&this.__decorate||function(t,e,o,i){var r,s=arguments.length,n=s<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,o,i);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(n=(s<3?r(n):s>3?r(e,o,n):r(e,o))||n);return s>3&&n&&Object.defineProperty(e,o,n),n},__awaiter=this&&this.__awaiter||function(t,e,o,i){return new(o||(o=Promise))(function(r,s){function n(t){try{l(i.next(t))}catch(t){s(t)}}function a(t){try{l(i.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?r(t.value):((e=t.value)instanceof o?e:new o(function(t){t(e)})).then(n,a)}l((i=i.apply(t,e||[])).next())})};import{LitElement as t,css as e,html as o}from"lit";import{customElement as i,property as r}from"lit/decorators.js";import s from"@openremote/rest";import{i18next as n,translate as a}from"@openremote/or-translate";import{Utilities as l}from"../utils";import{Status as u}from"../models/status";import{exporter as c,project as d,modal as p}from"./flow-editor";let RuleBrowser=class extends a(n)(t){constructor(){super(...arguments),this.status=u.Idle,this.retrievedRules=[],this.loadRule=t=>__awaiter(this,void 0,void 0,function*(){let e;this.status=u.Loading;try{e=yield s.api.RulesResource.getGlobalRuleset(t.id)}catch(e){p.notification("Failure","Something went wrong loading "+t.name),this.status=u.Failure;return}let o=e.data,i=c.jsonToFlow(o.rules);d.fromNodeCollection(i),d.setCurrentProject(t.id,t.name,i.description),this.dispatchEvent(new CustomEvent("ruleloaded"))}),this.getButton=t=>o`<div class="list-button" @click="${()=>{this.loadRule(t)}}">${l.ellipsis(t.name,50)}
|
|
2
|
+
${t.error?o`<or-icon title="${l.humanLike(t.status)}" icon="alert-outline"></or-icon>`:null}
|
|
3
|
+
${t.enabled?null:o`<or-icon title="${n.t("disabled")}" icon="sleep"></or-icon>`}
|
|
4
|
+
</div>`}static get styles(){return e`
|
|
5
|
+
.list-button {
|
|
6
|
+
cursor: pointer;
|
|
7
|
+
padding: 8px 0 8px 8px;
|
|
8
|
+
}
|
|
9
|
+
.list-button:hover {
|
|
10
|
+
background: whitesmoke;
|
|
11
|
+
}
|
|
12
|
+
.list-button:active {
|
|
13
|
+
background: none;
|
|
14
|
+
}
|
|
15
|
+
or-icon{
|
|
16
|
+
width: 18px;
|
|
17
|
+
vertical-align: text-top;
|
|
18
|
+
}
|
|
19
|
+
or-icon[icon=loading]{
|
|
20
|
+
animation: spin 600ms infinite linear;
|
|
21
|
+
}
|
|
22
|
+
@keyframes spin{
|
|
23
|
+
0%{
|
|
24
|
+
transform: rotateZ(0deg);
|
|
87
25
|
}
|
|
88
|
-
|
|
89
|
-
|
|
26
|
+
100%{
|
|
27
|
+
transform: rotateZ(360deg);
|
|
90
28
|
}
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
switch (this.status) {
|
|
96
|
-
case Status.Loading:
|
|
97
|
-
result = html `<span style="text-align: center;"><or-icon icon="loading"></or-icon></span>`;
|
|
98
|
-
break;
|
|
99
|
-
case Status.Success:
|
|
100
|
-
result = html `${this.retrievedRules.length === 0 ?
|
|
101
|
-
html `<span>No rules to display</span>` :
|
|
102
|
-
this.retrievedRules.map((r) => this.getButton(r))}`;
|
|
103
|
-
break;
|
|
104
|
-
case Status.Failure:
|
|
105
|
-
result = html `<span>Failed to load rules</span>`;
|
|
106
|
-
break;
|
|
107
|
-
}
|
|
108
|
-
return html `
|
|
109
|
-
<div style="display: flex; flex-direction: column; width: auto; align-items: stretch;">
|
|
110
|
-
${result}
|
|
111
|
-
</div>`;
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
__decorate([
|
|
115
|
-
property({ type: Number })
|
|
116
|
-
], RuleBrowser.prototype, "status", void 0);
|
|
117
|
-
RuleBrowser = __decorate([
|
|
118
|
-
customElement("rule-browser")
|
|
119
|
-
], RuleBrowser);
|
|
120
|
-
export { RuleBrowser };
|
|
121
|
-
//# sourceMappingURL=rule-browser.js.map
|
|
29
|
+
}`}firstUpdated(){return __awaiter(this,void 0,void 0,function*(){this.status=u.Loading;try{let t=yield s.api.RulesResource.getGlobalRulesets();this.retrievedRules=t.data,this.status=u.Success}catch(t){this.status=u.Failure}})}render(){let t=o``;switch(this.status){case u.Loading:t=o`<span style="text-align: center;"><or-icon icon="loading"></or-icon></span>`;break;case u.Success:t=o`${0===this.retrievedRules.length?o`<span>No rules to display</span>`:this.retrievedRules.map(t=>this.getButton(t))}`;break;case u.Failure:t=o`<span>Failed to load rules</span>`}return o`
|
|
30
|
+
<div style="display: flex; flex-direction: column; width: auto; align-items: stretch;">
|
|
31
|
+
${t}
|
|
32
|
+
</div>`}};__decorate([r({type:Number})],RuleBrowser.prototype,"status",void 0),RuleBrowser=__decorate([i("rule-browser")],RuleBrowser);export{RuleBrowser};
|