@operato/scene-integration 1.2.51 → 1.2.58

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/CHANGELOG.md CHANGED
@@ -3,6 +3,24 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.2.58](https://github.com/things-scene/operato-scene/compare/v1.2.57...v1.2.58) (2023-09-08)
7
+
8
+
9
+ ### :bug: Bug Fix
10
+
11
+ * scenario-run 에 반복 간격 속성 추가 ([cb4ae0d](https://github.com/things-scene/operato-scene/commit/cb4ae0def6a9828ab178f2a99e7ac63acd911454))
12
+
13
+
14
+
15
+ ## [1.2.52](https://github.com/things-scene/operato-scene/compare/v1.2.51...v1.2.52) (2023-08-17)
16
+
17
+
18
+ ### :bug: Bug Fix
19
+
20
+ * the issue of duplicate data subscription occurrences ([46e1705](https://github.com/things-scene/operato-scene/commit/46e17054841de51be04da7285fbc2abeb1df1817))
21
+
22
+
23
+
6
24
  ## [1.2.51](https://github.com/things-scene/operato-scene/compare/v1.2.50...v1.2.51) (2023-07-17)
7
25
 
8
26
 
@@ -6,14 +6,7 @@ declare const DataSubscription_base: (new (...args: any[]) => {
6
6
  export default class DataSubscription extends DataSubscription_base {
7
7
  static _image: HTMLImageElement;
8
8
  static get image(): HTMLImageElement;
9
- private subscription?;
10
- dispose(): void;
11
9
  render(context: CanvasRenderingContext2D): void;
12
- ready(): void;
13
10
  get nature(): ComponentNature;
14
- get tag(): any;
15
- set tag(tag: any);
16
- _initDataSubscription(): void;
17
- startSubscribe(): Promise<void>;
18
11
  }
19
12
  export {};
@@ -1,6 +1,4 @@
1
- import gql from 'graphql-tag';
2
1
  import { Component, DataSource, RectPath, Shape } from '@hatiolab/things-scene';
3
- import { subscribe } from '@operato/graphql';
4
2
  const NATURE = {
5
3
  mutable: false,
6
4
  resizable: true,
@@ -23,53 +21,14 @@ export default class DataSubscription extends DataSource(RectPath(Shape)) {
23
21
  }
24
22
  return DataSubscription._image;
25
23
  }
26
- dispose() {
27
- var _a;
28
- (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
29
- delete this.subscription;
30
- super.dispose();
31
- }
32
24
  render(context) {
33
25
  var { left, top, width, height } = this.bounds;
34
26
  context.beginPath();
35
27
  this.drawImage(context, DataSubscription.image, left, top, width, height);
36
28
  }
37
- ready() {
38
- this._initDataSubscription();
39
- }
40
29
  get nature() {
41
30
  return NATURE;
42
31
  }
43
- get tag() {
44
- return this.state.tag;
45
- }
46
- set tag(tag) {
47
- this.setState('tag', tag);
48
- }
49
- _initDataSubscription() {
50
- if (!this.app.isViewMode)
51
- return;
52
- this.startSubscribe();
53
- }
54
- async startSubscribe() {
55
- var { tag } = this.state;
56
- this.subscription = await subscribe({
57
- query: gql `
58
- subscription {
59
- data(tag: "${tag}") {
60
- tag
61
- data
62
- }
63
- }
64
- `
65
- }, {
66
- next: async ({ data }) => {
67
- if (data) {
68
- this.data = data.data.data;
69
- }
70
- }
71
- });
72
- }
73
32
  }
74
33
  Component.register('data-subscription', DataSubscription);
75
34
  //# sourceMappingURL=data-subscription.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-subscription.js","sourceRoot":"","sources":["../src/data-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAE7B,OAAO,EAAE,SAAS,EAAmB,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,MAAM,MAAM,GAAoB;IAC9B,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK;SACZ;KACF;IACD,gBAAgB,EAAE,KAAK;IACvB,IAAI,EAAE,mCAAmC;CAC1C,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEvE,MAAM,KAAK,KAAK;QACd,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC5B,gBAAgB,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAA;YACrC,gBAAgB,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,uCAAuC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;SACrG;QAED,OAAO,gBAAgB,CAAC,MAAM,CAAA;IAChC,CAAC;IAMD,OAAO;;QACL,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW,EAAE,CAAA;QAChC,OAAO,IAAI,CAAC,YAAY,CAAA;QAExB,KAAK,CAAC,OAAO,EAAE,CAAA;IACjB,CAAC;IAED,MAAM,CAAC,OAAiC;QACtC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QAE9C,OAAO,CAAC,SAAS,EAAE,CAAA;QACnB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAC3E,CAAC;IAED,KAAK;QACH,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA;IACvB,CAAC;IAED,IAAI,GAAG,CAAC,GAAG;QACT,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU;YAAE,OAAM;QAEhC,IAAI,CAAC,cAAc,EAAE,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAExB,IAAI,CAAC,YAAY,GAAG,MAAM,SAAS,CACjC;YACE,KAAK,EAAE,GAAG,CAAA;;yBAEO,GAAG;;;;;SAKnB;SACF,EACD;YACE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAiB,EAAE,EAAE;gBACtC,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;iBAC3B;YACH,CAAC;SACF,CACF,CAAA;IACH,CAAC;CACF;AAED,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAA","sourcesContent":["import gql from 'graphql-tag'\n\nimport { Component, ComponentNature, DataSource, RectPath, Shape } from '@hatiolab/things-scene'\nimport { subscribe } from '@operato/graphql'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'string',\n label: 'tag',\n name: 'tag'\n }\n ],\n 'value-property': 'tag',\n help: 'scene/component/data-subscription'\n}\n\nexport default class DataSubscription extends DataSource(RectPath(Shape)) {\n static _image: HTMLImageElement\n static get image() {\n if (!DataSubscription._image) {\n DataSubscription._image = new Image()\n DataSubscription._image.src = new URL('../icons/symbol-data-subscription.png', import.meta.url).href\n }\n\n return DataSubscription._image\n }\n\n private subscription?: {\n unsubscribe(): void\n }\n\n dispose() {\n this.subscription?.unsubscribe()\n delete this.subscription\n\n super.dispose()\n }\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n context.beginPath()\n this.drawImage(context, DataSubscription.image, left, top, width, height)\n }\n\n ready() {\n this._initDataSubscription()\n }\n\n get nature() {\n return NATURE\n }\n\n get tag() {\n return this.state.tag\n }\n\n set tag(tag) {\n this.setState('tag', tag)\n }\n\n _initDataSubscription() {\n if (!this.app.isViewMode) return\n\n this.startSubscribe()\n }\n\n async startSubscribe() {\n var { tag } = this.state\n\n this.subscription = await subscribe(\n {\n query: gql`\n subscription {\n data(tag: \"${tag}\") {\n tag\n data\n }\n }\n `\n },\n {\n next: async ({ data }: { data: any }) => {\n if (data) {\n this.data = data.data.data\n }\n }\n }\n )\n }\n}\n\nComponent.register('data-subscription', DataSubscription)\n"]}
1
+ {"version":3,"file":"data-subscription.js","sourceRoot":"","sources":["../src/data-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAEhG,MAAM,MAAM,GAAoB;IAC9B,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK;SACZ;KACF;IACD,gBAAgB,EAAE,KAAK;IACvB,IAAI,EAAE,mCAAmC;CAC1C,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEvE,MAAM,KAAK,KAAK;QACd,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC5B,gBAAgB,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAA;YACrC,gBAAgB,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,uCAAuC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;SACrG;QAED,OAAO,gBAAgB,CAAC,MAAM,CAAA;IAChC,CAAC;IAED,MAAM,CAAC,OAAiC;QACtC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QAE9C,OAAO,CAAC,SAAS,EAAE,CAAA;QACnB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAC3E,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAA","sourcesContent":["import { Component, ComponentNature, DataSource, RectPath, Shape } from '@hatiolab/things-scene'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'string',\n label: 'tag',\n name: 'tag'\n }\n ],\n 'value-property': 'tag',\n help: 'scene/component/data-subscription'\n}\n\nexport default class DataSubscription extends DataSource(RectPath(Shape)) {\n static _image: HTMLImageElement\n static get image() {\n if (!DataSubscription._image) {\n DataSubscription._image = new Image()\n DataSubscription._image.src = new URL('../icons/symbol-data-subscription.png', import.meta.url).href\n }\n\n return DataSubscription._image\n }\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n context.beginPath()\n this.drawImage(context, DataSubscription.image, left, top, width, height)\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.register('data-subscription', DataSubscription)\n"]}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,4 @@
1
1
  import DataSubscription from './data-subscription';
2
- import ScenarioControl from './scenario-control';
3
- import ScenarioRun from './scenario-run';
4
- import ScenarioStop from './scenario-stop';
5
- import ScenarioInstanceSubscription from './scenario-instance-subscription';
6
- import ScenarioQueueSubscription from './scenario-queue-subscription';
7
- import ConnectionStateSubscription from './connection-state-subscription';
8
2
  import ConnectionControl from './connection-control';
9
- declare const _default: (typeof ScenarioQueueSubscription | typeof ScenarioInstanceSubscription | typeof ScenarioStop | typeof ScenarioRun | typeof ScenarioControl | typeof DataSubscription | typeof ConnectionStateSubscription | typeof ConnectionControl)[];
3
+ declare const _default: (typeof DataSubscription | typeof ConnectionControl)[];
10
4
  export default _default;
@@ -6,10 +6,17 @@ declare const ScenarioRun_base: (new (...args: any[]) => {
6
6
  export default class ScenarioRun extends ScenarioRun_base {
7
7
  static _image: HTMLImageElement;
8
8
  static get image(): HTMLImageElement;
9
+ private _started;
10
+ private _raf;
11
+ private _timeout;
9
12
  render(context: CanvasRenderingContext2D): void;
10
13
  ready(): void;
11
14
  get nature(): ComponentNature;
12
15
  onchange(after: Properties): void;
16
+ set started(started: boolean);
17
+ get started(): boolean;
18
+ start(): void;
19
+ stop(): void;
13
20
  get variables(): any;
14
21
  set variables(variables: any);
15
22
  requestData(): Promise<void>;
@@ -20,6 +20,12 @@ const NATURE = {
20
20
  label: 'variables',
21
21
  name: 'variables'
22
22
  },
23
+ {
24
+ type: 'number',
25
+ label: 'repeat-interval',
26
+ name: 'interval',
27
+ placeholder: 'milli-seconds'
28
+ },
23
29
  {
24
30
  type: 'checkbox',
25
31
  label: 'run-on-start',
@@ -30,6 +36,12 @@ const NATURE = {
30
36
  help: 'scene/component/scenario-run'
31
37
  };
32
38
  export default class ScenarioRun extends DataSource(RectPath(Shape)) {
39
+ constructor() {
40
+ super(...arguments);
41
+ this._started = false;
42
+ this._raf = 0;
43
+ this._timeout = 0;
44
+ }
33
45
  static get image() {
34
46
  if (!ScenarioRun._image) {
35
47
  ScenarioRun._image = new Image();
@@ -46,7 +58,7 @@ export default class ScenarioRun extends DataSource(RectPath(Shape)) {
46
58
  super.ready();
47
59
  if (this.app.isViewMode) {
48
60
  if (this.state.runOnStart) {
49
- this.requestData();
61
+ this.started = true;
50
62
  }
51
63
  }
52
64
  }
@@ -58,6 +70,39 @@ export default class ScenarioRun extends DataSource(RectPath(Shape)) {
58
70
  this.requestData();
59
71
  }
60
72
  }
73
+ set started(started) {
74
+ this.setState('started');
75
+ if (started) {
76
+ this.start();
77
+ }
78
+ else {
79
+ this.stop();
80
+ }
81
+ }
82
+ get started() {
83
+ return this.state.started;
84
+ }
85
+ start() {
86
+ if (this._started) {
87
+ return;
88
+ }
89
+ this._started = true;
90
+ this._raf = requestAnimationFrame(() => this.requestData());
91
+ }
92
+ stop() {
93
+ if (!this._started) {
94
+ return;
95
+ }
96
+ this._started = false;
97
+ if (!this._raf) {
98
+ cancelAnimationFrame(this._raf);
99
+ this._raf = 0;
100
+ }
101
+ if (!this._timeout) {
102
+ clearTimeout(this._timeout);
103
+ this._timeout = 0;
104
+ }
105
+ }
61
106
  get variables() {
62
107
  return this.state.variables;
63
108
  }
@@ -93,6 +138,9 @@ export default class ScenarioRun extends DataSource(RectPath(Shape)) {
93
138
  }
94
139
  });
95
140
  this.data = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.runScenario) === null || _b === void 0 ? void 0 : _b.result;
141
+ if (this._started && this.state.interval > 0) {
142
+ this._timeout = setTimeout(() => this.requestData(), this.state.interval);
143
+ }
96
144
  }
97
145
  }
98
146
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-run.js","sourceRoot":"","sources":["../src/scenario-run.ts"],"names":[],"mappings":"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","sourcesContent":["import gql from 'graphql-tag'\n\nimport { Component, ComponentNature, DataSource, Properties, RectPath, Shape } from '@hatiolab/things-scene'\nimport { client } from '@operato/graphql'\n\nimport { scenarios } from './client-api'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'select',\n label: 'scenario-name',\n name: 'scenarioName',\n property: {\n options: scenarios\n }\n },\n {\n type: 'data',\n label: 'variables',\n name: 'variables'\n },\n {\n type: 'checkbox',\n label: 'run-on-start',\n name: 'runOnStart'\n }\n ],\n 'value-property': 'variables',\n help: 'scene/component/scenario-run'\n}\n\nexport default class ScenarioRun extends DataSource(RectPath(Shape)) {\n static _image: HTMLImageElement\n\n static get image() {\n if (!ScenarioRun._image) {\n ScenarioRun._image = new Image()\n ScenarioRun._image.src = new URL('../icons/symbol-scenario-run.png', import.meta.url).href\n }\n return ScenarioRun._image\n }\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n context.beginPath()\n this.drawImage(context, ScenarioRun.image, left, top, width, height)\n }\n\n ready() {\n super.ready()\n\n if (this.app.isViewMode) {\n if (this.state.runOnStart) {\n this.requestData()\n }\n }\n }\n\n get nature() {\n return NATURE\n }\n\n onchange(after: Properties) {\n if ('variables' in after) {\n this.requestData()\n }\n }\n\n get variables() {\n return this.state.variables\n }\n\n set variables(variables) {\n this.setState('variables', variables)\n }\n\n async requestData() {\n let { scenarioName, variables } = this.state\n if (!scenarioName || !this.app.isViewMode) {\n return\n }\n\n try {\n variables = typeof variables == 'string' ? JSON.parse(variables) : variables\n } catch (e) {\n console.warn('runScenario mutation variable is not an object')\n }\n\n if (client) {\n var response = await client.query({\n query: gql`\n mutation ($scenarioName: String!, $variables: Object) {\n runScenario(scenarioName: $scenarioName, variables: $variables) {\n state\n message\n result\n }\n }\n `,\n variables: {\n scenarioName: scenarioName,\n variables\n }\n })\n\n this.data = response?.data?.runScenario?.result\n }\n }\n}\n\nComponent.register('scenario-run', ScenarioRun)\n"]}
1
+ {"version":3,"file":"scenario-run.js","sourceRoot":"","sources":["../src/scenario-run.ts"],"names":[],"mappings":"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","sourcesContent":["import gql from 'graphql-tag'\n\nimport { Component, ComponentNature, DataSource, Properties, RectPath, Shape } from '@hatiolab/things-scene'\nimport { client } from '@operato/graphql'\n\nimport { scenarios } from './client-api'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'select',\n label: 'scenario-name',\n name: 'scenarioName',\n property: {\n options: scenarios\n }\n },\n {\n type: 'data',\n label: 'variables',\n name: 'variables'\n },\n {\n type: 'number',\n label: 'repeat-interval',\n name: 'interval',\n placeholder: 'milli-seconds'\n },\n {\n type: 'checkbox',\n label: 'run-on-start',\n name: 'runOnStart'\n }\n ],\n 'value-property': 'variables',\n help: 'scene/component/scenario-run'\n}\n\nexport default class ScenarioRun extends DataSource(RectPath(Shape)) {\n static _image: HTMLImageElement\n\n static get image() {\n if (!ScenarioRun._image) {\n ScenarioRun._image = new Image()\n ScenarioRun._image.src = new URL('../icons/symbol-scenario-run.png', import.meta.url).href\n }\n return ScenarioRun._image\n }\n\n private _started: boolean = false\n private _raf: number = 0\n private _timeout: number = 0\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n context.beginPath()\n this.drawImage(context, ScenarioRun.image, left, top, width, height)\n }\n\n ready() {\n super.ready()\n\n if (this.app.isViewMode) {\n if (this.state.runOnStart) {\n this.started = true\n }\n }\n }\n\n get nature() {\n return NATURE\n }\n\n onchange(after: Properties) {\n if ('variables' in after) {\n this.requestData()\n }\n }\n\n set started(started: boolean) {\n this.setState('started')\n\n if (started) {\n this.start()\n } else {\n this.stop()\n }\n }\n\n get started() {\n return this.state.started\n }\n\n start() {\n if (this._started) {\n return\n }\n\n this._started = true\n\n this._raf = requestAnimationFrame(() => this.requestData())\n }\n\n stop() {\n if (!this._started) {\n return\n }\n\n this._started = false\n\n if (!this._raf) {\n cancelAnimationFrame(this._raf)\n this._raf = 0\n }\n if (!this._timeout) {\n clearTimeout(this._timeout)\n this._timeout = 0\n }\n }\n\n get variables() {\n return this.state.variables\n }\n\n set variables(variables) {\n this.setState('variables', variables)\n }\n\n async requestData() {\n let { scenarioName, variables } = this.state\n if (!scenarioName || !this.app.isViewMode) {\n return\n }\n\n try {\n variables = typeof variables == 'string' ? JSON.parse(variables) : variables\n } catch (e) {\n console.warn('runScenario mutation variable is not an object')\n }\n\n if (client) {\n var response = await client.query({\n query: gql`\n mutation ($scenarioName: String!, $variables: Object) {\n runScenario(scenarioName: $scenarioName, variables: $variables) {\n state\n message\n result\n }\n }\n `,\n variables: {\n scenarioName: scenarioName,\n variables\n }\n })\n\n this.data = response?.data?.runScenario?.result\n\n if (this._started && this.state.interval > 0) {\n this._timeout = setTimeout(() => this.requestData(), this.state.interval)\n }\n }\n }\n}\n\nComponent.register('scenario-run', ScenarioRun)\n"]}
@@ -0,0 +1,74 @@
1
+ # シナリオ実行
2
+
3
+ - シナリオ実行は指定された変数でシナリオを開始し、完了後に結果を取得します。
4
+ (一方、シナリオ開始はシナリオを開始し、すぐに返します。)
5
+ - シナリオ実行は短期間での完了が保証されているシナリオに最適です。
6
+ - シナリオ実行で実行されるシナリオインスタンスは、{シナリオ名}-{タイムスタンプ}の形式でインスタンス名が割り当てられます。
7
+ - 変数として提供される値(value 属性)は、シナリオ開始時に変数として提供されます。このコンポーネントは、この値が変更されるか、意図の感度が設定されている場合に動作します。
8
+ - リピート間隔プロパティが 0 以上の値に設定されている場合、繰り返し呼び出されます。
9
+
10
+ ## プロパティ
11
+
12
+ - scenarioName:(必須)実行するシナリオの名前。
13
+ - variables:シナリオに提供される変数値。これはシナリオに提供されるパラメータ値です。これはこのコンポーネントの値にリンクされています。
14
+ - interval:プロパティが 0 以上の値に設定されている場合、繰り返し呼び出されます。
15
+
16
+ ## データスキーム
17
+
18
+ - 実行後、シナリオの最終コンテキストが提供されます。 (ブラウザの開発者コンソールで確認できます)
19
+
20
+ ```json
21
+ {
22
+ variables: {
23
+ ... /* インスタンス開始時のパラメータ */
24
+ },
25
+ data: {
26
+ [各ステップ名]: { /* ステップ結果 */ }
27
+ },
28
+ state: 'STARTED' | 'HALTED', /* シナリオのステータス */
29
+ timestamp: 4273809748
30
+ }
31
+
32
+ /* 結果のオブジェクトのうち、データ値はコンポーネントのデータプロパティに設定されます。 */
33
+ ```
34
+
35
+ 말레이시아어:
36
+
37
+ # Skrip Kajian
38
+
39
+ - Skrip-kajian memulakan skrip dengan pembolehubah yang diberikan dan mengambil hasil selepas ia selesai.
40
+ (Sebaliknya, skrip-mula memulakan skrip dan kembali segera.)
41
+ - Skrip-kajian sesuai terbaik untuk skrip yang menjamin penyelesaian dalam jangka masa pendek
42
+
43
+ .
44
+
45
+ - Contoh skrip yang dijalankan melalui skrip-kajian diberikan nama instans dalam format {nama-skrip}-{capaian-masa}.
46
+ - Nilai yang diberikan sebagai pembolehubah (atribut nilai) diberikan sebagai pembolehubah apabila skrip bermula. Komponen ini berfungsi apabila nilai ini berubah atau sensitiviti hasrat ditetapkan.
47
+ - Jika sifat jangkaan ulangan ditetapkan kepada nilai yang lebih besar atau sama dengan 0, ia akan dipanggil secara berulang.
48
+
49
+ ## Ciri-ciri
50
+
51
+ - Nama-skrip: (Wajib) Nama skrip yang akan dilaksanakan.
52
+ - pembolehubah: Nilai pembolehubah yang diberikan kepada skrip. Ia adalah nilai parameter yang diberikan kepada skrip. Ia dikaitkan dengan nilai komponen ini.
53
+ - jangka masa: Jika sifat ini ditetapkan kepada nilai yang lebih besar atau sama dengan 0, ia akan dipanggil secara berulang.
54
+
55
+ ## Skim Data
56
+
57
+ - Selepas pelaksanaan, anda akan menerima konteks terakhir skrip. (Boleh diperiksa dalam konsol pembangun pelayar)
58
+
59
+ ```json
60
+ {
61
+ pembolehubah: {
62
+ ... /* parameter apabila capaian bermula */
63
+ },
64
+ data: {
65
+ [setiap nama langkah]: { /* keputusan langkah */ }
66
+ },
67
+ keadaan: 'DIMULAKAN' | 'BERHENTI', /* status skrip */
68
+ capaian-masa: 4273809748
69
+ }
70
+
71
+ /* Di antara objek hasil, nilai data ditetapkan kepada ciri data komponen ini. */
72
+ ```
73
+
74
+ 이상의 내용을 각 언어로 번역했습니다. 필요에 따라 내용을 조정하여 사용하실 수 있습니다.
@@ -5,13 +5,17 @@
5
5
  - scenario-run 은 단기간에 종료가 보장되는 시나리오를 대상으로 하는 것이 좋다.
6
6
  - scenario-run 으로 실행되는 시나리오 인스턴스는 {scenario-name}-{timestamp} 형식의 instnace 이름이 부여된다.
7
7
  - variables(value 속성) 로 주어진 값이 시나리오 시작 시에 variables 변수로 주어진다. 이 값이 변화되거나, intent sensitive 가 설정된 경우에, 이 컴포넌트가 동작한다.
8
+ - repeat interval 속성이 0이상 값으로 설정되면, 반복 호출된다.
8
9
 
9
10
  ## properties
10
- - scenario-name : (필수값) 실행될 시나리오 이름.
11
- - variables : 시나리오에 전달된 variables 값. 시나리오에 제공되는 파라미터 값이다. 이 컴포넌트의 value 에 연결된 속성이다.
11
+
12
+ - scenarioName : (필수값) 실행될 시나리오 이름.
13
+ - variables : 시나리오에 전달된 variables 값. 시나리오에 제공되는 파라미터 값이다. 이 컴포넌트의 value 에 연결된 속성이다.
14
+ - interval: 속성이 0이상 값으로 설정되면, 반복 호출된다.
12
15
 
13
16
  ## data scheme
14
- - 실행 완료 후 시나리오의 최종 context를 제공받게 된다.
17
+
18
+ - 실행 완료 후 시나리오의 최종 context를 제공받게 된다.(브라우저 개발도구창에서 확인 가능)
15
19
 
16
20
  ```json
17
21
  {
@@ -24,4 +28,6 @@
24
28
  state: 'STARTED' | 'HALTED', /* senario status*/
25
29
  timestamp: 4273809748
26
30
  }
31
+
32
+ /* 이 결과 오브젝트 중에서 data 값이 컴포넌트의 data 속성에 설정된다. */
27
33
  ```
@@ -1,27 +1,33 @@
1
- # scenario run
1
+ # Scenario Run
2
2
 
3
- - scenario-run starts the scenario with the given variables and gets the result value after it is finished.
4
- (On the other hand, scenario-start starts the scenario and returns immediately.)
5
- - It is recommended that scenario-run target scenarios that are guaranteed to be terminated in a short period of time.
6
- - The scenario instance executed by scenario-run is given an instnace name in the format {scenario-name}-{timestamp}.
7
- - Values given as variables(value attribute) are given as variables variables at the beginning of the scenario. When this value is changed or intent sensitive is set, this component is activated.
3
+ - Scenario-run starts the scenario with the given variables and retrieves the result after it has completed.
4
+ (In contrast, scenario-start starts the scenario and returns immediately.)
5
+ - Scenario-run is best suited for scenarios that guarantee a short-term completion.
6
+ - The scenario instances executed via scenario-run are assigned instance names in the format {scenario-name}-{timestamp}.
7
+ - The value provided as 'variables' (value attribute) is given as the variables variable when the scenario starts. This component operates when this value changes or intent sensitivity is set.
8
+ - If the repeat 'interval property' is set to a value greater than or equal to 0, it will be called repeatedly.
8
9
 
9
- ## properties
10
- - scenario-name : (required) Name of the scenario to be run.
11
- - variables : Variable values passed to the scenario. This is a parameter value provided to the scenario. This property is connected to the value of this component.
10
+ ## Properties
12
11
 
13
- ## data scheme
14
- - After execution is completed, the final context of the scenario is provided.
12
+ - scenarioName: (Required) The name of the scenario to be executed.
13
+ - variables: The variables value provided to the scenario. It is the parameter value provided to the scenario. It is linked to the value of this component.
14
+ - interval: If the property is set to a value greater than or equal to 0, it will be called repeatedly.
15
+
16
+ ## Data Scheme
17
+
18
+ - After execution, you will receive the final context of the scenario. (Available for inspection in the browser's developer console)
15
19
 
16
20
  ```json
17
21
  {
18
22
  variables: {
19
- ... /* parameters when instance start*/
23
+ ... /* parameters when instance starts */
20
24
  },
21
25
  data: {
22
26
  [each step name]: { /* step result */ }
23
27
  },
24
- state: 'STARTED' | 'HALTED', /* senario status*/
28
+ state: 'STARTED' | 'HALTED', /* scenario status */
25
29
  timestamp: 4273809748
26
30
  }
31
+
32
+ /* Among the result objects, the data value is set to the component's data property. */
27
33
  ```
@@ -0,0 +1,36 @@
1
+ # Skrip Kajian
2
+
3
+ - Skrip-kajian memulakan skrip dengan pembolehubah yang diberikan dan mengambil hasil selepas ia selesai.
4
+ (Sebaliknya, skrip-mula memulakan skrip dan kembali segera.)
5
+ - Skrip-kajian sesuai terbaik untuk skrip yang menjamin penyelesaian dalam jangka masa pendek
6
+
7
+ .
8
+
9
+ - Contoh skrip yang dijalankan melalui skrip-kajian diberikan nama instans dalam format {nama-skrip}-{capaian-masa}.
10
+ - Nilai yang diberikan sebagai pembolehubah (atribut nilai) diberikan sebagai pembolehubah apabila skrip bermula. Komponen ini berfungsi apabila nilai ini berubah atau sensitiviti hasrat ditetapkan.
11
+ - Jika sifat jangkaan ulangan ditetapkan kepada nilai yang lebih besar atau sama dengan 0, ia akan dipanggil secara berulang.
12
+
13
+ ## Ciri-ciri
14
+
15
+ - Nama-skrip: (Wajib) Nama skrip yang akan dilaksanakan.
16
+ - pembolehubah: Nilai pembolehubah yang diberikan kepada skrip. Ia adalah nilai parameter yang diberikan kepada skrip. Ia dikaitkan dengan nilai komponen ini.
17
+ - jangka masa: Jika sifat ini ditetapkan kepada nilai yang lebih besar atau sama dengan 0, ia akan dipanggil secara berulang.
18
+
19
+ ## Skim Data
20
+
21
+ - Selepas pelaksanaan, anda akan menerima konteks terakhir skrip. (Boleh diperiksa dalam konsol pembangun pelayar)
22
+
23
+ ```json
24
+ {
25
+ pembolehubah: {
26
+ ... /* parameter apabila capaian bermula */
27
+ },
28
+ data: {
29
+ [setiap nama langkah]: { /* keputusan langkah */ }
30
+ },
31
+ keadaan: 'DIMULAKAN' | 'BERHENTI', /* status skrip */
32
+ capaian-masa: 4273809748
33
+ }
34
+
35
+ /* Di antara objek hasil, nilai data ditetapkan kepada ciri data komponen ini. */
36
+ ```
@@ -1,27 +1,69 @@
1
- # scenario run
2
-
3
- - scenario-run使用给定的变量启动方案,并在完成后获取结果值。
4
- (另一方面,scenario-start将启动该方案并立即返回处理结果。)
5
- - scenario-run建议运行在短时间内终止的方案作为目标方案。
6
- - scenario-run执行时将自动赋予一个实例名称,格式为{scenario-name}-{timestamp}
7
- - 如果提供variables发生变化时或设置意图敏感后,此组件将被激活。
8
-
9
- ## properties
10
- - scenario-name : (必要值) 要运行的方案的名称
11
- - variables : 变量值传递给场景。 这是提供给方案的参数值。 此属性连接到该组件的value。
12
-
13
- ## data scheme
14
- - 执行完成后,将提供方案的Context
15
-
1
+ # 场景运行
2
+
3
+ - 场景运行将使用给定的变量启动场景,并在完成后检索结果。
4
+ (相比之下,场景启动会立即启动场景并返回。)
5
+ - 场景运行最适合保证在短时间内完成的场景。
6
+ - 通过场景运行执行的场景实例将以{场景名称}-{时间戳}的格式分配实例名称。
7
+ - 作为变量的值(value 属性)在场景启动时作为变量变量提供。此组件在此值更改或设置意图敏感性时操作。
8
+ - 如果将重复间隔属性设置为大于或等于 0 的值,则将重复调用它。
9
+
10
+ ## 属性
11
+
12
+ - scenarioName:(必需)要执行的场景的名称。
13
+ - variables:提供给场景的变量值。它是提供给场景的参数值。它与此组件的值关联。
14
+ - interval:如果属性设置为大于或等于 0 的值,将重复调用它。
15
+
16
+ ## 数据方案
17
+
18
+ - 执行后,您将获得场景的最终上下文。(可在浏览器的开发者控制台中查看)
19
+
16
20
  ```json
17
21
  {
18
22
  variables: {
19
- ... /* parameters when instance start*/
23
+ ... /* 实例启动时的参数 */
20
24
  },
21
25
  data: {
22
- [each step name]: { /* step result */ }
26
+ [每个步骤名称]: { /* 步骤结果 */ }
23
27
  },
24
- state: 'STARTED' | 'HALTED', /* senario status*/
28
+ state: 'STARTED' | 'HALTED', /* 场景状态 */
25
29
  timestamp: 4273809748
26
30
  }
31
+
32
+ /* 在结果对象中,数据值将设置为组件的数据属性。 */
33
+ ```
34
+
35
+ 일본어:
36
+
37
+ # シナリオ実行
38
+
39
+ - シナリオ実行は指定された変数でシナリオを開始し、完了後に結果を取得します。
40
+ (一方、シナリオ開始はシナリオを開始し、すぐに返します。)
41
+ - シナリオ実行は短期間での完了が保証されているシナリオに最適です。
42
+ - シナリオ実行で実行されるシナリオインスタンスは、{シナリオ名}-{タイムスタンプ}の形式でインスタンス名が割り当てられます。
43
+ - 変数として提供される値(value 属性)は、シナリオ開始時に変数として提供されます。このコンポーネントは、この値が変更されるか、意図の感度が設定されている場合に動作します。
44
+ - リピート間隔プロパティが 0 以上の値に設定されている場合、繰り返し呼び出されます。
45
+
46
+ ## プロパティ
47
+
48
+ - scenarioName:(必須)実行するシナリオの名前。
49
+ - variables:シナリオに提供される変数値。これはシナリオに提供されるパラメータ値です。これはこのコンポーネントの値にリンクされています。
50
+ - interval:プロパティが 0 以上の値に設定されている場合、繰り返し呼び出されます。
51
+
52
+ ## データスキーム
53
+
54
+ - 実行後、シナリオの最終コンテキストが提供されます。 (ブラウザの開発者コンソールで確認できます)
55
+
56
+ ```json
57
+ {
58
+ variables: {
59
+ ... /* インスタンス開始時のパラメータ */
60
+ },
61
+ data: {
62
+ [各ステップ名]: { /* ステップ結果 */ }
63
+ },
64
+ state: 'STARTED' | 'HALTED', /* シナリオのステータス */
65
+ timestamp: 4273809748
66
+ }
67
+
68
+ /* 結果のオブジェクトのうち、データ値はコンポーネントのデータプロパティに設定されます。 */
27
69
  ```
@@ -0,0 +1,15 @@
1
+ {
2
+ "keep": {
3
+ "days": true,
4
+ "amount": 2
5
+ },
6
+ "auditLog": "logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json",
7
+ "files": [
8
+ {
9
+ "date": 1694141381220,
10
+ "name": "logs/application-2023-09-08-11.log",
11
+ "hash": "35162da886c5a030cffb958fad40eaab149475a9f740d3f39ee9ad479090c717"
12
+ }
13
+ ],
14
+ "hashType": "sha256"
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "keep": {
3
+ "days": true,
4
+ "amount": 14
5
+ },
6
+ "auditLog": "logs/.5e5d741d8b7784a2fbad65eedc0fd46946aaf6f2-audit.json",
7
+ "files": [
8
+ {
9
+ "date": 1694141382429,
10
+ "name": "logs/connections-2023-09-08-11.log",
11
+ "hash": "7f1aaa82aa6887cac4b9e6cbbbd6d04cc09f5496fdfcc17fce9f8c2338cb77ab"
12
+ }
13
+ ],
14
+ "hashType": "sha256"
15
+ }
@@ -0,0 +1,6 @@
1
+ 2023-09-08T11:49:41+09:00 info: File Storage is Ready.
2
+ 2023-09-08T11:49:42+09:00 error: oracledb module loading failed
3
+ 2023-09-08T11:49:42+09:00 error: oracledb module loading failed
4
+ 2023-09-08T11:49:43+09:00 info: Default DataSource established
5
+ 2023-09-08T11:49:44+09:00 info: 🚀 Server ready at http://0.0.0.0:3000/graphql
6
+ 2023-09-08T11:49:44+09:00 info: 🚀 Subscriptions ready at ws://0.0.0.0:3000/graphql
@@ -0,0 +1,38 @@
1
+ 2023-09-08T11:49:44+09:00 info: Initializing ConnectionManager...
2
+ 2023-09-08T11:49:44+09:00 info: Connector 'echo-back-server' started to ready
3
+ 2023-09-08T11:49:44+09:00 info: Connector 'echo-back' started to ready
4
+ 2023-09-08T11:49:44+09:00 info: Connector 'http-connector' started to ready
5
+ 2023-09-08T11:49:44+09:00 info: Connector 'graphql-connector' started to ready
6
+ 2023-09-08T11:49:44+09:00 info: Connector 'sqlite-connector' started to ready
7
+ 2023-09-08T11:49:44+09:00 info: Connector 'postgresql-connector' started to ready
8
+ 2023-09-08T11:49:44+09:00 info: Connector 'mqtt-connector' started to ready
9
+ 2023-09-08T11:49:44+09:00 info: Connector 'mssql-connector' started to ready
10
+ 2023-09-08T11:49:44+09:00 info: Connector 'oracle-connector' started to ready
11
+ 2023-09-08T11:49:44+09:00 info: Connector 'mysql-connector' started to ready
12
+ 2023-09-08T11:49:44+09:00 info: Connector 'socket-server' started to ready
13
+ 2023-09-08T11:49:44+09:00 info: Connector 'msgraph-connector' started to ready
14
+ 2023-09-08T11:49:44+09:00 info: echo-back-servers are ready
15
+ 2023-09-08T11:49:44+09:00 info: echo-back connections are ready
16
+ 2023-09-08T11:49:44+09:00 info: http-connector connections are ready
17
+ 2023-09-08T11:49:44+09:00 info: graphql-connector connections are ready
18
+ 2023-09-08T11:49:44+09:00 info: sqlite-connector connections are ready
19
+ 2023-09-08T11:49:44+09:00 info: postgresql-connector connections are ready
20
+ 2023-09-08T11:49:44+09:00 info: mqtt-connector connections are ready
21
+ 2023-09-08T11:49:44+09:00 info: mssql-connector connections are ready
22
+ 2023-09-08T11:49:44+09:00 info: oracle-connector connections are ready
23
+ 2023-09-08T11:49:44+09:00 info: mysql-connector connections are ready
24
+ 2023-09-08T11:49:44+09:00 info: socket servers are ready
25
+ 2023-09-08T11:49:44+09:00 info: msgraph-connector connections are ready
26
+ 2023-09-08T11:49:44+09:00 info: All connector for 'echo-back-server' ready
27
+ 2023-09-08T11:49:44+09:00 info: All connector for 'echo-back' ready
28
+ 2023-09-08T11:49:44+09:00 info: All connector for 'http-connector' ready
29
+ 2023-09-08T11:49:44+09:00 info: All connector for 'graphql-connector' ready
30
+ 2023-09-08T11:49:44+09:00 info: All connector for 'sqlite-connector' ready
31
+ 2023-09-08T11:49:44+09:00 info: All connector for 'postgresql-connector' ready
32
+ 2023-09-08T11:49:44+09:00 info: All connector for 'mqtt-connector' ready
33
+ 2023-09-08T11:49:44+09:00 info: All connector for 'mssql-connector' ready
34
+ 2023-09-08T11:49:44+09:00 info: All connector for 'oracle-connector' ready
35
+ 2023-09-08T11:49:44+09:00 info: All connector for 'mysql-connector' ready
36
+ 2023-09-08T11:49:44+09:00 info: All connector for 'socket-server' ready
37
+ 2023-09-08T11:49:44+09:00 info: All connector for 'msgraph-connector' ready
38
+ 2023-09-08T11:49:44+09:00 info: ConnectionManager initialization done:
@@ -0,0 +1,20 @@
1
+ {
2
+ "keep": {
3
+ "days": true,
4
+ "amount": 14
5
+ },
6
+ "auditLog": "logs/system/.ce832741a58883a058e9af6fb7483de16a838e2c-audit.json",
7
+ "files": [
8
+ {
9
+ "date": 1694141511833,
10
+ "name": "logs/system/scenario-NOW-2023-09-08-11.log",
11
+ "hash": "f91d01954126a177f99265f35ad89caeedc604850066f06c80c4fed21aa2860e"
12
+ },
13
+ {
14
+ "date": 1694142001868,
15
+ "name": "logs/system/scenario-NOW-2023-09-08-12.log",
16
+ "hash": "b9b352f0dc8484d1a25c822066063a5c9a614a51f8091a748cf21c824f2310ca"
17
+ }
18
+ ],
19
+ "hashType": "sha256"
20
+ }