diff options
Diffstat (limited to 'public/src/app/rule-engine/host')
-rw-r--r-- | public/src/app/rule-engine/host/exit-mode.enum.ts | 4 | ||||
-rw-r--r-- | public/src/app/rule-engine/host/host-params.ts | 8 | ||||
-rw-r--r-- | public/src/app/rule-engine/host/host.service.spec.ts | 18 | ||||
-rw-r--r-- | public/src/app/rule-engine/host/host.service.ts | 56 |
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; + }, {}); + } +} |