tnx-shared 5.3.193 → 5.3.194

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.
@@ -32912,573 +32912,6 @@ CommonLibComponent.propDecorators = {
32912
32912
  cancelButton: [{ type: ViewChild, args: ['cancelButton',] }]
32913
32913
  };
32914
32914
 
32915
- class HighPerformanceService {
32916
- constructor(_signalrService, _commonService, _httpClient, _moduleConfigService) {
32917
- this._signalrService = _signalrService;
32918
- this._commonService = _commonService;
32919
- this._httpClient = _httpClient;
32920
- this._moduleConfigService = _moduleConfigService;
32921
- }
32922
- createProcess(queueName, callBackOnMessage = null, data = null, returnSequenceNumber = false) {
32923
- const internalClientKey = this._commonService.guid();
32924
- const model = {
32925
- queueName,
32926
- data,
32927
- clientKey: internalClientKey
32928
- };
32929
- this._signalrService.start(null, internalClientKey, (data) => {
32930
- if (callBackOnMessage) {
32931
- callBackOnMessage(data);
32932
- }
32933
- this._signalrService.unSubscribeViewCode(null, internalClientKey);
32934
- });
32935
- return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
32936
- this.env = this._moduleConfigService.getConfig().environment;
32937
- const highPerformanceEndpoint = `${this.env.apiDomain.highPerformanceEndpoint}/HighPerformance/DoWork?returnSequenceNumber=${returnSequenceNumber}`;
32938
- try {
32939
- const rs = yield this._httpClient.post(highPerformanceEndpoint, model).toPromise();
32940
- if (rs.success) {
32941
- resolve(rs.data);
32942
- }
32943
- }
32944
- catch (_a) {
32945
- }
32946
- resolve(null);
32947
- }));
32948
- }
32949
- cancelProcess(queueName, uniqueKey) {
32950
- return __awaiter(this, void 0, void 0, function* () {
32951
- try {
32952
- const highPerformanceEndpoint = `${this.env.apiDomain.highPerformanceEndpoint}/HighPerformance/CancelWork?queueName=${queueName}&uniqueKey=${uniqueKey}`;
32953
- const rs = yield this._httpClient.post(highPerformanceEndpoint, {}).toPromise();
32954
- if (rs.success) {
32955
- return rs.data;
32956
- }
32957
- }
32958
- catch (_a) {
32959
- }
32960
- return false;
32961
- });
32962
- }
32963
- }
32964
- HighPerformanceService.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighPerformanceService_Factory() { return new HighPerformanceService(i0.ɵɵinject(SignalRService), i0.ɵɵinject(CommonService), i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(ModuleConfigService)); }, token: HighPerformanceService, providedIn: "root" });
32965
- HighPerformanceService.decorators = [
32966
- { type: Injectable, args: [{
32967
- providedIn: 'root'
32968
- },] }
32969
- ];
32970
- HighPerformanceService.ctorParameters = () => [
32971
- { type: SignalRService },
32972
- { type: CommonService },
32973
- { type: HttpClient },
32974
- { type: ModuleConfigService }
32975
- ];
32976
-
32977
- class TemplateService {
32978
- constructor(_moduleConfigService, _httpClient, _printService, _fileService, _notifierService, _crudService, _commonService) {
32979
- this._httpClient = _httpClient;
32980
- this._printService = _printService;
32981
- this._fileService = _fileService;
32982
- this._notifierService = _notifierService;
32983
- this._crudService = _crudService;
32984
- this._commonService = _commonService;
32985
- this._moduleConfig = _moduleConfigService.getConfig();
32986
- this.environment = this._moduleConfig.environment;
32987
- this.serviceUri = `${this.environment.apiDomain.templateEndpoint}/template`;
32988
- }
32989
- laTexToBase64Image(laTex, font = 54) {
32990
- const api = `${this.serviceUri}/LatexToBase64`;
32991
- return this._httpClient.post(api, { laTex, font }).toPromise();
32992
- }
32993
- /**
32994
- * Description: Xuất file sử dụng thư viện CX, xuất xong tự động mở popup để lưu file.
32995
- */
32996
- exportCxExcelByCode(model) {
32997
- const url = `${this.serviceUri}/ExportCxExcelByCode`;
32998
- this.setFileInfo(model);
32999
- return this._httpClient
33000
- .post(url, model, { responseType: 'blob' })
33001
- .toPromise()
33002
- .then(res => {
33003
- FileSaver.saveAs(res, this.getFullFileName(model.fileName || model.code));
33004
- }).catch((err) => __awaiter(this, void 0, void 0, function* () {
33005
- const errorText = yield err.error.text();
33006
- this._crudService.processErrorResponse(JSON.parse(errorText || ''));
33007
- }));
33008
- }
33009
- exportManyCxExcelByCode(model) {
33010
- const url = `${this.serviceUri}/ExportManyCxExcelByCode`;
33011
- this.setManyFileInfo(model);
33012
- return this._httpClient
33013
- .post(url, model)
33014
- .toPromise()
33015
- .then(res => {
33016
- if (res.success) {
33017
- this._fileService.downloadFolder(res.data.folderId);
33018
- }
33019
- else {
33020
- this._crudService.processErrorResponse(res);
33021
- }
33022
- }).catch((err) => __awaiter(this, void 0, void 0, function* () {
33023
- const errorText = yield err.error.text();
33024
- this._crudService.processErrorResponse(JSON.parse(errorText || ''));
33025
- }));
33026
- }
33027
- getFullFileName(fileName, extension = TemplateConstant.EXCEL_EXTENSION) {
33028
- return `${fileName}${extension}`;
33029
- }
33030
- /**
33031
- * Description: Export sử dung ClosedXml.Report (Cx) với signalR, sử dụng cho file dữ liệu lớn.
33032
- * Param: model chứa
33033
- * - code : code của template cấu hình bên Quản trị > Biểu mẫu > Biểu mẫu excel.
33034
- * - data : object chứa dữ liệu đã chuyền thành dạng json.
33035
- * - fileName: tên file sau khi export.
33036
- * - topic: guid dùng để subscribe.
33037
- */
33038
- ExportCxExcelByCodeWithSignalR(model) {
33039
- return __awaiter(this, void 0, void 0, function* () {
33040
- const url = `${this.serviceUri}/ExportCxExcelByCodeWithSignalR`;
33041
- return this._httpClient.post(url, model)
33042
- .toPromise();
33043
- });
33044
- }
33045
- /**
33046
- * Description: Export sử dung ClosedXml.Report (Cx) với HighPerformanceService, sử dụng cho file dữ liệu lớn.
33047
- * Param: model chứa
33048
- * - code : code của template cấu hình bên Quản trị > Biểu mẫu > Biểu mẫu excel.
33049
- * - data : object chứa dữ liệu đã chuyền thành dạng json.
33050
- * - fileName: tên file sau khi export.
33051
- * - queueName: queue của topic.
33052
- * - uniqueKey: unique key cho task.
33053
- */
33054
- ExportCxExcelByCodeWithHPS(model) {
33055
- return __awaiter(this, void 0, void 0, function* () {
33056
- const url = `${this.serviceUri}/ExportWithHighPerformanceService`;
33057
- return this._httpClient.post(url, model)
33058
- .toPromise();
33059
- });
33060
- }
33061
- exportCxExcelByCodePromise(model) {
33062
- return __awaiter(this, void 0, void 0, function* () {
33063
- const url = `${this.serviceUri}/ExportCxExcelByCode`;
33064
- return this._httpClient
33065
- .post(url, model, { responseType: 'blob' })
33066
- .toPromise();
33067
- });
33068
- }
33069
- fillTemplateByCodeAndGetPdf(templateCode, data, onLoadingDataPdf = null, onEndLoadingDataPdf = null) {
33070
- const url = `${this.serviceUri}/fillWordByTemplateCode/${templateCode}?isPrint=true`;
33071
- return this._httpClient
33072
- .post(url, data)
33073
- .toPromise().then(res => {
33074
- if (res.data) {
33075
- this._printService.printBase64Pdf(res.data, onLoadingDataPdf, onEndLoadingDataPdf);
33076
- }
33077
- });
33078
- }
33079
- fillWordByTemplateCodeMultiData(templateCode, data, onLoadingDataPdf = null, onEndLoadingDataPdf = null) {
33080
- const url = `${this.serviceUri}/fillWordByTemplateCodeMultiData/${templateCode}?isPrint=true`;
33081
- return this._httpClient
33082
- .post(url, data)
33083
- .toPromise().then(res => {
33084
- if (res.data) {
33085
- this._printService.printBase64Pdf(res.data, onLoadingDataPdf, onEndLoadingDataPdf);
33086
- }
33087
- });
33088
- }
33089
- setFileInfo(model) {
33090
- model.data = model.data ? model.data : JSON.stringify(model.dataObject);
33091
- delete model.dataObject;
33092
- }
33093
- setManyFileInfo(manyModel) {
33094
- let hasModel = manyModel && manyModel.lstFileInfo && manyModel.lstFileInfo.length;
33095
- if (!hasModel) {
33096
- return;
33097
- }
33098
- manyModel.lstFileInfo.forEach(fileInfo => {
33099
- this.setFileInfo(fileInfo);
33100
- fileInfo.fileName = `${fileInfo.fileName}_${this._commonService.guid()}.${TemplateConstant.EXCEL_EXTENSION}`;
33101
- });
33102
- }
33103
- /**
33104
- * Export dữ liệu không dùng template.
33105
- */
33106
- exportCxExcel(model) {
33107
- const url = `${this.serviceUri}/ExportCxExcel`;
33108
- return this._httpClient
33109
- .post(url, model, { responseType: 'blob' })
33110
- .toPromise()
33111
- .then(res => {
33112
- FileSaver.saveAs(res, this.getFullFileName(model.fileName || 'Export'));
33113
- }).catch((err) => __awaiter(this, void 0, void 0, function* () {
33114
- const errorText = yield err.error.text();
33115
- this._crudService.processErrorResponse(JSON.parse(errorText || ''));
33116
- }));
33117
- }
33118
- exportCxExcelPromise(model) {
33119
- return __awaiter(this, void 0, void 0, function* () {
33120
- const url = `${this.serviceUri}/ExportCxExcel`;
33121
- return this._httpClient
33122
- .post(url, model, { responseType: 'blob' })
33123
- .toPromise();
33124
- });
33125
- }
33126
- }
33127
- TemplateService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TemplateService_Factory() { return new TemplateService(i0.ɵɵinject(ModuleConfigService), i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(PrintService), i0.ɵɵinject(FileExplorerService), i0.ɵɵinject(NotifierService), i0.ɵɵinject(CrudService), i0.ɵɵinject(CommonService)); }, token: TemplateService, providedIn: "root" });
33128
- TemplateService.decorators = [
33129
- { type: Injectable, args: [{
33130
- providedIn: 'root'
33131
- },] }
33132
- ];
33133
- TemplateService.ctorParameters = () => [
33134
- { type: ModuleConfigService },
33135
- { type: HttpClient },
33136
- { type: PrintService },
33137
- { type: FileExplorerService },
33138
- { type: NotifierService },
33139
- { type: CrudService },
33140
- { type: CommonService }
33141
- ];
33142
-
33143
- class JobItem {
33144
- constructor(code, data, fileName = 'BaoCao', status = REPORT_QUEUE_CONSTANT.statuses.Waiting) {
33145
- // Loại export.
33146
- this._type = JobTypes.SingnalR;
33147
- this._code = code;
33148
- const datepipe = new DatePipe('en-US');
33149
- let formattedDate = datepipe.transform(new Date(), 'ddMMyyyy_hhmmss');
33150
- this._fileName = `${fileName}_${formattedDate}${TemplateConstant.EXCEL_EXTENSION}`;
33151
- this._data = data || {};
33152
- this._status = status;
33153
- }
33154
- }
33155
- class REPORT_QUEUE_CONSTANT {
33156
- }
33157
- REPORT_QUEUE_CONSTANT.statuses = {
33158
- Waiting: 1,
33159
- Exporting: 2,
33160
- Success: 3,
33161
- Error: 4,
33162
- Downloaded: 5
33163
- };
33164
- REPORT_QUEUE_CONSTANT.dicStatus = new SimpleDictionary([
33165
- new SimpleDicItem(REPORT_QUEUE_CONSTANT.statuses.Waiting, 'Chờ để xử lý'),
33166
- new SimpleDicItem(REPORT_QUEUE_CONSTANT.statuses.Exporting, 'Đang xử lý'),
33167
- new SimpleDicItem(REPORT_QUEUE_CONSTANT.statuses.Success, 'Tải xuống'),
33168
- new SimpleDicItem(REPORT_QUEUE_CONSTANT.statuses.Error, 'Xuất file chưa thành công'),
33169
- new SimpleDicItem(REPORT_QUEUE_CONSTANT.statuses.Downloaded, 'Đã tải'),
33170
- ]);
33171
- var JobTypes;
33172
- (function (JobTypes) {
33173
- JobTypes[JobTypes["Normal"] = 1] = "Normal";
33174
- JobTypes[JobTypes["SingnalR"] = 2] = "SingnalR";
33175
- 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.
33176
- })(JobTypes || (JobTypes = {}));
33177
- class ExportJob {
33178
- constructor(templateCode, // code template cấu hình bên quản trị
33179
- dataPromise, // promise dùng để lấy dữ liệu, trả về dạng ResponseResult
33180
- fileName, // tên của file được lưu
33181
- rootName = '', // tên thuộc tính của lst dữ liệu ngoài cùng
33182
- cb = null, // dùng để xử lý dữ liệu sau khi lấy xong
33183
- type = JobTypes.Normal // Loại export.
33184
- ) {
33185
- this.templateCode = templateCode;
33186
- this.dataPromise = dataPromise;
33187
- this.fileName = fileName;
33188
- this.rootName = rootName;
33189
- this.cb = cb;
33190
- this.type = type;
33191
- }
33192
- }
33193
-
33194
- class ReportQueueComponent {
33195
- constructor(_notifierService, _commonService, _fileService, _tempateService, _signalRService, _highPerformanceService, _crudService) {
33196
- this._notifierService = _notifierService;
33197
- this._commonService = _commonService;
33198
- this._fileService = _fileService;
33199
- this._tempateService = _tempateService;
33200
- this._signalRService = _signalRService;
33201
- this._highPerformanceService = _highPerformanceService;
33202
- this._crudService = _crudService;
33203
- this.name = 'reportQueue';
33204
- this.header = 'Xuất báo cáo';
33205
- this.autoDownload = false;
33206
- this.maxNameLength = 40;
33207
- this.expand = true;
33208
- this.queueName = 'REPORT_QUEUE';
33209
- this.hub = 'CommonHub';
33210
- this.dicStatus = REPORT_QUEUE_CONSTANT.dicStatus;
33211
- this.statuses = REPORT_QUEUE_CONSTANT.statuses;
33212
- this._queue = [];
33213
- this.maxHeight = 200;
33214
- this.itemHeight = 50;
33215
- this.popupHeight = this.itemHeight;
33216
- }
33217
- ngOnInit() {
33218
- if (this.parentDataModel && this.name) {
33219
- this.parentDataModel[this.name] = this;
33220
- }
33221
- }
33222
- toggleExpand() {
33223
- this.expand = !this.expand;
33224
- }
33225
- /**
33226
- * Thêm job vào để thực hiện
33227
- */
33228
- addJob(exportJob) {
33229
- return __awaiter(this, void 0, void 0, function* () {
33230
- var foundIndex = this._queue.findIndex(job => job._code == exportJob.templateCode && job._status == this.statuses.Exporting);
33231
- if (foundIndex !== -1) {
33232
- this._notifierService.showWarning("File cùng loại đang được xử lý, thử lại sau khi xử lý xong!");
33233
- return;
33234
- }
33235
- var job = new JobItem(exportJob.templateCode, {}, exportJob.fileName || exportJob.templateCode, this.statuses.Exporting);
33236
- this._queue.push(job);
33237
- this.updatePopupHeight();
33238
- setTimeout(() => {
33239
- this.scrollbar.scrollToBottom();
33240
- }, 100);
33241
- var rsData = yield exportJob.dataPromise;
33242
- if (rsData.data == null) {
33243
- job._status = this.statuses.Error;
33244
- return this._crudService.processErrorResponse(rsData);
33245
- }
33246
- if (exportJob.cb) {
33247
- job._data = exportJob.cb(rsData.data);
33248
- }
33249
- else if (exportJob.rootName) {
33250
- job._data[exportJob.rootName] = rsData.data;
33251
- }
33252
- else {
33253
- job._data = rsData.data;
33254
- }
33255
- switch (exportJob.type) {
33256
- case JobTypes.Normal:
33257
- this.Export(job);
33258
- break;
33259
- case JobTypes.SingnalR:
33260
- this.ExportWithSignalR(job);
33261
- break;
33262
- case JobTypes.Many:
33263
- break;
33264
- }
33265
- });
33266
- }
33267
- /**
33268
- * Thêm job vào để thực hiện
33269
- * - templateCode: code template cấu hình bên quản trị
33270
- * - data: dữ liệu export
33271
- * - fileName: tên của file được lưu
33272
- * - useSignalR: thay vì gọi request và chờ đến khi thực hiện xong
33273
- * trả về binaryFile thì tạo tiến trình riêng để export, và dùng signalR thông
33274
- * báo kết quả export, trả về fileId để tải.
33275
- */
33276
- addJobWithData(templateCode, data, fileName, useSignalR = false) {
33277
- return __awaiter(this, void 0, void 0, function* () {
33278
- var foundIndex = this._queue.findIndex(job => job._code == templateCode && job._status == this.statuses.Exporting);
33279
- if (foundIndex !== -1) {
33280
- this._notifierService.showWarning("File cùng loại đang được xử lý, thử lại sau khi xử lý xong!");
33281
- return;
33282
- }
33283
- var job = new JobItem(templateCode, data, fileName || templateCode, this.statuses.Exporting);
33284
- this._queue.push(job);
33285
- if (useSignalR) {
33286
- this.ExportWithSignalR(job);
33287
- }
33288
- else {
33289
- this.Export(job);
33290
- }
33291
- });
33292
- }
33293
- Export(job) {
33294
- return __awaiter(this, void 0, void 0, function* () {
33295
- this._tempateService.exportCxExcelByCodePromise({ code: job._code, data: JSON.stringify(job._data), fileName: job._fileName })
33296
- .then(file => {
33297
- job._status = this.statuses.Success;
33298
- job._binaryFile = file;
33299
- if (this.autoDownload) {
33300
- this.download(job);
33301
- }
33302
- }).catch((err) => __awaiter(this, void 0, void 0, function* () {
33303
- job._status = this.statuses.Error;
33304
- const errorText = yield err.error.text();
33305
- this._crudService.processErrorResponse(JSON.parse(errorText || ''));
33306
- }));
33307
- });
33308
- }
33309
- ExportWithSignalR(job) {
33310
- return __awaiter(this, void 0, void 0, function* () {
33311
- const topic = this._commonService.guid();
33312
- job._uniqueKey = topic;
33313
- this._signalRService.start(this.hub, topic, (message) => {
33314
- var rs = JSON.parse(message);
33315
- if (rs.success) {
33316
- job._status = this.statuses.Success;
33317
- job._fileId = rs.data;
33318
- if (this.autoDownload) {
33319
- this.download(job);
33320
- }
33321
- }
33322
- else {
33323
- job._status = this.statuses.Error;
33324
- this._crudService.processErrorResponse(rs);
33325
- }
33326
- });
33327
- this._tempateService.ExportCxExcelByCodeWithSignalR({ code: job._code, data: JSON.stringify(job._data), fileName: job._fileName, topic: topic })
33328
- .then(rs => {
33329
- if (!rs.success) {
33330
- job._status = this.statuses.Error;
33331
- this._crudService.processErrorResponse(rs);
33332
- }
33333
- }).catch((err) => __awaiter(this, void 0, void 0, function* () {
33334
- job._status = this.statuses.Error;
33335
- this._crudService.processErrorResponse(err.error);
33336
- }));
33337
- ;
33338
- });
33339
- }
33340
- ExportCxExcelByCodeWithHPS(job) {
33341
- return __awaiter(this, void 0, void 0, function* () {
33342
- this._highPerformanceService.createProcess(this.queueName, (arrMessage) => {
33343
- var message = arrMessage.pop();
33344
- var rs = JSON.parse(message);
33345
- if (rs.success) {
33346
- job._status = this.statuses.Success;
33347
- job._fileId = rs.data;
33348
- if (this.autoDownload) {
33349
- this._fileService.downloadFile(job._fileId);
33350
- job._status = this.statuses.Downloaded;
33351
- job._fileId = null;
33352
- }
33353
- }
33354
- else {
33355
- job._status = this.statuses.Error;
33356
- this._crudService.processErrorResponse(rs);
33357
- }
33358
- }).then(rs => {
33359
- job._uniqueKey = rs;
33360
- this._tempateService.ExportCxExcelByCodeWithHPS({
33361
- code: job._code,
33362
- data: JSON.stringify(job._data),
33363
- fileName: job._fileName,
33364
- topic: this.queueName,
33365
- uniqueKey: job._uniqueKey
33366
- }).then(rs => {
33367
- if (!rs.success) {
33368
- job._status = this.statuses.Error;
33369
- this._crudService.processErrorResponse(rs);
33370
- }
33371
- }, err => {
33372
- job._status = this.statuses.Error;
33373
- console.log("Lỗi gọi api server export");
33374
- });
33375
- }, err => {
33376
- job._status = this.statuses.Error;
33377
- console.log("Lỗi gọi HPS service :(");
33378
- });
33379
- });
33380
- }
33381
- download(job) {
33382
- if (job._status == this.statuses.Downloaded) {
33383
- return;
33384
- }
33385
- if (job._fileId) {
33386
- this._fileService.downloadFile(job._fileId, false, job._fileName);
33387
- }
33388
- else if (job._binaryFile) {
33389
- FileSaver.saveAs(job._binaryFile, job._fileName);
33390
- }
33391
- job._status = this.statuses.Downloaded;
33392
- job._binaryFile = null;
33393
- job._fileId = null;
33394
- }
33395
- showQueue() {
33396
- let show = this._queue && this._queue.length > 0;
33397
- return show;
33398
- }
33399
- getName(job) {
33400
- var name = job._fileName.length > this.maxNameLength ? `${job._fileName.substr(0, this.maxNameLength - 10)}[...]${TemplateConstant.EXCEL_EXTENSION}` : job._fileName;
33401
- return name;
33402
- }
33403
- cancelJob(job) {
33404
- let foundIndex = this._queue.findIndex(j => j._code == job._code);
33405
- if (foundIndex == -1) {
33406
- return;
33407
- }
33408
- let foundJob = this._queue[foundIndex];
33409
- if (foundJob._status == this.statuses.Exporting) {
33410
- this._notifierService
33411
- .showConfirm('File này đang được xử lý. Bạn có muốn dừng lại?', 'Hủy xuất file')
33412
- .then(rs => {
33413
- if (!rs) {
33414
- return;
33415
- }
33416
- let needUnsubscribe = foundJob._type == JobTypes.SingnalR && foundJob._uniqueKey;
33417
- if (needUnsubscribe) {
33418
- this._signalRService.unSubscribeViewCode(foundJob._uniqueKey, this.hub);
33419
- }
33420
- this._queue.splice(foundIndex, 1);
33421
- this.updatePopupHeight();
33422
- });
33423
- }
33424
- else if (foundJob._status != this.statuses.Exporting) {
33425
- this._queue.splice(foundIndex, 1);
33426
- this.updatePopupHeight();
33427
- }
33428
- }
33429
- close() {
33430
- var hasExporting = this._queue && this._queue.filter(item => item._status == this.statuses.Exporting).length > 0;
33431
- if (hasExporting) {
33432
- this._notifierService
33433
- .showConfirm('Có file đang được xử lý. Bạn có muốn dừng lại?', 'Hủy xuất file')
33434
- .then(rs => {
33435
- if (!rs) {
33436
- return;
33437
- }
33438
- let needUnsubscribe = false;
33439
- this._queue.forEach(job => {
33440
- needUnsubscribe = job._type == JobTypes.SingnalR && job._uniqueKey;
33441
- if (needUnsubscribe) {
33442
- this._signalRService.unSubscribeViewCode(job._uniqueKey, this.hub);
33443
- }
33444
- });
33445
- this._queue = [];
33446
- this.updatePopupHeight();
33447
- });
33448
- }
33449
- else {
33450
- this._queue = [];
33451
- }
33452
- }
33453
- updatePopupHeight() {
33454
- let height = (this._queue || []).length * this.itemHeight;
33455
- this.popupHeight = height > this.maxHeight ? this.maxHeight : height;
33456
- }
33457
- }
33458
- ReportQueueComponent.decorators = [
33459
- { type: Component, args: [{
33460
- selector: 'report-queue',
33461
- 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",
33462
- 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}"]
33463
- },] }
33464
- ];
33465
- ReportQueueComponent.ctorParameters = () => [
33466
- { type: NotifierService },
33467
- { type: CommonService },
33468
- { type: FileExplorerService },
33469
- { type: TemplateService },
33470
- { type: SignalRService },
33471
- { type: HighPerformanceService },
33472
- { type: CrudService }
33473
- ];
33474
- ReportQueueComponent.propDecorators = {
33475
- parentDataModel: [{ type: Input }],
33476
- name: [{ type: Input }],
33477
- header: [{ type: Input }],
33478
- autoDownload: [{ type: Input }],
33479
- scrollbar: [{ type: ViewChild, args: ['scrollbar',] }]
33480
- };
33481
-
33482
32915
  class AfterViewCheckedComponent extends ComponentBase {
33483
32916
  constructor(injector, ref) {
33484
32917
  super(injector);
@@ -35612,6 +35045,68 @@ GuardService.ctorParameters = () => [
35612
35045
  { type: NotifierService }
35613
35046
  ];
35614
35047
 
35048
+ class HighPerformanceService {
35049
+ constructor(_signalrService, _commonService, _httpClient, _moduleConfigService) {
35050
+ this._signalrService = _signalrService;
35051
+ this._commonService = _commonService;
35052
+ this._httpClient = _httpClient;
35053
+ this._moduleConfigService = _moduleConfigService;
35054
+ }
35055
+ createProcess(queueName, callBackOnMessage = null, data = null, returnSequenceNumber = false) {
35056
+ const internalClientKey = this._commonService.guid();
35057
+ const model = {
35058
+ queueName,
35059
+ data,
35060
+ clientKey: internalClientKey
35061
+ };
35062
+ this._signalrService.start(null, internalClientKey, (data) => {
35063
+ if (callBackOnMessage) {
35064
+ callBackOnMessage(data);
35065
+ }
35066
+ this._signalrService.unSubscribeViewCode(null, internalClientKey);
35067
+ });
35068
+ return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
35069
+ this.env = this._moduleConfigService.getConfig().environment;
35070
+ const highPerformanceEndpoint = `${this.env.apiDomain.highPerformanceEndpoint}/HighPerformance/DoWork?returnSequenceNumber=${returnSequenceNumber}`;
35071
+ try {
35072
+ const rs = yield this._httpClient.post(highPerformanceEndpoint, model).toPromise();
35073
+ if (rs.success) {
35074
+ resolve(rs.data);
35075
+ }
35076
+ }
35077
+ catch (_a) {
35078
+ }
35079
+ resolve(null);
35080
+ }));
35081
+ }
35082
+ cancelProcess(queueName, uniqueKey) {
35083
+ return __awaiter(this, void 0, void 0, function* () {
35084
+ try {
35085
+ const highPerformanceEndpoint = `${this.env.apiDomain.highPerformanceEndpoint}/HighPerformance/CancelWork?queueName=${queueName}&uniqueKey=${uniqueKey}`;
35086
+ const rs = yield this._httpClient.post(highPerformanceEndpoint, {}).toPromise();
35087
+ if (rs.success) {
35088
+ return rs.data;
35089
+ }
35090
+ }
35091
+ catch (_a) {
35092
+ }
35093
+ return false;
35094
+ });
35095
+ }
35096
+ }
35097
+ HighPerformanceService.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighPerformanceService_Factory() { return new HighPerformanceService(i0.ɵɵinject(SignalRService), i0.ɵɵinject(CommonService), i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(ModuleConfigService)); }, token: HighPerformanceService, providedIn: "root" });
35098
+ HighPerformanceService.decorators = [
35099
+ { type: Injectable, args: [{
35100
+ providedIn: 'root'
35101
+ },] }
35102
+ ];
35103
+ HighPerformanceService.ctorParameters = () => [
35104
+ { type: SignalRService },
35105
+ { type: CommonService },
35106
+ { type: HttpClient },
35107
+ { type: ModuleConfigService }
35108
+ ];
35109
+
35615
35110
  class ImageService {
35616
35111
  constructor(_moduleConfigService) {
35617
35112
  this._moduleConfigService = _moduleConfigService;
@@ -36168,6 +35663,172 @@ TemplateTextV4Service.ctorParameters = () => [
36168
35663
  { type: Injector }
36169
35664
  ];
36170
35665
 
35666
+ class TemplateService {
35667
+ constructor(_moduleConfigService, _httpClient, _printService, _fileService, _notifierService, _crudService, _commonService) {
35668
+ this._httpClient = _httpClient;
35669
+ this._printService = _printService;
35670
+ this._fileService = _fileService;
35671
+ this._notifierService = _notifierService;
35672
+ this._crudService = _crudService;
35673
+ this._commonService = _commonService;
35674
+ this._moduleConfig = _moduleConfigService.getConfig();
35675
+ this.environment = this._moduleConfig.environment;
35676
+ this.serviceUri = `${this.environment.apiDomain.templateEndpoint}/template`;
35677
+ }
35678
+ laTexToBase64Image(laTex, font = 54) {
35679
+ const api = `${this.serviceUri}/LatexToBase64`;
35680
+ return this._httpClient.post(api, { laTex, font }).toPromise();
35681
+ }
35682
+ /**
35683
+ * Description: Xuất file sử dụng thư viện CX, xuất xong tự động mở popup để lưu file.
35684
+ */
35685
+ exportCxExcelByCode(model) {
35686
+ const url = `${this.serviceUri}/ExportCxExcelByCode`;
35687
+ this.setFileInfo(model);
35688
+ return this._httpClient
35689
+ .post(url, model, { responseType: 'blob' })
35690
+ .toPromise()
35691
+ .then(res => {
35692
+ FileSaver.saveAs(res, this.getFullFileName(model.fileName || model.code));
35693
+ }).catch((err) => __awaiter(this, void 0, void 0, function* () {
35694
+ const errorText = yield err.error.text();
35695
+ this._crudService.processErrorResponse(JSON.parse(errorText || ''));
35696
+ }));
35697
+ }
35698
+ exportManyCxExcelByCode(model) {
35699
+ const url = `${this.serviceUri}/ExportManyCxExcelByCode`;
35700
+ this.setManyFileInfo(model);
35701
+ return this._httpClient
35702
+ .post(url, model)
35703
+ .toPromise()
35704
+ .then(res => {
35705
+ if (res.success) {
35706
+ this._fileService.downloadFolder(res.data.folderId);
35707
+ }
35708
+ else {
35709
+ this._crudService.processErrorResponse(res);
35710
+ }
35711
+ }).catch((err) => __awaiter(this, void 0, void 0, function* () {
35712
+ const errorText = yield err.error.text();
35713
+ this._crudService.processErrorResponse(JSON.parse(errorText || ''));
35714
+ }));
35715
+ }
35716
+ getFullFileName(fileName, extension = TemplateConstant.EXCEL_EXTENSION) {
35717
+ return `${fileName}${extension}`;
35718
+ }
35719
+ /**
35720
+ * Description: Export sử dung ClosedXml.Report (Cx) với signalR, sử dụng cho file dữ liệu lớn.
35721
+ * Param: model chứa
35722
+ * - code : code của template cấu hình bên Quản trị > Biểu mẫu > Biểu mẫu excel.
35723
+ * - data : object chứa dữ liệu đã chuyền thành dạng json.
35724
+ * - fileName: tên file sau khi export.
35725
+ * - topic: guid dùng để subscribe.
35726
+ */
35727
+ ExportCxExcelByCodeWithSignalR(model) {
35728
+ return __awaiter(this, void 0, void 0, function* () {
35729
+ const url = `${this.serviceUri}/ExportCxExcelByCodeWithSignalR`;
35730
+ return this._httpClient.post(url, model)
35731
+ .toPromise();
35732
+ });
35733
+ }
35734
+ /**
35735
+ * Description: Export sử dung ClosedXml.Report (Cx) với HighPerformanceService, sử dụng cho file dữ liệu lớn.
35736
+ * Param: model chứa
35737
+ * - code : code của template cấu hình bên Quản trị > Biểu mẫu > Biểu mẫu excel.
35738
+ * - data : object chứa dữ liệu đã chuyền thành dạng json.
35739
+ * - fileName: tên file sau khi export.
35740
+ * - queueName: queue của topic.
35741
+ * - uniqueKey: unique key cho task.
35742
+ */
35743
+ ExportCxExcelByCodeWithHPS(model) {
35744
+ return __awaiter(this, void 0, void 0, function* () {
35745
+ const url = `${this.serviceUri}/ExportWithHighPerformanceService`;
35746
+ return this._httpClient.post(url, model)
35747
+ .toPromise();
35748
+ });
35749
+ }
35750
+ exportCxExcelByCodePromise(model) {
35751
+ return __awaiter(this, void 0, void 0, function* () {
35752
+ const url = `${this.serviceUri}/ExportCxExcelByCode`;
35753
+ return this._httpClient
35754
+ .post(url, model, { responseType: 'blob' })
35755
+ .toPromise();
35756
+ });
35757
+ }
35758
+ fillTemplateByCodeAndGetPdf(templateCode, data, onLoadingDataPdf = null, onEndLoadingDataPdf = null) {
35759
+ const url = `${this.serviceUri}/fillWordByTemplateCode/${templateCode}?isPrint=true`;
35760
+ return this._httpClient
35761
+ .post(url, data)
35762
+ .toPromise().then(res => {
35763
+ if (res.data) {
35764
+ this._printService.printBase64Pdf(res.data, onLoadingDataPdf, onEndLoadingDataPdf);
35765
+ }
35766
+ });
35767
+ }
35768
+ fillWordByTemplateCodeMultiData(templateCode, data, onLoadingDataPdf = null, onEndLoadingDataPdf = null) {
35769
+ const url = `${this.serviceUri}/fillWordByTemplateCodeMultiData/${templateCode}?isPrint=true`;
35770
+ return this._httpClient
35771
+ .post(url, data)
35772
+ .toPromise().then(res => {
35773
+ if (res.data) {
35774
+ this._printService.printBase64Pdf(res.data, onLoadingDataPdf, onEndLoadingDataPdf);
35775
+ }
35776
+ });
35777
+ }
35778
+ setFileInfo(model) {
35779
+ model.data = model.data ? model.data : JSON.stringify(model.dataObject);
35780
+ delete model.dataObject;
35781
+ }
35782
+ setManyFileInfo(manyModel) {
35783
+ let hasModel = manyModel && manyModel.lstFileInfo && manyModel.lstFileInfo.length;
35784
+ if (!hasModel) {
35785
+ return;
35786
+ }
35787
+ manyModel.lstFileInfo.forEach(fileInfo => {
35788
+ this.setFileInfo(fileInfo);
35789
+ fileInfo.fileName = `${fileInfo.fileName}_${this._commonService.guid()}.${TemplateConstant.EXCEL_EXTENSION}`;
35790
+ });
35791
+ }
35792
+ /**
35793
+ * Export dữ liệu không dùng template.
35794
+ */
35795
+ exportCxExcel(model) {
35796
+ const url = `${this.serviceUri}/ExportCxExcel`;
35797
+ return this._httpClient
35798
+ .post(url, model, { responseType: 'blob' })
35799
+ .toPromise()
35800
+ .then(res => {
35801
+ FileSaver.saveAs(res, this.getFullFileName(model.fileName || 'Export'));
35802
+ }).catch((err) => __awaiter(this, void 0, void 0, function* () {
35803
+ const errorText = yield err.error.text();
35804
+ this._crudService.processErrorResponse(JSON.parse(errorText || ''));
35805
+ }));
35806
+ }
35807
+ exportCxExcelPromise(model) {
35808
+ return __awaiter(this, void 0, void 0, function* () {
35809
+ const url = `${this.serviceUri}/ExportCxExcel`;
35810
+ return this._httpClient
35811
+ .post(url, model, { responseType: 'blob' })
35812
+ .toPromise();
35813
+ });
35814
+ }
35815
+ }
35816
+ TemplateService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TemplateService_Factory() { return new TemplateService(i0.ɵɵinject(ModuleConfigService), i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(PrintService), i0.ɵɵinject(FileExplorerService), i0.ɵɵinject(NotifierService), i0.ɵɵinject(CrudService), i0.ɵɵinject(CommonService)); }, token: TemplateService, providedIn: "root" });
35817
+ TemplateService.decorators = [
35818
+ { type: Injectable, args: [{
35819
+ providedIn: 'root'
35820
+ },] }
35821
+ ];
35822
+ TemplateService.ctorParameters = () => [
35823
+ { type: ModuleConfigService },
35824
+ { type: HttpClient },
35825
+ { type: PrintService },
35826
+ { type: FileExplorerService },
35827
+ { type: NotifierService },
35828
+ { type: CrudService },
35829
+ { type: CommonService }
35830
+ ];
35831
+
36171
35832
  class UniqueNumberService {
36172
35833
  constructor(_http, _moduleConfigService) {
36173
35834
  this._http = _http;
@@ -47065,7 +46726,7 @@ function coreDeclaration() {
47065
46726
  VanbanDiPickerComponent,
47066
46727
  VanbanDenPickerComponent,
47067
46728
  CongViecPickerComponent,
47068
- ReportQueueComponent,
46729
+ // ReportQueueComponent,
47069
46730
  SettingsComponent,
47070
46731
  SettingsRowComponent,
47071
46732
  ShareLinkByPermissionComponent,
@@ -47319,5 +46980,5 @@ class Pair {
47319
46980
  * Generated bundle index. Do not edit.
47320
46981
  */
47321
46982
 
47322
- export { AccessDeniedComponent, Action, ActionChoYKienBase, ActionThuHoiBase, ActionUpdateModel, AddressControlSchema, AddressService, AdvanceSearchData, AdvanceSearchSetting, AfterViewCheckedComponent, AnnouncementReadsService, AnnouncementsService, AppComponentBase, AppListService, ApplicationContextService, ApprovalPipe, ArrayPair, AtLeastOneRowTableValidator, AuthenService, AuthorizeDirective, AutoCompleteControlSchema, AutoCompletePickerControlSchema, AutocompleteDatasourceComponent, AvatarUploaderComponent, BaseMenuService, BaseModule, BaseService, BooleanFormatPipe, ButtonAction, ButtonControlSchema, ButtonPermission, ButtonPermissions, ButtonTextActionCongViec, CONFIG_CALENDAR_VIETNAMESE, CalculationEngineService, CanBoHoSoService, CanBo_HoSo_CoCauToChucService, CauHinhWorkflowService, CccdValidator, CellExcel, ChatBoxComponent, ChatSendMessageBoxComponent, CheckBoxListControlSchema, CheckControlVisibleService, CheckDuplicateFieldsValidator, CheckDuplicateValidator, CheckboxControlSchema, ChipsControlSchema, ClientV5Service, CoCauToChucControlSchema, CoCauToChucNewService, CoCauToChucPickerComponent, CoCauToChucPickerControlSchema, CoCauToChucPickerControlSchemaNew, CoCauToChucService, CodeValidator, ColorBlack, ColorControlSchema, ColorPickerControlSchema, ColorWhite, Column, ColumnSchemaBase, ColumnSetting, ColumnSettingDetail, ComCtxConstants, CommandType, CommonDashboardComponent, CommonErrorCode, CommonLibComponent, CommonSearchFormComponent, CommonService, CompareValidator, ComponentBase, ComponentBaseWithButton, ComponentConstants, ComponentContextService, ConditionalBuilderService, CongViecPickerControlSchema, CongViecService, ContainerSchema, ControlTreeNode, ControlType, ConvertMoneyToWordPipe, CoreConfigService, CrudBase, CrudFormComponent, CrudFormCustomFunction, CrudFormData, CrudFormSetting, CrudListComponent, CrudListConfig, CrudListCustomFunction, CrudListData, CrudListHelper, CrudListSetting, CrudService, CustomControlSchema, CustomRouterService, CustomizeUiModel, CustomizeUiService, DanhmucApiService, DataExcel, DataFormBase, DataListBase, DataSourceControlSchema, DataSourceGioiTinh, DataSourcePermissionBase, DataSourceWorkflowCoreStatus, DataType, DateCompareValidator, DateTimeControlSchema, DateTimeRangeControlSchema, DbOrganizationOrganizationService, DbOrganizationPositionService, Deadline, DeadlineType, DhvinhGuardService, DialogModel, DmChucVuService, DmLoaiCongViecService, DomService, DownloadLinkService, DropdownComponent, DropdownControlSchema, DropdownOptions, DummyWorkflowCode, DynamicComponentService, ENUM_DON_VI_HANH_CHINH, EXPLORER_TYPES, EXPORT_VERSION_V4, EXPORT_VERSION_V5, EditFileCommand, EditorControlSchema, EformService, EmailValidator, EntityMedataDataSetting, EntityMetadataService, EntityPickerColumn, EntityPickerControlSchema, EntityWorkflowHistoryService, EntityWorkflowType, EnumActionType, EnumAppSwitcherCode, EnumCanBo, EnumControlPickerType, EnumFileLayout, EnumGetRefType, EnumGioiTinh, EnumHocHamHocVi, EnumLoaiVanBanBase$1 as EnumLoaiVanBanBase, EnumPermissionType, EnumProcessWorkflowType, EnumProperties, EnumStateType, EnumTargetType, EnumTypeSplash, EnumUserRule, EnumUserSource, EnumWFNhomTrangThai, EnumWorkflowCheckboxOption, EnumWorkflowCoreCodeSettingKey, EnumWorkflowHistoryStatus, ErrorType, EventData, EventType, ExactOneValueInTableValidator, ExportAllMode, ExportItem, ExportItemType, ExportItemsMode, ExportManyModel, ExportManyResultModel, ExportModel, ExportService, ExportWithoutTemplateModel, Extension, ExtensionsConst, FILE_TYPES, FederationService, FieldCheckboxCrudList, FieldColExpandCrudList, FieldColReorderCrudList, FieldDefineHasTask, FieldDefineIsTaskFormControl, FieldDefineIsWorkflowControl, FieldFunctionCrudList, FieldIndexInDataSource, FieldOrderCrudList, FieldRowSpan, FieldWorkflowCodeInCrudForm, FileDataService, FileExplorerService, FileExtensions, FileManagerComponent, FileManagerControlSchema, FileManagerMode, FileManagerSetting, FileObjectService, FilePickerDialogComponent, FilePickerSetting, FileType, FileTypeFlag, FileUploadComponent, FileUploadControlSchema, FileUploadMode, FileUploadSetting, FileV4Service, Filter, FolderService, FormControlBase, FormControlBaseWithService, FormSchemaBase, FormSchemaBaseWithService, FormState, Gender, GenerateLinkDownloadDTO, GenericGuardChildService, GenericGuardService, GlobalService, GmailCorrector, GridInfo, GuardService, GuardSvService, HeightType, HighPerformanceService, HighlightPipe, HoSoDoiTacService, HtmlFormatPipe, HttpOptions, ImageService, ImageUploaderControlSchema, Include, KeyFieldGetRefType, KeyFilterStateByMenuCongViec, KeyFlashShow, KeyFunctionReload, KeyValueComponent, KeyValueControlSchema, LabelSchema, LabelWFNhomTrangThai, LabelWorkflowCoreStatus, LengthValidator, ListHelperService, LoaiPhieuDeXuat, LocalCacheService, LowerCorrector, MA_THONG_BAO_PHAN_HE, MaActionBatDauQuyTrinh, ManagerType, MaskControlSchema, MasterDataItem, MasterDataPipe, MasterDataService, MenuService, MenuSource, MergeConfigModel, MethodResult, ModelKySoDonVi, ModelSchema, ModuleConfigService, MultiTranslateHttpLoader, MultipleReferenceDataFormatPipe, NameValidator, NotificationObjectType, NotificationService, NotifierService, NotifierType, NumberCompareValidator, NumberOnlyValidator, NumberRangeControlSchema, Operator, OrganizationFormatPipe, OrganizationNameFormatPipe, OrganizationPickerControlSchema, OrganizationService, OrganizationsFormatPipe, PageInfo, PageSetting, Pair, PassportValidator, PasswordValidator, Pattern, PercentControlSchema, PermissionBase, PermissionConstant, PermissionName, PermissionService, PermissionStorage, PermissionTypes, PermissionUtilsComponent, PersonalSetting, PhanQuyenModel, PhoneNumberValidator, PhoneValidator, PopupSize, PositionService, PrintService, PublicFunction, QueryBuilderComponent, QueryBuilderGroupComponent, QueryBuilderRuleComponent, QueryGroup, QueryRule, RELOAD_FILE_LIST, RadioButtonListControlSchema, RandomDataService, RefField, ReferenceDataFormatPipe, ReferenceTextControlSchema, RegexSplitFieldByItem, ReponseResult, ReportQueueComponent, RequiredFieldsValidator, RequiredValidator, RowColorOption, RowExcel, SHARE_COMPONENT_ID, SHARE_EVENT, SafeHtmlPipe, SafeStylePipe, SafeUrlPipe, SameValueValidator, ScalarValueValidator, SchemaBase, SecurePipe, ServiceFileUploadComponent, ServiceRequestModel, ServiceRequestModelV5, SessionTypes, SharedFolderType, SignalRService, SimpleDicItem, SimpleDictionary, Sort, SortDirs, SpanControlSchema, SplashComponentComponent, StartupBusinessComponentBase, StateMachinesService, Status, StatusAction, StatusGroup, StatusOption, StatusOrg, StatusUser, StorageService, StorageUpdatedService, StringCompareOption, StringFormatPipe, SummaryPipe, SwitchControlSchema, TBL_DM_COSODAOTAO_CONSTS, TBL_DM_PHONGHOC_CONSTS, TBL_KTX_NGUOITHUE_HOSO, TBL_TS_PHIEUDEXUAT, TBL_TS_TAISANCODINH_CONSTS, TabViewData, TableSchema, TagSeparator, TaiLieuComponent, TaxCodeValidator, TemplateConstant, TemplateControlSchema, TemplateInstanceService, TemplateService, TemplateTextItem, TemplateTextMany, TemplateTextV4Service, TemplateType, TemplateV4Service, TenContainer, TextAlign, TextAreaControlSchema, TextControlSchema, TextControlSchemaWithService, TitleSchema, TnClientCommand, TnClientService, TnComponentConfig, TnCustomScrollbarComponent, TnDatePipe, TnMenu, TnMenuItem, TnReorderableColumnDirective, TnReorderableRowDirective, TnSortIcon, TnSortableColumnDirective, TnTreeTableToggler, TnUser, TnxSharedModule, TopicReloadCongViecV5, TopicReloadCountCongViecV5, TopicReloadNotification, TrangThaiMasterData, TrangThais, TreeDataOption, TreeListBase, TreeNode, TrimCorrector, TrimEndCorrector, TrimStartCorrector, TypeDanhMucAPI, UniqueFieldInTableValidator, UniqueNumberService, UpperCorrector, UserGroupRealService, UserGroupService, UserOnlineDetailsService, UserPickerControlSchema, UserPickerDialogComponent, UserPublicInfo, UserService, UserType, UserV5Service, Validation, ValueType, VanBanPickerControlSchema, ViewContainerRefDirective, VirtualBaseService, WfAction, WfItem, WfMachine, WfSchema, WorkflowConfigAdvance, WorkflowCoreStatusEnum, WorkflowFieldStateCode, WorkflowHistoryService, WorkflowPermissionDetailService, WorkflowService, WorkflowSetting, WorkflowSettingNew, WorkflowSettingsService, WorkflowTargetDefaultValue, WrapPickerControlSchema, addDay, addZero, appendDefaultFilter, clearAll, clone, cloneOld, coreDeclaration, coreModuleImport, coreProvider, dataSourceIcon, dateDiff, fileTypeSource, genQueryFromFilters, getDateFromStringDateVN, getDayOfWeek, getEnvironmentByName, getEnvironmentData, getListMenuByName, getMenuData, getMonday, getStringDate, getStringDateTime, getStringDateVN, getStringDateVNLocal, getTimeSpan, isArray, isBoolean, isDate, isFunction, isLiteralObject, isNumber, isObjectOld, isRegular, isSimpleType, isString, isValidDate, isValidTime, keyUserSurveyLocal, loadRemoteModule, loadRemotePageModule, mapProperty, maximumPageSize, mergeJSON, mergeJSONOld, moduleConfigFunc, monthDiff, multipleSort, romanize, ɵ0$2 as ɵ0, ɵ1$1 as ɵ1, ɵ2$1 as ɵ2, ɵ3, ɵ4, LoggerService as ɵa, DropdownService as ɵb, ImageUploaderComponent as ɵba, CheckBoxListComponent as ɵbb, CoCauToChucPickerListComponent as ɵbc, CoCauToChucPickerListNewComponent as ɵbd, FormBuilderComponent as ɵbe, DatetimePickerComponent as ɵbf, DatetimePickerRangeComponent as ɵbg, EntityPickerBoxComponent as ɵbh, EntityPickerDataComponent as ɵbi, EntityPickerSelectedComponent as ɵbj, EntityPickerComponent as ɵbk, EntityPickerSearchFormComponent as ɵbl, EntityPickerDialogComponent as ɵbm, EntityPickerTreeDataComponent as ɵbn, EntityPickerTreeSelectedComponent as ɵbo, EntityPermissionComponent as ɵbp, EquationEditorComponent as ɵbq, MaskComponent as ɵbr, NumberPickerRangeComponent as ɵbs, PagingNextBackOnlyComponent as ɵbt, RadioButtonListComponent as ɵbu, VanBanPickerComponent as ɵbv, VanBanDenService as ɵbw, VanBanDiService as ɵbx, VanBanPickerDialogComponent as ɵby, VanbanDiPickerComponent as ɵbz, EntityPickerService as ɵc, VanbanDenPickerComponent as ɵca, CongViecPickerComponent as ɵcb, SettingsComponent as ɵcc, SettingsRowComponent as ɵcd, ShareLinkByPermissionComponent as ɵce, TnCheckboxComponent as ɵcf, TnDialogComponent as ɵcg, TnColorPickerComponent as ɵch, TnTinymceComponent as ɵci, TnTabViewComponent as ɵcj, TableDetailFormComponent as ɵck, FileIconPipe as ɵcl, FileSizePipe as ɵcm, QuickAddFormComponent as ɵcn, PreventShiftTabDirective as ɵco, TnTemplateDirective as ɵcp, UserPickerComponent as ɵcq, UserPickerBoxComponent as ɵcr, CoCauToChucTestService as ɵcs, TnAppHelpComponent as ɵct, PathNameService as ɵcu, HelperCurrentPageComponent as ɵcv, TnAppNotificationListComponent as ɵcw, TnAppNotificationComponent as ɵcx, FolderFormComponent as ɵcy, FileFormComponent as ɵcz, ExceptionHandlerService as ɵd, FileViewerComponent as ɵda, FileVersionListComponent as ɵdb, ViewDetailComponent as ɵdc, ReferenceTextBoxComponent as ɵdd, QrCodeGeneratorComponent as ɵde, AddNewsComponent as ɵdf, ArticleService as ɵdg, NewsCategoryService as ɵdh, UniversalLinkProcessorComponent as ɵdi, SignatureDetailComponent as ɵdj, KySoSimDanhSachChuKyComponent as ɵdk, KySoSimChuKyUserService as ɵdl, FileKySoSimComponent as ɵdm, KySoSimSignPDFService as ɵdn, TaiLieuCuaToiComponent as ɵdo, KhaiThacTaiLieuDungChungComponent as ɵdp, DanhMucDungChungService as ɵdq, TnTemplateComponent as ɵdr, DropdownSettingFormComponent as ɵds, CheckReadyComponent as ɵdt, TnAccordionTabComponent as ɵdu, SettingsWorkflowComponent as ɵdv, SettingAuthorizeButtonComponent as ɵdw, BasePermissionService as ɵdx, SettingsWorkflowNo1Component as ɵdy, ListBase as ɵe, ListComponentBase as ɵf, TreeTableComponent as ɵg, NotFoundComponent as ɵh, SendAccessTokenInterceptor as ɵi, LogInterceptor as ɵj, PermissionUtilsInterceptor as ɵk, TraceInterceptor as ɵl, EntityPermissionService as ɵm, ChatService as ɵn, MyDriveService as ɵo, ContentsService as ɵp, StatusExtendsService as ɵq, MessageBoardService as ɵr, FileExplorerNewService as ɵs, FileVersionService as ɵt, FileManagerService as ɵu, DM_ChucVuService as ɵv, RoleService as ɵw, AddressComponent as ɵx, AdvanceSearchComponent as ɵy, AutoCompletePickerComponent as ɵz };
46983
+ export { AccessDeniedComponent, Action, ActionChoYKienBase, ActionThuHoiBase, ActionUpdateModel, AddressControlSchema, AddressService, AdvanceSearchData, AdvanceSearchSetting, AfterViewCheckedComponent, AnnouncementReadsService, AnnouncementsService, AppComponentBase, AppListService, ApplicationContextService, ApprovalPipe, ArrayPair, AtLeastOneRowTableValidator, AuthenService, AuthorizeDirective, AutoCompleteControlSchema, AutoCompletePickerControlSchema, AutocompleteDatasourceComponent, AvatarUploaderComponent, BaseMenuService, BaseModule, BaseService, BooleanFormatPipe, ButtonAction, ButtonControlSchema, ButtonPermission, ButtonPermissions, ButtonTextActionCongViec, CONFIG_CALENDAR_VIETNAMESE, CalculationEngineService, CanBoHoSoService, CanBo_HoSo_CoCauToChucService, CauHinhWorkflowService, CccdValidator, CellExcel, ChatBoxComponent, ChatSendMessageBoxComponent, CheckBoxListControlSchema, CheckControlVisibleService, CheckDuplicateFieldsValidator, CheckDuplicateValidator, CheckboxControlSchema, ChipsControlSchema, ClientV5Service, CoCauToChucControlSchema, CoCauToChucNewService, CoCauToChucPickerComponent, CoCauToChucPickerControlSchema, CoCauToChucPickerControlSchemaNew, CoCauToChucService, CodeValidator, ColorBlack, ColorControlSchema, ColorPickerControlSchema, ColorWhite, Column, ColumnSchemaBase, ColumnSetting, ColumnSettingDetail, ComCtxConstants, CommandType, CommonDashboardComponent, CommonErrorCode, CommonLibComponent, CommonSearchFormComponent, CommonService, CompareValidator, ComponentBase, ComponentBaseWithButton, ComponentConstants, ComponentContextService, ConditionalBuilderService, CongViecPickerControlSchema, CongViecService, ContainerSchema, ControlTreeNode, ControlType, ConvertMoneyToWordPipe, CoreConfigService, CrudBase, CrudFormComponent, CrudFormCustomFunction, CrudFormData, CrudFormSetting, CrudListComponent, CrudListConfig, CrudListCustomFunction, CrudListData, CrudListHelper, CrudListSetting, CrudService, CustomControlSchema, CustomRouterService, CustomizeUiModel, CustomizeUiService, DanhmucApiService, DataExcel, DataFormBase, DataListBase, DataSourceControlSchema, DataSourceGioiTinh, DataSourcePermissionBase, DataSourceWorkflowCoreStatus, DataType, DateCompareValidator, DateTimeControlSchema, DateTimeRangeControlSchema, DbOrganizationOrganizationService, DbOrganizationPositionService, Deadline, DeadlineType, DhvinhGuardService, DialogModel, DmChucVuService, DmLoaiCongViecService, DomService, DownloadLinkService, DropdownComponent, DropdownControlSchema, DropdownOptions, DummyWorkflowCode, DynamicComponentService, ENUM_DON_VI_HANH_CHINH, EXPLORER_TYPES, EXPORT_VERSION_V4, EXPORT_VERSION_V5, EditFileCommand, EditorControlSchema, EformService, EmailValidator, EntityMedataDataSetting, EntityMetadataService, EntityPickerColumn, EntityPickerControlSchema, EntityWorkflowHistoryService, EntityWorkflowType, EnumActionType, EnumAppSwitcherCode, EnumCanBo, EnumControlPickerType, EnumFileLayout, EnumGetRefType, EnumGioiTinh, EnumHocHamHocVi, EnumLoaiVanBanBase$1 as EnumLoaiVanBanBase, EnumPermissionType, EnumProcessWorkflowType, EnumProperties, EnumStateType, EnumTargetType, EnumTypeSplash, EnumUserRule, EnumUserSource, EnumWFNhomTrangThai, EnumWorkflowCheckboxOption, EnumWorkflowCoreCodeSettingKey, EnumWorkflowHistoryStatus, ErrorType, EventData, EventType, ExactOneValueInTableValidator, ExportAllMode, ExportItem, ExportItemType, ExportItemsMode, ExportManyModel, ExportManyResultModel, ExportModel, ExportService, ExportWithoutTemplateModel, Extension, ExtensionsConst, FILE_TYPES, FederationService, FieldCheckboxCrudList, FieldColExpandCrudList, FieldColReorderCrudList, FieldDefineHasTask, FieldDefineIsTaskFormControl, FieldDefineIsWorkflowControl, FieldFunctionCrudList, FieldIndexInDataSource, FieldOrderCrudList, FieldRowSpan, FieldWorkflowCodeInCrudForm, FileDataService, FileExplorerService, FileExtensions, FileManagerComponent, FileManagerControlSchema, FileManagerMode, FileManagerSetting, FileObjectService, FilePickerDialogComponent, FilePickerSetting, FileType, FileTypeFlag, FileUploadComponent, FileUploadControlSchema, FileUploadMode, FileUploadSetting, FileV4Service, Filter, FolderService, FormControlBase, FormControlBaseWithService, FormSchemaBase, FormSchemaBaseWithService, FormState, Gender, GenerateLinkDownloadDTO, GenericGuardChildService, GenericGuardService, GlobalService, GmailCorrector, GridInfo, GuardService, GuardSvService, HeightType, HighPerformanceService, HighlightPipe, HoSoDoiTacService, HtmlFormatPipe, HttpOptions, ImageService, ImageUploaderControlSchema, Include, KeyFieldGetRefType, KeyFilterStateByMenuCongViec, KeyFlashShow, KeyFunctionReload, KeyValueComponent, KeyValueControlSchema, LabelSchema, LabelWFNhomTrangThai, LabelWorkflowCoreStatus, LengthValidator, ListHelperService, LoaiPhieuDeXuat, LocalCacheService, LowerCorrector, MA_THONG_BAO_PHAN_HE, MaActionBatDauQuyTrinh, ManagerType, MaskControlSchema, MasterDataItem, MasterDataPipe, MasterDataService, MenuService, MenuSource, MergeConfigModel, MethodResult, ModelKySoDonVi, ModelSchema, ModuleConfigService, MultiTranslateHttpLoader, MultipleReferenceDataFormatPipe, NameValidator, NotificationObjectType, NotificationService, NotifierService, NotifierType, NumberCompareValidator, NumberOnlyValidator, NumberRangeControlSchema, Operator, OrganizationFormatPipe, OrganizationNameFormatPipe, OrganizationPickerControlSchema, OrganizationService, OrganizationsFormatPipe, PageInfo, PageSetting, Pair, PassportValidator, PasswordValidator, Pattern, PercentControlSchema, PermissionBase, PermissionConstant, PermissionName, PermissionService, PermissionStorage, PermissionTypes, PermissionUtilsComponent, PersonalSetting, PhanQuyenModel, PhoneNumberValidator, PhoneValidator, PopupSize, PositionService, PrintService, PublicFunction, QueryBuilderComponent, QueryBuilderGroupComponent, QueryBuilderRuleComponent, QueryGroup, QueryRule, RELOAD_FILE_LIST, RadioButtonListControlSchema, RandomDataService, RefField, ReferenceDataFormatPipe, ReferenceTextControlSchema, RegexSplitFieldByItem, ReponseResult, RequiredFieldsValidator, RequiredValidator, RowColorOption, RowExcel, SHARE_COMPONENT_ID, SHARE_EVENT, SafeHtmlPipe, SafeStylePipe, SafeUrlPipe, SameValueValidator, ScalarValueValidator, SchemaBase, SecurePipe, ServiceFileUploadComponent, ServiceRequestModel, ServiceRequestModelV5, SessionTypes, SharedFolderType, SignalRService, SimpleDicItem, SimpleDictionary, Sort, SortDirs, SpanControlSchema, SplashComponentComponent, StartupBusinessComponentBase, StateMachinesService, Status, StatusAction, StatusGroup, StatusOption, StatusOrg, StatusUser, StorageService, StorageUpdatedService, StringCompareOption, StringFormatPipe, SummaryPipe, SwitchControlSchema, TBL_DM_COSODAOTAO_CONSTS, TBL_DM_PHONGHOC_CONSTS, TBL_KTX_NGUOITHUE_HOSO, TBL_TS_PHIEUDEXUAT, TBL_TS_TAISANCODINH_CONSTS, TabViewData, TableSchema, TagSeparator, TaiLieuComponent, TaxCodeValidator, TemplateConstant, TemplateControlSchema, TemplateInstanceService, TemplateService, TemplateTextItem, TemplateTextMany, TemplateTextV4Service, TemplateType, TemplateV4Service, TenContainer, TextAlign, TextAreaControlSchema, TextControlSchema, TextControlSchemaWithService, TitleSchema, TnClientCommand, TnClientService, TnComponentConfig, TnCustomScrollbarComponent, TnDatePipe, TnMenu, TnMenuItem, TnReorderableColumnDirective, TnReorderableRowDirective, TnSortIcon, TnSortableColumnDirective, TnTreeTableToggler, TnUser, TnxSharedModule, TopicReloadCongViecV5, TopicReloadCountCongViecV5, TopicReloadNotification, TrangThaiMasterData, TrangThais, TreeDataOption, TreeListBase, TreeNode, TrimCorrector, TrimEndCorrector, TrimStartCorrector, TypeDanhMucAPI, UniqueFieldInTableValidator, UniqueNumberService, UpperCorrector, UserGroupRealService, UserGroupService, UserOnlineDetailsService, UserPickerControlSchema, UserPickerDialogComponent, UserPublicInfo, UserService, UserType, UserV5Service, Validation, ValueType, VanBanPickerControlSchema, ViewContainerRefDirective, VirtualBaseService, WfAction, WfItem, WfMachine, WfSchema, WorkflowConfigAdvance, WorkflowCoreStatusEnum, WorkflowFieldStateCode, WorkflowHistoryService, WorkflowPermissionDetailService, WorkflowService, WorkflowSetting, WorkflowSettingNew, WorkflowSettingsService, WorkflowTargetDefaultValue, WrapPickerControlSchema, addDay, addZero, appendDefaultFilter, clearAll, clone, cloneOld, coreDeclaration, coreModuleImport, coreProvider, dataSourceIcon, dateDiff, fileTypeSource, genQueryFromFilters, getDateFromStringDateVN, getDayOfWeek, getEnvironmentByName, getEnvironmentData, getListMenuByName, getMenuData, getMonday, getStringDate, getStringDateTime, getStringDateVN, getStringDateVNLocal, getTimeSpan, isArray, isBoolean, isDate, isFunction, isLiteralObject, isNumber, isObjectOld, isRegular, isSimpleType, isString, isValidDate, isValidTime, keyUserSurveyLocal, loadRemoteModule, loadRemotePageModule, mapProperty, maximumPageSize, mergeJSON, mergeJSONOld, moduleConfigFunc, monthDiff, multipleSort, romanize, ɵ0$2 as ɵ0, ɵ1$1 as ɵ1, ɵ2$1 as ɵ2, ɵ3, ɵ4, LoggerService as ɵa, DropdownService as ɵb, ImageUploaderComponent as ɵba, CheckBoxListComponent as ɵbb, CoCauToChucPickerListComponent as ɵbc, CoCauToChucPickerListNewComponent as ɵbd, FormBuilderComponent as ɵbe, DatetimePickerComponent as ɵbf, DatetimePickerRangeComponent as ɵbg, EntityPickerBoxComponent as ɵbh, EntityPickerDataComponent as ɵbi, EntityPickerSelectedComponent as ɵbj, EntityPickerComponent as ɵbk, EntityPickerSearchFormComponent as ɵbl, EntityPickerDialogComponent as ɵbm, EntityPickerTreeDataComponent as ɵbn, EntityPickerTreeSelectedComponent as ɵbo, EntityPermissionComponent as ɵbp, EquationEditorComponent as ɵbq, MaskComponent as ɵbr, NumberPickerRangeComponent as ɵbs, PagingNextBackOnlyComponent as ɵbt, RadioButtonListComponent as ɵbu, VanBanPickerComponent as ɵbv, VanBanDenService as ɵbw, VanBanDiService as ɵbx, VanBanPickerDialogComponent as ɵby, VanbanDiPickerComponent as ɵbz, EntityPickerService as ɵc, VanbanDenPickerComponent as ɵca, CongViecPickerComponent as ɵcb, SettingsComponent as ɵcc, SettingsRowComponent as ɵcd, ShareLinkByPermissionComponent as ɵce, TnCheckboxComponent as ɵcf, TnDialogComponent as ɵcg, TnColorPickerComponent as ɵch, TnTinymceComponent as ɵci, TnTabViewComponent as ɵcj, TableDetailFormComponent as ɵck, FileIconPipe as ɵcl, FileSizePipe as ɵcm, QuickAddFormComponent as ɵcn, PreventShiftTabDirective as ɵco, TnTemplateDirective as ɵcp, UserPickerComponent as ɵcq, UserPickerBoxComponent as ɵcr, CoCauToChucTestService as ɵcs, TnAppHelpComponent as ɵct, PathNameService as ɵcu, HelperCurrentPageComponent as ɵcv, TnAppNotificationListComponent as ɵcw, TnAppNotificationComponent as ɵcx, FolderFormComponent as ɵcy, FileFormComponent as ɵcz, ExceptionHandlerService as ɵd, FileViewerComponent as ɵda, FileVersionListComponent as ɵdb, ViewDetailComponent as ɵdc, ReferenceTextBoxComponent as ɵdd, QrCodeGeneratorComponent as ɵde, AddNewsComponent as ɵdf, ArticleService as ɵdg, NewsCategoryService as ɵdh, UniversalLinkProcessorComponent as ɵdi, SignatureDetailComponent as ɵdj, KySoSimDanhSachChuKyComponent as ɵdk, KySoSimChuKyUserService as ɵdl, FileKySoSimComponent as ɵdm, KySoSimSignPDFService as ɵdn, TaiLieuCuaToiComponent as ɵdo, KhaiThacTaiLieuDungChungComponent as ɵdp, DanhMucDungChungService as ɵdq, TnTemplateComponent as ɵdr, DropdownSettingFormComponent as ɵds, CheckReadyComponent as ɵdt, TnAccordionTabComponent as ɵdu, SettingsWorkflowComponent as ɵdv, SettingAuthorizeButtonComponent as ɵdw, BasePermissionService as ɵdx, SettingsWorkflowNo1Component as ɵdy, ListBase as ɵe, ListComponentBase as ɵf, TreeTableComponent as ɵg, NotFoundComponent as ɵh, SendAccessTokenInterceptor as ɵi, LogInterceptor as ɵj, PermissionUtilsInterceptor as ɵk, TraceInterceptor as ɵl, EntityPermissionService as ɵm, ChatService as ɵn, MyDriveService as ɵo, ContentsService as ɵp, StatusExtendsService as ɵq, MessageBoardService as ɵr, FileExplorerNewService as ɵs, FileVersionService as ɵt, FileManagerService as ɵu, DM_ChucVuService as ɵv, RoleService as ɵw, AddressComponent as ɵx, AdvanceSearchComponent as ɵy, AutoCompletePickerComponent as ɵz };
47323
46984
  //# sourceMappingURL=tnx-shared.js.map