{"version":3,"sources":["jsdelivr-header.js","/projects/angular-alur-kerja-lib/src/lib/crud/model-crud/crud.model.ts","/projects/angular-alur-kerja-lib/src/lib/shared/services/common/sweet-alert.service.ts","/projects/angular-alur-kerja-lib/src/lib/crud/base-edit-pages.component.ts","/projects/angular-alur-kerja-lib/src/lib/crud/base-delete-pages.component.ts","/projects/angular-alur-kerja-lib/src/lib/crud/base-crud-pages.component.ts","/node_modules/tslib/tslib.es6.js","/projects/angular-alur-kerja-lib/src/lib/crud/base-crud-bpmn-pages.component.ts","/projects/angular-alur-kerja-lib/src/lib/crud/base-crud-bpmn-todo-pages.component.ts","/projects/angular-alur-kerja-lib/src/lib/crud/base-bpmn-edit-pages.component.ts","/projects/angular-alur-kerja-lib/src/lib/crud-table/models/environment.model.ts","/projects/angular-alur-kerja-lib/src/lib/shared/services/common/select2.service.ts","/projects/angular-alur-kerja-lib/src/lib/shared/components/base-select-2/base-select2.component.ts","/projects/angular-alur-kerja-lib/src/lib/shared/components/base-select-2/common-select2.component.ts","/projects/angular-alur-kerja-lib/src/lib/shared/services/common/file-upload.service.ts","/projects/angular-alur-kerja-lib/src/lib/shared/components/date/date-select.component.ts","/projects/angular-alur-kerja-lib/src/lib/shared/components/base-edit-bpmn/base-edit-bpmn.component.ts","/projects/angular-alur-kerja-lib/src/lib/shared/components/base-edit-bpmn-decision/base-edit-bpmn-decision.component.ts","/projects/angular-alur-kerja-lib/src/lib/shared/components/draw/draw.component.ts","/projects/angular-alur-kerja-lib/src/lib/shared/components/single-upload-file/single-upload-file.component.ts","/projects/angular-alur-kerja-lib/src/lib/shared/components/diagram/diagram.component.ts","/projects/angular-alur-kerja-lib/src/lib/shared/components/diagram/diagram-tes.component.ts","/projects/angular-alur-kerja-lib/src/lib/shared/components/tag/tag-file.component.ts","/projects/angular-alur-kerja-lib/src/lib/shared/components/diagram/diagram-req-doc.component.ts","/projects/angular-alur-kerja-lib/src/lib/shared/components/date-range/date-range-select.component.ts","/projects/angular-alur-kerja-lib/src/lib/shared/components/diagram/diagram-delegate-app.component.ts","/projects/angular-alur-kerja-lib/src/lib/crud/crud.module.ts","/projects/angular-alur-kerja-lib/src/lib/crud-table/models/sort.model.ts","/projects/angular-alur-kerja-lib/src/lib/crud-table/models/paginator.model.ts","/projects/angular-alur-kerja-lib/src/lib/crud-table/models/grouping.model.ts","/projects/angular-alur-kerja-lib/src/lib/crud-table/services/table.service.ts","/projects/angular-alur-kerja-lib/src/lib/crud-table/services/table.extended.service.ts","/projects/angular-alur-kerja-lib/src/lib/crud-table/components/paginator/paginator.component.ts","/projects/angular-alur-kerja-lib/src/lib/crud-table/components/paginator/ng-pagination/ng-pagination.config.ts","/projects/angular-alur-kerja-lib/src/lib/crud-table/components/paginator/ng-pagination/ng-pagination.component.ts","/projects/angular-alur-kerja-lib/src/lib/crud-table/components/sort-icon/sort-icon.component.ts","/projects/angular-alur-kerja-lib/src/lib/crud-table/crud-table.module.ts"],"names":[],"mappings":"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","file":"/npm/angular-alur-kerja-lib@0.2.3-s/bundles/angular-alur-kerja-lib.umd.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/angular-alur-kerja-lib@0.2.3-s/bundles/angular-alur-kerja-lib.umd.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","export const LIST_TYPE_INPUT = [\r\n    'button',\r\n    'checkbox',\r\n    'color',\r\n    'date',\r\n    'datetime-local',\r\n    'email',\r\n    'file',\r\n    'hidden',\r\n    'image',\r\n    'month',\r\n    'number',\r\n    'password',\r\n    'radio',\r\n    'range',\r\n    'reset',\r\n    'search',\r\n    'submit',\r\n    'tel',\r\n    'text',\r\n    'url',\r\n    'week'\r\n];\r\n","import {Injectable} from \"@angular/core\";\r\nimport Swal from 'sweetalert2'\r\nimport {Router} from \"@angular/router\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\n\r\nexport class SweetAlertService {\r\n\r\n  constructor(private router: Router) {}\r\n\r\n  static swalError(res) {\r\n    this.customSwal(res.error.message, `Error HTTP ${res.status}`, 'error', res.status);\r\n  }\r\n\r\n  static swalSuccess(res) {\r\n    this.customSwal('', `Success`, 'success', res.status);\r\n  }\r\n\r\n  static swalSuccessDraft(res) {\r\n    this.customSwal('Your draft has been saved successfully', `Success`, 'success', res.status);\r\n  }\r\n\r\n  static swalSuccessCustom(text: string, title: string) {\r\n    this.customSwal(text, title, 'success', 200);\r\n  }\r\n\r\n  // THIS FOR Single Approval\r\n  static customSwal(text, title, icon = 'error', status) {\r\n    if (status == 401) {\r\n      Swal.fire({\r\n        icon: icon === 'error' ? 'error' : (icon === 'warning' ? 'warning' : 'success'),\r\n        confirmButtonColor: '#3699FF',\r\n        title: 'Session Expired',\r\n        text: 'Your session has timeout, please sign in again'\r\n      }).then((result) => {\r\n        window.location.href=\"/#logout=true\"\r\n      });\r\n    } else if (status == 502) {\r\n      const titleStr = '';\r\n      const textStr = 'Our system is currently under maintenance. We will get back soon to serve you better';\r\n      Swal.fire({\r\n        icon: 'warning',\r\n        confirmButtonColor: '#3699FF',\r\n        title: titleStr,\r\n        text: textStr\r\n      }).then();\r\n    } else if (status == 503 || status === 0) {\r\n      const titleStr = '';\r\n      const textStr = 'Your submission is unsuccessful. Please try again in a few minutes';\r\n      Swal.fire({\r\n        icon: 'warning',\r\n        confirmButtonColor: '#3699FF',\r\n        title: titleStr,\r\n        text: textStr\r\n      }).then();\r\n    } else {\r\n      Swal.fire({\r\n        icon: icon === 'error' ? 'error' : (icon === 'warning' ? 'warning' : 'success'),\r\n        confirmButtonColor: '#3699FF',\r\n        title,\r\n        text\r\n      }).then();\r\n    }\r\n  }\r\n\r\n  // THIS FOR Single Approval\r\n  static swalErrorNoApi(title: string, text: string) {\r\n    Swal.fire({\r\n      icon: 'error',\r\n      confirmButtonColor: '#3699FF',\r\n      title,\r\n      text\r\n    }).then();\r\n  }\r\n\r\n  // THIS FOR Single Approval\r\n  static swalErrorNoApiHtml(title: string, arr = []) {\r\n    let html = '<ul>';\r\n    arr.forEach((el) => {\r\n      html = html + '<li>' + el + '</li>';\r\n    })\r\n    html = html + '</ul>';\r\n    Swal.fire({\r\n      icon: 'error',\r\n      confirmButtonColor: '#3699FF',\r\n      title,\r\n      html: html\r\n    }).then();\r\n  }\r\n\r\n  // THIS FOR Single Approval\r\n  static swalWithUrl(title: string, showDeny: boolean, showCancel: boolean, textConfirm: string, textDeny: string, icon, urlConfirmed: string, textDenied: string) {\r\n    Swal.fire({\r\n      title,\r\n      icon,\r\n      showDenyButton: showDeny,\r\n      showCancelButton: showCancel,\r\n      confirmButtonText: textConfirm,\r\n      denyButtonText: textDeny,\r\n    }).then((result) => {\r\n      /* Read more about isConfirmed, isDenied below */\r\n      if (result.isConfirmed) {\r\n        window.location.href = urlConfirmed;\r\n      } else if (result.isDenied) {\r\n        Swal.fire(textDenied, '', 'info')\r\n      }\r\n    })\r\n  }\r\n\r\n  // THIS FOR Single Approval\r\n  static idleLogout() {\r\n    Swal.fire({\r\n      icon: 'error',\r\n      confirmButtonColor: '#3699FF',\r\n      title: 'Session Expired',\r\n      text: 'Your session has timeout, please sign in again'\r\n    }).then((result) => {\r\n      window.location.href=\"/auth/login\"\r\n    });\r\n  }\r\n\r\n}\r\n","import {Component, Inject, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {FormBuilder, FormGroup} from '@angular/forms';\r\nimport {Subscription} from 'rxjs';\r\nimport {NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';\r\nimport {LIST_TYPE_INPUT} from './model-crud/crud.model';\r\nimport {SweetAlertService} from \"../shared/services/common/sweet-alert.service\";\r\n\r\n@Component({\r\n    selector: 'app-base-edit-pages',\r\n    templateUrl: './edit-crud/edit-crud-modal.component.html',\r\n    styleUrls: ['./edit-crud/edit-crud-modal.component.scss'],\r\n})\r\n\r\nexport class BaseEditPagesComponent implements OnInit, OnDestroy {\r\n    @Input() id: number;\r\n    @Input() show: boolean;\r\n    @Input() title: string;\r\n    @Input() arrFormGroup: {\r\n        title: string,\r\n        form: string,\r\n        type?: string,\r\n        url?: string,\r\n        metaData?: string,\r\n        placeHolder?: string,\r\n        name?: string,\r\n        readonly?: boolean,\r\n        mandatory?: boolean\r\n    }[];\r\n    isLoading$;\r\n    formObj: any;\r\n    formGroup: FormGroup;\r\n    subscriptions: Subscription[] = [];\r\n    htmlInputType = LIST_TYPE_INPUT;\r\n    EMPTY_OBJ: {} = {};\r\n    constructor(\r\n        @Inject('') protected service: any,\r\n        protected fb: FormBuilder,\r\n        public modal: NgbActiveModal\r\n    ) { }\r\n\r\n    ngOnInit(): void {\r\n        this.isLoading$ = this.service.isLoading$;\r\n        this.loadFormData();\r\n    }\r\n\r\n    loadFormData() {\r\n        if (!this.id) {\r\n            this.formObj = this.EMPTY_OBJ;\r\n            this.loadForm();\r\n        } else {\r\n            const sb = this.service.getItemById(this.id).pipe(\r\n\r\n            ).subscribe((res: any) => {\r\n              // SweetAlertService.swalSuccess(res);\r\n              this.formObj = res.data;\r\n              this.loadForm();\r\n            }, (error) => {\r\n              SweetAlertService.swalError(error);\r\n              this.modal.dismiss(error)\r\n            });\r\n            this.subscriptions.push(sb);\r\n        }\r\n    }\r\n\r\n    // OVERRIDE THIS (ADD CUSTOM FORMCONTROLL AND VALIDATION)\r\n    loadForm() {\r\n\r\n    }\r\n\r\n    save() {\r\n        this.prepareFormData();\r\n        if (this.formObj.id) {\r\n            this.edit();\r\n        } else {\r\n            this.create();\r\n        }\r\n    }\r\n\r\n    edit() {\r\n        const sbUpdate = this.service.update(this.formObj.id, this.prepareFormEdit()).pipe(\r\n        ).subscribe((res: any) => {\r\n          this.formObj = res;\r\n          this.modal.dismiss('success');\r\n        }, (error) => {\r\n          SweetAlertService.swalError(error);\r\n          this.modal.dismiss('error');\r\n        });\r\n        this.subscriptions.push(sbUpdate);\r\n    }\r\n\r\n    create() {\r\n        const sbCreate = this.service.create(this.prepareFormData()).pipe(\r\n        ).subscribe((res: any) => {\r\n          this.formObj = res;\r\n          this.modal.dismiss(('success'));\r\n        }, (error) => {\r\n          SweetAlertService.swalError(error);\r\n          this.modal.dismiss('error');\r\n        });\r\n        this.subscriptions.push(sbCreate);\r\n    }\r\n\r\n    // OVERRIDE THIS (PREPARE DATA FOR BODY PAYLOAD)\r\n    prepareFormData() {\r\n\r\n    }\r\n\r\n    // OVERRIDE THIS (PREPARE DATA FOR BODY PAYLOAD)\r\n    prepareFormEdit() {\r\n\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.subscriptions.forEach(sb => sb.unsubscribe());\r\n    }\r\n\r\n    // helpers for View\r\n    isControlValid(controlName: string): boolean {\r\n        const control = this.formGroup.controls[controlName];\r\n        return control.valid && (control.dirty || control.touched);\r\n    }\r\n\r\n    isControlInvalid(controlName: string): boolean {\r\n        const control = this.formGroup.controls[controlName];\r\n        return control.invalid && (control.dirty || control.touched);\r\n    }\r\n\r\n    controlHasError(validation, controlName): boolean {\r\n        const control = this.formGroup.controls[controlName];\r\n        return control.hasError(validation) && (control.dirty || control.touched);\r\n    }\r\n\r\n    isControlTouched(controlName): boolean {\r\n        const control = this.formGroup.controls[controlName];\r\n        return control.dirty || control.touched;\r\n    }\r\n}\r\n","import {Component, Inject, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {of, Subscription} from 'rxjs';\r\nimport {NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';\r\nimport {catchError, delay, finalize, tap} from 'rxjs/operators';\r\n\r\n@Component({\r\n    selector: 'app-base-delete-pages',\r\n    templateUrl: './delete-crud/delete-crud-modal.component.html',\r\n    styleUrls: ['./delete-crud/delete-crud-modal.component.scss']\r\n})\r\n\r\nexport class BaseDeletePagesComponent implements OnInit, OnDestroy {\r\n    @Input() id: number;\r\n    @Input() title: string;\r\n    isLoading = false;\r\n    subscriptions: Subscription[] = [];\r\n\r\n    constructor(\r\n        @Inject('') protected tableService: any,\r\n        public modal: NgbActiveModal\r\n    ) { }\r\n\r\n    ngOnInit(): void {\r\n    }\r\n\r\n    deleteMethod() {\r\n        this.isLoading = true;\r\n        const sb = this.tableService.delete(this.id).pipe(\r\n            delay(1000), // Remove it from your code (just for showing loading)\r\n            tap(() => this.modal.close()),\r\n            catchError((err) => {\r\n                this.modal.dismiss(err);\r\n                return of(undefined);\r\n            }),\r\n            finalize(() => {\r\n                this.isLoading = false;\r\n            })\r\n        ).subscribe();\r\n        this.subscriptions.push(sb);\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.subscriptions.forEach(sb => sb.unsubscribe());\r\n    }\r\n}\r\n","import {Component, Inject, OnDestroy, OnInit} from '@angular/core';\r\nimport {Subscription} from 'rxjs';\r\nimport {FormBuilder, FormGroup} from '@angular/forms';\r\nimport {IFilterView, IPaginatorView, ISortView, PaginatorState, SortState} from \"../crud-table\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {SweetAlertService} from \"../shared/services/common/sweet-alert.service\";\r\nimport {debounceTime} from \"rxjs/operators\";\r\n\r\n@Component({\r\n    selector: 'app-base-crud-pages',\r\n    template: ``,\r\n    styles: [],\r\n})\r\n\r\nexport class BaseCrudPagesComponent implements OnInit, OnDestroy, ISortView, IFilterView, IPaginatorView {\r\n    isLoading: boolean;\r\n    public subscriptions: Subscription[] = [];\r\n    filterGroup: FormGroup;\r\n    sorting: SortState;\r\n    paginator: PaginatorState;\r\n    arrFormGroups: any[] = [];\r\n    protected http: HttpClient;\r\n    arrFilterForm = [];\r\n\r\n    constructor(\r\n        @Inject('') protected tableService: any,\r\n        protected fb: FormBuilder\r\n    ) {}\r\n\r\n    paginate(paginator: PaginatorState) {\r\n        this.tableService.patchState({ paginator });\r\n    }\r\n\r\n    // OVERRIDE THIS FOR FILTER\r\n    filterForm() {\r\n      let objTemp = new Object();\r\n      this.arrFilterForm.forEach((el) => {\r\n        objTemp[el] = [''];\r\n      });\r\n      this.filterGroup = this.fb.group(objTemp);\r\n\r\n      this.arrFilterForm.forEach((el) => {\r\n        this.subscriptions.push(\r\n          this.filterGroup.controls[el].valueChanges\r\n              .pipe(debounceTime(900))\r\n              .subscribe(() =>\r\n            this.filter()\r\n          )\r\n        );\r\n      });\r\n    }\r\n\r\n    // OVERRIDE THIS FOR FILTER\r\n    filter() {\r\n      const filter = {};\r\n      this.arrFilterForm.forEach((el) => {\r\n        if (this.filterGroup.controls[el].value) {\r\n          filter[el] = this.filterGroup.controls[el].value\r\n        }\r\n      });\r\n      this.tableService.patchState({ filter });\r\n    }\r\n\r\n    sort(column: string): void {\r\n        const sorting = this.sorting;\r\n        const isActiveColumn = sorting.column === column;\r\n        if (!isActiveColumn) {\r\n            sorting.column = column;\r\n            sorting.direction = 'asc';\r\n        } else {\r\n            sorting.direction = sorting.direction === 'asc' ? 'desc' : 'asc';\r\n        }\r\n        this.tableService.patchState({ sorting });\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.tableService.setDefaults();\r\n        this.filterForm();\r\n        this.tableService.fetch();\r\n        const sb = this.tableService.isLoading$.subscribe(res => this.isLoading = res);\r\n        this.tableService.errorMessage$.subscribe((res) => {\r\n            if (typeof res == 'object') {\r\n                if (res.hasOwnProperty('error')) {\r\n                    SweetAlertService.swalError(res);\r\n                }\r\n            }\r\n        })\r\n        this.subscriptions.push(sb);\r\n        this.sorting = this.tableService.sorting;\r\n        this.paginator = this.tableService.paginator;\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.subscriptions.forEach((sb) => sb.unsubscribe());\r\n    }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {Component, Inject, OnDestroy, OnInit} from '@angular/core';\r\nimport {BehaviorSubject, Subscription} from 'rxjs';\r\nimport {FormBuilder, FormGroup} from '@angular/forms';\r\nimport {IFilterView, IPaginatorView, ISortView, PaginatorState, SortState} from \"../crud-table\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {SweetAlertService} from \"../shared/services/common/sweet-alert.service\";\r\n\r\n@Component({\r\n  selector: 'app-base-bpmn-pages',\r\n  template: ``,\r\n  styles: [],\r\n})\r\n\r\nexport class BaseCrudBpmnPagesComponent implements OnInit, OnDestroy, ISortView, IFilterView, IPaginatorView {\r\n  isLoading: boolean;\r\n  public subscriptions: Subscription[] = [];\r\n  filterGroup: FormGroup;\r\n  sorting: SortState;\r\n  paginator: PaginatorState;\r\n  arrFormGroups: any[] = [];\r\n  protected http: HttpClient;\r\n  taskDef = '';\r\n  arrVar = [];\r\n  arrDto = [];\r\n  arrDecision = [];\r\n  arrTasks = [];\r\n  allSpec = {};\r\n  loadingStart = false;\r\n\r\n  //FOR BPMN\r\n  diagramUrl = ``;\r\n  isCollapsed = false;\r\n  title = 'bpmn-js-angular';\r\n  importError?: Error;\r\n\r\n  alertShow = false;\r\n  alertType = 'primary';\r\n  alertMessage = '';\r\n\r\n  syncFoo = \"foo\";\r\n  testEmitter$ = new BehaviorSubject<any>(this.syncFoo);\r\n\r\n  constructor(\r\n    @Inject('') protected tableService: any,\r\n    protected fb: FormBuilder\r\n  ) {\r\n  }\r\n\r\n  paginate(paginator: PaginatorState) {\r\n    this.tableService.patchStateBpmn({paginator}, this.taskDef);\r\n  }\r\n\r\n  create() {\r\n    this.edit(undefined, 'edit', 'init');\r\n  }\r\n\r\n  //OVERRIDE THIS\r\n  editComponentShow(id, type, typeTask, transFormArrForm, transFormArrVar, transFormArrDecision, typeDecision) {\r\n\r\n  }\r\n\r\n  edit(id: number, type: string = 'edit', typeTask = null) {\r\n    let transFormArrForm = [];\r\n    let transFormArrVar = [];\r\n    let transFormArrDecision = [];\r\n    let typeDecision = '';\r\n    for (const key in this.allSpec) {\r\n      if (key === typeTask) {\r\n        const obj = this.allSpec[key];\r\n        if (obj.hasOwnProperty('decision')) {\r\n          if (obj.decision.hasOwnProperty('exclusive')) {\r\n            transFormArrDecision = obj.decision.exclusive;\r\n            typeDecision = 'radio';\r\n          }\r\n          if (obj.decision.hasOwnProperty('inclusive')) {\r\n            transFormArrDecision = obj.decision.inclusive;\r\n            typeDecision = 'checkbox';\r\n          }\r\n        }\r\n        if (obj.hasOwnProperty('variable')) {\r\n          transFormArrVar = obj.variable.map((el) => {\r\n            return {\r\n              title: el.label,\r\n              form: el.name,\r\n              type: 'text',\r\n              mandatory: el.required\r\n            };\r\n          });\r\n        }\r\n        if (obj.hasOwnProperty('dto')) {\r\n          transFormArrForm = obj.dto.map((el) => {\r\n            const typeTemp = el.type == 'String' || el.type == 'string' ? 'text' : el.type ? el.type : 'text';\r\n            if (typeTemp == 'radio' || typeTemp == 'checkbox') {\r\n              let tempJson = el.metadata.jsonValues;\r\n              el.metadata = {\r\n                ...el.metadata,\r\n                jsonValues: typeof tempJson === 'string' ? JSON.parse(tempJson) : tempJson\r\n              };\r\n            }\r\n            return {\r\n              title: el.label,\r\n              form: el.name,\r\n              type: typeTemp ? typeTemp.toLowerCase() : typeTemp,\r\n              mandatory: el.required,\r\n              metaData: el.metadata\r\n            };\r\n          });\r\n        }\r\n      }\r\n    }\r\n    this.editComponentShow(id, type, typeTask, transFormArrForm, transFormArrVar, transFormArrDecision, typeDecision);\r\n  }\r\n\r\n  // OVERRIDE THIS FOR FILTER\r\n  filterForm() {\r\n\r\n  }\r\n\r\n  // OVERRIDE THIS FOR FILTER\r\n  filter() {\r\n\r\n  }\r\n\r\n  sort(column: string): void {\r\n    const sorting = this.sorting;\r\n    const isActiveColumn = sorting.column === column;\r\n    if (!isActiveColumn) {\r\n      sorting.column = column;\r\n      sorting.direction = 'asc';\r\n    } else {\r\n      sorting.direction = sorting.direction === 'asc' ? 'desc' : 'asc';\r\n    }\r\n    this.tableService.patchStateBpmn({sorting}, this.taskDef);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.tableService.setDefaults();\r\n    this.loadingStart = true;\r\n    this.filterForm();\r\n    this.tableService.fetchBpmn(this.taskDef);\r\n    const sb = this.tableService.isLoading$.subscribe((res) => {\r\n      this.isLoading = res\r\n    });\r\n    this.tableService.fetchBpmnInit(this.taskDef);\r\n    // sub specifications\r\n    this.tableService.listSpecInit$.subscribe((res) => {\r\n      this.allSpec = {\r\n        ...this.allSpec,\r\n        ...res\r\n      }\r\n    })\r\n    // sub tasks\r\n    this.tableService.listTasks$.subscribe((res) => {\r\n      this.arrTasks = res;\r\n      if (this.arrTasks.length) {\r\n        this.tableService.fetchAllSpecInit(this.arrTasks);\r\n      }\r\n    }, (error) => {\r\n      this.loadingStart = false;\r\n    })\r\n    // sub all specification\r\n    this.tableService.listSpecAll$.subscribe((res) => {\r\n      this.allSpec = {\r\n        ...this.allSpec,\r\n        ...res\r\n      }\r\n      if (Object.keys(res).length !== 0) {\r\n        this.testEmitter$.next(\"foo\");\r\n        this.loadingStart = false;\r\n      }\r\n    }, (error) => {\r\n      this.loadingStart = false;\r\n    })\r\n    this.tableService.errorMessage$.subscribe((res) => {\r\n      if (typeof res == 'object') {\r\n        if (res.hasOwnProperty('error')) {\r\n          SweetAlertService.swalError(res);\r\n        }\r\n      }\r\n    })\r\n    this.subscriptions.push(sb);\r\n    this.sorting = this.tableService.sorting;\r\n    this.paginator = this.tableService.paginator;\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.subscriptions.forEach((sb) => sb.unsubscribe());\r\n  }\r\n\r\n  getSpecData(typeTask) {\r\n    this.tableService.getSpec('dto', typeTask).subscribe((res: any) => {\r\n      const dataTemp = res.data.map((item) => {\r\n        return {\r\n          title: item.label,\r\n          form: item.name,\r\n          type: 'text',\r\n          mandatory: item.required\r\n        }\r\n      })\r\n      this.arrDto = [...dataTemp]\r\n    });\r\n    this.tableService.getSpec('variable', typeTask).subscribe((res: any) => {\r\n      const dataTemp = res.data.map((item) => {\r\n        return {\r\n          title: item.label,\r\n          form: item.name,\r\n          type: 'text',\r\n          mandatory: item.required\r\n        }\r\n      })\r\n      this.arrVar = [...dataTemp]\r\n    });\r\n  }\r\n\r\n  closeAlert() {\r\n    this.alertShow = false;\r\n    this.alertMessage = '';\r\n  }\r\n\r\n  clearVar() {\r\n    this.alertShow = false;\r\n    this.alertType = 'primary';\r\n    this.alertMessage = '';\r\n  }\r\n\r\n  handleImported(event) {\r\n    const {\r\n      type,\r\n      error,\r\n      warnings\r\n    } = event;\r\n\r\n    if (type === 'success') {\r\n      console.log(`Rendered diagram (%s warnings)`, warnings.length);\r\n      this.isCollapsed = true;\r\n    }\r\n\r\n    if (type === 'error') {\r\n      console.error('Failed to render diagram', error);\r\n    }\r\n\r\n    if (type === 'click') {\r\n      this.taskDef = warnings;\r\n      this.tableService.fetchBpmn(this.taskDef)\r\n    }\r\n\r\n    this.importError = error;\r\n  }\r\n}\r\n","import {Component, Inject, OnDestroy, OnInit} from '@angular/core';\r\nimport {Subscription} from 'rxjs';\r\nimport {FormBuilder, FormGroup} from '@angular/forms';\r\nimport {IFilterView, IPaginatorView, ISortView, PaginatorState, SortState} from \"../crud-table\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {SweetAlertService} from \"../shared/services/common/sweet-alert.service\";\r\n\r\n@Component({\r\n  selector: 'app-base-bpmn-todo-pages',\r\n  template: ``,\r\n  styles: [],\r\n})\r\n\r\nexport class BaseCrudBpmnTodoPagesComponent implements OnInit, OnDestroy, ISortView, IFilterView, IPaginatorView {\r\n  // USE if not using alurkerja BE (Remove depedency OnInit AlurKerja BE)\r\n  isLoading: boolean;\r\n  public subscriptions: Subscription[] = [];\r\n  filterGroup: FormGroup;\r\n  sorting: SortState;\r\n  paginator: PaginatorState;\r\n  arrFormGroups: any[] = [];\r\n  protected http: HttpClient;\r\n  loadingStart = false;\r\n  taskDef = '';\r\n  itemsContent = [];\r\n\r\n  constructor(\r\n    @Inject('') protected tableService: any,\r\n    protected fb: FormBuilder\r\n  ) {}\r\n\r\n  paginate(paginator: PaginatorState) {\r\n    this.tableService.patchStateBpmn({ paginator }, this.taskDef);\r\n  }\r\n\r\n  create() {\r\n    this.edit(undefined, 'edit', 'init');\r\n  }\r\n\r\n  edit(id: number, type: string = 'edit', typeTask = null) {\r\n\r\n  }\r\n\r\n  // OVERRIDE THIS FOR FILTER\r\n  filterForm() {\r\n\r\n  }\r\n\r\n  // OVERRIDE THIS FOR FILTER\r\n  filter() {\r\n\r\n  }\r\n\r\n  sort(column: string): void {\r\n    const sorting = this.sorting;\r\n    const isActiveColumn = sorting.column === column;\r\n    if (!isActiveColumn) {\r\n      sorting.column = column;\r\n      sorting.direction = 'asc';\r\n    } else {\r\n      sorting.direction = sorting.direction === 'asc' ? 'desc' : 'asc';\r\n    }\r\n    this.tableService.patchStateBpmn({ sorting }, this.taskDef);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.tableService.setDefaults();\r\n    this.loadingStart = true;\r\n    this.filterForm();\r\n    this.tableService.fetchBpmnGeneral(this.taskDef);\r\n    const sb = this.tableService.isLoading$.subscribe((res) => {\r\n      this.isLoading = res\r\n    });\r\n    this.tableService.items$.subscribe((res) => {\r\n      if (res.length) {\r\n        this.itemsContent = [...res];\r\n        this.loadingStart = false;\r\n        this.toDoSomething();\r\n      }\r\n    }, (error) => {\r\n      this.loadingStart = false;\r\n    })\r\n    this.tableService.errorMessage$.subscribe((res) => {\r\n      if (typeof res == 'object') {\r\n        if (res.hasOwnProperty('error')) {\r\n          SweetAlertService.swalError(res);\r\n        }\r\n      }\r\n    })\r\n    this.subscriptions.push(sb);\r\n    this.sorting = this.tableService.sorting;\r\n    this.paginator = this.tableService.paginator;\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.subscriptions.forEach((sb) => sb.unsubscribe());\r\n  }\r\n\r\n  toDoSomething() {\r\n  //  Override this\r\n  }\r\n\r\n}\r\n","import {Component, Inject, Input, OnDestroy, OnInit} from \"@angular/core\";\r\nimport {FormArray, FormBuilder, FormControl, FormGroup, Validators} from \"@angular/forms\";\r\nimport {NgbActiveModal} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {first} from \"rxjs/operators\";\r\nimport {BehaviorSubject, of, Subscription} from \"rxjs\";\r\nimport {LIST_TYPE_INPUT} from \"./model-crud/crud.model\";\r\nimport {DatePipe} from '@angular/common';\r\nimport {SweetAlertService} from \"../shared/services/common/sweet-alert.service\";\r\n\r\n@Component({\r\n  selector: 'app-base-bpmn-edit-pages',\r\n  templateUrl: './edit-crud/edit-bpmn-modal.component.html',\r\n  styleUrls: ['./edit-crud/edit-crud-modal.component.scss'],\r\n})\r\n\r\nexport class BaseBpmnEditPagesComponent implements OnInit, OnDestroy {\r\n  @Input() id: number;\r\n  @Input() type: string;\r\n  @Input() show: boolean;\r\n  @Input() title: string;\r\n  @Input() typeDecision: string;\r\n  @Input() arrform: string;\r\n  @Input() arrvar: string;\r\n  @Input() arrDecision: any[];\r\n  @Input() arrParamsGroup: {\r\n    title: string,\r\n    form: string,\r\n    type?: string,\r\n    url?: string,\r\n    metaData?: any,\r\n    placeHolder?: string,\r\n    name?: string,\r\n    readonly?: boolean,\r\n    mandatory?: boolean\r\n  }[];\r\n  @Input() arrFormGroup: {\r\n    title: string,\r\n    form: string,\r\n    type?: string,\r\n    url?: string,\r\n    metaData?: any,\r\n    placeHolder?: string,\r\n    name?: string,\r\n    readonly?: boolean,\r\n    mandatory?: boolean\r\n  }[];\r\n  @Input() formCustom: any;\r\n\r\n  //for form\r\n  isLoading$;\r\n  formObj: any;\r\n  formGroup: FormGroup;\r\n  subscriptions: Subscription[] = [];\r\n  htmlInputType = LIST_TYPE_INPUT;\r\n  EMPTY_OBJ: {} = {};\r\n  listInput = [\r\n    'text',\r\n    'number',\r\n    'email',\r\n    'list'\r\n  ];\r\n\r\n  //diagram\r\n  diagramUrl = ``;\r\n  diagramUrlDetail = '';\r\n  isCollapsed = false;\r\n  importError?: Error;\r\n\r\n  //handle form variable and dto\r\n  arrNameOfForm: any[] = [];\r\n  arrNameOfVar: any[] = [];\r\n\r\n  // hide logs when create new bpmn\r\n  applyHide = false;\r\n\r\n  syncFoo = \"foo\";\r\n  testEmitter$ = new BehaviorSubject<any>(this.syncFoo);\r\n\r\n  arrCheckboxList = [];\r\n\r\n  //handle form with type date\r\n  arrTempDate = [];\r\n  datePipe = new DatePipe('en-US');\r\n\r\n  constructor(\r\n    @Inject('') protected service: any,\r\n    protected fb: FormBuilder,\r\n    public modal: NgbActiveModal\r\n  ) {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.isLoading$ = this.service.isLoading$;\r\n    this.loadFormData();\r\n  }\r\n\r\n  loadFormData() {\r\n    if (!this.id) {\r\n      this.formObj = this.EMPTY_OBJ;\r\n      this.loadForm();\r\n    } else {\r\n      const sb = this.service.getItemBpmnById(this.id).pipe(\r\n        first()\r\n      ).subscribe((res: any) => {\r\n        // SweetAlertService.swalSuccess(res);\r\n        const logs = res.data.logs;\r\n        let model = res.data.object;\r\n        let typeTask = '';\r\n        let nameTask = '';\r\n        for (var key in model.tasks) {\r\n          if (model.tasks.hasOwnProperty(key)) {\r\n            typeTask = key\r\n            nameTask = model.tasks[key]\r\n          }\r\n        }\r\n        model = {\r\n          ...model,\r\n          typeTask,\r\n          nameTask\r\n        }\r\n        //init form object\r\n        this.formObj = {\r\n          logs,\r\n          model\r\n        }\r\n        this.loadForm();\r\n      }, (error) => {\r\n        SweetAlertService.swalError(error)\r\n        this.modal.dismiss('error');\r\n      });\r\n      this.subscriptions.push(sb);\r\n    }\r\n  }\r\n\r\n  // OVERRIDE THIS (ADD CUSTOM FORMCONTROLL AND VALIDATION)\r\n  loadForm() {\r\n    if (this.id) {\r\n      this.diagramUrl = `${this.diagramUrlDetail}/${this.id}/xml`;\r\n    } else {\r\n      this.applyHide = true;\r\n    }\r\n    this.initArrVarDto();\r\n    this.initFormGroup();\r\n  }\r\n\r\n  initArrVarDto() {\r\n    this.arrNameOfForm = this.arrFormGroup.map((el) => {\r\n      if (el.type == 'checkbox') {\r\n        this.arrCheckboxList.push(el.form)\r\n      }\r\n      if (el.type == 'date') {\r\n        this.arrTempDate.push(el.form)\r\n      }\r\n      return el.form;\r\n    });\r\n    this.arrNameOfVar = this.arrParamsGroup.map((el) => {\r\n      return el.form;\r\n    });\r\n    for (const key of this.arrNameOfForm) {\r\n      this.EMPTY_OBJ[key] = key;\r\n    }\r\n    for (const key of this.arrNameOfVar) {\r\n      this.EMPTY_OBJ[key] = key;\r\n    }\r\n  }\r\n\r\n  initFormGroup() {\r\n    const objFormGroup = new Object();\r\n    // generate obj FORM database\r\n    this.arrNameOfForm.forEach((el) => {\r\n      //check validate\r\n      const findItem = this.arrFormGroup.find((item, index) => {\r\n        if (item.form === el) {\r\n          return true;\r\n        } else {\r\n          return false;\r\n        }\r\n      });\r\n      let validate = [];\r\n      if (findItem) {\r\n        if (findItem.mandatory) {\r\n          validate.push(Validators.required);\r\n        }\r\n      }\r\n      if (this.arrCheckboxList.includes(el)) {\r\n      } else {\r\n        objFormGroup[el] = [this.id ? this.formObj.model[el] : '', Validators.compose(validate)];\r\n      }\r\n    });\r\n    // generate obj Variables Camunda\r\n    this.arrNameOfVar.forEach((el) => {\r\n      //check validate\r\n      const findItem = this.arrParamsGroup.find((item, index) => {\r\n        if (item.form === el) {\r\n          return true;\r\n        } else {\r\n          return false;\r\n        }\r\n      });\r\n      let validate = [];\r\n      if (findItem) {\r\n        if (findItem.mandatory) {\r\n          validate.push(Validators.required);\r\n        }\r\n      }\r\n      objFormGroup[el] = ['', Validators.compose(validate)];\r\n    });\r\n    // generate decision Camunda\r\n    if (this.arrDecision.length) {\r\n      objFormGroup['decision'] = ['', Validators.compose([Validators.required])];\r\n    }\r\n\r\n    // angular formGroup\r\n    this.formGroup = this.fb.group(objFormGroup);\r\n\r\n    //for checkbox\r\n    this.arrNameOfForm.forEach((el) => {\r\n      if (this.arrCheckboxList.includes(el)) {\r\n        this.formGroup.addControl(el, this.fb.array([]));\r\n      }\r\n    })\r\n  }\r\n\r\n  save() {\r\n    this.prepareFormData();\r\n    if (this.formObj.model.id) {\r\n      this.edit();\r\n    } else {\r\n      this.create();\r\n    }\r\n  }\r\n\r\n  edit() {\r\n    const sbUpdate = this.service\r\n      .updateBpmn(this.formObj.model.id, this.prepareFormEdit(), this.type, this.prepareParamsEdit())\r\n      .pipe()\r\n      .subscribe((res: any) => {\r\n        SweetAlertService.swalSuccess(res);\r\n        this.modal.dismiss('success');\r\n        return true\r\n      }, (error) => {\r\n        SweetAlertService.swalError(error);\r\n        this.modal.dismiss('error');\r\n      });\r\n    this.subscriptions.push(sbUpdate);\r\n  }\r\n\r\n  create() {\r\n    const sbCreate = this.service.apply(this.prepareFormData(), this.prepareParamsData())\r\n      .pipe()\r\n      .subscribe((res: any) => {\r\n        SweetAlertService.swalSuccess(res);\r\n        this.modal.dismiss('success');\r\n        return true\r\n      }, (error) => {\r\n        SweetAlertService.swalError(error);\r\n        this.modal.dismiss('error');\r\n      });\r\n    this.subscriptions.push(sbCreate);\r\n  }\r\n\r\n  editCustom() {\r\n    // Use this if wanna add something after post\r\n    const sbUpdate = this.service.updateBpmn(this.formObj.model.id, this.prepareFormEdit(), this.type, this.prepareParamsEdit())\r\n      .pipe()\r\n      .subscribe((res: any) => {\r\n        this.custom(res);\r\n      }, (error) => {\r\n        SweetAlertService.swalError(error);\r\n        this.modal.dismiss('error');\r\n      });\r\n    this.subscriptions.push(sbUpdate);\r\n  }\r\n\r\n  createCustom(obj, arr, customUrl = null) {\r\n    // Use this if wanna add something after post\r\n    const sbCreate = this.service.apply(obj, arr, customUrl)\r\n      .pipe()\r\n      .subscribe((res: any) => {\r\n        this.custom(res);\r\n      }, (error) => {\r\n        SweetAlertService.swalError(error);\r\n        this.modal.dismiss('error');\r\n      });\r\n    this.subscriptions.push(sbCreate);\r\n  }\r\n\r\n  custom(res) {\r\n  //  override this\r\n  }\r\n\r\n  prepareFormData() {\r\n    //    OVERRIDE THIS\r\n    const formData = this.formGroup.value;\r\n    let obj = new Object();\r\n    this.arrNameOfForm.forEach((el) => {\r\n      if (formData[el]) {\r\n        if (this.arrTempDate.includes(el)) {\r\n          obj[el] = this.datePipe.transform(formData[el], 'yyyy-MM-dd')\r\n        } else {\r\n          obj[el] = formData[el];\r\n        }\r\n      }\r\n    });\r\n    return obj;\r\n  }\r\n\r\n  prepareFormEdit() {\r\n    //    OVERRIDE THIS\r\n    this.prepareFormData();\r\n  }\r\n\r\n  prepareParamsData() {\r\n    //    OVERRIDE THIS\r\n    const formParams = this.formGroup.value;\r\n    const arrTemp = [];\r\n    this.arrNameOfVar.forEach((el) => {\r\n      if (formParams[el]) {\r\n        arrTemp.push({\r\n          name: el,\r\n          value: formParams[el]\r\n        });\r\n      }\r\n    });\r\n    // //decision hard code dlu\r\n    if (this.arrDecision.length) {\r\n      arrTemp.push({\r\n        name: 'decision',\r\n        value: formParams['decision']\r\n      });\r\n    } else {\r\n      if (this.typeDecision == 'radio') {\r\n        arrTemp.push({\r\n          name: 'decision',\r\n          value: 'ok'\r\n        });\r\n      }\r\n    }\r\n    //if have arrNameOfVar\r\n    if (this.arrNameOfForm.length) {\r\n      arrTemp.push({\r\n        name: 'withVariable',\r\n        value: '1'\r\n      });\r\n    }\r\n    return arrTemp;\r\n  }\r\n\r\n  prepareParamsEdit() {\r\n    //    OVERRIDE THIS\r\n    this.prepareParamsData();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.subscriptions.forEach(sb => sb.unsubscribe());\r\n  }\r\n\r\n  onCheckChange(event, name) {\r\n    const formArray: FormArray = this.formGroup.get(name) as FormArray;\r\n    if (event.target.checked) {\r\n      formArray.push(new FormControl(event.target.value));\r\n    } else {\r\n      let i: number = 0;\r\n      formArray.controls.forEach((ctrl: FormControl) => {\r\n        if (ctrl.value == event.target.value) {\r\n          formArray.removeAt(i);\r\n          return;\r\n        }\r\n        i++;\r\n      });\r\n    }\r\n  }\r\n\r\n  // For Bpmn Viewer Handler\r\n  handleImported(event) {\r\n    const {\r\n      type,\r\n      error,\r\n      warnings\r\n    } = event;\r\n\r\n    if (type === 'success') {\r\n      console.log(`Rendered diagram (%s warnings)`, warnings.length);\r\n    }\r\n\r\n    if (type === 'error') {\r\n      console.error('Failed to render diagram', error);\r\n    }\r\n    this.importError = error;\r\n  }\r\n\r\n  // get validator\r\n  getValidatorVal() {\r\n    // OVERRIDE THIS IF WANT TO CUSTOM\r\n    //check form\r\n    let bol = false;\r\n    this.arrFormGroup.forEach((el) => {\r\n      if (el.mandatory) {\r\n        if (!this.formGroup.controls[el.form].value) {\r\n          bol = true;\r\n        }\r\n      }\r\n    })\r\n    this.arrParamsGroup.forEach((el) => {\r\n      if (el.mandatory) {\r\n        if (!this.formGroup.controls[el.form].value) {\r\n          bol = true;\r\n        }\r\n      }\r\n    })\r\n    if (this.arrDecision.length) {\r\n      if (!this.formGroup.controls['decision'].value) {\r\n        bol = true;\r\n      }\r\n    }\r\n    return bol\r\n  }\r\n\r\n  // helpers for View\r\n  isControlValid(controlName: string): boolean {\r\n    const control = this.formGroup.controls[controlName];\r\n    return control.valid && (control.dirty || control.touched);\r\n  }\r\n\r\n  isControlInvalid(controlName: string): boolean {\r\n    const control = this.formGroup.controls[controlName];\r\n    return control.invalid && (control.dirty || control.touched);\r\n  }\r\n\r\n  controlHasError(validation, controlName): boolean {\r\n    const control = this.formGroup.controls[controlName];\r\n    return control.hasError(validation) && (control.dirty || control.touched);\r\n  }\r\n\r\n  isControlTouched(controlName): boolean {\r\n    const control = this.formGroup.controls[controlName];\r\n    return control.dirty || control.touched;\r\n  }\r\n}\r\n","export const environment = {\r\n  production: false,\r\n  appVersion: 'v726demo1',\r\n  USERDATA_KEY: 'authf649fc9a5f55',\r\n  isMockEnabled: true,\r\n  apiUrl: 'https://be.dev.alurkerja.com'\r\n};\r\n","import {Injectable} from '@angular/core';\r\nimport {HttpBackend, HttpClient} from '@angular/common/http';\r\nimport {Observable, throwError} from \"rxjs\";\r\nimport {catchError, map} from \"rxjs/operators\";\r\nimport {environment} from \"../../../crud-table/models/environment.model\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class Select2Service {\r\n  API_URL = `${environment.apiUrl}`;\r\n  myHeader = null;\r\n\r\n  constructor(private http: HttpClient, private handler: HttpBackend) {}\r\n\r\n  getCustomList(val, id, name, header = null) {\r\n    return this.http.get<any>(`${this.API_URL}${val}`, {\r\n      headers: header\r\n    }).pipe(\r\n      map(res => {\r\n        const data = [];\r\n        for (let i = 0; i < res.data.content.length; i++) {\r\n          data.push({\r\n            id: res.data.content[i][id],\r\n            name: res.data.content[i][name]\r\n          });\r\n        }\r\n        return data;\r\n      }),\r\n      catchError(err => {\r\n        return throwError(err); })\r\n    );\r\n  }\r\n\r\n}\r\n","import {Component, EventEmitter, Inject, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {FormControl, FormGroup} from '@angular/forms';\r\nimport {BehaviorSubject, ReplaySubject, Subject} from 'rxjs';\r\nimport {BaseSelect2Model} from '../../model/base-select2.model';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {MatSelect} from '@angular/material/select';\r\nimport {Select2Service} from '../../services/common/select2.service';\r\n\r\n@Component({\r\n  selector: 'app-base-select2',\r\n  templateUrl: './base-select2.component.html',\r\n  styleUrls: ['./base-select2.component.scss']\r\n})\r\nexport class BaseSelect2Component implements OnInit {\r\n  @Input() formGroupParent: FormGroup;\r\n  @Input() formName: string;\r\n  @Input() labelName: string;\r\n  @Input() selectedVal: string;\r\n  @Input() mandatory: boolean;\r\n  @Input() disabledBol: boolean;\r\n  @Output() valueChange = new EventEmitter();\r\n  @Output() getDataChange = new EventEmitter();\r\n\r\n  loading$ = new BehaviorSubject<boolean>(false);\r\n  testEmitter$ = new BehaviorSubject<any>(false);\r\n\r\n\r\n  filterCtrl: FormControl = new FormControl();\r\n\r\n  filtered: ReplaySubject<BaseSelect2Model[]> = new ReplaySubject<\r\n    BaseSelect2Model[]\r\n    >(1);\r\n\r\n  private data: BaseSelect2Model[] = [];\r\n\r\n  @ViewChild(\"singleSelect\", { static: true }) singleSelect: MatSelect;\r\n\r\n  protected _onDestroy = new Subject<void>();\r\n\r\n  constructor(\r\n    protected commonService: Select2Service,\r\n    @Inject(\"\") public label: string\r\n  ) {}\r\n\r\n  get labelTitleName() {\r\n    if (this.labelName) {\r\n      return this.labelName;\r\n    } else {\r\n      return this.label;\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.listData();\r\n    this.filterCtrl.valueChanges\r\n      .pipe(takeUntil(this._onDestroy))\r\n      .subscribe(() => {\r\n        this.filter();\r\n      });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._onDestroy.next();\r\n    this._onDestroy.complete();\r\n  }\r\n\r\n  private filter() {\r\n    if (!this.data) {\r\n      return;\r\n    }\r\n    // get the search keyword\r\n    let search = this.filterCtrl.value;\r\n    if (!search) {\r\n      this.filtered.next(this.data.slice());\r\n      return;\r\n    } else {\r\n      search = search.toLowerCase();\r\n    }\r\n\r\n    // filtering\r\n    this.filtered.next(\r\n      this.data.filter((partner) => {\r\n        if (partner.name) {\r\n          return partner.name.toLowerCase().indexOf(search) > -1;\r\n        }\r\n        return false\r\n      })\r\n    );\r\n  }\r\n\r\n  private async listData() {\r\n    this.loading$.next(true);\r\n\r\n    try {\r\n        this.data = await this.getData();\r\n    } catch (e) {\r\n        console.log(e, 'error');\r\n    }\r\n    this.getDataChange.emit(this.data);\r\n    await this.filtered.next(this.data);\r\n    await this.loading$.next(false);\r\n    await this.testEmitter$.next(true);\r\n  }\r\n\r\n  protected async getData(): Promise<any> {\r\n    return this.data;\r\n  }\r\n\r\n  compareObjects(o1: any, o2: any): boolean {\r\n    return o1 == o2;\r\n  }\r\n\r\n  emitSomething(event) {\r\n    this.valueChange.emit(event)\r\n  }\r\n\r\n  // helpers for View\r\n  isControlValid(controlName: string): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.valid && (control.dirty || control.touched);\r\n  }\r\n\r\n  isControlInvalid(controlName: string): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.invalid && (control.dirty || control.touched);\r\n  }\r\n\r\n  controlHasError(validation, controlName): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.hasError(validation) && (control.dirty || control.touched);\r\n  }\r\n\r\n  isControlTouched(controlName): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.dirty || control.touched;\r\n  }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {BaseSelect2Component} from './base-select2.component';\r\nimport {Select2Service} from '../../services/common/select2.service';\r\n\r\n@Component({\r\n  selector: 'app-common-select2',\r\n  templateUrl: './base-select2.component.html',\r\n  styleUrls: ['./base-select2.component.scss'],\r\n})\r\nexport class CommonSelect2Component extends BaseSelect2Component {\r\n  @Input() link: string;\r\n  @Input() selectId: string;\r\n  @Input() selectName: string;\r\n  @Input() option: string;\r\n\r\n  constructor(protected commonService: Select2Service) {\r\n    super(commonService, '');\r\n  }\r\n\r\n  protected async getData(): Promise<any> {\r\n    return this.commonService.getCustomList(this.link, this.selectId, this.selectName).toPromise();\r\n  }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {Observable, throwError} from \"rxjs\";\r\n\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class FileUploadService {\r\n  constructor(private http: HttpClient) {}\r\n\r\n  upload(file, link, header = null):Observable<any> {\r\n    const formData = new FormData();\r\n    formData.append(\"file\", file);\r\n    return this.http.post<any>(`${link}`, formData, {\r\n      headers: header\r\n    })\r\n  }\r\n}\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {FormGroup} from \"@angular/forms\";\r\n\r\n@Component({\r\n  selector: 'app-date-select',\r\n  templateUrl: './date-select.component.html',\r\n  styleUrls: ['./date-select.component.scss']\r\n})\r\n\r\nexport class DateSelectComponent {\r\n  @Input() formGroupParent: FormGroup;\r\n  @Input() formName: string;\r\n  @Input() labelName: string;\r\n  @Input() selectedVal: string;\r\n  @Input() mandatory: boolean;\r\n  @Input() disabledBol: boolean;\r\n  @Input() classCustom: string;\r\n  @Input() classIcon: string;\r\n\r\n  constructor() {\r\n\r\n  }\r\n\r\n  // helpers for View\r\n  isControlValid(controlName: string): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.valid && (control.dirty || control.touched);\r\n  }\r\n\r\n  isControlInvalid(controlName: string): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.invalid && (control.dirty || control.touched);\r\n  }\r\n\r\n  controlHasError(validation, controlName): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.hasError(validation) && (control.dirty || control.touched);\r\n  }\r\n\r\n  isControlTouched(controlName): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.dirty || control.touched;\r\n  }\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from \"@angular/core\";\r\nimport {FormArray, FormControl, FormGroup} from \"@angular/forms\";\r\nimport {BehaviorSubject} from \"rxjs\";\r\n\r\n@Component({\r\n  selector: 'app-base-edit-bpmn',\r\n  templateUrl: './base-edit-bpmn.component.html',\r\n  styleUrls: ['./base-edit-bpmn.component.scss']\r\n})\r\nexport class BaseEditBpmnComponent implements OnInit {\r\n  @Input() formGroupParent: FormGroup;\r\n  @Input() formName: string;\r\n  @Input() listInput: any;\r\n  @Input() arrGroup: any;\r\n  @Input() show: boolean;\r\n  @Output() valueChange = new EventEmitter();\r\n  @Output() getDataChange = new EventEmitter();\r\n\r\n  testEmitter$ = new BehaviorSubject<any>(false);\r\n  constructor() {\r\n\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n  }\r\n\r\n  //Checkbox\r\n  onCheckChangeNew(event, name) {\r\n    const formArray: FormArray = this.formGroupParent.get(name) as FormArray;\r\n    if(event.target.checked){\r\n      formArray.push(new FormControl(event.target.value));\r\n    }\r\n    /* unselected */\r\n    else{\r\n      // find the unselected element\r\n      let i: number = 0;\r\n\r\n      formArray.controls.forEach((ctrl: FormControl) => {\r\n        if(ctrl.value == event.target.value) {\r\n          formArray.removeAt(i);\r\n          return;\r\n        }\r\n        i++;\r\n      });\r\n    }\r\n  }\r\n\r\n  // helpers for View\r\n  isControlValid(controlName: string): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.valid && (control.dirty || control.touched);\r\n  }\r\n\r\n  isControlInvalid(controlName: string): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.invalid && (control.dirty || control.touched);\r\n  }\r\n\r\n  controlHasError(validation, controlName): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.hasError(validation) && (control.dirty || control.touched);\r\n  }\r\n\r\n  isControlTouched(controlName): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.dirty || control.touched;\r\n  }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\r\nimport {FormGroup} from \"@angular/forms\";\r\n\r\n@Component({\r\n  selector: 'app-base-edit-bpmn-decision',\r\n  templateUrl: './base-edit-bpmn-decision.component.html',\r\n  styleUrls: ['./base-edit-bpmn-decision.component.scss']\r\n})\r\nexport class BaseEditBpmnDecisionComponent {\r\n  @Input() formGroupParent: FormGroup;\r\n  @Input() formName: string;\r\n  @Input() typeDecision: any;\r\n  @Input() arrDecision: any;\r\n  @Output() valueChange = new EventEmitter();\r\n  @Output() getDataChange = new EventEmitter();\r\n\r\n  constructor() {\r\n\r\n  }\r\n}\r\n","import {SignaturePad} from \"angular2-signaturepad\";\r\nimport {Component, ViewChild} from \"@angular/core\";\r\n\r\n@Component({\r\n  selector: 'app-draw-select',\r\n  templateUrl: './draw.component.html',\r\n  styleUrls: []\r\n})\r\n\r\nexport class DrawComponent {\r\n\r\n  @ViewChild(SignaturePad) signaturePad: SignaturePad;\r\n\r\n  signaturePadOptions: Object = { // passed through to szimek/signature_pad constructor\r\n    dotSize: function () {\r\n      return (0.5 + 1.5) / 2;\r\n    },\r\n    minWidth: 0.5,\r\n    maxWidth: 1.5,\r\n    canvasWidth: 500,\r\n    canvasHeight: 300,\r\n    velocityFilterWeight: 0.7,\r\n    backgroundColor: 'rgb(255,255,255)',\r\n    throttle: 0\r\n  };\r\n\r\n  constructor() {\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.signaturePad.set('minWidth', 5);\r\n    this.signaturePad.clear();\r\n  }\r\n\r\n  drawComplete() {\r\n    console.log(this.signaturePad.toDataURL());\r\n  }\r\n\r\n  drawStart() {\r\n    console.log('begin drawing');\r\n  }\r\n\r\n  clear() {\r\n    this.signaturePad.clear();\r\n  }\r\n}\r\n","// Not Yet Tested\r\nimport {Component, Input, OnInit} from \"@angular/core\";\r\nimport {FileUploadService} from \"../../services/common/file-upload.service\";\r\nimport {SweetAlertService} from \"../../services/common/sweet-alert.service\";\r\n\r\n@Component({\r\n  selector: 'app-single-file-upload',\r\n  templateUrl: './single-upload-file.component.html',\r\n  styleUrls: ['./single-upload-file.component.scss']\r\n})\r\nexport class SingleUploadFileComponent implements OnInit {\r\n  @Input() link: string;\r\n  @Input() header: string;\r\n\r\n  loading: boolean = false;\r\n  file: File = null;\r\n\r\n  constructor(private fileUploadService: FileUploadService) { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  onChange(event) {\r\n    this.file = event.target.files[0];\r\n  }\r\n\r\n  onUpload() {\r\n    this.loading = !this.loading;\r\n    this.fileUploadService.upload(this.file, this.link, this.header).subscribe(\r\n      (result: any) => {\r\n          this.loading = false;\r\n      }, (error) => {\r\n        SweetAlertService.swalError(error)\r\n        this.loading = false;\r\n      }\r\n    );\r\n  }\r\n}\r\n","import {\r\n  AfterContentInit,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter, Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output, SimpleChanges,\r\n  ViewChild\r\n} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {from, Observable, Subscription} from \"rxjs\";\r\nimport {map, switchMap} from \"rxjs/operators\";\r\nimport * as BpmnJS from 'bpmn-js/dist/bpmn-viewer.production.min.js';\r\n\r\n@Component({\r\n  selector: 'app-diagram',\r\n  template: `<div #ref class=\"diagram-container\"></div>`,\r\n  styles: [\r\n    `\r\n          .diagram-container {\r\n            height: 100%;\r\n            width: 100%;\r\n          }\r\n        `\r\n  ]\r\n})\r\nexport class DiagramComponent implements AfterContentInit, OnChanges, OnDestroy {\r\n  private bpmnJS: BpmnJS;\r\n  private overlays: any;\r\n  private elementRegis: any;\r\n\r\n  @ViewChild('ref', { static: true }) private el: ElementRef;\r\n  @Output() private importDone: EventEmitter<any> = new EventEmitter();\r\n\r\n  @Input() private url: string;\r\n  @Input() private taskUrl: string;\r\n  @Input() private myHeader: any;\r\n\r\n  constructor(private http: HttpClient) {\r\n\r\n    this.bpmnJS = new BpmnJS();\r\n\r\n    this.bpmnJS.on('import.done', ({ error }) => {\r\n      if (!error) {\r\n        this.bpmnJS.get('canvas').zoom('fit-viewport');\r\n        this.overlays = this.bpmnJS.get('overlays');\r\n        this.elementRegis = this.bpmnJS.get('elementRegistry');\r\n      }\r\n    });\r\n  }\r\n\r\n  ngAfterContentInit(): void {\r\n    this.bpmnJS.attachTo(this.el.nativeElement);\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (changes.url) {\r\n      this.loadUrl(changes.url.currentValue);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.bpmnJS.destroy();\r\n  }\r\n\r\n  /**\r\n   * Load diagram from URL and emit completion event\r\n   */\r\n  loadUrl(url: string): Subscription {\r\n\r\n    return (\r\n      this.http.get(url, {\r\n        headers: this.myHeader,\r\n        responseType: 'text'\r\n      }).pipe(\r\n        switchMap((xml: string) => this.importDiagram(xml)),\r\n        map(result => result.warnings),\r\n      ).subscribe(\r\n        (warnings) => {\r\n          if (this.taskUrl) {\r\n            let shape = this.elementRegis.get(this.taskUrl);\r\n            let overlayHtml = $('<div id=\"' + this.taskUrl + '\" style=\"width: 100px; height: 80px; border-radius: 10px; ' +\r\n              'border-style: solid; border-color: green; cursor: pointer\">' +\r\n              '</div>')\r\n              .css({\r\n                width: shape.width,\r\n                heigth: shape.heigth\r\n              });\r\n\r\n            this.overlays.add(this.taskUrl, {\r\n              position: {\r\n                top: 0,\r\n                left: 0\r\n              },\r\n              html: overlayHtml\r\n            });\r\n          }\r\n\r\n          this.importDone.emit({\r\n            type: 'success',\r\n            warnings\r\n          });\r\n        },\r\n        (err) => {\r\n          this.importDone.emit({\r\n            type: 'error',\r\n            error: err\r\n          });\r\n        }\r\n      )\r\n    );\r\n  }\r\n\r\n  private importDiagram(xml: string): Observable<{warnings: Array<any>}> {\r\n    return from(this.bpmnJS.importXML(xml) as Promise<{warnings: Array<any>}>);\r\n  }\r\n}\r\n","// THIS FOR Single Approval\r\nimport {\r\n  AfterContentInit,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output,\r\n  ViewChild,\r\n  SimpleChanges,\r\n  EventEmitter\r\n} from '@angular/core';\r\n\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {map, switchMap, tap} from 'rxjs/operators';\r\n\r\nimport * as BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';\r\nimport { from, Observable, Subscription } from 'rxjs';\r\nimport {data} from 'jquery';\r\n\r\n@Component({\r\n  selector: 'app-diagram-tes',\r\n  template: `\r\n    <div class=\"row\">\r\n      <div class=\"col-12\" style=\"height: 450px\">\r\n        <div #ref class=\"diagram-container\"></div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div style=\"position: absolute;bottom: 50px;right: 20px;display: grid;grid-gap: 3px;\">\r\n          <button id=\"btnzoomin\" class=\"btn btn-primary btn-icon btn-sm\" (click)=\"zoomIn()\">\r\n            <i class=\"ki ki-plus\"></i>\r\n          </button>\r\n          <button id=\"btnfit\" class=\"btn btn-primary btn-icon btn-sm\" (click)=\"zoomOut()\">\r\n            <i class=\"ki ki-minus\"></i>\r\n          </button>\r\n          <button id=\"btnzoomout\" class=\"btn btn-primary btn-icon btn-sm\" (click)=\"zoomReset()\">\r\n            <i class=\"ki ki-refresh\"></i>\r\n          </button>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  `,\r\n  styles: [\r\n    `\r\n    .diagram-container {\r\n      height: 100%;\r\n      width: 100%;\r\n    }\r\n    `,\r\n    `\r\n    .bac {\r\n        background-color: red;\r\n    }`\r\n  ]\r\n})\r\nexport class DiagramTesComponent implements AfterContentInit, OnChanges, OnDestroy {\r\n  private bpmnJS: BpmnJS;\r\n  private overlays: any;\r\n  private elementRegis: any;\r\n  cnvs = 0;\r\n\r\n  @ViewChild('ref', { static: true }) private el: ElementRef;\r\n  @Output() private importDone: EventEmitter<any> = new EventEmitter();\r\n\r\n  @Input() private url: string;\r\n  @Input() private urlSec: string;\r\n  @Input() private myHeader: any;\r\n  @Input() private showUrlSec: string;\r\n\r\n  constructor(private http: HttpClient) {\r\n\r\n    this.bpmnJS = new BpmnJS();\r\n\r\n    this.bpmnJS.on('import.done', ({ error }) => {\r\n      if (!error) {\r\n        this.bpmnJS.get('canvas').zoom('fit-viewport');\r\n        this.overlays = this.bpmnJS.get('overlays');\r\n        this.elementRegis = this.bpmnJS.get('elementRegistry');\r\n        this.cnvs = this.bpmnJS.get('canvas').zoom('fit-viewport');\r\n      }\r\n    });\r\n  }\r\n\r\n  ngAfterContentInit(): void {\r\n    this.bpmnJS.attachTo(this.el.nativeElement);\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (this.showUrlSec) {\r\n      if (changes.urlSec) {\r\n        this.loadUrlSec(changes.urlSec.currentValue);\r\n      }\r\n    } else {\r\n      if (changes.url) {\r\n        this.loadUrl(changes.url.currentValue);\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.bpmnJS.destroy();\r\n  }\r\n\r\n  zoomIn() {\r\n    if (this.cnvs < 1.5) {\r\n      this.cnvs += 0.1;\r\n    }\r\n    this.bpmnJS.get('canvas').zoom(this.cnvs);\r\n  }\r\n\r\n  zoomOut() {\r\n    if (this.cnvs > 0.3) {\r\n      this.cnvs -= 0.1;\r\n    }\r\n    this.bpmnJS.get('canvas').zoom(this.cnvs);\r\n  }\r\n\r\n  zoomReset() {\r\n    this.cnvs = this.bpmnJS.get('canvas').zoom('fit-viewport');\r\n    this.bpmnJS.get('canvas').zoom(this.cnvs);\r\n  }\r\n\r\n  loadUrlSec(url: string): Subscription {\r\n    const urlXml = `${this.url}/xml`;\r\n    const urlStatic = `${url}`;\r\n\r\n    return (\r\n      this.http.get(urlXml, {\r\n        headers: this.myHeader,\r\n        responseType: 'text'\r\n      }).pipe(\r\n        switchMap((xml: string) => this.importDiagram(xml)),\r\n        map(result => result.warnings),\r\n      ).subscribe(\r\n        async (warnings) => {\r\n          const dataStatic = await this.http.get(urlStatic, {\r\n            headers: this.myHeader,\r\n          }).pipe(\r\n            map((res: any) => {\r\n              return {\r\n                tasks: res.data\r\n              };\r\n            })\r\n          ).toPromise();\r\n          for (const key in dataStatic.tasks) {\r\n            let shape = this.elementRegis.get(dataStatic.tasks[key].id);\r\n            let overlayHtml = $('<div id=\"' + key + '\" style=\"cursor: pointer\"><a class=\"badge badge-primary\">' + dataStatic.tasks[key].instances + '</a></div>')\r\n              .css({\r\n                width: shape.width,\r\n                heigth: shape.heigth\r\n              });\r\n\r\n            this.overlays.add(dataStatic.tasks[key].id, {\r\n              position: {\r\n                top: 0,\r\n                left: 0\r\n              },\r\n              html: overlayHtml\r\n            });\r\n\r\n            overlayHtml.click((e) => {\r\n              this.importDone.emit({\r\n                type: 'click',\r\n                warnings: key\r\n              });\r\n            });\r\n          }\r\n\r\n          this.importDone.emit({\r\n            type: 'success',\r\n            warnings\r\n          });\r\n        },\r\n        (err) => {\r\n          this.importDone.emit({\r\n            type: 'error',\r\n            error: err\r\n          });\r\n        }\r\n      )\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Load diagram from URL and emit completion event\r\n   */\r\n  loadUrl(url: string): Subscription {\r\n    const urlXml = `${url}/xml`;\r\n    const urlStatic = `${url}/statistic`;\r\n    return (\r\n      this.http.get(urlXml, {\r\n        headers: this.myHeader,\r\n        responseType: 'text'\r\n      }).pipe(\r\n        switchMap((xml: string) => this.importDiagram(xml)),\r\n        map(result => result.warnings),\r\n      ).subscribe(\r\n        async (warnings) => {\r\n\r\n          const dataStatic = await this.http.get(urlStatic, {\r\n            headers: this.myHeader,\r\n          }).pipe(\r\n            map((res: any) => {\r\n              return {\r\n                tasks: res.data.tasks\r\n              };\r\n            })\r\n          ).toPromise();\r\n\r\n          for (const key in dataStatic.tasks) {\r\n            let shape = this.elementRegis.get(key);\r\n            let overlayHtml = $('<div id=\"' + key + '\" style=\"cursor: pointer\"><a class=\"badge badge-primary\">' + dataStatic.tasks[key] + '</a></div>')\r\n              .css({\r\n                width: shape.width,\r\n                heigth: shape.heigth\r\n              });\r\n\r\n            this.overlays.add(key, {\r\n              position: {\r\n                top: 0,\r\n                left: 0\r\n              },\r\n              html: overlayHtml\r\n            });\r\n\r\n            overlayHtml.click((e) => {\r\n              this.importDone.emit({\r\n                type: 'click',\r\n                warnings: key\r\n              });\r\n            });\r\n\r\n          }\r\n\r\n          this.importDone.emit({\r\n            type: 'success',\r\n            warnings\r\n          });\r\n        },\r\n        (err) => {\r\n          this.importDone.emit({\r\n            type: 'error',\r\n            error: err\r\n          });\r\n        }\r\n      )\r\n    );\r\n  }\r\n\r\n  private importDiagram(xml: string): Observable<{warnings: Array<any>}> {\r\n    return from(this.bpmnJS.importXML(xml) as Promise<{warnings: Array<any>}>);\r\n  }\r\n}\r\n","// NOT YET TESTED\r\nimport {Component, ElementRef, Input, ViewChild} from \"@angular/core\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {COMMA, ENTER} from \"@angular/cdk/keycodes\";\r\nimport {Observable} from \"rxjs\";\r\nimport {map, startWith} from \"rxjs/operators\";\r\n\r\n@Component({\r\n  selector: 'app-tag-file',\r\n  templateUrl: './tag-file.component.html',\r\n  styleUrls: ['./tag-file.component.scss']\r\n})\r\n\r\nexport class TagFileComponent {\r\n  @Input() formGroupParent: FormGroup;\r\n  @Input() formName: string;\r\n  @Input() formArray: string[];\r\n\r\n  selectable = true;\r\n  removable = true;\r\n  separatorKeysCodes: number[] = [ENTER, COMMA];\r\n  item: string[] = [];\r\n\r\n  @ViewChild('itemInput') fruitInput: ElementRef<HTMLInputElement>;\r\n\r\n  constructor() {\r\n\r\n  }\r\n}\r\n","// THIS FOR Single Approval\r\nimport {\r\n  AfterContentInit,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output,\r\n  ViewChild,\r\n  SimpleChanges,\r\n  EventEmitter\r\n} from '@angular/core';\r\n\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {map, switchMap, tap} from 'rxjs/operators';\r\n\r\nimport * as BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';\r\nimport { from, Observable, Subscription } from 'rxjs';\r\nimport {data} from 'jquery';\r\nimport {SweetAlertService} from \"../../services/common/sweet-alert.service\";\r\n\r\n@Component({\r\n  selector: 'app-diagram-req-doc',\r\n  template: `\r\n    <div class=\"row\">\r\n      <div class=\"col-12\" style=\"height: 450px\">\r\n        <div #ref class=\"diagram-container\"></div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div style=\"position: absolute;bottom: 50px;right: 20px;display: grid;grid-gap: 3px;\">\r\n          <button id=\"btnzoomin\" class=\"btn btn-primary btn-icon btn-sm\" (click)=\"zoomIn()\">\r\n            <i class=\"ki ki-plus\"></i>\r\n          </button>\r\n          <button id=\"btnfit\" class=\"btn btn-primary btn-icon btn-sm\" (click)=\"zoomOut()\">\r\n            <i class=\"ki ki-minus\"></i>\r\n          </button>\r\n          <button id=\"btnzoomout\" class=\"btn btn-primary btn-icon btn-sm\" (click)=\"zoomReset()\">\r\n            <i class=\"ki ki-refresh\"></i>\r\n          </button>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  `,\r\n  styles: [\r\n    `\r\n    .diagram-container {\r\n      height: 100%;\r\n      width: 100%;\r\n    }\r\n    `,\r\n    `\r\n    .bac {\r\n        background-color: red;\r\n    }`\r\n  ]\r\n})\r\nexport class DiagramReqDocComponent implements AfterContentInit, OnChanges, OnDestroy {\r\n  private bpmnJS: BpmnJS;\r\n  private overlays: any;\r\n  private elementRegis: any;\r\n  cnvs = 0;\r\n\r\n  @ViewChild('ref', { static: true }) private el: ElementRef;\r\n  @Output() private importDone: EventEmitter<any> = new EventEmitter();\r\n\r\n  @Input() private url: string;\r\n  @Input() private urlDashboard: string;\r\n  @Input() private myHeader: any;\r\n\r\n  constructor(private http: HttpClient) {\r\n    // single approval custom\r\n    this.bpmnJS = new BpmnJS();\r\n\r\n    this.bpmnJS.on('import.done', ({ error }) => {\r\n      if (!error) {\r\n        this.bpmnJS.get('canvas').zoom('fit-viewport');\r\n        this.overlays = this.bpmnJS.get('overlays');\r\n        this.elementRegis = this.bpmnJS.get('elementRegistry');\r\n        this.cnvs = this.bpmnJS.get('canvas').zoom('fit-viewport');\r\n      }\r\n    });\r\n  }\r\n\r\n  ngAfterContentInit(): void {\r\n    this.bpmnJS.attachTo(this.el.nativeElement);\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (changes.url) {\r\n      this.loadUrl(changes.url.currentValue);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.bpmnJS.destroy();\r\n  }\r\n\r\n  zoomIn() {\r\n    if (this.cnvs < 1.5) {\r\n      this.cnvs += 0.1;\r\n    }\r\n    this.bpmnJS.get('canvas').zoom(this.cnvs);\r\n  }\r\n\r\n  zoomOut() {\r\n    if (this.cnvs > 0.3) {\r\n      this.cnvs -= 0.1;\r\n    }\r\n    this.bpmnJS.get('canvas').zoom(this.cnvs);\r\n  }\r\n\r\n  zoomReset() {\r\n    this.cnvs = this.bpmnJS.get('canvas').zoom('fit-viewport');\r\n    this.bpmnJS.get('canvas').zoom(this.cnvs);\r\n  }\r\n\r\n  /**\r\n   * Load diagram from URL and emit completion event\r\n   */\r\n  loadUrl(url: string): Subscription {\r\n    const urlXml = `${url}`;\r\n    return (\r\n      this.http.get(urlXml, {\r\n        headers: this.myHeader,\r\n        responseType: 'text'\r\n      }).pipe(\r\n        switchMap((xml: string) => this.importDiagram(xml)),\r\n        map(result => result.warnings),\r\n      ).subscribe(\r\n        async (warnings) => {\r\n          this.http.get(this.urlDashboard, {\r\n            headers: this.myHeader\r\n          }).subscribe((res: any) => {\r\n            const dataDash = res.data;\r\n            let obj = new Object();\r\n            obj['Drafting'] = (dataDash.Drafting ?? 0);\r\n            obj['Review'] = (dataDash.reviewSequence ?? 0) + (dataDash.reviewParalel ?? 0);\r\n            obj['Approval'] = (dataDash.headApprovalSequence ?? 0) + (dataDash.headApprovalParalel ?? 0) + (dataDash.groupHeadApprovalSequence ?? 0) +  (dataDash.groupHeadApprovalParalel ?? 0) + (dataDash.chiefApprovalSequence ?? 0) + (dataDash.chiefApprovalParalel ?? 0);\r\n            obj['Acknowledge'] = (dataDash.acknowledgeSequence ?? 0) + (dataDash.acknowledgeParalel ?? 0);\r\n            obj['Revise'] = (dataDash.revise ?? 0);\r\n            obj['reviewReviseDocument'] = (dataDash.reviewReviseParalel ?? 0);\r\n            obj['approved'] = (dataDash['ENDED - approved'] ?? 0);\r\n            obj['rejected'] = (dataDash['ENDED - rejected'] ?? 0);\r\n\r\n            const arrId = ['Drafting', 'Review', 'Approval', 'Acknowledge', 'reviewReviseDocument', 'Revise', 'approved', 'rejected'];\r\n            for (const el of arrId) {\r\n              let shape = this.elementRegis.get(el);\r\n              let overlayHtml = $('<div id=\"' + el + '\" style=\"cursor: pointer\"><a class=\"badge badge-primary\">' + obj[el] + '</a></div>')\r\n                .css({\r\n                  width: shape.width,\r\n                  heigth: shape.heigth\r\n                });\r\n\r\n              this.overlays.add(el, {\r\n                position: {\r\n                  top: 0,\r\n                  left: 0\r\n                },\r\n                html: overlayHtml\r\n              });\r\n\r\n              overlayHtml.click((e) => {\r\n                this.importDone.emit({\r\n                  type: 'click',\r\n                  warnings: el\r\n                });\r\n              });\r\n            }\r\n            this.importDone.emit({\r\n              type: 'success',\r\n              warnings\r\n            });\r\n          }, (err) => {\r\n            this.importDone.emit({\r\n              type: 'error',\r\n              error: err\r\n            });\r\n          })\r\n        },\r\n        (err) => {\r\n          this.importDone.emit({\r\n            type: 'error',\r\n            error: err\r\n          });\r\n        }\r\n      )\r\n    );\r\n  }\r\n\r\n  private importDiagram(xml: string): Observable<{warnings: Array<any>}> {\r\n    return from(this.bpmnJS.importXML(xml) as Promise<{warnings: Array<any>}>);\r\n  }\r\n}\r\n","import {Component, Input, OnInit} from \"@angular/core\";\r\nimport {FormArray, FormGroup} from \"@angular/forms\";\r\n\r\n@Component({\r\n  selector: 'app-date-range-select',\r\n  templateUrl: './date-range-select.component.html',\r\n  styleUrls: ['./date-range-select.component.scss']\r\n})\r\n\r\nexport class DateRangeSelectComponent implements OnInit{\r\n  @Input() formGroupParent: FormGroup;\r\n  @Input() formName: string;\r\n  @Input() formValue: any;\r\n  @Input() index: any;\r\n  @Input() fieldVal: any;\r\n  @Input() labelName: string;\r\n  @Input() selectedVal: string;\r\n  @Input() mandatory: boolean;\r\n  @Input() disabledBol: boolean;\r\n  @Input() classCustom: string;\r\n  @Input() classIcon: string;\r\n  @Input() classCol: string;\r\n  @Input() show: boolean;\r\n  dateBefore: any;\r\n  dateAfter: any;\r\n  arr = ['', ''];\r\n\r\n  constructor() {\r\n\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (this.formValue) {\r\n      const myArray = this.formValue.split(\" / \");\r\n      if (myArray) {\r\n        for (let i = 0; i < myArray.length; i++) {\r\n          if (i == 0) {\r\n            this.dateBefore = myArray[0];\r\n          } else if (i == 1) {\r\n            this.dateAfter = myArray[1];\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  beforeChange(evt) {\r\n    this.dateBefore = evt;\r\n    this.arr[0] = this.dateBefore\r\n    const arrayForm = this.formGroupParent.get(this.formName) as FormArray;\r\n    const formGroupArray = arrayForm.controls[this.index] as FormGroup;\r\n    formGroupArray.controls[this.fieldVal].setValue(this.formatter());\r\n\r\n  }\r\n\r\n  afterChange(evt) {\r\n    this.dateAfter = evt;\r\n    this.arr[1] = this.dateAfter\r\n    const arrayForm = this.formGroupParent.get(this.formName) as FormArray;\r\n    const formGroupArray = arrayForm.controls[this.index] as FormGroup;\r\n    formGroupArray.controls[this.fieldVal].setValue(this.formatter());\r\n  }\r\n\r\n  formatter() {\r\n    return this.arr[0] + ' / ' + this.arr[1]\r\n  }\r\n\r\n  // helpers for View\r\n  isControlValid(controlName: string): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.valid && (control.dirty || control.touched);\r\n  }\r\n\r\n  isControlInvalid(controlName: string): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.invalid && (control.dirty || control.touched);\r\n  }\r\n\r\n  controlHasError(validation, controlName): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.hasError(validation) && (control.dirty || control.touched);\r\n  }\r\n\r\n  isControlTouched(controlName): boolean {\r\n    const control = this.formGroupParent.controls[controlName];\r\n    return control.dirty || control.touched;\r\n  }\r\n}\r\n","// THIS FOR Single Approval\r\nimport {\r\n  AfterContentInit,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output,\r\n  ViewChild,\r\n  SimpleChanges,\r\n  EventEmitter\r\n} from '@angular/core';\r\n\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {map, switchMap, tap} from 'rxjs/operators';\r\n\r\nimport * as BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';\r\nimport { from, Observable, Subscription } from 'rxjs';\r\nimport {data} from 'jquery';\r\nimport {SweetAlertService} from \"../../services/common/sweet-alert.service\";\r\n\r\n@Component({\r\n  selector: 'app-diagram-delegate-doc',\r\n  template: `\r\n    <div class=\"row\">\r\n      <div class=\"col-12\" style=\"height: 450px\">\r\n        <div #ref class=\"diagram-container\"></div>\r\n      </div>\r\n      <div class=\"col-12\">\r\n        <div style=\"position: absolute;bottom: 50px;right: 20px;display: grid;grid-gap: 3px;\">\r\n          <button id=\"btnzoomin\" class=\"btn btn-primary btn-icon btn-sm\" (click)=\"zoomIn()\">\r\n            <i class=\"ki ki-plus\"></i>\r\n          </button>\r\n          <button id=\"btnfit\" class=\"btn btn-primary btn-icon btn-sm\" (click)=\"zoomOut()\">\r\n            <i class=\"ki ki-minus\"></i>\r\n          </button>\r\n          <button id=\"btnzoomout\" class=\"btn btn-primary btn-icon btn-sm\" (click)=\"zoomReset()\">\r\n            <i class=\"ki ki-refresh\"></i>\r\n          </button>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  `,\r\n  styles: [\r\n    `\r\n    .diagram-container {\r\n      height: 100%;\r\n      width: 100%;\r\n    }\r\n    `,\r\n    `\r\n    .bac {\r\n        background-color: red;\r\n    }`\r\n  ]\r\n})\r\nexport class DiagramDelegateAppComponent implements AfterContentInit, OnChanges, OnDestroy {\r\n  private bpmnJS: BpmnJS;\r\n  private overlays: any;\r\n  private elementRegis: any;\r\n  cnvs = 0;\r\n\r\n  @ViewChild('ref', { static: true }) private el: ElementRef;\r\n  @Output() private importDone: EventEmitter<any> = new EventEmitter();\r\n\r\n  @Input() private url: string;\r\n  @Input() private urlDashboard: string;\r\n  @Input() private myHeader: any;\r\n\r\n  constructor(private http: HttpClient) {\r\n    // single approval custom\r\n    this.bpmnJS = new BpmnJS();\r\n\r\n    this.bpmnJS.on('import.done', ({ error }) => {\r\n      if (!error) {\r\n        this.bpmnJS.get('canvas').zoom('fit-viewport');\r\n        this.overlays = this.bpmnJS.get('overlays');\r\n        this.elementRegis = this.bpmnJS.get('elementRegistry');\r\n        this.cnvs = this.bpmnJS.get('canvas').zoom('fit-viewport');\r\n      }\r\n    });\r\n  }\r\n\r\n  ngAfterContentInit(): void {\r\n    this.bpmnJS.attachTo(this.el.nativeElement);\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (changes.url) {\r\n      this.loadUrl(changes.url.currentValue);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.bpmnJS.destroy();\r\n  }\r\n\r\n  zoomIn() {\r\n    if (this.cnvs < 1.5) {\r\n      this.cnvs += 0.1;\r\n    }\r\n    this.bpmnJS.get('canvas').zoom(this.cnvs);\r\n  }\r\n\r\n  zoomOut() {\r\n    if (this.cnvs > 0.3) {\r\n      this.cnvs -= 0.1;\r\n    }\r\n    this.bpmnJS.get('canvas').zoom(this.cnvs);\r\n  }\r\n\r\n  zoomReset() {\r\n    this.cnvs = this.bpmnJS.get('canvas').zoom('fit-viewport');\r\n    this.bpmnJS.get('canvas').zoom(this.cnvs);\r\n  }\r\n\r\n  /**\r\n   * Load diagram from URL and emit completion event\r\n   */\r\n  loadUrl(url: string): Subscription {\r\n    const urlXml = `${url}`;\r\n    return (\r\n      this.http.get(urlXml, {\r\n        headers: this.myHeader,\r\n        responseType: 'text'\r\n      }).pipe(\r\n        switchMap((xml: string) => this.importDiagram(xml)),\r\n        map(result => result.warnings),\r\n      ).subscribe(\r\n        async (warnings) => {\r\n          this.http.get(this.urlDashboard, {\r\n            headers: this.myHeader\r\n          }).subscribe((res: any) => {\r\n            const objData = res.data.object\r\n            const dataDash = objData.tasks;\r\n            let obj = new Object();\r\n            obj['Drafting'] = (dataDash.Drafting ? 1 : 0);\r\n            obj['Review'] = (dataDash.reviewSequence ? 1 : 0) + (dataDash.reviewParalel ? 1 : 0);\r\n            obj['Approval'] = (dataDash.headApprovalSequence ? 1 : 0) + (dataDash.headApprovalParalel ? 1 : 0) + (dataDash.groupHeadApprovalSequence ? 1 : 0) +  (dataDash.groupHeadApprovalParalel ? 1 : 0) + (dataDash.chiefApprovalSequence ? 1 : 0) + (dataDash.chiefApprovalParalel ? 1 : 0);\r\n            obj['Acknowledge'] = (dataDash.acknowledgeSequence ? 1 : 0) + (dataDash.acknowledgeParalel ? 1 : 0);\r\n            obj['Revise'] = (dataDash.revise ? 1 : 0);\r\n            obj['reviewReviseDocument'] = (dataDash.reviewReviseParalel ? 1 : 0);\r\n            obj['approved'] = (dataDash['ENDED - approved'] ? 1 : 0);\r\n            obj['rejected'] = (dataDash['ENDED - rejected'] ? 1 : 0);\r\n\r\n            const arrId = ['Drafting', 'Review', 'Approval', 'Acknowledge', 'reviewReviseDocument', 'Revise', 'approved', 'rejected'];\r\n            for (const el of arrId) {\r\n              if (obj[el]) {\r\n                let shape = this.elementRegis.get(el);\r\n                let overlayHtml = $('<div id=\"' + el + '\" style=\"background-color: #1dc5bd; opacity: 0.6; border-radius: 8px;\">&nbsp;</div>')\r\n                  .css({\r\n                    width: shape.width,\r\n                    height: shape.height\r\n                  });\r\n\r\n                this.overlays.add(el, {\r\n                  position: {\r\n                    top: 0,\r\n                    left: 0\r\n                  },\r\n                  html: overlayHtml\r\n                });\r\n\r\n                overlayHtml.click((e) => {\r\n                  this.importDone.emit({\r\n                    type: 'click',\r\n                    warnings: el\r\n                  });\r\n                });\r\n              }\r\n            }\r\n            this.importDone.emit({\r\n              type: 'success',\r\n              warnings\r\n            });\r\n          }, (err) => {\r\n            this.importDone.emit({\r\n              type: 'error',\r\n              error: err\r\n            });\r\n          })\r\n        },\r\n        (err) => {\r\n          this.importDone.emit({\r\n            type: 'error',\r\n            error: err\r\n          });\r\n        }\r\n      )\r\n    );\r\n  }\r\n\r\n  private importDiagram(xml: string): Observable<{warnings: Array<any>}> {\r\n    return from(this.bpmnJS.importXML(xml) as Promise<{warnings: Array<any>}>);\r\n  }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {BaseCrudPagesComponent} from \"./base-crud-pages.component\";\r\nimport {BaseDeletePagesComponent} from \"./base-delete-pages.component\";\r\nimport {BaseEditPagesComponent} from \"./base-edit-pages.component\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {InlineSVGModule} from \"ng-inline-svg\";\r\nimport {HttpClientModule} from \"@angular/common/http\";\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {BaseCrudBpmnPagesComponent} from \"./base-crud-bpmn-pages.component\";\r\nimport {BaseBpmnEditPagesComponent} from \"./base-bpmn-edit-pages.component\";\r\nimport {CommonSelect2Component} from \"../shared/components/base-select-2/common-select2.component\";\r\nimport {BaseSelect2Component} from \"../shared/components/base-select-2/base-select2.component\";\r\nimport {MatInputModule} from \"@angular/material/input\";\r\nimport {NgxMatSelectSearchModule} from \"ngx-mat-select-search\";\r\nimport {MatCheckboxModule} from \"@angular/material/checkbox\";\r\nimport {MatSelectModule} from \"@angular/material/select\";\r\nimport {MatCardModule} from \"@angular/material/card\";\r\nimport {MatRadioModule} from \"@angular/material/radio\";\r\nimport {MatFormFieldModule} from \"@angular/material/form-field\";\r\nimport {DateSelectComponent} from \"../shared/components/date/date-select.component\";\r\nimport {BaseEditBpmnComponent} from \"../shared/components/base-edit-bpmn/base-edit-bpmn.component\";\r\nimport {BaseEditBpmnDecisionComponent} from \"../shared/components/base-edit-bpmn-decision/base-edit-bpmn-decision.component\";\r\nimport {DrawComponent} from \"../shared/components/draw/draw.component\";\r\nimport {SignaturePadModule} from \"angular2-signaturepad\";\r\nimport {SingleUploadFileComponent} from \"../shared/components/single-upload-file/single-upload-file.component\";\r\nimport {DiagramComponent} from \"../shared/components/diagram/diagram.component\";\r\nimport {DiagramTesComponent} from \"../shared/components/diagram/diagram-tes.component\";\r\nimport {TagFileComponent} from \"../shared/components/tag/tag-file.component\";\r\nimport {BaseCrudBpmnTodoPagesComponent} from \"./base-crud-bpmn-todo-pages.component\";\r\nimport {DiagramReqDocComponent} from \"../shared/components/diagram/diagram-req-doc.component\";\r\nimport {DateRangeSelectComponent} from \"../shared/components/date-range/date-range-select.component\";\r\nimport {DiagramDelegateAppComponent} from \"../shared/components/diagram/diagram-delegate-app.component\";\r\n\r\n@NgModule({\r\n  declarations: [\r\n    BaseCrudPagesComponent,\r\n    BaseDeletePagesComponent,\r\n    BaseEditPagesComponent,\r\n    DiagramComponent,\r\n    BaseCrudBpmnPagesComponent,\r\n    BaseBpmnEditPagesComponent,\r\n    DiagramTesComponent,\r\n    BaseSelect2Component,\r\n    CommonSelect2Component,\r\n    DateSelectComponent,\r\n    BaseEditBpmnComponent,\r\n    BaseEditBpmnDecisionComponent,\r\n    DrawComponent,\r\n    SingleUploadFileComponent,\r\n    TagFileComponent,\r\n    BaseCrudBpmnTodoPagesComponent,\r\n    DiagramReqDocComponent,\r\n    DateRangeSelectComponent,\r\n    DiagramDelegateAppComponent\r\n  ],\r\n  imports: [\r\n    ReactiveFormsModule,\r\n    CommonModule,\r\n    HttpClientModule,\r\n    InlineSVGModule,\r\n    NgbModule,\r\n    FormsModule,\r\n    MatInputModule,\r\n    MatCheckboxModule,\r\n    MatSelectModule,\r\n    MatCardModule,\r\n    MatRadioModule,\r\n    MatFormFieldModule,\r\n    NgxMatSelectSearchModule,\r\n    SignaturePadModule,\r\n  ],\r\n  exports: [\r\n    BaseCrudPagesComponent,\r\n    BaseDeletePagesComponent,\r\n    BaseEditPagesComponent,\r\n    BaseCrudBpmnPagesComponent,\r\n    BaseBpmnEditPagesComponent,\r\n    BaseSelect2Component,\r\n    CommonSelect2Component,\r\n    DateSelectComponent,\r\n    BaseEditBpmnComponent,\r\n    BaseEditBpmnDecisionComponent,\r\n    DrawComponent,\r\n    SingleUploadFileComponent,\r\n    DiagramComponent,\r\n    DiagramTesComponent,\r\n    TagFileComponent,\r\n    BaseCrudBpmnTodoPagesComponent,\r\n    DiagramReqDocComponent,\r\n    DateRangeSelectComponent,\r\n    DiagramDelegateAppComponent\r\n  ]\r\n})\r\n\r\nexport class CrudModule { }\r\n","export type SortDirection = 'asc' | 'desc' | '';\r\n\r\nexport interface ISortState {\r\n  column: string;\r\n  direction: SortDirection;\r\n}\r\n\r\nexport class SortState implements ISortState {\r\n  column = 'createdDate'; // Id by default\r\n  direction: SortDirection = 'desc'; // asc by default;\r\n}\r\n\r\nexport interface ISortView {\r\n  sorting: SortState;\r\n  ngOnInit(): void;\r\n  sort(column: string): void;\r\n}\r\n","export const PageSizes = [3, 5, 10, 15, 50, 100];\r\n\r\nexport interface IPaginatorState {\r\n  page: number;\r\n  pageSize: number;\r\n  total: number;\r\n  recalculatePaginator(total: number): IPaginatorState;\r\n}\r\n\r\nexport class PaginatorState implements IPaginatorState {\r\n  page = 1;\r\n  pageSize = PageSizes[2];\r\n  total = 0;\r\n  pageSizes: number[] = [];\r\n\r\n  recalculatePaginator(total: number): PaginatorState {\r\n    this.total = total;\r\n    return this;\r\n  }\r\n}\r\n\r\nexport interface IPaginatorView {\r\n  paginator: PaginatorState;\r\n  ngOnInit(): void;\r\n  paginate(paginator: PaginatorState): void;\r\n}\r\n","export interface IGroupingState {\r\n  selectedRowIds: Set<number>;\r\n  itemIds: number[];\r\n  checkAreAllRowsSelected(): boolean;\r\n  selectRow(id: number): IGroupingState;\r\n  // tslint:disable-next-line:variable-name\r\n  clearRows(_itemIds: number[]): IGroupingState;\r\n  isRowSelected(id: number): boolean;\r\n  selectAllRows(): IGroupingState;\r\n  getSelectedRows(): number[];\r\n  getSelectedRowsCount(): number;\r\n}\r\n\r\nexport class GroupingState implements IGroupingState {\r\n  selectedRowIds: Set<number> = new Set<number>();\r\n  itemIds: number[] = [];\r\n\r\n\r\n  checkAreAllRowsSelected(): boolean {\r\n    if (this.itemIds.length === 0) {\r\n      return false;\r\n    }\r\n\r\n    return this.selectedRowIds.size === this.itemIds.length;\r\n  }\r\n\r\n  selectRow(id: number): GroupingState {\r\n    if (this.selectedRowIds.has(id)) {\r\n      this.selectedRowIds.delete(id);\r\n    } else {\r\n      this.selectedRowIds.add(id);\r\n    }\r\n    return this;\r\n  }\r\n\r\n  // tslint:disable-next-line:variable-name\r\n  clearRows(_itemIds: number[]): GroupingState {\r\n    this.itemIds = _itemIds;\r\n    this.selectedRowIds = new Set<number>();\r\n    return this;\r\n  }\r\n\r\n  isRowSelected(id: number): boolean {\r\n    return this.selectedRowIds.has(id);\r\n  }\r\n\r\n  selectAllRows(): GroupingState {\r\n    const areAllSelected = this.itemIds.length === this.selectedRowIds.size;\r\n    if (areAllSelected) {\r\n      this.selectedRowIds = new Set<number>();\r\n    } else {\r\n      this.selectedRowIds = new Set<number>();\r\n      this.itemIds.forEach(id => this.selectedRowIds.add(id));\r\n    }\r\n    return this;\r\n  }\r\n\r\n  getSelectedRows(): number[] {\r\n    return Array.from(this.selectedRowIds);\r\n  }\r\n\r\n  getSelectedRowsCount(): number {\r\n    return this.selectedRowIds.size;\r\n  }\r\n}\r\n\r\nexport interface IGroupingView  {\r\n  grouping: GroupingState;\r\n  ngOnInit(): void;\r\n}\r\n","// tslint:disable:variable-name\r\nimport {HttpClient, HttpParams} from '@angular/common/http';\r\nimport {BehaviorSubject, forkJoin, Observable, of, Subscription} from 'rxjs';\r\nimport {catchError, finalize, map, tap} from 'rxjs/operators';\r\nimport { PaginatorState } from '../models/paginator.model';\r\nimport { ITableState, TableResponseModel } from '../models/table.model';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { SortState } from '../models/sort.model';\r\nimport { GroupingState } from '../models/grouping.model';\r\nimport {environment} from \"../models/environment.model\";\r\nimport {SweetAlertService} from \"../../shared/services/common/sweet-alert.service\";\r\n\r\nconst DEFAULT_STATE: ITableState = {\r\n  filter: {},\r\n  paginator: new PaginatorState(),\r\n  sorting: new SortState(),\r\n  searchTerm: '',\r\n  grouping: new GroupingState(),\r\n  entityId: undefined\r\n};\r\n\r\nexport abstract class TableService<T> {\r\n  // Private fields\r\n  private _items$ = new BehaviorSubject<T[]>([]);\r\n  private _isLoading$ = new BehaviorSubject<boolean>(false);\r\n  private _listTasks$ = new BehaviorSubject<any>([]);\r\n  private _listSpecInit$ = new BehaviorSubject<any>({});\r\n  private _listSpecAll$ = new BehaviorSubject<any>({});\r\n  private _isFirstLoading$ = new BehaviorSubject<boolean>(true);\r\n  private _tableState$ = new BehaviorSubject<ITableState>(DEFAULT_STATE);\r\n  private _errorMessage = new BehaviorSubject<string>('');\r\n  private _subscriptions: Subscription[] = [];\r\n\r\n  // Getters\r\n  get items$() {\r\n    return this._items$.asObservable();\r\n  }\r\n  get isLoading$() {\r\n    return this._isLoading$.asObservable();\r\n  }\r\n  get listTasks$() {\r\n    return this._listTasks$.asObservable();\r\n  }\r\n  get listSpecInit$() {\r\n    return this._listSpecInit$.asObservable();\r\n  }\r\n  get listSpecAll$() {\r\n    return this._listSpecAll$.asObservable();\r\n  }\r\n  get isFirstLoading$() {\r\n    return this._isFirstLoading$.asObservable();\r\n  }\r\n  get errorMessage$() {\r\n    return this._errorMessage.asObservable();\r\n  }\r\n  get subscriptions() {\r\n    return this._subscriptions;\r\n  }\r\n  // State getters\r\n  get paginator() {\r\n    return this._tableState$.value.paginator;\r\n  }\r\n  get filter() {\r\n    return this._tableState$.value.filter;\r\n  }\r\n  get sorting() {\r\n    return this._tableState$.value.sorting;\r\n  }\r\n  get searchTerm() {\r\n    return this._tableState$.value.searchTerm;\r\n  }\r\n  get grouping() {\r\n    return this._tableState$.value.grouping;\r\n  }\r\n\r\n  protected http: HttpClient;\r\n  // API URL has to be overrided\r\n  API_URL = `${environment.apiUrl}/endpoint`;\r\n  myHeader = null;\r\n  constructor(http: HttpClient) {\r\n    this.http = http;\r\n  }\r\n\r\n  // CRUD Service OVER HERE\r\n  create(item: any): Observable<BaseModel> {\r\n    this._isLoading$.next(true);\r\n    this._errorMessage.next('');\r\n    return this.http.post<BaseModel>(this.API_URL, item, {\r\n      headers: this.myHeader,\r\n    }).pipe(\r\n      finalize(() => this._isLoading$.next(false))\r\n    );\r\n  }\r\n\r\n  getAll(tableState: ITableState, sortDefault = null): Observable<any> {\r\n    const url = this.API_URL;\r\n    this._errorMessage.next('');\r\n    const page = tableState.paginator.page - 1;\r\n    let params = new HttpParams()\r\n        .set('page', page.toString())\r\n        .set('limit', tableState.paginator.pageSize.toString())\r\n    if (sortDefault) {\r\n      params = params.set('sort', sortDefault);\r\n    } else {\r\n      params = params.set('sort', tableState.sorting.column);\r\n    }\r\n    // params = params.set('search', '1');\r\n    for (const key in tableState.filter) {\r\n\r\n      if (tableState.filter.hasOwnProperty(key)) {\r\n        params = params.set(key, tableState.filter[key]);\r\n      }\r\n    }\r\n    if (tableState.sorting.direction === 'asc') {\r\n      params = params.set('asc', '1');\r\n    }else {\r\n      params = params.set('asc', '0');\r\n    }\r\n    return this.http.get<any>(url, {\r\n      headers: this.myHeader,\r\n      params\r\n    }).pipe(\r\n        catchError(err => {\r\n          SweetAlertService.swalError(err)\r\n          this._errorMessage.next(err);\r\n          return of({ items: [], total: 0 });\r\n        })\r\n    );\r\n  }\r\n\r\n  getItemById(id: number): Observable<BaseModel> {\r\n    this._isLoading$.next(true);\r\n    this._errorMessage.next('');\r\n    const url = `${this.API_URL}/${id}`;\r\n    return this.http.get<BaseModel>(url, {\r\n      headers: this.myHeader,\r\n    }).pipe(\r\n      finalize(() => this._isLoading$.next(false))\r\n    );\r\n  }\r\n\r\n  update(id, item: any): Observable<any> {\r\n    const url = `${this.API_URL}/${id}`;\r\n    this._isLoading$.next(true);\r\n    this._errorMessage.next('');\r\n    return this.http.post(url, item, {\r\n      headers: this.myHeader,\r\n    }).pipe(\r\n      finalize(() => this._isLoading$.next(false))\r\n    );\r\n  }\r\n\r\n  delete(id: any): Observable<any> {\r\n    this._isLoading$.next(true);\r\n    this._errorMessage.next('');\r\n    const url = `${this.API_URL}/${id}`;\r\n    return this.http.delete(url, {\r\n      headers: this.myHeader,\r\n    }).pipe(\r\n      finalize(() => this._isLoading$.next(false))\r\n    );\r\n  }\r\n\r\n  public fetch(sortDefault = null) {\r\n    this._isLoading$.next(true);\r\n    this._errorMessage.next('');\r\n    const request = this.getAll(this._tableState$.value, sortDefault)\r\n      .pipe(\r\n        tap((res: any) => {\r\n          const itemsTemp = res.data.content.map((item) => {\r\n            return item;\r\n          });\r\n          this._items$.next(itemsTemp);\r\n          this.patchStateWithoutFetch({\r\n            paginator: this._tableState$.value.paginator.recalculatePaginator(\r\n              res.data.totalElements\r\n            ),\r\n          });\r\n        }),\r\n        catchError((err) => {\r\n          this._errorMessage.next(err);\r\n          return of({\r\n            items: [],\r\n            total: 0\r\n          });\r\n        }),\r\n        finalize(() => {\r\n          this._isLoading$.next(false);\r\n          const itemIds = this._items$.value.map((el: T) => {\r\n            const item = (el as unknown) as BaseModel;\r\n            return item.id;\r\n          });\r\n          this.patchStateWithoutFetch({\r\n            grouping: this._tableState$.value.grouping.clearRows(itemIds),\r\n          });\r\n        })\r\n      )\r\n      .subscribe();\r\n    this._subscriptions.push(request);\r\n  }\r\n\r\n  public setDefaults() {\r\n    this.patchStateWithoutFetch({ filter: {} });\r\n    this.patchStateWithoutFetch({ sorting: new SortState() });\r\n    this.patchStateWithoutFetch({ grouping: new GroupingState() });\r\n    this.patchStateWithoutFetch({ searchTerm: '' });\r\n    this.patchStateWithoutFetch({\r\n      paginator: new PaginatorState()\r\n    });\r\n    this._isFirstLoading$.next(true);\r\n    this._isLoading$.next(true);\r\n    this._tableState$.next(DEFAULT_STATE);\r\n    this._errorMessage.next('');\r\n  }\r\n\r\n  public patchState(patch: Partial<ITableState>) {\r\n    this.patchStateWithoutFetch(patch);\r\n    this.fetch();\r\n  }\r\n\r\n  public patchStateWithoutFetch(patch: Partial<ITableState>) {\r\n    const newState = Object.assign(this._tableState$.value, patch);\r\n    this._tableState$.next(newState);\r\n  }\r\n\r\n  // BPMN SERVICE OVER HERE\r\n  // BPMN SERVICE OVER HERE\r\n  apply(item: any, paramSet = [], customUrl = null): Observable<any> {\r\n    this._isLoading$.next(true);\r\n    this._errorMessage.next('');\r\n    let params = new HttpParams();\r\n    paramSet.forEach((el) => {\r\n      params = params.set(el.name, el.value)\r\n    })\r\n    const url = customUrl ? customUrl : this.API_URL\r\n    return this.http.post(url, item, {\r\n      headers: this.myHeader,\r\n      params\r\n    }).pipe(\r\n      finalize(() => this._isLoading$.next(false))\r\n    );\r\n  }\r\n\r\n  getItemBpmnById(id: number, customUrl = null): Observable<BaseModel> {\r\n    this._isLoading$.next(true);\r\n    this._errorMessage.next('');\r\n    const url = customUrl ? customUrl : this.API_URL + `/${id}`;\r\n    return this.http.get<BaseModel>(url, {\r\n      headers: this.myHeader,\r\n    }).pipe(\r\n      finalize(() => this._isLoading$.next(false))\r\n    );\r\n  }\r\n\r\n  public fetchBpmnInit() {\r\n    this._isLoading$.next(true);\r\n    const stats = this.getStatistic();\r\n    const specs = this.getSpecInit();\r\n    forkJoin([stats, specs]).subscribe(results => {\r\n      let stat = results[0];\r\n      let spec = results[1];\r\n      let arrTasks = [];\r\n      for (const key in stat.data.tasks) {\r\n        arrTasks.push(key)\r\n      }\r\n      this._listTasks$.next(arrTasks);\r\n      this._listSpecInit$.next({\r\n        init: spec.data\r\n      });\r\n      this._isLoading$.next(false);\r\n    }, (error) => {\r\n      SweetAlertService.swalError(error)\r\n    });\r\n  }\r\n\r\n  public fetchAllSpecInit(arr) {\r\n    this._isLoading$.next(true);\r\n    let test = []\r\n    arr.forEach((el) => {\r\n      test.push(\r\n        this.getSpecDynamic(el)\r\n      )\r\n    })\r\n    forkJoin(test).subscribe((results: any) => {\r\n      let arrTemp = new Object()\r\n      for (let i=0; i<arr.length; i++) {\r\n        arrTemp[arr[i]] = results[i].data\r\n      }\r\n      this._listSpecAll$.next(arrTemp);\r\n      this._isLoading$.next(false);\r\n    }, (error) => {\r\n      SweetAlertService.swalError(error)\r\n    });\r\n  }\r\n\r\n  public fetchBpmn(def = '', sortDefault = null) {\r\n    this._isLoading$.next(true);\r\n    this._errorMessage.next('');\r\n    const request = this.getAllBpmn(this._tableState$.value, def, sortDefault)\r\n      .pipe(\r\n        tap((res: any) => {\r\n          const itemsTemp = res.data.content.map((item) => {\r\n            let typeTask = '';\r\n            let nameTask = '';\r\n            for (var key in item.tasks) {\r\n              if (item.tasks.hasOwnProperty(key)) {\r\n                typeTask = key\r\n                nameTask = item.tasks[key]\r\n              }\r\n            }\r\n            let obj = {\r\n              ...item,\r\n              typeTask: typeTask,\r\n              nameTask: nameTask\r\n            }\r\n            return obj;\r\n          });\r\n          this._items$.next(itemsTemp);\r\n          this.patchStateWithoutFetch({\r\n            paginator: this._tableState$.value.paginator.recalculatePaginator(\r\n              res.data.totalElements\r\n            ),\r\n          });\r\n        }),\r\n        catchError((err) => {\r\n          this._errorMessage.next(err);\r\n          return of({\r\n            items: [],\r\n            total: 0\r\n          });\r\n        }),\r\n        finalize(() => {\r\n          this._isLoading$.next(false);\r\n          const itemIds = this._items$.value.map((el: T) => {\r\n            const item = (el as unknown) as BaseModel;\r\n            return item.id;\r\n          });\r\n          this.patchStateWithoutFetch({\r\n            grouping: this._tableState$.value.grouping.clearRows(itemIds),\r\n          });\r\n        })\r\n      )\r\n      .subscribe();\r\n    this._subscriptions.push(request);\r\n  }\r\n\r\n  public fetchBpmnGeneral(def = '', sortDefault = null) {\r\n    this._isLoading$.next(true);\r\n    this._errorMessage.next('');\r\n    const request = this.getAllBpmn(this._tableState$.value, def, sortDefault)\r\n      .pipe(\r\n        tap((res: any) => {\r\n          this._items$.next(res.data.content);\r\n          this.patchStateWithoutFetch({\r\n            paginator: this._tableState$.value.paginator.recalculatePaginator(\r\n              res.data.totalElements\r\n            ),\r\n          });\r\n        }),\r\n        catchError((err) => {\r\n          this._errorMessage.next(err);\r\n          return of({\r\n            items: [],\r\n            total: 0\r\n          });\r\n        }),\r\n        finalize(() => {\r\n          this._isLoading$.next(false);\r\n          const itemIds = this._items$.value.map((el: T) => {\r\n            const item = (el as unknown) as BaseModel;\r\n            return item.id;\r\n          });\r\n          this.patchStateWithoutFetch({\r\n            grouping: this._tableState$.value.grouping.clearRows(itemIds),\r\n          });\r\n        })\r\n      )\r\n      .subscribe();\r\n    this._subscriptions.push(request);\r\n  }\r\n\r\n  public patchStateBpmn(patch: Partial<ITableState>, def = '') {\r\n    this.patchStateWithoutFetch(patch);\r\n    this.fetchBpmn(def);\r\n  }\r\n\r\n  updateBpmn(id, item: any, type: string, paramSet = []): Observable<any> {\r\n    const url = `${this.API_URL}/${type}/${id}/submit`;\r\n    this._isLoading$.next(true);\r\n    this._errorMessage.next('');\r\n    let params = new HttpParams();\r\n    paramSet.forEach((el) => {\r\n      params = params.set(el.name, el.value)\r\n    })\r\n    return this.http.post(url, item, {\r\n      headers: this.myHeader,\r\n      params\r\n    }).pipe(\r\n      finalize(() => this._isLoading$.next(false))\r\n    );\r\n  }\r\n\r\n  getAllBpmn(tableState: ITableState, def = '', sortDefault = null): Observable<any> {\r\n    const url = this.API_URL;\r\n    this._errorMessage.next('');\r\n    const page = tableState.paginator.page - 1;\r\n    let params = new HttpParams()\r\n      .set('page', page.toString())\r\n      .set('limit', tableState.paginator.pageSize.toString())\r\n      .set('taskDefinitionKey', def)\r\n\r\n    // params = params.set('search', '1');\r\n    for (const key in tableState.filter) {\r\n      if (tableState.filter.hasOwnProperty(key)) {\r\n        params = params.set(key, tableState.filter[key]);\r\n      }\r\n    }\r\n    if (sortDefault) {\r\n      params = params.set('sort', sortDefault);\r\n    } else {\r\n      params = params.set('sort', tableState.sorting.column);\r\n    }\r\n    if (tableState.sorting.direction === 'asc') {\r\n      params = params.set('asc', '1');\r\n    }else {\r\n      params = params.set('asc', '0');\r\n    }\r\n    return this.http.get<any>(url, {\r\n      headers: this.myHeader,\r\n      params\r\n    }).pipe(\r\n      catchError(err => {\r\n        // SweetAlertService.swalError(err)\r\n        this._errorMessage.next(err);\r\n        return of({ items: [], total: 0 });\r\n      })\r\n    );\r\n  }\r\n\r\n  getSpecInit() {\r\n    const url = this.API_URL + '/spec';\r\n    return this.http.get<any>(url, {\r\n      headers: this.myHeader,\r\n    })\r\n  }\r\n\r\n  getSpecDynamic(str: string) {\r\n    const url = this.API_URL + `/${str}/spec`;\r\n    return this.http.get<any>(url, {\r\n      headers: this.myHeader,\r\n    })\r\n  }\r\n\r\n  getStatistic() {\r\n    const url = this.API_URL + '/statistic';\r\n    return this.http.get<any>(url, {\r\n      headers: this.myHeader,\r\n    });\r\n  }\r\n\r\n  getSpec(type: string, task: string): Observable<any> {\r\n    this._isLoading$.next(true);\r\n    this._errorMessage.next('');\r\n    const url = `${this.API_URL}/${task}/spec/${type}`;\r\n    return this.http.get<any>(url, {\r\n      headers: this.myHeader,\r\n    }).pipe(\r\n      finalize(() => this._isLoading$.next(false))\r\n    );\r\n  }\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TableService } from './table.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class TableExtendedService extends TableService<any> {\r\n  constructor(@Inject(HttpClient) http) {\r\n    super(http);\r\n  }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { PageSizes, PaginatorState } from '../../models/paginator.model';\r\n\r\n@Component({\r\n  selector: 'app-paginator',\r\n  templateUrl: './paginator.component.html',\r\n  styleUrls: ['./paginator.component.scss']\r\n})\r\nexport class PaginatorComponent implements OnInit {\r\n  @Input() paginator: PaginatorState;\r\n  @Input() isLoading;\r\n  @Output() paginate: EventEmitter<PaginatorState> = new EventEmitter();\r\n  pageSizes: number[] = PageSizes;\r\n  constructor() {}\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n\r\n  pageChange(num: number) {\r\n    this.paginator.page = num;\r\n    this.paginate.emit(this.paginator);\r\n  }\r\n\r\n  sizeChange() {\r\n    this.paginator.pageSize = +this.paginator.pageSize;\r\n    this.paginator.page = 1;\r\n    this.paginate.emit(this.paginator);\r\n  }\r\n}\r\n","// Fork of https://github.com/ng-bootstrap/ng-bootstrap/blob/master/src/pagination/pagination-config.ts\r\nimport { Injectable } from '@angular/core';\r\nimport { PageSizes } from '../../../models/paginator.model';\r\n\r\n/**\r\n * A configuration service for the [`NgPagination`](#/components/paginator/api#NgPagination) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the paginations used in the application.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgPaginationConfig {\r\n  disabled = false;\r\n  boundaryLinks = false;\r\n  directionLinks = true;\r\n  ellipses = true;\r\n  maxSize = 0;\r\n  pageSize = PageSizes[2];\r\n  rotate = false;\r\n  size: 'sm' | 'lg';\r\n}\r\n","// tslint:disable:max-line-length component-class-suffix directive-selector directive-class-suffix component-selector no-host-metadata-property object-literal-key-quotes prefer-const\r\n// fork of https://github.com/ng-bootstrap/ng-bootstrap/blob/master/src/pagination/pagination.ts\r\nimport {\r\n  Component,\r\n  ContentChild,\r\n  Directive,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  OnChanges,\r\n  ChangeDetectionStrategy,\r\n  SimpleChanges,\r\n  TemplateRef\r\n} from '@angular/core';\r\nimport { NgPaginationConfig } from './ng-pagination.config';\r\n\r\nfunction getValueInRange(value: number, max: number, min = 0): number {\r\n  return Math.max(Math.min(value, max), min);\r\n}\r\n\r\nfunction isNumber(value: any): value is number {\r\n  return !isNaN(toInteger(value));\r\n}\r\n\r\nfunction toInteger(value: any): number {\r\n  return parseInt(`${value}`, 10);\r\n}\r\n\r\n/**\r\n * A context for the\r\n * * `NgPaginationFirst`\r\n * * `NgPaginationPrevious`\r\n * * `NgPaginationNext`\r\n * * `NgPaginationLast`\r\n * * `NgPaginationEllipsis`\r\n *\r\n * link templates in case you want to override one.\r\n *\r\n * @since 4.1.0\r\n */\r\nexport interface NgPaginationLinkContext {\r\n  /**\r\n   * The currently selected page number\r\n   */\r\n  currentPage: number;\r\n\r\n  /**\r\n   * If `true`, the current link is disabled\r\n   */\r\n  disabled: boolean;\r\n}\r\n\r\n/**\r\n * A context for the `NgPaginationNumber` link template in case you want to override one.\r\n *\r\n * Extends `NgPaginationLinkContext`.\r\n *\r\n * @since 4.1.0\r\n */\r\nexport interface NgPaginationNumberContext extends NgPaginationLinkContext {\r\n  /**\r\n   * The page number, displayed by the current page link.\r\n   */\r\n  $implicit: number;\r\n}\r\n\r\n/**\r\n * A directive to match the 'ellipsis' link template\r\n *\r\n * @since 4.1.0\r\n */\r\n@Directive({ selector: 'ng-template[ngPaginationEllipsis]' })\r\nexport class NgPaginationEllipsis {\r\n  constructor(public templateRef: TemplateRef<NgPaginationLinkContext>) { }\r\n}\r\n\r\n/**\r\n * A directive to match the 'first' link template\r\n *\r\n * @since 4.1.0\r\n */\r\n@Directive({ selector: 'ng-template[ngPaginationFirst]' })\r\nexport class NgPaginationFirst {\r\n  constructor(public templateRef: TemplateRef<NgPaginationLinkContext>) { }\r\n}\r\n\r\n/**\r\n * A directive to match the 'last' link template\r\n *\r\n * @since 4.1.0\r\n */\r\n@Directive({ selector: 'ng-template[ngPaginationLast]' })\r\nexport class NgPaginationLast {\r\n  constructor(public templateRef: TemplateRef<NgPaginationLinkContext>) { }\r\n}\r\n\r\n/**\r\n * A directive to match the 'next' link template\r\n *\r\n * @since 4.1.0\r\n */\r\n@Directive({ selector: 'ng-template[ngPaginationNext]' })\r\nexport class NgPaginationNext {\r\n  constructor(public templateRef: TemplateRef<NgPaginationLinkContext>) { }\r\n}\r\n\r\n/**\r\n * A directive to match the page 'number' link template\r\n *\r\n * @since 4.1.0\r\n */\r\n@Directive({ selector: 'ng-template[ngPaginationNumber]' })\r\nexport class NgPaginationNumber {\r\n  constructor(public templateRef: TemplateRef<NgPaginationNumberContext>) { }\r\n}\r\n\r\n/**\r\n * A directive to match the 'previous' link template\r\n *\r\n * @since 4.1.0\r\n */\r\n@Directive({ selector: 'ng-template[ngPaginationPrevious]' })\r\nexport class NgPaginationPrevious {\r\n  constructor(public templateRef: TemplateRef<NgPaginationLinkContext>) { }\r\n}\r\n\r\n/**\r\n * A component that displays page numbers and allows to customize them in several ways.\r\n */\r\n@Component({\r\n  selector: 'ng-pagination',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: { 'role': 'navigation' },\r\n  templateUrl: './ng-pagination.component.html',\r\n\r\n})\r\nexport class NgPagination implements OnChanges {\r\n  pageCount = 0;\r\n  pages: number[] = [];\r\n\r\n  @ContentChild(NgPaginationEllipsis, { static: false }) tplEllipsis: NgPaginationEllipsis;\r\n  @ContentChild(NgPaginationFirst, { static: false }) tplFirst: NgPaginationFirst;\r\n  @ContentChild(NgPaginationLast, { static: false }) tplLast: NgPaginationLast;\r\n  @ContentChild(NgPaginationNext, { static: false }) tplNext: NgPaginationNext;\r\n  @ContentChild(NgPaginationNumber, { static: false }) tplNumber: NgPaginationNumber;\r\n  @ContentChild(NgPaginationPrevious, { static: false }) tplPrevious: NgPaginationPrevious;\r\n\r\n  /**\r\n   * If `true`, pagination links will be disabled.\r\n   */\r\n  @Input() disabled: boolean;\r\n\r\n  /**\r\n   * If `true`, the \"First\" and \"Last\" page links are shown.\r\n   */\r\n  @Input() boundaryLinks: boolean;\r\n\r\n  /**\r\n   * If `true`, the \"Next\" and \"Previous\" page links are shown.\r\n   */\r\n  @Input() directionLinks: boolean;\r\n\r\n  /**\r\n   * If `true`, the ellipsis symbols and first/last page numbers will be shown when `maxSize` > number of pages.\r\n   */\r\n  @Input() ellipses: boolean;\r\n\r\n  /**\r\n   * Whether to rotate pages when `maxSize` > number of pages.\r\n   *\r\n   * The current page always stays in the middle if `true`.\r\n   */\r\n  @Input() rotate: boolean;\r\n\r\n  /**\r\n   *  The number of items in your paginated collection.\r\n   *\r\n   *  Note, that this is not the number of pages. Page numbers are calculated dynamically based on\r\n   *  `collectionSize` and `pageSize`. Ex. if you have 100 items in your collection and displaying 20 items per page,\r\n   *  you'll end up with 5 pages.\r\n   */\r\n  @Input() collectionSize: number;\r\n\r\n  /**\r\n   *  The maximum number of pages to display.\r\n   */\r\n  @Input() maxSize: number;\r\n\r\n  /**\r\n   *  The current page.\r\n   *\r\n   *  Page numbers start with `1`.\r\n   */\r\n  @Input() page = 1;\r\n\r\n  /**\r\n   *  The number of items per page.\r\n   */\r\n  @Input() pageSize: number;\r\n\r\n  /**\r\n   *  An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\r\n   *\r\n   *  Event payload is the number of the newly selected page.\r\n   *\r\n   *  Page numbers start with `1`.\r\n   */\r\n  @Output() pageChange = new EventEmitter<number>(true);\r\n\r\n  /**\r\n   * The pagination display size.\r\n   *\r\n   * Bootstrap currently supports small and large sizes.\r\n   */\r\n  @Input() size: 'sm' | 'lg';\r\n\r\n  constructor(config: NgPaginationConfig) {\r\n    this.disabled = config.disabled;\r\n    this.boundaryLinks = config.boundaryLinks;\r\n    this.directionLinks = config.directionLinks;\r\n    this.ellipses = config.ellipses;\r\n    this.maxSize = config.maxSize;\r\n    this.pageSize = config.pageSize;\r\n    this.rotate = config.rotate;\r\n    this.size = config.size;\r\n  }\r\n\r\n  hasPrevious(): boolean { return this.page > 1; }\r\n\r\n  hasNext(): boolean { return this.page < this.pageCount; }\r\n\r\n  nextDisabled(): boolean { return !this.hasNext() || this.disabled; }\r\n\r\n  previousDisabled(): boolean { return !this.hasPrevious() || this.disabled; }\r\n\r\n  selectPage(pageNumber: number): void { this._updatePages(pageNumber); }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void { this._updatePages(this.page); }\r\n\r\n  isEllipsis(pageNumber): boolean { return pageNumber === -1; }\r\n\r\n  /**\r\n   * Appends ellipses and first/last page number to the displayed pages\r\n   */\r\n  private _applyEllipses(start: number, end: number) {\r\n    if (this.ellipses) {\r\n      if (start > 0) {\r\n        // The first page will always be included. If the displayed range\r\n        // starts after the third page, then add ellipsis. But if the range\r\n        // starts on the third page, then add the second page instead of\r\n        // an ellipsis, because the ellipsis would only hide a single page.\r\n        if (start > 2) {\r\n          this.pages.unshift(-1);\r\n        } else if (start === 2) {\r\n          this.pages.unshift(2);\r\n        }\r\n        this.pages.unshift(1);\r\n      }\r\n      if (end < this.pageCount) {\r\n        // The last page will always be included. If the displayed range\r\n        // ends before the third-last page, then add ellipsis. But if the range\r\n        // ends on third-last page, then add the second-last page instead of\r\n        // an ellipsis, because the ellipsis would only hide a single page.\r\n        if (end < (this.pageCount - 2)) {\r\n          this.pages.push(-1);\r\n        } else if (end === (this.pageCount - 2)) {\r\n          this.pages.push(this.pageCount - 1);\r\n        }\r\n        this.pages.push(this.pageCount);\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Rotates page numbers based on maxSize items visible.\r\n   * Currently selected page stays in the middle:\r\n   *\r\n   * Ex. for selected page = 6:\r\n   * [5,*6*,7] for maxSize = 3\r\n   * [4,5,*6*,7] for maxSize = 4\r\n   */\r\n  private _applyRotation(): [number, number] {\r\n    let start = 0;\r\n    let end = this.pageCount;\r\n    let leftOffset = Math.floor(this.maxSize / 2);\r\n    let rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\r\n\r\n    if (this.page <= leftOffset) {\r\n      // very beginning, no rotation -> [0..maxSize]\r\n      end = this.maxSize;\r\n    } else if (this.pageCount - this.page < leftOffset) {\r\n      // very end, no rotation -> [len-maxSize..len]\r\n      start = this.pageCount - this.maxSize;\r\n    } else {\r\n      // rotate\r\n      start = this.page - leftOffset - 1;\r\n      end = this.page + rightOffset;\r\n    }\r\n\r\n    return [start, end];\r\n  }\r\n\r\n  /**\r\n   * Paginates page numbers based on maxSize items per page.\r\n   */\r\n  private _applyPagination(): [number, number] {\r\n    let page = Math.ceil(this.page / this.maxSize) - 1;\r\n    let start = page * this.maxSize;\r\n    let end = start + this.maxSize;\r\n\r\n    return [start, end];\r\n  }\r\n\r\n  private _setPageInRange(newPageNo) {\r\n    const prevPageNo = this.page;\r\n    this.page = getValueInRange(newPageNo, this.pageCount, 1);\r\n\r\n    if (this.page !== prevPageNo && isNumber(this.collectionSize)) {\r\n      this.pageChange.emit(this.page);\r\n    }\r\n  }\r\n\r\n  private _updatePages(newPage: number) {\r\n    this.pageCount = Math.ceil(this.collectionSize / this.pageSize);\r\n\r\n    if (!isNumber(this.pageCount)) {\r\n      this.pageCount = 0;\r\n    }\r\n\r\n    // fill-in model needed to render pages\r\n    this.pages.length = 0;\r\n    for (let i = 1; i <= this.pageCount; i++) {\r\n      this.pages.push(i);\r\n    }\r\n\r\n    // set page within 1..max range\r\n    this._setPageInRange(newPage);\r\n\r\n    // apply maxSize if necessary\r\n    if (this.maxSize > 0 && this.pageCount > this.maxSize) {\r\n      let start = 0;\r\n      let end = this.pageCount;\r\n\r\n      // either paginating or rotating page numbers\r\n      if (this.rotate) {\r\n        [start, end] = this._applyRotation();\r\n      } else {\r\n        [start, end] = this._applyPagination();\r\n      }\r\n\r\n      this.pages = this.pages.slice(start, end);\r\n\r\n      // adding ellipses\r\n      this._applyEllipses(start, end);\r\n    }\r\n  }\r\n}\r\n","import { Component, OnInit, Input, OnChanges, ElementRef, Output, EventEmitter } from '@angular/core';\r\nimport { SortDirection } from '../../models/sort.model';\r\n\r\n@Component({\r\n  selector: 'app-sort-icon',\r\n  templateUrl: './sort-icon.component.html',\r\n  styleUrls: ['./sort-icon.component.scss']\r\n})\r\nexport class SortIconComponent implements OnInit, OnChanges {\r\n  @Input() column: string;\r\n  @Input() activeColumn: string;\r\n  @Input() activeDirection: SortDirection;\r\n  @Output() sort: EventEmitter<string> = new EventEmitter<string>();\r\n  isActive = false;\r\n\r\n  constructor(private el: ElementRef) { }\r\n\r\n  ngOnChanges(): void {\r\n    const parent = this.el.nativeElement.parentElement;\r\n    if (!parent) {\r\n      return;\r\n    }\r\n\r\n    // Load css classes\r\n    parent.classList.add('sortable');\r\n    parent.classList.remove('sortable-active');\r\n    if (this.column === this.activeColumn) {\r\n      parent.classList.add('sortable-active');\r\n    }\r\n\r\n    // load icons\r\n    this.isActive = this.column === this.activeColumn;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    const parent = this.el.nativeElement.parentElement as Element;\r\n    if (!parent) {\r\n      return;\r\n    }\r\n\r\n    parent.addEventListener('click', () => {\r\n      this.sort.emit(this.column);\r\n    });\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PaginatorComponent } from './components/paginator/paginator.component';\r\nimport {\r\n  NgPagination,\r\n  NgPaginationEllipsis,\r\n  NgPaginationFirst, NgPaginationLast, NgPaginationNext, NgPaginationNumber, NgPaginationPrevious\r\n} from './components/paginator/ng-pagination/ng-pagination.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SortIconComponent } from './components/sort-icon/sort-icon.component';\r\nimport { InlineSVGModule } from 'ng-inline-svg';\r\n@NgModule({\r\n  declarations: [PaginatorComponent, NgPagination, SortIconComponent, NgPagination,\r\n    NgPaginationEllipsis, NgPaginationFirst, NgPaginationLast, NgPaginationPrevious, NgPaginationNumber, NgPaginationNext],\r\n  imports: [CommonModule, FormsModule, InlineSVGModule  ],\r\n  exports: [PaginatorComponent, NgPagination, SortIconComponent, NgPagination,\r\n    NgPaginationEllipsis, NgPaginationFirst, NgPaginationLast,NgPaginationPrevious, NgPaginationNumber, NgPaginationNext],\r\n})\r\nexport class CRUDTableModule { }\r\n"]}