summaryrefslogtreecommitdiffstats
path: root/public/src/app/rule-engine/host
diff options
context:
space:
mode:
Diffstat (limited to 'public/src/app/rule-engine/host')
-rw-r--r--public/src/app/rule-engine/host/exit-mode.enum.ts4
-rw-r--r--public/src/app/rule-engine/host/host-params.ts8
-rw-r--r--public/src/app/rule-engine/host/host.service.spec.ts18
-rw-r--r--public/src/app/rule-engine/host/host.service.ts56
4 files changed, 86 insertions, 0 deletions
diff --git a/public/src/app/rule-engine/host/exit-mode.enum.ts b/public/src/app/rule-engine/host/exit-mode.enum.ts
new file mode 100644
index 0000000..784ba3b
--- /dev/null
+++ b/public/src/app/rule-engine/host/exit-mode.enum.ts
@@ -0,0 +1,4 @@
+export enum ExitMode {
+ Done,
+ Cancel
+}
diff --git a/public/src/app/rule-engine/host/host-params.ts b/public/src/app/rule-engine/host/host-params.ts
new file mode 100644
index 0000000..f204101
--- /dev/null
+++ b/public/src/app/rule-engine/host/host-params.ts
@@ -0,0 +1,8 @@
+export interface HostParams {
+ readonly vfcmtUuid: string;
+ readonly nodeName: string;
+ readonly nodeId: string;
+ readonly fieldName: string;
+ readonly userId: string;
+ readonly flowType: string;
+}
diff --git a/public/src/app/rule-engine/host/host.service.spec.ts b/public/src/app/rule-engine/host/host.service.spec.ts
new file mode 100644
index 0000000..048be80
--- /dev/null
+++ b/public/src/app/rule-engine/host/host.service.spec.ts
@@ -0,0 +1,18 @@
+import { TestBed, inject } from '@angular/core/testing';
+
+import { HostService } from './host.service';
+
+describe('HostService', () => {
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ providers: [HostService]
+ });
+ });
+
+ it(
+ 'should be created',
+ inject([HostService], (service: HostService) => {
+ expect(service).toBeTruthy();
+ })
+ );
+});
diff --git a/public/src/app/rule-engine/host/host.service.ts b/public/src/app/rule-engine/host/host.service.ts
new file mode 100644
index 0000000..7918d30
--- /dev/null
+++ b/public/src/app/rule-engine/host/host.service.ts
@@ -0,0 +1,56 @@
+import { Injectable } from '@angular/core';
+import { HostParams } from './host-params';
+import { ExitMode } from './exit-mode.enum';
+
+@Injectable()
+export class HostService {
+ /* Public Members */
+
+ public static getParams(): HostParams {
+ return this.getQueryParamsObj(window.location.search) as HostParams;
+ }
+
+ public static enterModifyRule(): void {
+ this.postMessage('modifyRule', null);
+ }
+
+ public static exitModifyRule(): void {
+ this.postMessage('ruleList', null);
+ }
+
+ public static disableLoader(): void {
+ this.postMessage('disable-loader', null);
+ }
+
+ public static exit(mode: ExitMode, data: string): void {
+ if (mode === ExitMode.Cancel) {
+ this.postMessage('exit', null);
+ } else if (mode === ExitMode.Done) {
+ this.postMessage('exit', data);
+ }
+ }
+
+ /* Private Methods */
+
+ private static postMessage(eventName: string, data: string): void {
+ window.parent.postMessage(
+ {
+ type: eventName,
+ data: data
+ },
+ '*'
+ );
+ }
+
+ private static getQueryParamsObj(query: string): object {
+ return query
+ .substring(1) // removes '?' that always appears as prefix to the query-string
+ .split('&') // splits query-string to "key=value" strings
+ .map(p => p.split('=')) // splits each "key=value" string to [key,value] array
+ .reduce((res, p) => {
+ // converts to a dictionary (object) of params
+ res[p[0]] = p[1];
+ return res;
+ }, {});
+ }
+}