tnx-shared 5.3.193 → 5.3.195
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/tnx-shared.umd.js +313 -707
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/esm2015/models/export-item.js +1 -1
- package/esm2015/public-api.js +2 -2
- package/esm2015/tnx-shared.module.js +3 -3
- package/fesm2015/tnx-shared.js +230 -569
- package/fesm2015/tnx-shared.js.map +1 -1
- package/models/export-item.d.ts +3 -0
- package/models/export-item.d.ts.map +1 -1
- package/package.json +2 -2
- package/public-api.d.ts +0 -1
- package/public-api.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
- package/tnx-shared.module.d.ts +1 -2
- package/tnx-shared.module.d.ts.map +1 -1
- package/tnx-shared.module.ngfactory.d.ts.map +1 -1
- package/components/report-queue/base-job/job-item.d.ts +0 -44
- package/components/report-queue/base-job/job-item.d.ts.map +0 -1
- package/components/report-queue/report-queue.component.d.ts +0 -67
- package/components/report-queue/report-queue.component.d.ts.map +0 -1
- package/components/report-queue/report-queue.component.ngfactory.d.ts.map +0 -1
- package/components/report-queue/report-queue.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/esm2015/components/report-queue/base-job/job-item.js +0 -54
- package/esm2015/components/report-queue/report-queue.component.js +0 -301
package/tnx-shared.module.d.ts
CHANGED
|
@@ -57,7 +57,6 @@ import { PermissionUtilsComponent } from './components/permission-utils/permissi
|
|
|
57
57
|
import { QueryBuilderComponent } from './components/query-builders/query-builder/query-builder.component';
|
|
58
58
|
import { RadioButtonListComponent } from './components/radio-button-list/radio-button-list.component';
|
|
59
59
|
import { ReferenceTextBoxComponent } from './components/reference-textbox/reference-textbox.component';
|
|
60
|
-
import { ReportQueueComponent } from './components/report-queue/report-queue.component';
|
|
61
60
|
import { ServiceFileUploadComponent } from './components/service-file-upload/service-file-upload.component';
|
|
62
61
|
import { SettingsRowComponent } from './components/settings/settings-row/settings-row.component';
|
|
63
62
|
import { SettingsWorkflowNo1Component } from './components/settings/settings-workflow/settings-workflow-no1/settings-workflow-no1.component';
|
|
@@ -107,7 +106,7 @@ import { StringFormatPipe } from './pipes/string-format.pipe';
|
|
|
107
106
|
import { TnDatePipe } from './pipes/tn-date.pipe';
|
|
108
107
|
import { SplashComponentComponent } from './components/splash-component/splash-component.component';
|
|
109
108
|
import { CommonLibComponent } from './components/common-lib/common-lib.component';
|
|
110
|
-
export declare function coreDeclaration(): (typeof CrudFormComponent | typeof TnCustomScrollbarComponent | typeof ViewContainerRefDirective | typeof CommonSearchFormComponent | typeof CrudListComponent | typeof TreeTableComponent | typeof EntityPickerDataComponent | typeof EntityPickerSelectedComponent | typeof EntityPickerBoxComponent | typeof AutoCompletePickerComponent | typeof EntityPickerTreeDataComponent | typeof EntityPickerTreeSelectedComponent | typeof EntityPickerComponent | typeof SplashComponentComponent | typeof HtmlFormatPipe | typeof MasterDataPipe | typeof OrganizationFormatPipe | typeof OrganizationsFormatPipe | typeof SafeHtmlPipe | typeof AccessDeniedComponent | typeof CommonDashboardComponent | typeof NotFoundComponent | typeof UniversalLinkProcessorComponent | typeof AutocompleteDatasourceComponent | typeof AvatarUploaderComponent | typeof ChatBoxComponent | typeof FileUploadComponent | typeof ChatSendMessageBoxComponent | typeof CoCauToChucPickerComponent | typeof DropdownComponent | typeof FileKySoSimComponent | typeof FileManagerComponent | typeof FilePickerDialogComponent | typeof TaiLieuComponent | typeof PermissionUtilsComponent | typeof QueryBuilderComponent | typeof FileViewerComponent | typeof ServiceFileUploadComponent | typeof UserPickerDialogComponent | typeof CommonLibComponent | typeof
|
|
109
|
+
export declare function coreDeclaration(): (typeof CrudFormComponent | typeof TnCustomScrollbarComponent | typeof ViewContainerRefDirective | typeof CommonSearchFormComponent | typeof CrudListComponent | typeof TreeTableComponent | typeof EntityPickerDataComponent | typeof EntityPickerSelectedComponent | typeof EntityPickerBoxComponent | typeof AutoCompletePickerComponent | typeof EntityPickerTreeDataComponent | typeof EntityPickerTreeSelectedComponent | typeof EntityPickerComponent | typeof SplashComponentComponent | typeof HtmlFormatPipe | typeof MasterDataPipe | typeof OrganizationFormatPipe | typeof OrganizationsFormatPipe | typeof SafeHtmlPipe | typeof AccessDeniedComponent | typeof CommonDashboardComponent | typeof NotFoundComponent | typeof UniversalLinkProcessorComponent | typeof AutocompleteDatasourceComponent | typeof AvatarUploaderComponent | typeof ChatBoxComponent | typeof FileUploadComponent | typeof ChatSendMessageBoxComponent | typeof CoCauToChucPickerComponent | typeof DropdownComponent | typeof FileKySoSimComponent | typeof FileManagerComponent | typeof FilePickerDialogComponent | typeof TaiLieuComponent | typeof PermissionUtilsComponent | typeof QueryBuilderComponent | typeof FileViewerComponent | typeof ServiceFileUploadComponent | typeof UserPickerDialogComponent | typeof CommonLibComponent | typeof AfterViewCheckedComponent | typeof AuthorizeDirective | typeof TnReorderableColumnDirective | typeof TnReorderableRowDirective | typeof TnSortableColumnDirective | typeof TnSortIcon | typeof TnTreeTableToggler | typeof ApprovalPipe | typeof ConvertMoneyToWordPipe | typeof MultipleReferenceDataFormatPipe | typeof OrganizationNameFormatPipe | typeof SafeStylePipe | typeof SafeUrlPipe | typeof SecurePipe | typeof StringFormatPipe | typeof TnDatePipe | typeof AddressComponent | typeof AdvanceSearchComponent | typeof ImageUploaderComponent | typeof CheckBoxListComponent | typeof CoCauToChucPickerListComponent | typeof CoCauToChucPickerListNewComponent | typeof FormBuilderComponent | typeof DatetimePickerComponent | typeof EntityPickerSearchFormComponent | typeof EntityPickerDialogComponent | typeof EntityPermissionComponent | typeof EquationEditorComponent | typeof MaskComponent | typeof NumberPickerRangeComponent | typeof RadioButtonListComponent | typeof VanBanPickerComponent | typeof VanBanPickerDialogComponent | typeof VanbanDiPickerComponent | typeof VanbanDenPickerComponent | typeof CongViecPickerComponent | typeof SettingsComponent | typeof SettingsRowComponent | typeof ShareLinkByPermissionComponent | typeof TnCheckboxComponent | typeof TnDialogComponent | typeof TnColorPickerComponent | typeof TnTinymceComponent | typeof TnTabViewComponent | typeof TableDetailFormComponent | typeof QuickAddFormComponent | typeof PreventShiftTabDirective | typeof TnTemplateDirective | typeof UserPickerBoxComponent | typeof UserPickerComponent | typeof HelperCurrentPageComponent | typeof TnAppHelpComponent | typeof TnAppNotificationListComponent | typeof TnAppNotificationComponent | typeof FolderFormComponent | typeof FileFormComponent | typeof FileVersionListComponent | typeof ViewDetailComponent | typeof ReferenceTextBoxComponent | typeof AddNewsComponent | typeof SignatureDetailComponent | typeof KySoSimDanhSachChuKyComponent | typeof TaiLieuCuaToiComponent | typeof KhaiThacTaiLieuDungChungComponent | typeof TnTemplateComponent | typeof DropdownSettingFormComponent | typeof TnAccordionTabComponent | typeof SettingsWorkflowComponent | typeof SettingAuthorizeButtonComponent | typeof SettingsWorkflowNo1Component | typeof FileSizePipe)[];
|
|
111
110
|
export declare function coreModuleImport(): (typeof CommonModule)[];
|
|
112
111
|
export declare function coreProvider(): any[];
|
|
113
112
|
export declare class TnxSharedModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tnx-shared.module.d.ts","sourceRoot":"","sources":["../../projects/tnx-shared/src/lib/tnx-shared.module.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tnx-shared.module.d.ts","sourceRoot":"","sources":["../../projects/tnx-shared/src/lib/tnx-shared.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tnx-shared.module.ngfactory.d.ts","sourceRoot":"","sources":["../../projects/tnx-shared/src/lib/tnx-shared.module.ngfactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"tnx-shared.module.ngfactory.d.ts","sourceRoot":"","sources":["../../projects/tnx-shared/src/lib/tnx-shared.module.ngfactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAsL1C,eAAO,MAAM,wBAAwB,EAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAiB,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { ResponseResult } from '../../../models/response-result';
|
|
2
|
-
import { SimpleDictionary } from '../../../utils/dictionary';
|
|
3
|
-
export declare class JobItem {
|
|
4
|
-
_code: string;
|
|
5
|
-
_fileName: string;
|
|
6
|
-
_data: any;
|
|
7
|
-
_type: JobTypes;
|
|
8
|
-
_uniqueKey: any;
|
|
9
|
-
_status: number;
|
|
10
|
-
_binaryFile: any;
|
|
11
|
-
_fileId: any;
|
|
12
|
-
_error: string;
|
|
13
|
-
constructor(code: string, data: any, fileName?: string, status?: number);
|
|
14
|
-
}
|
|
15
|
-
export declare class REPORT_QUEUE_CONSTANT {
|
|
16
|
-
static statuses: {
|
|
17
|
-
Waiting: number;
|
|
18
|
-
Exporting: number;
|
|
19
|
-
Success: number;
|
|
20
|
-
Error: number;
|
|
21
|
-
Downloaded: number;
|
|
22
|
-
};
|
|
23
|
-
static dicStatus: SimpleDictionary;
|
|
24
|
-
}
|
|
25
|
-
export declare enum JobTypes {
|
|
26
|
-
Normal = 1,
|
|
27
|
-
SingnalR = 2,
|
|
28
|
-
Many = 3
|
|
29
|
-
}
|
|
30
|
-
export declare class ExportJob {
|
|
31
|
-
templateCode: string;
|
|
32
|
-
dataPromise: Promise<ResponseResult>;
|
|
33
|
-
fileName: string;
|
|
34
|
-
rootName: string;
|
|
35
|
-
cb: Function;
|
|
36
|
-
type: JobTypes;
|
|
37
|
-
constructor(templateCode: string, // code template cấu hình bên quản trị
|
|
38
|
-
dataPromise: Promise<ResponseResult>, // promise dùng để lấy dữ liệu, trả về dạng ResponseResult
|
|
39
|
-
fileName: string, // tên của file được lưu
|
|
40
|
-
rootName?: string, // tên thuộc tính của lst dữ liệu ngoài cùng
|
|
41
|
-
cb?: Function, // dùng để xử lý dữ liệu sau khi lấy xong
|
|
42
|
-
type?: JobTypes);
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=job-item.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"job-item.d.ts","sourceRoot":"","sources":["../../../../../projects/tnx-shared/src/lib/components/report-queue/base-job/job-item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAiB,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE5E,qBAAa,OAAO;IAEhB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,GAAG,CAAC;IAGX,KAAK,EAAE,QAAQ,CAAqB;IACpC,UAAU,MAAC;IAGX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,MAAC;IACZ,OAAO,MAAC;IACR,MAAM,EAAE,MAAM,CAAC;gBAEH,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,GAAE,MAAiB,EAAE,MAAM,SAAyC;CASpH;AAED,qBAAa,qBAAqB;IAC9B,MAAM,CAAC,QAAQ;;;;;;MAMd;IAED,MAAM,CAAC,SAAS,mBAMb;CACN;AAED,oBAAY,QAAQ;IAChB,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,IAAI,IAAI;CACX;AAED,qBAAa,SAAS;IAEP,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC;IACpC,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,MAAM;IAChB,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;gBALd,YAAY,EAAE,MAAM,EAAqB,sCAAsC;IAC/E,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,EAAK,0DAA0D;IACnG,QAAQ,EAAE,MAAM,EAAyB,wBAAwB;IACjE,QAAQ,GAAE,MAAW,EAAoB,4CAA4C;IACrF,EAAE,GAAE,QAAe,EAAsB,yCAAyC;IAClF,IAAI,GAAE,QAA0B;CAE9C"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
2
|
-
import { CommonService } from '../../services/common.service';
|
|
3
|
-
import { CrudService } from '../../services/crud.service';
|
|
4
|
-
import { HighPerformanceService } from '../../services/high-performance.service';
|
|
5
|
-
import { NotifierService } from '../../services/notifier.service';
|
|
6
|
-
import { SignalRService } from '../../services/signalr.service';
|
|
7
|
-
import { TemplateService } from '../../services/template.service';
|
|
8
|
-
import { FileExplorerService } from '../file-explorer/services/file-explorer.service';
|
|
9
|
-
import { ExportJob, JobItem } from './base-job/job-item';
|
|
10
|
-
import { TnCustomScrollbarComponent } from '../tn-custom-scrollbar/tn-custom-scrollbar.component';
|
|
11
|
-
export declare class ReportQueueComponent implements OnInit {
|
|
12
|
-
private _notifierService;
|
|
13
|
-
private _commonService;
|
|
14
|
-
private _fileService;
|
|
15
|
-
private _tempateService;
|
|
16
|
-
private _signalRService;
|
|
17
|
-
private _highPerformanceService;
|
|
18
|
-
private _crudService;
|
|
19
|
-
parentDataModel: any;
|
|
20
|
-
name: string;
|
|
21
|
-
header: string;
|
|
22
|
-
autoDownload: boolean;
|
|
23
|
-
scrollbar: TnCustomScrollbarComponent;
|
|
24
|
-
maxNameLength: number;
|
|
25
|
-
expand: boolean;
|
|
26
|
-
queueName: string;
|
|
27
|
-
hub: string;
|
|
28
|
-
dicStatus: import("../../public-api").SimpleDictionary;
|
|
29
|
-
statuses: {
|
|
30
|
-
Waiting: number;
|
|
31
|
-
Exporting: number;
|
|
32
|
-
Success: number;
|
|
33
|
-
Error: number;
|
|
34
|
-
Downloaded: number;
|
|
35
|
-
};
|
|
36
|
-
_queue: JobItem[];
|
|
37
|
-
maxHeight: number;
|
|
38
|
-
itemHeight: number;
|
|
39
|
-
popupHeight: number;
|
|
40
|
-
constructor(_notifierService: NotifierService, _commonService: CommonService, _fileService: FileExplorerService, _tempateService: TemplateService, _signalRService: SignalRService, _highPerformanceService: HighPerformanceService, _crudService: CrudService);
|
|
41
|
-
ngOnInit(): void;
|
|
42
|
-
toggleExpand(): void;
|
|
43
|
-
/**
|
|
44
|
-
* Thêm job vào để thực hiện
|
|
45
|
-
*/
|
|
46
|
-
addJob(exportJob: ExportJob): Promise<void>;
|
|
47
|
-
/**
|
|
48
|
-
* Thêm job vào để thực hiện
|
|
49
|
-
* - templateCode: code template cấu hình bên quản trị
|
|
50
|
-
* - data: dữ liệu export
|
|
51
|
-
* - fileName: tên của file được lưu
|
|
52
|
-
* - useSignalR: thay vì gọi request và chờ đến khi thực hiện xong
|
|
53
|
-
* trả về binaryFile thì tạo tiến trình riêng để export, và dùng signalR thông
|
|
54
|
-
* báo kết quả export, trả về fileId để tải.
|
|
55
|
-
*/
|
|
56
|
-
addJobWithData(templateCode: string, data: any, fileName: any, useSignalR?: boolean): Promise<void>;
|
|
57
|
-
Export(job: JobItem): Promise<void>;
|
|
58
|
-
ExportWithSignalR(job: JobItem): Promise<void>;
|
|
59
|
-
ExportCxExcelByCodeWithHPS(job: JobItem): Promise<void>;
|
|
60
|
-
download(job: any): void;
|
|
61
|
-
showQueue(): boolean;
|
|
62
|
-
getName(job: any): any;
|
|
63
|
-
cancelJob(job: any): void;
|
|
64
|
-
close(): void;
|
|
65
|
-
updatePopupHeight(): void;
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=report-queue.component.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"report-queue.component.d.ts","sourceRoot":"","sources":["../../../../projects/tnx-shared/src/lib/components/report-queue/report-queue.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAoB,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAmC,MAAM,qBAAqB,CAAC;AAE1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,sDAAsD,CAAC;AAElG,qBAKa,oBAAqB,YAAW,MAAM;IAmB3C,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,uBAAuB;IAC/B,OAAO,CAAC,YAAY;IAxBf,eAAe,EAAE,GAAG,CAAC;IACrB,IAAI,SAAiB;IACrB,MAAM,SAAkB;IACxB,YAAY,UAAS;IACN,SAAS,EAAE,0BAA0B,CAAC;IAC9D,aAAa,SAAM;IACnB,MAAM,UAAQ;IACd,SAAS,SAAkB;IAC3B,GAAG,SAAe;IAElB,SAAS,8CAAmC;IAC5C,QAAQ;;;;;;MAAkC;IAE1C,MAAM,EAAE,OAAO,EAAE,CAAM;IACvB,SAAS,SAAO;IAChB,UAAU,SAAM;IAChB,WAAW,SAAmB;gBAElB,gBAAgB,EAAE,eAAe,EACjC,cAAc,EAAE,aAAa,EAC7B,YAAY,EAAE,mBAAmB,EACjC,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,cAAc,EAC/B,uBAAuB,EAAE,sBAAsB,EAC/C,YAAY,EAAE,WAAW;IAIrC,QAAQ;IAMR,YAAY;IAIZ;;OAEG;IACG,MAAM,CAAC,SAAS,EAAE,SAAS;IAuCjC;;;;;;;;OAQG;IACG,cAAc,CAChB,YAAY,EAAE,MAAM,EACpB,IAAI,KAAA,EACJ,QAAQ,KAAA,EACR,UAAU,UAAQ;IAiBhB,MAAM,CAAC,GAAG,EAAE,OAAO;IAgBnB,iBAAiB,CAAC,GAAG,EAAE,OAAO;IA6B9B,0BAA0B,CAAC,GAAG,EAAE,OAAO;IAyC7C,QAAQ,CAAC,GAAG,KAAA;IAcZ,SAAS;IAMT,OAAO,CAAC,GAAG,KAAA;IAKX,SAAS,CAAC,GAAG,KAAA;IAyBb,KAAK;IAuBL,iBAAiB;CAIpB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"report-queue.component.ngfactory.d.ts","sourceRoot":"","sources":["../../../../projects/tnx-shared/src/lib/components/report-queue/report-queue.component.ngfactory.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"report-queue.component.scss.shim.ngstyle.d.ts","sourceRoot":"","sources":["../../../../projects/tnx-shared/src/lib/components/report-queue/report-queue.component.scss.shim.ngstyle.ts"],"names":[],"mappings":""}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { DatePipe } from '@angular/common';
|
|
2
|
-
import { TemplateConstant } from '../../../configs/component-contants';
|
|
3
|
-
import { SimpleDicItem, SimpleDictionary } from '../../../utils/dictionary';
|
|
4
|
-
export class JobItem {
|
|
5
|
-
constructor(code, data, fileName = 'BaoCao', status = REPORT_QUEUE_CONSTANT.statuses.Waiting) {
|
|
6
|
-
// Loại export.
|
|
7
|
-
this._type = JobTypes.SingnalR;
|
|
8
|
-
this._code = code;
|
|
9
|
-
const datepipe = new DatePipe('en-US');
|
|
10
|
-
let formattedDate = datepipe.transform(new Date(), 'ddMMyyyy_hhmmss');
|
|
11
|
-
this._fileName = `${fileName}_${formattedDate}${TemplateConstant.EXCEL_EXTENSION}`;
|
|
12
|
-
this._data = data || {};
|
|
13
|
-
this._status = status;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
export class REPORT_QUEUE_CONSTANT {
|
|
17
|
-
}
|
|
18
|
-
REPORT_QUEUE_CONSTANT.statuses = {
|
|
19
|
-
Waiting: 1,
|
|
20
|
-
Exporting: 2,
|
|
21
|
-
Success: 3,
|
|
22
|
-
Error: 4,
|
|
23
|
-
Downloaded: 5
|
|
24
|
-
};
|
|
25
|
-
REPORT_QUEUE_CONSTANT.dicStatus = new SimpleDictionary([
|
|
26
|
-
new SimpleDicItem(REPORT_QUEUE_CONSTANT.statuses.Waiting, 'Chờ để xử lý'),
|
|
27
|
-
new SimpleDicItem(REPORT_QUEUE_CONSTANT.statuses.Exporting, 'Đang xử lý'),
|
|
28
|
-
new SimpleDicItem(REPORT_QUEUE_CONSTANT.statuses.Success, 'Tải xuống'),
|
|
29
|
-
new SimpleDicItem(REPORT_QUEUE_CONSTANT.statuses.Error, 'Xuất file chưa thành công'),
|
|
30
|
-
new SimpleDicItem(REPORT_QUEUE_CONSTANT.statuses.Downloaded, 'Đã tải'),
|
|
31
|
-
]);
|
|
32
|
-
export var JobTypes;
|
|
33
|
-
(function (JobTypes) {
|
|
34
|
-
JobTypes[JobTypes["Normal"] = 1] = "Normal";
|
|
35
|
-
JobTypes[JobTypes["SingnalR"] = 2] = "SingnalR";
|
|
36
|
-
JobTypes[JobTypes["Many"] = 3] = "Many"; // Export nhiều file cùng một lúc và nén vào file zip, mỗi file có thể là các loại biểu mẫu khác nhau.
|
|
37
|
-
})(JobTypes || (JobTypes = {}));
|
|
38
|
-
export class ExportJob {
|
|
39
|
-
constructor(templateCode, // code template cấu hình bên quản trị
|
|
40
|
-
dataPromise, // promise dùng để lấy dữ liệu, trả về dạng ResponseResult
|
|
41
|
-
fileName, // tên của file được lưu
|
|
42
|
-
rootName = '', // tên thuộc tính của lst dữ liệu ngoài cùng
|
|
43
|
-
cb = null, // dùng để xử lý dữ liệu sau khi lấy xong
|
|
44
|
-
type = JobTypes.Normal // Loại export.
|
|
45
|
-
) {
|
|
46
|
-
this.templateCode = templateCode;
|
|
47
|
-
this.dataPromise = dataPromise;
|
|
48
|
-
this.fileName = fileName;
|
|
49
|
-
this.rootName = rootName;
|
|
50
|
-
this.cb = cb;
|
|
51
|
-
this.type = type;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnQtcXVldWUvYmFzZS1qb2Ivam9iLWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RSxNQUFNLE9BQU8sT0FBTztJQWdCaEIsWUFBWSxJQUFZLEVBQUUsSUFBUyxFQUFFLFdBQW1CLFFBQVEsRUFBRSxNQUFNLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDLE9BQU87UUFWakgsZUFBZTtRQUNmLFVBQUssR0FBYSxRQUFRLENBQUMsUUFBUSxDQUFDO1FBVWhDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE1BQU0sUUFBUSxHQUFhLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2hELElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3JFLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxRQUFRLElBQUksYUFBYSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ25GLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUMxQixDQUFDO0NBRUo7QUFFRCxNQUFNLE9BQU8scUJBQXFCOztBQUN2Qiw4QkFBUSxHQUFHO0lBQ2QsT0FBTyxFQUFFLENBQUM7SUFDVixTQUFTLEVBQUUsQ0FBQztJQUNaLE9BQU8sRUFBRSxDQUFDO0lBQ1YsS0FBSyxFQUFFLENBQUM7SUFDUixVQUFVLEVBQUUsQ0FBQztDQUNoQixDQUFBO0FBRU0sK0JBQVMsR0FBRyxJQUFJLGdCQUFnQixDQUFDO0lBQ3BDLElBQUksYUFBYSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDO0lBQ3pFLElBQUksYUFBYSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDO0lBQ3pFLElBQUksYUFBYSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDO0lBQ3RFLElBQUksYUFBYSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsMkJBQTJCLENBQUM7SUFDcEYsSUFBSSxhQUFhLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUM7Q0FDekUsQ0FBQyxDQUFDO0FBR1AsTUFBTSxDQUFOLElBQVksUUFJWDtBQUpELFdBQVksUUFBUTtJQUNoQiwyQ0FBVSxDQUFBO0lBQ1YsK0NBQVksQ0FBQTtJQUNaLHVDQUFRLENBQUEsQ0FBUSxzR0FBc0c7QUFDMUgsQ0FBQyxFQUpXLFFBQVEsS0FBUixRQUFRLFFBSW5CO0FBRUQsTUFBTSxPQUFPLFNBQVM7SUFDbEIsWUFDVyxZQUFvQixFQUFxQixzQ0FBc0M7SUFDL0UsV0FBb0MsRUFBSywwREFBMEQ7SUFDbkcsUUFBZ0IsRUFBeUIsd0JBQXdCO0lBQ2pFLFdBQW1CLEVBQUUsRUFBb0IsNENBQTRDO0lBQ3JGLEtBQWUsSUFBSSxFQUFzQix5Q0FBeUM7SUFDbEYsT0FBaUIsUUFBUSxDQUFDLE1BQU0sQ0FBRSxlQUFlOztRQUxqRCxpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDcEMsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLE9BQUUsR0FBRixFQUFFLENBQWlCO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQTRCO0lBQ3ZDLENBQUM7Q0FDUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jlc3BvbnNlLXJlc3VsdCc7XG5pbXBvcnQgeyBUZW1wbGF0ZUNvbnN0YW50IH0gZnJvbSAnLi4vLi4vLi4vY29uZmlncy9jb21wb25lbnQtY29udGFudHMnO1xuaW1wb3J0IHsgU2ltcGxlRGljSXRlbSwgU2ltcGxlRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RpY3Rpb25hcnknO1xuXG5leHBvcnQgY2xhc3MgSm9iSXRlbSB7XG4gICAgLy8gROG7ryBsaeG7h3UgZXhwb3J0XG4gICAgX2NvZGU6IHN0cmluZztcbiAgICBfZmlsZU5hbWU6IHN0cmluZztcbiAgICBfZGF0YTogYW55O1xuXG4gICAgLy8gTG/huqFpIGV4cG9ydC5cbiAgICBfdHlwZTogSm9iVHlwZXMgPSBKb2JUeXBlcy5TaW5nbmFsUjtcbiAgICBfdW5pcXVlS2V5O1xuXG4gICAgLy8gS+G6v3QgcXXhuqNcbiAgICBfc3RhdHVzOiBudW1iZXI7IC8vIFRy4bqhbmcgdGjDoWkgaGnhu4duIHThuqFpIGPhu6dhIGpvYlxuICAgIF9iaW5hcnlGaWxlOyAvLyBFeHBvcnQgdGjGsOG7nW5nIGLhurFuZyByZXF1ZXN0XG4gICAgX2ZpbGVJZDsgLy8gRXhwb3J0IGLhurFuZyBTaWduYWxSIGhv4bq3YyBIaWdoUGVyZm9ybWFuY2VTZXJ2aWNlXG4gICAgX2Vycm9yOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb2RlOiBzdHJpbmcsIGRhdGE6IGFueSwgZmlsZU5hbWU6IHN0cmluZyA9ICdCYW9DYW8nLCBzdGF0dXMgPSBSRVBPUlRfUVVFVUVfQ09OU1RBTlQuc3RhdHVzZXMuV2FpdGluZykge1xuICAgICAgICB0aGlzLl9jb2RlID0gY29kZTtcbiAgICAgICAgY29uc3QgZGF0ZXBpcGU6IERhdGVQaXBlID0gbmV3IERhdGVQaXBlKCdlbi1VUycpXG4gICAgICAgIGxldCBmb3JtYXR0ZWREYXRlID0gZGF0ZXBpcGUudHJhbnNmb3JtKG5ldyBEYXRlKCksICdkZE1NeXl5eV9oaG1tc3MnKVxuICAgICAgICB0aGlzLl9maWxlTmFtZSA9IGAke2ZpbGVOYW1lfV8ke2Zvcm1hdHRlZERhdGV9JHtUZW1wbGF0ZUNvbnN0YW50LkVYQ0VMX0VYVEVOU0lPTn1gO1xuICAgICAgICB0aGlzLl9kYXRhID0gZGF0YSB8fCB7fTtcbiAgICAgICAgdGhpcy5fc3RhdHVzID0gc3RhdHVzO1xuICAgIH1cblxufVxuXG5leHBvcnQgY2xhc3MgUkVQT1JUX1FVRVVFX0NPTlNUQU5UIHtcbiAgICBzdGF0aWMgc3RhdHVzZXMgPSB7XG4gICAgICAgIFdhaXRpbmc6IDEsXG4gICAgICAgIEV4cG9ydGluZzogMixcbiAgICAgICAgU3VjY2VzczogMyxcbiAgICAgICAgRXJyb3I6IDQsXG4gICAgICAgIERvd25sb2FkZWQ6IDVcbiAgICB9XG5cbiAgICBzdGF0aWMgZGljU3RhdHVzID0gbmV3IFNpbXBsZURpY3Rpb25hcnkoW1xuICAgICAgICBuZXcgU2ltcGxlRGljSXRlbShSRVBPUlRfUVVFVUVfQ09OU1RBTlQuc3RhdHVzZXMuV2FpdGluZywgJ0No4budIMSR4buDIHjhu60gbMO9JyksXG4gICAgICAgIG5ldyBTaW1wbGVEaWNJdGVtKFJFUE9SVF9RVUVVRV9DT05TVEFOVC5zdGF0dXNlcy5FeHBvcnRpbmcsICfEkGFuZyB44butIGzDvScpLFxuICAgICAgICBuZXcgU2ltcGxlRGljSXRlbShSRVBPUlRfUVVFVUVfQ09OU1RBTlQuc3RhdHVzZXMuU3VjY2VzcywgJ1ThuqNpIHh14buRbmcnKSxcbiAgICAgICAgbmV3IFNpbXBsZURpY0l0ZW0oUkVQT1JUX1FVRVVFX0NPTlNUQU5ULnN0YXR1c2VzLkVycm9yLCAnWHXhuqV0IGZpbGUgY2jGsGEgdGjDoG5oIGPDtG5nJyksXG4gICAgICAgIG5ldyBTaW1wbGVEaWNJdGVtKFJFUE9SVF9RVUVVRV9DT05TVEFOVC5zdGF0dXNlcy5Eb3dubG9hZGVkLCAnxJDDoyB04bqjaScpLFxuICAgIF0pO1xufVxuXG5leHBvcnQgZW51bSBKb2JUeXBlcyB7XG4gICAgTm9ybWFsID0gMSwgICAgIC8vIEV4cG9ydCB0aMaw4budbmcgcmVxdWVzdC9yZXNwb25zZTogZMO5bmcgduG7m2kgdGjhu51pIGdpYW4gbmjhu48gdHJvbmcgMSByZXF1ZXN0IHRpbWVvdXQuXG4gICAgU2luZ25hbFIgPSAyLCAgIC8vIEV4cG9ydCBzaWduYWxSLCBn4butaSB5w6p1IGPhuqd1IGV4cG9ydCB2w6Aga+G6v3QgdGjDumM6IGZpbGUgZOG7ryBsaeG7h3UgbOG7m24sIHRo4budaSBnaWFuID4gMSByZXF1ZXN0IHRpbWVvdXQuXG4gICAgTWFueSA9IDMgICAgICAgIC8vIEV4cG9ydCBuaGnhu4F1IGZpbGUgY8O5bmcgbeG7mXQgbMO6YyB2w6AgbsOpbiB2w6BvIGZpbGUgemlwLCBt4buXaSBmaWxlIGPDsyB0aOG7gyBsw6AgY8OhYyBsb+G6oWkgYmnhu4N1IG3huqt1IGtow6FjIG5oYXUuXG59XG5cbmV4cG9ydCBjbGFzcyBFeHBvcnRKb2Ige1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgdGVtcGxhdGVDb2RlOiBzdHJpbmcsICAgICAgICAgICAgICAgICAgICAvLyBjb2RlIHRlbXBsYXRlIGPhuqV1IGjDrG5oIGLDqm4gcXXhuqNuIHRy4buLXG4gICAgICAgIHB1YmxpYyBkYXRhUHJvbWlzZTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4sICAgIC8vIHByb21pc2UgZMO5bmcgxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UsIHRy4bqjIHbhu4EgZOG6oW5nIFJlc3BvbnNlUmVzdWx0XG4gICAgICAgIHB1YmxpYyBmaWxlTmFtZTogc3RyaW5nLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIHTDqm4gY+G7p2EgZmlsZSDEkcaw4bujYyBsxrB1XG4gICAgICAgIHB1YmxpYyByb290TmFtZTogc3RyaW5nID0gJycsICAgICAgICAgICAgICAgICAgIC8vIHTDqm4gdGh14buZYyB0w61uaCBj4bunYSBsc3QgZOG7ryBsaeG7h3Ugbmdvw6BpIGPDuW5nXG4gICAgICAgIHB1YmxpYyBjYjogRnVuY3Rpb24gPSBudWxsLCAgICAgICAgICAgICAgICAgICAgIC8vIGTDuW5nIMSR4buDIHjhu60gbMO9IGThu68gbGnhu4d1IHNhdSBraGkgbOG6pXkgeG9uZ1xuICAgICAgICBwdWJsaWMgdHlwZTogSm9iVHlwZXMgPSBKb2JUeXBlcy5Ob3JtYWwgIC8vIExv4bqhaSBleHBvcnQuXG4gICAgKSB7IH1cbn1cblxuXG4iXX0=
|
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
|
3
|
-
import { TemplateConstant } from '../../configs/component-contants';
|
|
4
|
-
import { CommonService } from '../../services/common.service';
|
|
5
|
-
import { CrudService } from '../../services/crud.service';
|
|
6
|
-
import { HighPerformanceService } from '../../services/high-performance.service';
|
|
7
|
-
import { NotifierService } from '../../services/notifier.service';
|
|
8
|
-
import { SignalRService } from '../../services/signalr.service';
|
|
9
|
-
import { TemplateService } from '../../services/template.service';
|
|
10
|
-
import { FileExplorerService } from '../file-explorer/services/file-explorer.service';
|
|
11
|
-
import { JobItem, JobTypes, REPORT_QUEUE_CONSTANT } from './base-job/job-item';
|
|
12
|
-
import * as FileSaver from 'file-saver';
|
|
13
|
-
import { TnCustomScrollbarComponent } from '../tn-custom-scrollbar/tn-custom-scrollbar.component';
|
|
14
|
-
export class ReportQueueComponent {
|
|
15
|
-
constructor(_notifierService, _commonService, _fileService, _tempateService, _signalRService, _highPerformanceService, _crudService) {
|
|
16
|
-
this._notifierService = _notifierService;
|
|
17
|
-
this._commonService = _commonService;
|
|
18
|
-
this._fileService = _fileService;
|
|
19
|
-
this._tempateService = _tempateService;
|
|
20
|
-
this._signalRService = _signalRService;
|
|
21
|
-
this._highPerformanceService = _highPerformanceService;
|
|
22
|
-
this._crudService = _crudService;
|
|
23
|
-
this.name = 'reportQueue';
|
|
24
|
-
this.header = 'Xuất báo cáo';
|
|
25
|
-
this.autoDownload = false;
|
|
26
|
-
this.maxNameLength = 40;
|
|
27
|
-
this.expand = true;
|
|
28
|
-
this.queueName = 'REPORT_QUEUE';
|
|
29
|
-
this.hub = 'CommonHub';
|
|
30
|
-
this.dicStatus = REPORT_QUEUE_CONSTANT.dicStatus;
|
|
31
|
-
this.statuses = REPORT_QUEUE_CONSTANT.statuses;
|
|
32
|
-
this._queue = [];
|
|
33
|
-
this.maxHeight = 200;
|
|
34
|
-
this.itemHeight = 50;
|
|
35
|
-
this.popupHeight = this.itemHeight;
|
|
36
|
-
}
|
|
37
|
-
ngOnInit() {
|
|
38
|
-
if (this.parentDataModel && this.name) {
|
|
39
|
-
this.parentDataModel[this.name] = this;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
toggleExpand() {
|
|
43
|
-
this.expand = !this.expand;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Thêm job vào để thực hiện
|
|
47
|
-
*/
|
|
48
|
-
addJob(exportJob) {
|
|
49
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
var foundIndex = this._queue.findIndex(job => job._code == exportJob.templateCode && job._status == this.statuses.Exporting);
|
|
51
|
-
if (foundIndex !== -1) {
|
|
52
|
-
this._notifierService.showWarning("File cùng loại đang được xử lý, thử lại sau khi xử lý xong!");
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
var job = new JobItem(exportJob.templateCode, {}, exportJob.fileName || exportJob.templateCode, this.statuses.Exporting);
|
|
56
|
-
this._queue.push(job);
|
|
57
|
-
this.updatePopupHeight();
|
|
58
|
-
setTimeout(() => {
|
|
59
|
-
this.scrollbar.scrollToBottom();
|
|
60
|
-
}, 100);
|
|
61
|
-
var rsData = yield exportJob.dataPromise;
|
|
62
|
-
if (rsData.data == null) {
|
|
63
|
-
job._status = this.statuses.Error;
|
|
64
|
-
return this._crudService.processErrorResponse(rsData);
|
|
65
|
-
}
|
|
66
|
-
if (exportJob.cb) {
|
|
67
|
-
job._data = exportJob.cb(rsData.data);
|
|
68
|
-
}
|
|
69
|
-
else if (exportJob.rootName) {
|
|
70
|
-
job._data[exportJob.rootName] = rsData.data;
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
job._data = rsData.data;
|
|
74
|
-
}
|
|
75
|
-
switch (exportJob.type) {
|
|
76
|
-
case JobTypes.Normal:
|
|
77
|
-
this.Export(job);
|
|
78
|
-
break;
|
|
79
|
-
case JobTypes.SingnalR:
|
|
80
|
-
this.ExportWithSignalR(job);
|
|
81
|
-
break;
|
|
82
|
-
case JobTypes.Many:
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Thêm job vào để thực hiện
|
|
89
|
-
* - templateCode: code template cấu hình bên quản trị
|
|
90
|
-
* - data: dữ liệu export
|
|
91
|
-
* - fileName: tên của file được lưu
|
|
92
|
-
* - useSignalR: thay vì gọi request và chờ đến khi thực hiện xong
|
|
93
|
-
* trả về binaryFile thì tạo tiến trình riêng để export, và dùng signalR thông
|
|
94
|
-
* báo kết quả export, trả về fileId để tải.
|
|
95
|
-
*/
|
|
96
|
-
addJobWithData(templateCode, data, fileName, useSignalR = false) {
|
|
97
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
98
|
-
var foundIndex = this._queue.findIndex(job => job._code == templateCode && job._status == this.statuses.Exporting);
|
|
99
|
-
if (foundIndex !== -1) {
|
|
100
|
-
this._notifierService.showWarning("File cùng loại đang được xử lý, thử lại sau khi xử lý xong!");
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
var job = new JobItem(templateCode, data, fileName || templateCode, this.statuses.Exporting);
|
|
104
|
-
this._queue.push(job);
|
|
105
|
-
if (useSignalR) {
|
|
106
|
-
this.ExportWithSignalR(job);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
this.Export(job);
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
Export(job) {
|
|
114
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
115
|
-
this._tempateService.exportCxExcelByCodePromise({ code: job._code, data: JSON.stringify(job._data), fileName: job._fileName })
|
|
116
|
-
.then(file => {
|
|
117
|
-
job._status = this.statuses.Success;
|
|
118
|
-
job._binaryFile = file;
|
|
119
|
-
if (this.autoDownload) {
|
|
120
|
-
this.download(job);
|
|
121
|
-
}
|
|
122
|
-
}).catch((err) => __awaiter(this, void 0, void 0, function* () {
|
|
123
|
-
job._status = this.statuses.Error;
|
|
124
|
-
const errorText = yield err.error.text();
|
|
125
|
-
this._crudService.processErrorResponse(JSON.parse(errorText || ''));
|
|
126
|
-
}));
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
ExportWithSignalR(job) {
|
|
130
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
131
|
-
const topic = this._commonService.guid();
|
|
132
|
-
job._uniqueKey = topic;
|
|
133
|
-
this._signalRService.start(this.hub, topic, (message) => {
|
|
134
|
-
var rs = JSON.parse(message);
|
|
135
|
-
if (rs.success) {
|
|
136
|
-
job._status = this.statuses.Success;
|
|
137
|
-
job._fileId = rs.data;
|
|
138
|
-
if (this.autoDownload) {
|
|
139
|
-
this.download(job);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
job._status = this.statuses.Error;
|
|
144
|
-
this._crudService.processErrorResponse(rs);
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
this._tempateService.ExportCxExcelByCodeWithSignalR({ code: job._code, data: JSON.stringify(job._data), fileName: job._fileName, topic: topic })
|
|
148
|
-
.then(rs => {
|
|
149
|
-
if (!rs.success) {
|
|
150
|
-
job._status = this.statuses.Error;
|
|
151
|
-
this._crudService.processErrorResponse(rs);
|
|
152
|
-
}
|
|
153
|
-
}).catch((err) => __awaiter(this, void 0, void 0, function* () {
|
|
154
|
-
job._status = this.statuses.Error;
|
|
155
|
-
this._crudService.processErrorResponse(err.error);
|
|
156
|
-
}));
|
|
157
|
-
;
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
ExportCxExcelByCodeWithHPS(job) {
|
|
161
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
162
|
-
this._highPerformanceService.createProcess(this.queueName, (arrMessage) => {
|
|
163
|
-
var message = arrMessage.pop();
|
|
164
|
-
var rs = JSON.parse(message);
|
|
165
|
-
if (rs.success) {
|
|
166
|
-
job._status = this.statuses.Success;
|
|
167
|
-
job._fileId = rs.data;
|
|
168
|
-
if (this.autoDownload) {
|
|
169
|
-
this._fileService.downloadFile(job._fileId);
|
|
170
|
-
job._status = this.statuses.Downloaded;
|
|
171
|
-
job._fileId = null;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
job._status = this.statuses.Error;
|
|
176
|
-
this._crudService.processErrorResponse(rs);
|
|
177
|
-
}
|
|
178
|
-
}).then(rs => {
|
|
179
|
-
job._uniqueKey = rs;
|
|
180
|
-
this._tempateService.ExportCxExcelByCodeWithHPS({
|
|
181
|
-
code: job._code,
|
|
182
|
-
data: JSON.stringify(job._data),
|
|
183
|
-
fileName: job._fileName,
|
|
184
|
-
topic: this.queueName,
|
|
185
|
-
uniqueKey: job._uniqueKey
|
|
186
|
-
}).then(rs => {
|
|
187
|
-
if (!rs.success) {
|
|
188
|
-
job._status = this.statuses.Error;
|
|
189
|
-
this._crudService.processErrorResponse(rs);
|
|
190
|
-
}
|
|
191
|
-
}, err => {
|
|
192
|
-
job._status = this.statuses.Error;
|
|
193
|
-
console.log("Lỗi gọi api server export");
|
|
194
|
-
});
|
|
195
|
-
}, err => {
|
|
196
|
-
job._status = this.statuses.Error;
|
|
197
|
-
console.log("Lỗi gọi HPS service :(");
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
download(job) {
|
|
202
|
-
if (job._status == this.statuses.Downloaded) {
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
if (job._fileId) {
|
|
206
|
-
this._fileService.downloadFile(job._fileId, false, job._fileName);
|
|
207
|
-
}
|
|
208
|
-
else if (job._binaryFile) {
|
|
209
|
-
FileSaver.saveAs(job._binaryFile, job._fileName);
|
|
210
|
-
}
|
|
211
|
-
job._status = this.statuses.Downloaded;
|
|
212
|
-
job._binaryFile = null;
|
|
213
|
-
job._fileId = null;
|
|
214
|
-
}
|
|
215
|
-
showQueue() {
|
|
216
|
-
let show = this._queue && this._queue.length > 0;
|
|
217
|
-
return show;
|
|
218
|
-
}
|
|
219
|
-
getName(job) {
|
|
220
|
-
var name = job._fileName.length > this.maxNameLength ? `${job._fileName.substr(0, this.maxNameLength - 10)}[...]${TemplateConstant.EXCEL_EXTENSION}` : job._fileName;
|
|
221
|
-
return name;
|
|
222
|
-
}
|
|
223
|
-
cancelJob(job) {
|
|
224
|
-
let foundIndex = this._queue.findIndex(j => j._code == job._code);
|
|
225
|
-
if (foundIndex == -1) {
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
let foundJob = this._queue[foundIndex];
|
|
229
|
-
if (foundJob._status == this.statuses.Exporting) {
|
|
230
|
-
this._notifierService
|
|
231
|
-
.showConfirm('File này đang được xử lý. Bạn có muốn dừng lại?', 'Hủy xuất file')
|
|
232
|
-
.then(rs => {
|
|
233
|
-
if (!rs) {
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
let needUnsubscribe = foundJob._type == JobTypes.SingnalR && foundJob._uniqueKey;
|
|
237
|
-
if (needUnsubscribe) {
|
|
238
|
-
this._signalRService.unSubscribeViewCode(foundJob._uniqueKey, this.hub);
|
|
239
|
-
}
|
|
240
|
-
this._queue.splice(foundIndex, 1);
|
|
241
|
-
this.updatePopupHeight();
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
else if (foundJob._status != this.statuses.Exporting) {
|
|
245
|
-
this._queue.splice(foundIndex, 1);
|
|
246
|
-
this.updatePopupHeight();
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
close() {
|
|
250
|
-
var hasExporting = this._queue && this._queue.filter(item => item._status == this.statuses.Exporting).length > 0;
|
|
251
|
-
if (hasExporting) {
|
|
252
|
-
this._notifierService
|
|
253
|
-
.showConfirm('Có file đang được xử lý. Bạn có muốn dừng lại?', 'Hủy xuất file')
|
|
254
|
-
.then(rs => {
|
|
255
|
-
if (!rs) {
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
let needUnsubscribe = false;
|
|
259
|
-
this._queue.forEach(job => {
|
|
260
|
-
needUnsubscribe = job._type == JobTypes.SingnalR && job._uniqueKey;
|
|
261
|
-
if (needUnsubscribe) {
|
|
262
|
-
this._signalRService.unSubscribeViewCode(job._uniqueKey, this.hub);
|
|
263
|
-
}
|
|
264
|
-
});
|
|
265
|
-
this._queue = [];
|
|
266
|
-
this.updatePopupHeight();
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
this._queue = [];
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
updatePopupHeight() {
|
|
274
|
-
let height = (this._queue || []).length * this.itemHeight;
|
|
275
|
-
this.popupHeight = height > this.maxHeight ? this.maxHeight : height;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
ReportQueueComponent.decorators = [
|
|
279
|
-
{ type: Component, args: [{
|
|
280
|
-
selector: 'report-queue',
|
|
281
|
-
template: "<div class=\"rq-container\" *ngIf=\"showQueue()\">\n <div class=\"rq-header\">\n <div>{{header | translate}}</div>\n <div>\n\n <p-checkbox [(ngModel)]=\"autoDownload\" binary=\"true\" pTooltip=\"T\u1EF1 \u0111\u1ED9ng t\u1EA3i\" tooltipPosition=\"left\">\n </p-checkbox>\n\n <a href=\"javascript:;\" (click)=\"toggleExpand()\" pTooltip=\"{{expand ? 'Thu g\u1ECDn' : 'M\u1EDF r\u1ED9ng'}}\"\n tooltipPosition=\"left\">\n <i class=\"fas\" [ngClass]=\"{'fa-compress' : expand, 'fa-expand': !expand}\"></i>\n </a>\n\n <a href=\"javascript:;\" (click)=\"close()\" pTooltip=\"\u0110\u00F3ng\">\n <i class=\"fas fa-times\"></i>\n </a>\n </div>\n </div>\n <div class=\"rq-body\" *ngIf=\"expand\">\n <tn-custom-scrollbar [style]=\"{'height.px': popupHeight}\" #scrollbar>\n <div class=\"re-job\" *ngFor=\"let job of _queue\">\n <div class=\"re-job-title\">\n <div>{{getName(job)}}</div>\n <div>\n <a href=\"javascript:;\" (click)=\"cancelJob(job)\">\n <i class=\"fas fa-times\"></i>\n </a>\n </div>\n </div>\n <div class=\"re-job-result\"\n [ngClass]=\"{'job-success': job._status == statuses.Success, 'job-error': job._status == statuses.Error, 'job-exporting' : job._status == statuses.Exporting, 'job-downloaded': job._status == statuses.Downloaded}\">\n <span *ngIf=\"job._status != statuses.Success && job._status != statuses.Exporting\">\n {{dicStatus.get(job._status) | translate}}\n </span>\n\n <span *ngIf=\"job._status == statuses.Exporting\">\n <div class=\"loader\"></div>\n {{dicStatus.get(job._status) | translate}}\n </span>\n\n <a href=\"javascript:;\" (click)=\"download(job)\" class=\"job-success\"\n *ngIf=\"job._status == statuses.Success\">\n <i class=\"fas fa-download\"></i> {{dicStatus.get(job._status) | translate}}\n </a>\n </div>\n </div>\n </tn-custom-scrollbar>\n </div>\n</div>\n",
|
|
282
|
-
styles: ["::ng-deep .rq-container{width:350px;border:1px solid #3192e1;border-radius:3px;background-color:#fff}::ng-deep .rq-container .rq-header{background-color:#3192e1;padding:5px 10px;display:flex;border-radius:3px 3px 0 0;color:#fff;font-weight:400;font-size:15px}::ng-deep .rq-container .rq-header>div:first-child{flex-grow:1}::ng-deep .rq-container .rq-header>div:last-child>a{font-weight:200;margin-left:10px;color:#fff}::ng-deep .rq-container .rq-header>div:last-child>a>i{font-size:13px}::ng-deep .rq-container .rq-header>div:last-child .ui-chkbox-box{width:14px;height:14px;margin-top:-2px}::ng-deep .rq-container .rq-header>div:last-child .ui-chkbox-icon{font-size:13px;line-height:13px}::ng-deep .rq-container .rq-body .re-job{padding:6px 10px;display:flex;flex-direction:column}::ng-deep .rq-container .rq-body .re-job:first-child{padding-top:6px}::ng-deep .rq-container .rq-body .re-job .re-job-title{display:flex;font-size:13px}::ng-deep .rq-container .rq-body .re-job .re-job-title>div:first-child{flex-grow:1;padding-bottom:3px}::ng-deep .rq-container .rq-body .re-job .re-job-title>div a{color:#3192e1}::ng-deep .rq-container .rq-body .re-job .re-job-result{font-size:11px}::ng-deep .rq-container .rq-body .re-job .re-job-result>span{display:flex;align-items:center;height:20px}::ng-deep .rq-container .rq-body .re-job .re-job-result.job-exporting{color:#3192e1}::ng-deep .rq-container .rq-body .re-job .re-job-result.job-exporting>span>div{margin-right:5px}::ng-deep .rq-container .rq-body .re-job .re-job-result.job-success{color:#1ab91a}::ng-deep .rq-container .rq-body .re-job .re-job-result.job-success>a>i{margin-right:2px}::ng-deep .rq-container .rq-body .re-job .re-job-result.job-error{color:#e95353}::ng-deep .rq-container .rq-body .re-job .re-job-result.job-downloaded{color:#b2b2b2}::ng-deep .loader{border-radius:50%;border:2px solid #bcdbf5;border-top-color:#3192e1;width:12px;height:12px;animation:spin 1s linear infinite;display:inline-block}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}:host{position:absolute;bottom:1px;right:2px;z-index:1000}"]
|
|
283
|
-
},] }
|
|
284
|
-
];
|
|
285
|
-
ReportQueueComponent.ctorParameters = () => [
|
|
286
|
-
{ type: NotifierService },
|
|
287
|
-
{ type: CommonService },
|
|
288
|
-
{ type: FileExplorerService },
|
|
289
|
-
{ type: TemplateService },
|
|
290
|
-
{ type: SignalRService },
|
|
291
|
-
{ type: HighPerformanceService },
|
|
292
|
-
{ type: CrudService }
|
|
293
|
-
];
|
|
294
|
-
ReportQueueComponent.propDecorators = {
|
|
295
|
-
parentDataModel: [{ type: Input }],
|
|
296
|
-
name: [{ type: Input }],
|
|
297
|
-
header: [{ type: Input }],
|
|
298
|
-
autoDownload: [{ type: Input }],
|
|
299
|
-
scrollbar: [{ type: ViewChild, args: ['scrollbar',] }]
|
|
300
|
-
};
|
|
301
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXF1ZXVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydC1xdWV1ZS9yZXBvcnQtcXVldWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQWEsT0FBTyxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBT2xHLE1BQU0sT0FBTyxvQkFBb0I7SUFrQjdCLFlBQ1ksZ0JBQWlDLEVBQ2pDLGNBQTZCLEVBQzdCLFlBQWlDLEVBQ2pDLGVBQWdDLEVBQ2hDLGVBQStCLEVBQy9CLHVCQUErQyxFQUMvQyxZQUF5QjtRQU56QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FB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USxlQUFlO1lBSGYsYUFBYTtZQU1iLG1CQUFtQjtZQURuQixlQUFlO1lBRGYsY0FBYztZQUZkLHNCQUFzQjtZQUR0QixXQUFXOzs7OEJBZ0JmLEtBQUs7bUJBQ0wsS0FBSztxQkFDTCxLQUFLOzJCQUNMLEtBQUs7d0JBQ0wsU0FBUyxTQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb25zdGFudCB9IGZyb20gJy4uLy4uL2NvbmZpZ3MvY29tcG9uZW50LWNvbnRhbnRzJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBDcnVkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NydWQuc2VydmljZSc7XG5pbXBvcnQgeyBIaWdoUGVyZm9ybWFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGlnaC1wZXJmb3JtYW5jZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lnbmFsUlNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGVtcGxhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVtcGxhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGaWxlRXhwbG9yZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWV4cGxvcmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXhwb3J0Sm9iLCBKb2JJdGVtLCBKb2JUeXBlcywgUkVQT1JUX1FVRVVFX0NPTlNUQU5UIH0gZnJvbSAnLi9iYXNlLWpvYi9qb2ItaXRlbSc7XG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBUbkN1c3RvbVNjcm9sbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL3RuLWN1c3RvbS1zY3JvbGxiYXIvdG4tY3VzdG9tLXNjcm9sbGJhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3JlcG9ydC1xdWV1ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1xdWV1ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmVwb3J0LXF1ZXVlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0UXVldWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHBhcmVudERhdGFNb2RlbDogYW55O1xuICAgIEBJbnB1dCgpIG5hbWUgPSAncmVwb3J0UXVldWUnO1xuICAgIEBJbnB1dCgpIGhlYWRlciA9ICdYdeG6pXQgYsOhbyBjw6FvJztcbiAgICBASW5wdXQoKSBhdXRvRG93bmxvYWQgPSBmYWxzZTtcbiAgICBAVmlld0NoaWxkKCdzY3JvbGxiYXInKSBzY3JvbGxiYXI6IFRuQ3VzdG9tU2Nyb2xsYmFyQ29tcG9uZW50O1xuICAgIG1heE5hbWVMZW5ndGggPSA0MDtcbiAgICBleHBhbmQgPSB0cnVlO1xuICAgIHF1ZXVlTmFtZSA9ICdSRVBPUlRfUVVFVUUnO1xuICAgIGh1YiA9ICdDb21tb25IdWInO1xuXG4gICAgZGljU3RhdHVzID0gUkVQT1JUX1FVRVVFX0NPTlNUQU5ULmRpY1N0YXR1cztcbiAgICBzdGF0dXNlcyA9IFJFUE9SVF9RVUVVRV9DT05TVEFOVC5zdGF0dXNlcztcblxuICAgIF9xdWV1ZTogSm9iSXRlbVtdID0gW107XG4gICAgbWF4SGVpZ2h0ID0gMjAwO1xuICAgIGl0ZW1IZWlnaHQgPSA1MDtcbiAgICBwb3B1cEhlaWdodCA9IHRoaXMuaXRlbUhlaWdodDtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfbm90aWZpZXJTZXJ2aWNlOiBOb3RpZmllclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2ZpbGVTZXJ2aWNlOiBGaWxlRXhwbG9yZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF90ZW1wYXRlU2VydmljZTogVGVtcGxhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9zaWduYWxSU2VydmljZTogU2lnbmFsUlNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2hpZ2hQZXJmb3JtYW5jZVNlcnZpY2U6IEhpZ2hQZXJmb3JtYW5jZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NydWRTZXJ2aWNlOiBDcnVkU2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnREYXRhTW9kZWwgJiYgdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudERhdGFNb2RlbFt0aGlzLm5hbWVdID0gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZUV4cGFuZCgpIHtcbiAgICAgICAgdGhpcy5leHBhbmQgPSAhdGhpcy5leHBhbmQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGjDqm0gam9iIHbDoG8gxJHhu4MgdGjhu7FjIGhp4buHblxuICAgICAqL1xuICAgIGFzeW5jIGFkZEpvYihleHBvcnRKb2I6IEV4cG9ydEpvYikge1xuICAgICAgICB2YXIgZm91bmRJbmRleCA9IHRoaXMuX3F1ZXVlLmZpbmRJbmRleChqb2IgPT4gam9iLl9jb2RlID09IGV4cG9ydEpvYi50ZW1wbGF0ZUNvZGUgJiYgam9iLl9zdGF0dXMgPT0gdGhpcy5zdGF0dXNlcy5FeHBvcnRpbmcpO1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZyhcIkZpbGUgY8O5bmcgbG/huqFpIMSRYW5nIMSRxrDhu6NjIHjhu60gbMO9LCB0aOG7rSBs4bqhaSBzYXUga2hpIHjhu60gbMO9IHhvbmchXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGpvYiA9IG5ldyBKb2JJdGVtKGV4cG9ydEpvYi50ZW1wbGF0ZUNvZGUsIHt9LCBleHBvcnRKb2IuZmlsZU5hbWUgfHwgZXhwb3J0Sm9iLnRlbXBsYXRlQ29kZSwgdGhpcy5zdGF0dXNlcy5FeHBvcnRpbmcpO1xuICAgICAgICB0aGlzLl9xdWV1ZS5wdXNoKGpvYik7XG4gICAgICAgIHRoaXMudXBkYXRlUG9wdXBIZWlnaHQoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbGJhci5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgICB9LCAxMDApO1xuICAgICAgICB2YXIgcnNEYXRhID0gYXdhaXQgZXhwb3J0Sm9iLmRhdGFQcm9taXNlO1xuICAgICAgICBpZiAocnNEYXRhLmRhdGEgPT0gbnVsbCkge1xuICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLkVycm9yO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKHJzRGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhwb3J0Sm9iLmNiKSB7XG4gICAgICAgICAgICBqb2IuX2RhdGEgPSAoPEZ1bmN0aW9uPmV4cG9ydEpvYi5jYikocnNEYXRhLmRhdGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGV4cG9ydEpvYi5yb290TmFtZSkge1xuICAgICAgICAgICAgam9iLl9kYXRhW2V4cG9ydEpvYi5yb290TmFtZV0gPSByc0RhdGEuZGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGpvYi5fZGF0YSA9IHJzRGF0YS5kYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChleHBvcnRKb2IudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBKb2JUeXBlcy5Ob3JtYWw6XG4gICAgICAgICAgICAgICAgdGhpcy5FeHBvcnQoam9iKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgSm9iVHlwZXMuU2luZ25hbFI6XG4gICAgICAgICAgICAgICAgdGhpcy5FeHBvcnRXaXRoU2lnbmFsUihqb2IpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBKb2JUeXBlcy5NYW55OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGjDqm0gam9iIHbDoG8gxJHhu4MgdGjhu7FjIGhp4buHblxuICAgICAqICAtIHRlbXBsYXRlQ29kZTogY29kZSB0ZW1wbGF0ZSBj4bqldSBow6xuaCBiw6puIHF14bqjbiB0cuG7i1xuICAgICAqICAtIGRhdGE6IGThu68gbGnhu4d1IGV4cG9ydFxuICAgICAqICAtIGZpbGVOYW1lOiB0w6puIGPhu6dhIGZpbGUgxJHGsOG7o2MgbMawdVxuICAgICAqICAtIHVzZVNpZ25hbFI6IHRoYXkgdsOsIGfhu41pIHJlcXVlc3QgdsOgIGNo4budIMSR4bq/biBraGkgdGjhu7FjIGhp4buHbiB4b25nXG4gICAgICogICAgICB0cuG6oyB24buBIGJpbmFyeUZpbGUgdGjDrCB04bqhbyB0aeG6v24gdHLDrG5oIHJpw6puZyDEkeG7gyBleHBvcnQsIHbDoCBkw7luZyBzaWduYWxSIHRow7RuZ1xuICAgICAqICAgICAgYsOhbyBr4bq/dCBxdeG6oyBleHBvcnQsIHRy4bqjIHbhu4EgZmlsZUlkIMSR4buDIHThuqNpLlxuICAgICAqL1xuICAgIGFzeW5jIGFkZEpvYldpdGhEYXRhKFxuICAgICAgICB0ZW1wbGF0ZUNvZGU6IHN0cmluZyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgIHVzZVNpZ25hbFIgPSBmYWxzZVxuICAgICkge1xuICAgICAgICB2YXIgZm91bmRJbmRleCA9IHRoaXMuX3F1ZXVlLmZpbmRJbmRleChqb2IgPT4gam9iLl9jb2RlID09IHRlbXBsYXRlQ29kZSAmJiBqb2IuX3N0YXR1cyA9PSB0aGlzLnN0YXR1c2VzLkV4cG9ydGluZyk7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKFwiRmlsZSBjw7luZyBsb+G6oWkgxJFhbmcgxJHGsOG7o2MgeOG7rSBsw70sIHRo4butIGzhuqFpIHNhdSBraGkgeOG7rSBsw70geG9uZyFcIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgam9iID0gbmV3IEpvYkl0ZW0odGVtcGxhdGVDb2RlLCBkYXRhLCBmaWxlTmFtZSB8fCB0ZW1wbGF0ZUNvZGUsIHRoaXMuc3RhdHVzZXMuRXhwb3J0aW5nKTtcbiAgICAgICAgdGhpcy5fcXVldWUucHVzaChqb2IpO1xuICAgICAgICBpZiAodXNlU2lnbmFsUikge1xuICAgICAgICAgICAgdGhpcy5FeHBvcnRXaXRoU2lnbmFsUihqb2IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5FeHBvcnQoam9iKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIEV4cG9ydChqb2I6IEpvYkl0ZW0pIHtcbiAgICAgICAgdGhpcy5fdGVtcGF0ZVNlcnZpY2UuZXhwb3J0Q3hFeGNlbEJ5Q29kZVByb21pc2UoeyBjb2RlOiBqb2IuX2NvZGUsIGRhdGE6IEpTT04uc3RyaW5naWZ5KGpvYi5fZGF0YSksIGZpbGVOYW1lOiBqb2IuX2ZpbGVOYW1lIH0pXG4gICAgICAgICAgICAudGhlbihmaWxlID0+IHtcbiAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuU3VjY2VzcztcbiAgICAgICAgICAgICAgICBqb2IuX2JpbmFyeUZpbGUgPSBmaWxlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b0Rvd25sb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWQoam9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KS5jYXRjaChhc3luYyBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGpvYi5fc3RhdHVzID0gdGhpcy5zdGF0dXNlcy5FcnJvcjtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvclRleHQgPSBhd2FpdCBlcnIuZXJyb3IudGV4dCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKEpTT04ucGFyc2UoZXJyb3JUZXh0IHx8ICcnKSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBFeHBvcnRXaXRoU2lnbmFsUihqb2I6IEpvYkl0ZW0pIHtcbiAgICAgICAgY29uc3QgdG9waWMgPSB0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWQoKTtcbiAgICAgICAgam9iLl91bmlxdWVLZXkgPSB0b3BpYztcbiAgICAgICAgdGhpcy5fc2lnbmFsUlNlcnZpY2Uuc3RhcnQodGhpcy5odWIsIHRvcGljLCAobWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgdmFyIHJzID0gSlNPTi5wYXJzZShtZXNzYWdlKTtcbiAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLlN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgam9iLl9maWxlSWQgPSBycy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9Eb3dubG9hZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkKGpvYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuRXJyb3I7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3J1ZFNlcnZpY2UucHJvY2Vzc0Vycm9yUmVzcG9uc2UocnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl90ZW1wYXRlU2VydmljZS5FeHBvcnRDeEV4Y2VsQnlDb2RlV2l0aFNpZ25hbFIoeyBjb2RlOiBqb2IuX2NvZGUsIGRhdGE6IEpTT04uc3RyaW5naWZ5KGpvYi5fZGF0YSksIGZpbGVOYW1lOiBqb2IuX2ZpbGVOYW1lLCB0b3BpYzogdG9waWMgfSlcbiAgICAgICAgICAgIC50aGVuKHJzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLkVycm9yO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcnVkU2VydmljZS5wcm9jZXNzRXJyb3JSZXNwb25zZShycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkuY2F0Y2goYXN5bmMgZXJyID0+IHtcbiAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuRXJyb3I7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3J1ZFNlcnZpY2UucHJvY2Vzc0Vycm9yUmVzcG9uc2UoZXJyLmVycm9yKTtcbiAgICAgICAgICAgIH0pOztcbiAgICB9XG5cbiAgICBhc3luYyBFeHBvcnRDeEV4Y2VsQnlDb2RlV2l0aEhQUyhqb2I6IEpvYkl0ZW0pIHtcbiAgICAgICAgdGhpcy5faGlnaFBlcmZvcm1hbmNlU2VydmljZS5jcmVhdGVQcm9jZXNzKHRoaXMucXVldWVOYW1lLCAoYXJyTWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBhcnJNZXNzYWdlLnBvcCgpO1xuICAgICAgICAgICAgdmFyIHJzID0gSlNPTi5wYXJzZShtZXNzYWdlKTtcbiAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLlN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgam9iLl9maWxlSWQgPSBycy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9Eb3dubG9hZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWxlU2VydmljZS5kb3dubG9hZEZpbGUoam9iLl9maWxlSWQpO1xuICAgICAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuRG93bmxvYWRlZDtcbiAgICAgICAgICAgICAgICAgICAgam9iLl9maWxlSWQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLkVycm9yO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKHJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkudGhlbihycyA9PiB7XG4gICAgICAgICAgICBqb2IuX3VuaXF1ZUtleSA9IHJzO1xuXG4gICAgICAgICAgICB0aGlzLl90ZW1wYXRlU2VydmljZS5FeHBvcnRDeEV4Y2VsQnlDb2RlV2l0aEhQUyh7XG4gICAgICAgICAgICAgICAgY29kZTogam9iLl9jb2RlLFxuICAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGpvYi5fZGF0YSksXG4gICAgICAgICAgICAgICAgZmlsZU5hbWU6IGpvYi5fZmlsZU5hbWUsXG4gICAgICAgICAgICAgICAgdG9waWM6IHRoaXMucXVldWVOYW1lLFxuICAgICAgICAgICAgICAgIHVuaXF1ZUtleTogam9iLl91bmlxdWVLZXlcbiAgICAgICAgICAgIH0pLnRoZW4ocnMgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcnMuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKHJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGpvYi5fc3RhdHVzID0gdGhpcy5zdGF0dXNlcy5FcnJvcjtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkzhu5dpIGfhu41pIGFwaSBzZXJ2ZXIgZXhwb3J0XCIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGpvYi5fc3RhdHVzID0gdGhpcy5zdGF0dXNlcy5FcnJvcjtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkzhu5dpIGfhu41pIEhQUyBzZXJ2aWNlIDooXCIpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZG93bmxvYWQoam9iKSB7XG4gICAgICAgIGlmIChqb2IuX3N0YXR1cyA9PSB0aGlzLnN0YXR1c2VzLkRvd25sb2FkZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoam9iLl9maWxlSWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpbGVTZXJ2aWNlLmRvd25sb2FkRmlsZShqb2IuX2ZpbGVJZCwgZmFsc2UsIGpvYi5fZmlsZU5hbWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGpvYi5fYmluYXJ5RmlsZSkge1xuICAgICAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhqb2IuX2JpbmFyeUZpbGUsIGpvYi5fZmlsZU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGpvYi5fc3RhdHVzID0gdGhpcy5zdGF0dXNlcy5Eb3dubG9hZGVkO1xuICAgICAgICBqb2IuX2JpbmFyeUZpbGUgPSBudWxsO1xuICAgICAgICBqb2IuX2ZpbGVJZCA9IG51bGw7XG4gICAgfVxuXG4gICAgc2hvd1F1ZXVlKCkge1xuICAgICAgICBsZXQgc2hvdyA9IHRoaXMuX3F1ZXVlICYmIHRoaXMuX3F1ZXVlLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgcmV0dXJuIHNob3c7XG4gICAgfVxuXG4gICAgZ2V0TmFtZShqb2IpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBqb2IuX2ZpbGVOYW1lLmxlbmd0aCA+IHRoaXMubWF4TmFtZUxlbmd0aCA/IGAke2pvYi5fZmlsZU5hbWUuc3Vic3RyKDAsIHRoaXMubWF4TmFtZUxlbmd0aCAtIDEwKX1bLi4uXSR7VGVtcGxhdGVDb25zdGFudC5FWENFTF9FWFRFTlNJT059YCA6IGpvYi5fZmlsZU5hbWU7XG4gICAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cblxuICAgIGNhbmNlbEpvYihqb2IpIHtcbiAgICAgICAgbGV0IGZvdW5kSW5kZXggPSB0aGlzLl9xdWV1ZS5maW5kSW5kZXgoaiA9PiBqLl9jb2RlID09IGpvYi5fY29kZSk7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZm91bmRKb2IgPSB0aGlzLl9xdWV1ZVtmb3VuZEluZGV4XTtcbiAgICAgICAgaWYgKGZvdW5kSm9iLl9zdGF0dXMgPT0gdGhpcy5zdGF0dXNlcy5FeHBvcnRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZVxuICAgICAgICAgICAgICAgIC5zaG93Q29uZmlybSgnRmlsZSBuw6B5IMSRYW5nIMSRxrDhu6NjIHjhu60gbMO9LiBC4bqhbiBjw7MgbXXhu5FuIGThu6tuZyBs4bqhaT8nLCAnSOG7p3kgeHXhuqV0IGZpbGUnKVxuICAgICAgICAgICAgICAgIC50aGVuKHJzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFycykgeyByZXR1cm47IH1cbiAgICAgICAgICAgICAgICAgICAgbGV0IG5lZWRVbnN1YnNjcmliZSA9IGZvdW5kSm9iLl90eXBlID09IEpvYlR5cGVzLlNpbmduYWxSICYmIGZvdW5kSm9iLl91bmlxdWVLZXk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZWVkVW5zdWJzY3JpYmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NpZ25hbFJTZXJ2aWNlLnVuU3Vic2NyaWJlVmlld0NvZGUoZm91bmRKb2IuX3VuaXF1ZUtleSwgdGhpcy5odWIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlLnNwbGljZShmb3VuZEluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQb3B1cEhlaWdodCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGZvdW5kSm9iLl9zdGF0dXMgIT0gdGhpcy5zdGF0dXNlcy5FeHBvcnRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3F1ZXVlLnNwbGljZShmb3VuZEluZGV4LCAxKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG9wdXBIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICB2YXIgaGFzRXhwb3J0aW5nID0gdGhpcy5fcXVldWUgJiYgdGhpcy5fcXVldWUuZmlsdGVyKGl0ZW0gPT4gaXRlbS5fc3RhdHVzID09IHRoaXMuc3RhdHVzZXMuRXhwb3J0aW5nKS5sZW5ndGggPiAwO1xuXG4gICAgICAgIGlmIChoYXNFeHBvcnRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZVxuICAgICAgICAgICAgICAgIC5zaG93Q29uZmlybSgnQ8OzIGZpbGUgxJFhbmcgxJHGsOG7o2MgeOG7rSBsw70uIELhuqFuIGPDsyBtdeG7kW4gZOG7q25nIGzhuqFpPycsICdI4buneSB4deG6pXQgZmlsZScpXG4gICAgICAgICAgICAgICAgLnRoZW4ocnMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJzKSB7IHJldHVybjsgfVxuICAgICAgICAgICAgICAgICAgICBsZXQgbmVlZFVuc3Vic2NyaWJlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlLmZvckVhY2goam9iID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRVbnN1YnNjcmliZSA9IGpvYi5fdHlwZSA9PSBKb2JUeXBlcy5TaW5nbmFsUiAmJiBqb2IuX3VuaXF1ZUtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZWVkVW5zdWJzY3JpYmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaWduYWxSU2VydmljZS51blN1YnNjcmliZVZpZXdDb2RlKGpvYi5fdW5pcXVlS2V5LCB0aGlzLmh1Yik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9xdWV1ZSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvcHVwSGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9xdWV1ZSA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlUG9wdXBIZWlnaHQoKSB7XG4gICAgICAgIGxldCBoZWlnaHQgPSAodGhpcy5fcXVldWUgfHwgW10pLmxlbmd0aCAqIHRoaXMuaXRlbUhlaWdodDtcbiAgICAgICAgdGhpcy5wb3B1cEhlaWdodCA9IGhlaWdodCA+IHRoaXMubWF4SGVpZ2h0ID8gdGhpcy5tYXhIZWlnaHQgOiBoZWlnaHQ7XG4gICAgfVxufVxuXG4iXX0=
|