summaryrefslogtreecommitdiffstats
path: root/sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.ts
diff options
context:
space:
mode:
Diffstat (limited to 'sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.ts')
-rw-r--r--sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.ts138
1 files changed, 131 insertions, 7 deletions
diff --git a/sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.ts b/sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.ts
index e8e2c780..d5f201f6 100644
--- a/sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.ts
+++ b/sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.ts
@@ -9,23 +9,147 @@
* Contributors:
* ZTE - initial API and implementation and/or initial documentation
*******************************************************************************/
-import { AfterViewInit, Component, Input } from '@angular/core';
-import { Subscription } from 'rxjs/Subscription';
-
-import {IntermediateCatchEvent} from '../../../model/workflow/intermediate-catch-event';
+import {Component, Input, OnChanges, SimpleChanges, OnDestroy} from "@angular/core";
+import {IntermediateCatchEvent} from "../../../model/workflow/intermediate-catch-event";
+import {TimerEventDefinitionType} from "../../../model/workflow/timer-event-definition";
+import {TranslateService} from "@ngx-translate/core";
@Component({
- selector: 'b4t-intermediate-catch-event',
+ selector: 'wfm-intermediate-catch-event',
templateUrl: 'intermediate-catch-event.component.html',
})
-export class IntermediateCatchEventComponent {
+export class IntermediateCatchEventComponent implements OnChanges, OnDestroy {
@Input() public node: IntermediateCatchEvent;
- public timerTypeChange(type: string) {
+ public checkedType: string;
+ public timeType = TimerEventDefinitionType;
+ public timeDate: string;
+ public timeDuration: any = {
+ year: 0,
+ month: 0,
+ day: 0,
+ hour: 0,
+ minute: 0,
+ second: 0
+ };
+
+ public locale: any;
+ private localeZh: any = {
+ firstDayOfWeek: 0,
+ dayNames: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
+ dayNamesShort: ['日', '一', '二', '三', '四', '五', '六'],
+ monthNames: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+ monthNamesShort: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+ dateFns: null,
+ confirm: '确定'
+ };
+
+ constructor(private translate: TranslateService) {
+ this.locale = translate.currentLang.indexOf('zh') > -1 ? this.localeZh : undefined;
+ }
+
+ public ngOnChanges(changes: SimpleChanges): void {
+ if (this.node && this.node.timerEventDefinition) {
+ this.checkedType = this.node.timerEventDefinition.type;
+ }
+ if (!this.checkedType) {
+ this.checkedType = this.timeType[this.timeType.timeDuration];
+ } else if (this.checkedType === this.timeType[this.timeType.timeCycle]) {
+ // 兼容老数据,把timeCycle转为timeDuration
+ this.checkedType = this.node.timerEventDefinition.type = this.timeType[this.timeType.timeDuration];
+ }
+
+ if (this.node.timerEventDefinition.timeDuration) {
+ this.transformStringToTimeDuration();
+ } else if (this.node.timerEventDefinition.timeCycle) {
+ // 兼容老数据,把timeCycle转为timeDuration
+ const timeCycleArray = this.node.timerEventDefinition.timeCycle.split('/');
+ this.node.timerEventDefinition.timeDuration = timeCycleArray.length > 1 ? timeCycleArray[1] : timeCycleArray[0];
+ this.node.timerEventDefinition.timeCycle = '';
+ this.transformStringToTimeDuration();
+ } else if (this.node.timerEventDefinition.timeDate) {
+ this.transformISOToDate();
+ }
+ }
+
+ public ngOnDestroy(): void {
+ if (this.checkedType === this.timeType[this.timeType.timeDuration]) {
+ this.transformTimeDurationToString();
+ } else {
+ this.timeDateChange();
+ }
+ }
+
+ private transformStringToTimeDuration(): void {
+ // R5/P1Y2M10DT2H30M
+ // P1Y3M5DT6H7M30S
+ this.timeDuration.year = this.splitTimeDuration('P', 'Y');
+ this.timeDuration.month = this.splitTimeDuration('Y', 'M');
+ this.timeDuration.day = this.splitTimeDuration('M', 'D');
+ this.timeDuration.hour = this.splitTimeDuration('D', 'H');
+ this.timeDuration.minute = this.splitTimeDuration('H', 'M');
+ this.timeDuration.second = this.splitTimeDuration('M', 'S');
+ }
+
+ private splitTimeDuration(startKey: string, endKey: string): number {
+ const timeDuration = this.node.timerEventDefinition.timeDuration;
+ let start = timeDuration.indexOf(startKey);
+ let end = timeDuration.indexOf(endKey);
+ if (startKey === 'H' || endKey === 'S') {
+ start = timeDuration.lastIndexOf(startKey);
+ end = timeDuration.lastIndexOf(endKey);
+ }
+ const result = parseInt(timeDuration.substring(start + 1, end));
+ if (isNaN(result)) {
+ return 0;
+ } else {
+ return result;
+ }
+ }
+
+ public timeTypeChange(type: string): void {
+ this.checkedType = type;
const timer = this.node.timerEventDefinition;
timer.type = type;
timer.timeCycle = '';
timer.timeDate = '';
timer.timeDuration = '';
}
+
+ public transformTimeDurationToString(): void {
+ // R5/P1Y2M10DT2H30M
+ this.node.timerEventDefinition.timeDuration = 'P'
+ + this.timeDuration.year + 'Y'
+ + this.timeDuration.month + 'M'
+ + this.timeDuration.day + 'D'
+ + 'T' + this.timeDuration.hour + 'H'
+ + this.timeDuration.minute + 'M'
+ + this.timeDuration.second + 'S';
+ }
+
+ private transformISOToDate(): void {
+ this.timeDate = new Date(this.node.timerEventDefinition.timeDate).toString();
+ }
+
+ private pad(value: number): string {
+ let result = value.toString();
+ if (result.length === 1) {
+ result = '0' + result;
+ }
+ return result;
+ }
+
+ private transformDateToISO(date: Date): string {
+ return date.getFullYear() + '-' + this.pad(date.getMonth() + 1) + '-' + this.pad(date.getDate()) + 'T'
+ + this.pad(date.getHours()) + ':' + this.pad(date.getMinutes()) + ':' + this.pad(date.getSeconds());
+ }
+
+ public timeDateChange(): void {
+ // 2007-04-05T12:30-02:00
+ if (this.timeDate) {
+ const date = new Date(this.timeDate);
+ this.node.timerEventDefinition.timeDate = this.transformDateToISO(date);
+ console.log(this.node.timerEventDefinition.timeDate);
+ }
+ }
}