@gsp-svc/formdoc-upload 0.1.24 → 0.1.29

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.
Files changed (38) hide show
  1. package/bundles/gsp-svc-formdoc-upload.umd.js +212 -24
  2. package/bundles/gsp-svc-formdoc-upload.umd.js.map +1 -1
  3. package/bundles/gsp-svc-formdoc-upload.umd.min.js +1 -1
  4. package/bundles/gsp-svc-formdoc-upload.umd.min.js.map +1 -1
  5. package/esm2015/gsp-svc-formdoc-upload.js +3 -2
  6. package/esm2015/lib/formdoc-upload.module.js +8 -3
  7. package/esm2015/lib/i18n/language.resource.js +116 -0
  8. package/esm2015/lib/local.pipe.js +48 -0
  9. package/esm2015/lib/upload/entity/filestate.js +13 -0
  10. package/esm2015/lib/upload/entity/uploadfileinfo.js +3 -1
  11. package/esm2015/lib/upload/file-upload/file-upload.component.js +34 -17
  12. package/esm2015/lib/upload/upload.module.js +9 -4
  13. package/esm2015/lib/uploaddialog.service.js +18 -8
  14. package/esm2015/public-api.js +2 -1
  15. package/esm5/gsp-svc-formdoc-upload.js +3 -2
  16. package/esm5/lib/formdoc-upload.module.js +8 -3
  17. package/esm5/lib/i18n/language.resource.js +116 -0
  18. package/esm5/lib/local.pipe.js +51 -0
  19. package/esm5/lib/upload/entity/filestate.js +13 -0
  20. package/esm5/lib/upload/entity/uploadfileinfo.js +3 -1
  21. package/esm5/lib/upload/file-upload/file-upload.component.js +36 -17
  22. package/esm5/lib/upload/upload.module.js +9 -4
  23. package/esm5/lib/uploaddialog.service.js +18 -8
  24. package/esm5/public-api.js +2 -1
  25. package/fesm2015/gsp-svc-formdoc-upload.js +205 -27
  26. package/fesm2015/gsp-svc-formdoc-upload.js.map +1 -1
  27. package/fesm5/gsp-svc-formdoc-upload.js +209 -27
  28. package/fesm5/gsp-svc-formdoc-upload.js.map +1 -1
  29. package/gsp-svc-formdoc-upload.d.ts +1 -0
  30. package/gsp-svc-formdoc-upload.metadata.json +1 -1
  31. package/lib/i18n/language.resource.d.ts +110 -0
  32. package/lib/local.pipe.d.ts +8 -0
  33. package/lib/upload/entity/filestate.d.ts +4 -0
  34. package/lib/upload/entity/uploadfileinfo.d.ts +2 -0
  35. package/lib/upload/file-upload/file-upload.component.d.ts +5 -1
  36. package/lib/uploaddialog.service.d.ts +3 -0
  37. package/package.json +1 -1
  38. package/public-api.d.ts +1 -0
@@ -52,6 +52,7 @@
52
52
  * @fileoverview added by tsickle
53
53
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
54
54
  */
55
+ var ɵ0 = localStorage.getItem('languageCode') || 'zh-CHS';
55
56
  var FormdocUploadModule = /** @class */ (function () {
56
57
  function FormdocUploadModule() {
57
58
  }
@@ -59,7 +60,9 @@
59
60
  { type: i0.NgModule, args: [{
60
61
  declarations: [FormdocUploadComponent],
61
62
  imports: [],
62
- exports: [FormdocUploadComponent]
63
+ exports: [FormdocUploadComponent],
64
+ providers: [cafCommon.LanguageService,
65
+ { provide: i0.LOCALE_ID, useValue: ɵ0 },]
63
66
  },] }
64
67
  ];
65
68
  return FormdocUploadModule;
@@ -421,6 +424,167 @@
421
424
  return ExStorageFileInfo;
422
425
  }());
423
426
 
427
+ /**
428
+ * @fileoverview added by tsickle
429
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
430
+ */
431
+ /** @enum {number} */
432
+ var FileState = {
433
+ New: 0,
434
+ Update: 1,
435
+ };
436
+ FileState[FileState.New] = 'New';
437
+ FileState[FileState.Update] = 'Update';
438
+
439
+ /**
440
+ * @fileoverview added by tsickle
441
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
442
+ */
443
+ /** @type {?} */
444
+ var LANG_RESOURCES = {
445
+ 'zh-CHS': {
446
+ 'uploadFile': '上传文件',
447
+ 'uploading': '正在上传文件……',
448
+ 'selectedCount': '已选择文件数量:',
449
+ 'limitCount': '超出系统限制数量:',
450
+ 'rechooseFile': ',重新选择上传文件。',
451
+ 'save': '保存',
452
+ 'cancel': '取消',
453
+ 'haveSameName': '已上传过同名文件: ',
454
+ 'rename': '重命名',
455
+ 'replace': '替换',
456
+ 'sizeZero': '文件大小为0',
457
+ 'uploadFailure': '上传失败',
458
+ 'uploadSucceed': '上传成功',
459
+ 'wait': '等一下,文档正在上传。',
460
+ 'saveTo': '正在将文件保存到',
461
+ 'delete': '删除',
462
+ 'selectAll': '全选',
463
+ 'selectNull': '全不选',
464
+ 'detail': '详情',
465
+ 'fileName': '文件名',
466
+ 'state': '状态',
467
+ 'operation': '操作',
468
+ 'size': '大小',
469
+ 'close': '关闭',
470
+ 'loading': '拼命加载中'
471
+ },
472
+ 'en-US': {
473
+ 'uploadFile': 'Upload File',
474
+ 'uploading': 'File Uploading……',
475
+ 'selectedCount': 'Selected files count:',
476
+ 'limitCount': 'System limit count:',
477
+ 'rechooseFile': ',Reselect upload file.',
478
+ 'save': 'Save',
479
+ 'cancel': 'Cancel',
480
+ 'haveSameName': 'A file with the same name has been uploaded: ',
481
+ 'rename': 'Rename',
482
+ 'replace': 'Replace',
483
+ 'sizeZero': 'File size is 0',
484
+ 'uploadFailure': 'Upload failed',
485
+ 'uploadSucceed': 'Upload successfully',
486
+ 'wait': 'Wait a minute, the file is uploading.',
487
+ 'saveTo': 'Saving file to',
488
+ 'delete': 'Delete',
489
+ 'selectAll': 'Select all',
490
+ 'selectNull': 'Not at all',
491
+ 'detail': 'Details',
492
+ 'fileName': 'Filename',
493
+ 'state': 'State',
494
+ 'operation': 'Operation',
495
+ 'size': 'Size',
496
+ 'close': 'Close',
497
+ 'loading': 'Loading'
498
+ },
499
+ 'en': {
500
+ 'uploadFile': 'Upload File',
501
+ 'uploading': 'File Uploading……',
502
+ 'selectedCount': 'Selected files count:',
503
+ 'limitCount': 'System limit count:',
504
+ 'rechooseFile': ',Reselect upload file.',
505
+ 'save': 'Save',
506
+ 'cancel': 'Cancel',
507
+ 'haveSameName': 'A file with the same name has been uploaded: ',
508
+ 'rename': 'Rename',
509
+ 'replace': 'Replace',
510
+ 'sizeZero': 'File size is 0',
511
+ 'uploadFailure': 'Upload failed',
512
+ 'uploadSucceed': 'Upload successfully',
513
+ 'wait': 'Wait a minute, the file is uploading.',
514
+ 'saveTo': 'Saving file to',
515
+ 'delete': 'Delete',
516
+ 'selectAll': 'Select all',
517
+ 'selectNull': 'Not at all',
518
+ 'detail': 'Details',
519
+ 'fileName': 'Filename',
520
+ 'state': 'State',
521
+ 'operation': 'Operation',
522
+ 'size': 'Size',
523
+ 'close': 'Close',
524
+ 'loading': 'Loading'
525
+ },
526
+ 'zh-CHT': {
527
+ 'uploadFile': '上傳文件',
528
+ 'uploading': '正在上傳文件……',
529
+ 'selectedCount': '已選擇文件數量:',
530
+ 'limitCount': '超出系統限制數量:',
531
+ 'rechooseFile': ',重新選擇上傳文件。',
532
+ 'save': '保存',
533
+ 'cancel': '取消',
534
+ 'haveSameName': '已上傳過同名文件: ',
535
+ 'rename': '重命名',
536
+ 'replace': '替換',
537
+ 'sizeZero': '文件大小為0',
538
+ 'uploadFailure': '上傳失敗',
539
+ 'uploadSucceed': '上傳成功',
540
+ 'wait': '等一下,文件正在上傳。',
541
+ 'saveTo': '正在將文件保存到',
542
+ 'delete': '删除',
543
+ 'selectAll': '全選',
544
+ 'selectNull': '全不選',
545
+ 'detail': '詳情',
546
+ 'fileName': '文件名',
547
+ 'state': '狀態',
548
+ 'operation': '操作',
549
+ 'size': '大小',
550
+ 'close': '關閉',
551
+ 'loading': '拼命加載中'
552
+ },
553
+ };
554
+
555
+ /**
556
+ * @fileoverview added by tsickle
557
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
558
+ */
559
+ var LocalLangPipe = /** @class */ (function () {
560
+ function LocalLangPipe(localeId) {
561
+ this.defaultLang = "zh-CHS";
562
+ this.langCode = localStorage.getItem("languageCode") || localeId || this.defaultLang;
563
+ this.lang = LANG_RESOURCES[this.langCode] || LANG_RESOURCES[this.defaultLang];
564
+ }
565
+ /**
566
+ * @param {?} name
567
+ * @return {?}
568
+ */
569
+ LocalLangPipe.prototype.transform = /**
570
+ * @param {?} name
571
+ * @return {?}
572
+ */
573
+ function (name) {
574
+ return this.lang[name] || name;
575
+ };
576
+ LocalLangPipe.decorators = [
577
+ { type: i0.Pipe, args: [{ name: 'locale' },] }
578
+ ];
579
+ /** @nocollapse */
580
+ LocalLangPipe.ctorParameters = function () {
581
+ return [
582
+ { type: String, decorators: [{ type: i0.Inject, args: [i0.LOCALE_ID,] }] }
583
+ ];
584
+ };
585
+ return LocalLangPipe;
586
+ }());
587
+
424
588
  /**
425
589
  * @fileoverview added by tsickle
426
590
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
@@ -467,6 +631,10 @@
467
631
  this.fileCount = 0;
468
632
  this.oldIdList = [];
469
633
  this.exStorageFileList = [];
634
+ if (this.injector) {
635
+ this.localeid = localStorage.getItem("languageCode") || this.injector.get(i0.LOCALE_ID);
636
+ this.localepipe = new LocalLangPipe(this.localeid);
637
+ }
470
638
  }
471
639
  /**
472
640
  * @return {?}
@@ -531,13 +699,17 @@
531
699
  */
532
700
  function ($event) {
533
701
  var _this = this;
702
+ /** @type {?} */
703
+ var loading = this.loadService.show({
704
+ message: this.localepipe.transform('uploading')
705
+ });
534
706
  this.hasSelectedFile = true;
535
707
  this.selectedFiles = document.querySelector('#file');
536
708
  if (this.fileCount > 0) {
537
709
  if (this.selectedFiles.files.length + this.files.length > this.fileCount) {
538
710
  /** @type {?} */
539
711
  var selectedNum = (( /** @type {?} */(this.selectedFiles.files.length))) + this.files.length;
540
- this.msgService.warning('已选择' + selectedNum + '个文件,超过系统设置的数量限制' + this.fileCount + '个,请重新选择上传文件。');
712
+ this.msgService.warning(this.localepipe.transform('selectedCount') + selectedNum + this.localepipe.transform('limitCount') + this.fileCount + this.localepipe.transform('rechooseFile'));
541
713
  return;
542
714
  }
543
715
  }
@@ -558,11 +730,11 @@
558
730
  // this.uploadFile(uuid, selectedFile);
559
731
  // })
560
732
  /** @type {?} */
561
- var msg_1 = this_1.msgService.show('warning', '已上传过同名文件: ' + selectedFile.name, {
733
+ var msg_1 = this_1.msgService.show('warning', this_1.localepipe.transform('haveSameName') + selectedFile.name, {
562
734
  initialState: {
563
735
  buttons: [
564
736
  {
565
- text: '重命名',
737
+ text: this_1.localepipe.transform('rename'),
566
738
  cls: 'btn btn-secondary',
567
739
  handle: ( /**
568
740
  * @return {?}
@@ -591,7 +763,7 @@
591
763
  })
592
764
  },
593
765
  {
594
- text: '替换',
766
+ text: this_1.localepipe.transform('replace'),
595
767
  cls: 'btn btn-secondary',
596
768
  handle: ( /**
597
769
  * @return {?}
@@ -600,7 +772,7 @@
600
772
  * @param {?} x
601
773
  * @return {?}
602
774
  */function (x) { return x.fileName == selectedFile.name; })).metadataId;
603
- _this.uploadFile(uuid, selectedFile, selectedFile.name);
775
+ _this.uploadFile(uuid, selectedFile, selectedFile.name, FileState.Update);
604
776
  _this.uploadedFileTotal--;
605
777
  if (_this.oldUploadedFileList.find(( /**
606
778
  * @param {?} x
@@ -616,7 +788,7 @@
616
788
  })
617
789
  },
618
790
  {
619
- text: '取消',
791
+ text: this_1.localepipe.transform('cancel'),
620
792
  cls: 'btn btn-secondary',
621
793
  handle: ( /**
622
794
  * @return {?}
@@ -655,14 +827,14 @@
655
827
  if (this.errFileList.length > 0) {
656
828
  /** @type {?} */
657
829
  var name_1 = this.listToString(this.errFileList);
658
- this.msgService.warning('已上传同名文件: ' + name_1 + '请重新选择上传文件。');
830
+ this.msgService.warning(this.localepipe.transform('haveSameName') + name_1 + this.localepipe.transform('rechooseFile'));
659
831
  this.errFileList = [];
660
832
  }
661
833
  if (this.nullFileList.length > 0) {
662
834
  /** @type {?} */
663
835
  var name_2 = this.listToString(this.nullFileList);
664
836
  name_2 = name_2.substring(0, name_2.length - 1);
665
- this.msgService.warning('文件: ' + name_2 + ' 大小为0,请重新选择上传文件。');
837
+ this.msgService.warning(name_2 + this.localepipe.transform('sizeZero') + this.localepipe.transform('rechooseFile'));
666
838
  this.nullFileList = [];
667
839
  }
668
840
  // if (this.errTypeList.length > 0) {
@@ -673,6 +845,7 @@
673
845
  this.files = this.files.slice();
674
846
  this.fileAllSelected = false;
675
847
  $event.target.value = '';
848
+ loading.close();
676
849
  };
677
850
  /**
678
851
  * @param {?} file
@@ -683,22 +856,27 @@
683
856
  * @return {?}
684
857
  */
685
858
  function (file) {
686
- this.msgService.error('上传附件失败。' + file.errorMessage);
859
+ this.msgService.error(this.localepipe.transform('uploadFailure') + file.errorMessage);
687
860
  };
688
861
  /**
689
862
  * @param {?} uuid
690
863
  * @param {?} selectedFile
691
864
  * @param {?} fileName
865
+ * @param {?=} state
692
866
  * @return {?}
693
867
  */
694
868
  FileUploadComponent.prototype.uploadFile = /**
695
869
  * @param {?} uuid
696
870
  * @param {?} selectedFile
697
871
  * @param {?} fileName
872
+ * @param {?=} state
698
873
  * @return {?}
699
874
  */
700
- function (uuid, selectedFile, fileName) {
875
+ function (uuid, selectedFile, fileName, state) {
701
876
  var _this = this;
877
+ if (state === void 0) {
878
+ state = FileState.New;
879
+ }
702
880
  /** @type {?} */
703
881
  var fileInfo;
704
882
  // let uuid = UUID.UUID();
@@ -736,6 +914,7 @@
736
914
  uploadFileInfo.metadataId = uuid;
737
915
  uploadFileInfo.fileName = fileInfo.name;
738
916
  uploadFileInfo.fileSize = fileInfo.size;
917
+ uploadFileInfo.state = state;
739
918
  var _loop_2 = function () {
740
919
  /** @type {?} */
741
920
  var uploadInfo = new GspFormUploadEntity;
@@ -1154,7 +1333,7 @@
1154
1333
  // this.notifyService.success(<NotifyOptions>{
1155
1334
  // msg: '保存成功!', timeout: 3000
1156
1335
  // });
1157
- this.msgService.warning('等一下,文档正在上传。');
1336
+ this.msgService.warning(this.localepipe.transform('wait'));
1158
1337
  return rxjs.of(false);
1159
1338
  }
1160
1339
  if (this.storageExtension == null)
@@ -1165,14 +1344,14 @@
1165
1344
  else {
1166
1345
  /** @type {?} */
1167
1346
  var loading_1 = this.loadService.show({
1168
- message: '正在将文件保存到' + this.storageExtension.extensionName
1347
+ message: this.localepipe.transform('saveTo') + this.storageExtension.extensionName
1169
1348
  });
1170
1349
  return this.uploadService.changeStorageInstance(this.exStorageFileList, this.rootId).pipe(operators.map(( /**
1171
1350
  * @param {?} res
1172
1351
  * @return {?}
1173
1352
  */function (res) {
1174
- if (res != null)
1175
- _this.msgService.error('保存到' + _this.storageExtension.extensionName + "失败,上传文件自动保存到" + _this.storageExtension.defaultPropertyName + "存储。" + res.error.Message);
1353
+ // if (res != null)
1354
+ // this.msgService.error('保存到' + this.storageExtension.extensionName + "失败,上传文件自动保存到" + this.storageExtension.defaultPropertyName + "存储。" + res.error.Message);
1176
1355
  loading_1.close();
1177
1356
  return _this.uploadFileInfoList;
1178
1357
  })));
@@ -1299,7 +1478,7 @@
1299
1478
  FileUploadComponent.decorators = [
1300
1479
  { type: i0.Component, args: [{
1301
1480
  selector: 'app-file-upload',
1302
- template: "<div *ngIf=\"hasSelectedFile\">\n\n <div class=\"farris-header\" style=\"height: 50px; width: 100%\">\n <div class=\"btn btn-secondary upload_button\">\n <img [src]=\"uploadLittleIconAddress\">\n <span>\u4E0A\u4F20\u6587\u4EF6 </span>\n <input type=\"file\" (change)=\"fileSelected($event)\" id=\"file\" multiple=\"multiple\" title=\"\" [accept]=\"fileType\">\n </div>\n\n\n <button *ngIf=\"showType==0 && !fileAllSelected && files.length >0 \" style=\"padding-left: 20px\" class=\"btn-link btn ng-star-inserted\" (click)=\"selectAllFile()\">\u5168\u9009</button>\n <button *ngIf=\"showType==0 && fileAllSelected && files.length >0 \" style=\"padding-left: 20px\" class=\"btn-link btn ng-star-inserted\" (click)=\"selectAllFile()\">\u5168\u4E0D\u9009</button>\n <button *ngIf=\"showType==0 && selectedFileCount>0\" style=\"padding-left: 20px\" class=\"btn-link btn ng-star-inserted\" (click)=\"listMultipleDeleteFile()\">\u5220\u9664</button>\n\n <button *ngIf=\"showType==1 && selectedFileCount>0\" style=\"padding-left: 20px\" class=\"btn-link btn ng-star-inserted\" (click)=\"listMultipleDeleteFile()\">\u5220\u9664</button>\n\n <kendo-buttongroup [selection]=\"'single'\" class=\"button_group_upload \" style=\"background-color: #ffffff; color: #388FFF;border: 1px solid #ddd;\" look=\"flat\">\n <button kendoButton [selected]=\"true\" [toggleable]=\"true\" [imageUrl]=\"'/platform/runtime/dfs/images/piclist.png'\" (click)=\"showByGroup()\"></button>\n <button kendoButton [toggleable]=\"true\" [imageUrl]=\"'/platform/runtime/dfs/images/queuelist.png'\" (click)=\"showByList()\"></button>\n </kendo-buttongroup>\n\n\n </div>\n\n <!-- <div class=\"progress\" style=\"height: 12px;\">\n <div class=\"progress-bar\" role=\"progressbar\" [ngStyle]=\"uploadProcess\"></div>\n </div> -->\n\n <div class=\"pic_list\" *ngIf=\"showType==0\">\n <ul *ngFor=\"let file of files\">\n <li (mouseenter)=\"mouseOver(file)\" (mouseleave)=\"mouseOut(file)\">\n <div *ngIf=\"file.isUploading\">\n <farris-progress [type]=\"'circle'\" [percent]=\"file.uploadProcess\" [strokeLinecap]=\"'square'\" [status]=\"'active'\"></farris-progress>\n </div>\n\n <table *ngIf=\"!file.uploadResult && !file.isUploading\" style=\"margin: 0 auto; border: 1px solid #ddd; width: 135px; height: 160px;\">\n <tr style=\"margin: 0 auto ; height: 80px;\">\n <td style=\"text-align: center\"><span class=\"f-icon f-icon-error\"></span></td>\n </tr>\n <tr style=\"margin: 0 auto ; height: 30px;\">\n <td style=\"text-align: center\"> \u4E0A\u4F20\u5931\u8D25 </td>\n </tr>\n <tr>\n <td style=\"text-align: center\"><button style=\"margin: 0 auto ; height: 20px; \" class=\"btn-link btn ng-star-inserted\" (click)=\"showErrorMessage(file)\">\u8BE6\u60C5</button></td>\n </tr>\n </table>\n <div *ngIf=\"!file.isUploading && file.uploadResult\" style=\"border: 1px solid #ddd;\">\n <img [src]='file.source'>\n <div *ngIf=\"haveExtensionProperty\" style=\"width: 133px; height: 25px; background-color: white; position: absolute;bottom: 0; \">\n\n <div style=\"width: 100px;height: 25px;position:absolute;margin: 0 17px;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"propertiesNames\" [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"typeChange($event,file)\" [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </div>\n </div>\n </div>\n <table *ngIf=\"!file.isUploading\">\n <tr style=\"height: 20px\">\n <td style=\"width: 15px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" [id]=\"file.name\" (click)=\"checkoutSelectFile(file.name)\"> -->\n <div class=\"farris-input-wrap\" style=\"height: 20px\" (click)=\"checkoutSelectFile(file)\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0;height: 20px;\">\n <input class=\"custom-control-input\" type=\"checkbox\" [id]=\"file.name\" [(ngModel)]=\"file.selectd\">\n <label class=\"custom-control-label\" style=\"padding: 0 0 10px 0; position: relative; top: -8px;\"></label>\n </div>\n </div>\n </td>\n <td style=\"width: 120px; vertical-align: middle; text-align: center\" [title]=\"file.name\">\n {{file.picListDisplayName}}</td>\n </tr>\n </table>\n <!-- <span>{{file.picListDisplayName}}</span> -->\n <!-- <p class=\"filename\">{{file.picListDisplayName}}</p> -->\n <button *ngIf=\"!file.isUploading && file.mouseOn\" style=\"position: absolute; top: 0; right: 0px; width: 24px; height: 24px;\" kendoButton [icon]=\"'delete'\" (click)=\"listDeleteFile(file)\"></button>\n <!-- <button *ngIf=\"file.hasUploaded\" class=\"k-primary\" kendoButton [icon]=\"'check'\" [disabled]=\"true\"></button> -->\n </li>\n </ul>\n <br>\n </div>\n\n <div class=\"queue_list\" *ngIf=\"showType==1\">\n <table>\n <tr style=\"height: 50px; table-layout:fixed;\">\n <th style=\"width: 40px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" id=\"allCheckBox\" (click)=\"selectAllFile()\"> -->\n <div class=\"farris-input-wrap\" (click)=\"selectAllFile()\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0\">\n <input class=\"custom-control-input\" type=\"checkbox\" id=\"allCheckBox\" [(ngModel)]=\"fileAllSelected\">\n <label class=\"custom-control-label\" style=\"padding: 0\"></label>\n </div>\n </div>\n </th>\n <th style=\"vertical-align: middle\" [ngStyle]=\"queueListStyle\">\u6587\u4EF6\u540D</th>\n <th style=\"width: 100px; vertical-align: middle\">\u5927\u5C0F</th>\n <th style=\"width: 170px; vertical-align: middle; text-align: center\">\u72B6\u6001</th>\n <th *ngIf=\"haveExtensionProperty\" style=\"width: 100px; vertical-align: middle; text-align: center\">\n {{storageExtension.extensionName}}\n </th>\n <th style=\"width: 140px; vertical-align: middle; text-align: center\">\u64CD\u4F5C</th>\n </tr>\n </table>\n <div style=\"height: 370px; overflow: auto;\">\n <table>\n <tr *ngFor=\"let file of files\" style=\"height: 40px\">\n <td colspan=\"5\" *ngIf=\"file.isUploading\">\n <!-- <div style=\"width:100%; display: table-cell; vertical-align: middle; text-align: center; \"> -->\n <div style=\"width: 500px;margin:0 auto\">\n <farris-progress [percent]=\"file.uploadProcess\" [status]=\"'active'\">\n </farris-progress>\n </div>\n\n </td>\n <td *ngIf=\"!file.isUploading\" style=\" width: 40px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" [id]=\"file.name\" (click)=\"checkoutSelectFile(file.name)\"> -->\n <div class=\"farris-input-wrap\" (click)=\"checkoutSelectFile(file)\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0\">\n <input class=\"custom-control-input\" type=\"checkbox\" [id]=\"file.name\" [(ngModel)]=\"file.selectd\">\n <label class=\"custom-control-label\" style=\"padding: 0\"></label>\n </div>\n </div>\n </td>\n <td *ngIf=\"!file.isUploading\" style=\"vertical-align: middle\" [ngStyle]=\"queueListStyle\">\n {{file.queueListDisplayName}}</td>\n <td *ngIf=\"!file.isUploading\" style=\"width: 100px; vertical-align: middle\">{{file.size}}</td>\n <td *ngIf=\"!file.isUploading\" style=\"text-align: center; width: 170px; vertical-align: middle;\">\n <table *ngIf=\"!file.uploadResult\" style=\"margin: 0 auto\">\n <tr style=\"margin: 0 auto\">\n <td><span class=\"f-icon f-icon-error\"></span></td>\n <td> \u4E0A\u4F20\u5931\u8D25 </td>\n <td><button style=\"height: 24px\" class=\"btn-link btn ng-star-inserted\" (click)=\"showErrorMessage(file)\">\u8BE6\u60C5</button></td>\n </tr>\n </table>\n <!-- <span *ngIf=\"!file.uploadResult\"><span class=\"f-icon f-icon-error\"></span> \u4E0A\u4F20\u5931\u8D25 <button\n class=\"btn-link btn ng-star-inserted\" (click)=\"showErrorMessage(file)\">\u8BE6\u60C5</button></span> -->\n <span *ngIf=\"file.uploadResult\"><span class=\"f-icon f-icon-success\"></span> \u4E0A\u4F20\u6210\u529F</span>\n </td>\n <td *ngIf=\"!file.isUploading&&haveExtensionProperty\" style=\"text-align: center; width: 100px; vertical-align: middle;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"propertiesNames\" [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"typeChange($event,file)\" [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </td>\n <td *ngIf=\"!file.isUploading\" style=\"text-align: center; width: 140px; vertical-align: middle;\">\n <!-- <button *ngIf=\"file.uploadResult\" class=\"btn-link btn ng-star-inserted\" (click)=\"retryUploadFile(file.name)\">\u91CD\u8BD5</button> -->\n <button class=\"btn-link btn ng-star-inserted\" style=\"margin: 0 auto\" (click)=\"listDeleteFile(file)\">\u5220\u9664</button>\n </td>\n\n </tr>\n </table>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"!hasSelectedFile\" class='home_page'>\n <img [src]=\"uploadIconAddress\">\n <div>\n <span class=\"btn btn-primary btn-lg\">\u4E0A\u4F20\u6587\u4EF6 </span>\n <input type=\"file\" (change)=\"fileSelected($event)\" id=\"file\" multiple=\"multiple\" title=\"\" [accept]=\"fileType\">\n </div>\n</div>",
1481
+ template: "<div *ngIf=\"hasSelectedFile\">\n\n <div class=\"farris-header\" style=\"height: 50px; width: 100%\">\n <div class=\"btn btn-secondary upload_button\">\n <img [src]=\"uploadLittleIconAddress\">\n <span>{{'uploadFile' | locale}} </span>\n <input type=\"file\" (change)=\"fileSelected($event)\" id=\"file\" multiple=\"multiple\" title=\"\" [accept]=\"fileType\">\n </div>\n\n\n <button *ngIf=\"showType==0 && !fileAllSelected && files.length >0 \" style=\"padding-left: 20px\" class=\"btn-link btn ng-star-inserted\" (click)=\"selectAllFile()\">{{'selectAll' | locale}}</button>\n <button *ngIf=\"showType==0 && fileAllSelected && files.length >0 \" style=\"padding-left: 20px\" class=\"btn-link btn ng-star-inserted\" (click)=\"selectAllFile()\">{{'selectNull' | locale}}</button>\n <button *ngIf=\"showType==0 && selectedFileCount>0\" style=\"padding-left: 20px\" class=\"btn-link btn ng-star-inserted\" (click)=\"listMultipleDeleteFile()\">{{'delete' | locale}}</button>\n\n <button *ngIf=\"showType==1 && selectedFileCount>0\" style=\"padding-left: 20px\" class=\"btn-link btn ng-star-inserted\" (click)=\"listMultipleDeleteFile()\">{{'delete' | locale}}</button>\n\n <kendo-buttongroup [selection]=\"'single'\" class=\"button_group_upload \" style=\"background-color: #ffffff; color: #388FFF;border: 1px solid #ddd;\" look=\"flat\">\n <button kendoButton [selected]=\"true\" [toggleable]=\"true\" [imageUrl]=\"'/platform/runtime/dfs/images/piclist.png'\" (click)=\"showByGroup()\"></button>\n <button kendoButton [toggleable]=\"true\" [imageUrl]=\"'/platform/runtime/dfs/images/queuelist.png'\" (click)=\"showByList()\"></button>\n </kendo-buttongroup>\n\n\n </div>\n\n <!-- <div class=\"progress\" style=\"height: 12px;\">\n <div class=\"progress-bar\" role=\"progressbar\" [ngStyle]=\"uploadProcess\"></div>\n </div> -->\n\n <div class=\"pic_list\" *ngIf=\"showType==0\">\n <ul *ngFor=\"let file of files\">\n <li (mouseenter)=\"mouseOver(file)\" (mouseleave)=\"mouseOut(file)\">\n <div *ngIf=\"file.isUploading\">\n <farris-progress [type]=\"'circle'\" [percent]=\"file.uploadProcess\" [strokeLinecap]=\"'square'\" [status]=\"'active'\"></farris-progress>\n </div>\n\n <table *ngIf=\"!file.uploadResult && !file.isUploading\" style=\"margin: 0 auto; border: 1px solid #ddd; width: 135px; height: 160px;\">\n <tr style=\"margin: 0 auto ; height: 80px;\">\n <td style=\"text-align: center\"><span class=\"f-icon f-icon-error\"></span></td>\n </tr>\n <tr style=\"margin: 0 auto ; height: 30px;\">\n <td style=\"text-align: center\"> {{'uploadFailure' | locale}} </td>\n </tr>\n <tr>\n <td style=\"text-align: center\"><button style=\"margin: 0 auto ; height: 20px; \" class=\"btn-link btn ng-star-inserted\" (click)=\"showErrorMessage(file)\">{{'detail' | locale}}</button></td>\n </tr>\n </table>\n <div *ngIf=\"!file.isUploading && file.uploadResult\" style=\"border: 1px solid #ddd;\">\n <img [src]='file.source'>\n <div *ngIf=\"haveExtensionProperty\" style=\"width: 133px; height: 25px; background-color: white; position: absolute;bottom: 0; \">\n\n <div style=\"width: 100px;height: 25px;position:absolute;margin: 0 17px;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"propertiesNames\" [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"typeChange($event,file)\" [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </div>\n </div>\n </div>\n <table *ngIf=\"!file.isUploading\">\n <tr style=\"height: 20px\">\n <td style=\"width: 15px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" [id]=\"file.name\" (click)=\"checkoutSelectFile(file.name)\"> -->\n <div class=\"farris-input-wrap\" style=\"height: 20px\" (click)=\"checkoutSelectFile(file)\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0;height: 20px;\">\n <input class=\"custom-control-input\" type=\"checkbox\" [id]=\"file.name\" [(ngModel)]=\"file.selectd\">\n <label class=\"custom-control-label\" style=\"padding: 0 0 10px 0; position: relative; top: -8px;\"></label>\n </div>\n </div>\n </td>\n <td style=\"width: 120px; vertical-align: middle; text-align: center\" [title]=\"file.name\">\n {{file.picListDisplayName}}</td>\n </tr>\n </table>\n <!-- <span>{{file.picListDisplayName}}</span> -->\n <!-- <p class=\"filename\">{{file.picListDisplayName}}</p> -->\n <button *ngIf=\"!file.isUploading && file.mouseOn\" style=\"position: absolute; top: 0; right: 0px; width: 24px; height: 24px;\" kendoButton [icon]=\"'delete'\" (click)=\"listDeleteFile(file)\"></button>\n <!-- <button *ngIf=\"file.hasUploaded\" class=\"k-primary\" kendoButton [icon]=\"'check'\" [disabled]=\"true\"></button> -->\n </li>\n </ul>\n <br>\n </div>\n\n <div class=\"queue_list\" *ngIf=\"showType==1\">\n <table>\n <tr style=\"height: 50px; table-layout:fixed;\">\n <th style=\"width: 40px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" id=\"allCheckBox\" (click)=\"selectAllFile()\"> -->\n <div class=\"farris-input-wrap\" (click)=\"selectAllFile()\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0\">\n <input class=\"custom-control-input\" type=\"checkbox\" id=\"allCheckBox\" [(ngModel)]=\"fileAllSelected\">\n <label class=\"custom-control-label\" style=\"padding: 0\"></label>\n </div>\n </div>\n </th>\n <th style=\"vertical-align: middle\" [ngStyle]=\"queueListStyle\">{{'fileName' | locale}}</th>\n <th style=\"width: 100px; vertical-align: middle\">{{'size' | locale}}</th>\n <th style=\"width: 170px; vertical-align: middle; text-align: center\">{{'state' | locale}}</th>\n <th *ngIf=\"haveExtensionProperty\" style=\"width: 100px; vertical-align: middle; text-align: center\">\n {{storageExtension.extensionName}}\n </th>\n <th style=\"width: 140px; vertical-align: middle; text-align: center\">{{'operation' | locale}}</th>\n </tr>\n </table>\n <div style=\"height: 370px; overflow: auto;\">\n <table>\n <tr *ngFor=\"let file of files\" style=\"height: 40px\">\n <td colspan=\"5\" *ngIf=\"file.isUploading\">\n <!-- <div style=\"width:100%; display: table-cell; vertical-align: middle; text-align: center; \"> -->\n <div style=\"width: 500px;margin:0 auto\">\n <farris-progress [percent]=\"file.uploadProcess\" [status]=\"'active'\">\n </farris-progress>\n </div>\n\n </td>\n <td *ngIf=\"!file.isUploading\" style=\" width: 40px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" [id]=\"file.name\" (click)=\"checkoutSelectFile(file.name)\"> -->\n <div class=\"farris-input-wrap\" (click)=\"checkoutSelectFile(file)\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0\">\n <input class=\"custom-control-input\" type=\"checkbox\" [id]=\"file.name\" [(ngModel)]=\"file.selectd\">\n <label class=\"custom-control-label\" style=\"padding: 0\"></label>\n </div>\n </div>\n </td>\n <td *ngIf=\"!file.isUploading\" style=\"vertical-align: middle\" [ngStyle]=\"queueListStyle\">\n {{file.queueListDisplayName}}</td>\n <td *ngIf=\"!file.isUploading\" style=\"width: 100px; vertical-align: middle\">{{file.size}}</td>\n <td *ngIf=\"!file.isUploading\" style=\"text-align: center; width: 170px; vertical-align: middle;\">\n <table *ngIf=\"!file.uploadResult\" style=\"margin: 0 auto\">\n <tr style=\"margin: 0 auto\">\n <td><span class=\"f-icon f-icon-error\"></span></td>\n <td> {{'uploadFailure' | locale}} </td>\n <td><button style=\"height: 24px\" class=\"btn-link btn ng-star-inserted\" (click)=\"showErrorMessage(file)\">{{'detail' | locale}}</button></td>\n </tr>\n </table>\n <!-- <span *ngIf=\"!file.uploadResult\"><span class=\"f-icon f-icon-error\"></span> \u4E0A\u4F20\u5931\u8D25 <button\n class=\"btn-link btn ng-star-inserted\" (click)=\"showErrorMessage(file)\">\u8BE6\u60C5</button></span> -->\n <span *ngIf=\"file.uploadResult\"><span class=\"f-icon f-icon-success\"></span> {{'uploadSucceed' | locale}}</span>\n </td>\n <td *ngIf=\"!file.isUploading&&haveExtensionProperty\" style=\"text-align: center; width: 100px; vertical-align: middle;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"propertiesNames\" [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"typeChange($event,file)\" [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </td>\n <td *ngIf=\"!file.isUploading\" style=\"text-align: center; width: 140px; vertical-align: middle;\">\n <!-- <button *ngIf=\"file.uploadResult\" class=\"btn-link btn ng-star-inserted\" (click)=\"retryUploadFile(file.name)\">\u91CD\u8BD5</button> -->\n <button class=\"btn-link btn ng-star-inserted\" style=\"margin: 0 auto\" (click)=\"listDeleteFile(file)\">{{'delete' | locale}}</button>\n </td>\n\n </tr>\n </table>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"!hasSelectedFile\" class='home_page'>\n <img [src]=\"uploadIconAddress\">\n <div>\n <span class=\"btn btn-primary btn-lg\">\u4E0A\u4F20\u6587\u4EF6 </span>\n <input type=\"file\" (change)=\"fileSelected($event)\" id=\"file\" multiple=\"multiple\" title=\"\" [accept]=\"fileType\">\n </div>\n</div>",
1303
1482
  styles: [".home_page{text-align:center}.home_page img{position:absolute;top:180px;margin-left:-35px;width:70px;height:56px}.home_page div{position:absolute;left:50%;top:255px;margin-left:-75px;width:150px;height:32px;overflow:hidden}.home_page div span{width:150px;height:32px;position:absolute;z-index:10;left:0}.home_page div input{position:absolute;left:0;top:0;opacity:0;filter:'alpha(opacity=0)';z-index:11}.upload_button{width:110px;height:32px;overflow:hidden}.upload_button span{position:relative;right:-4px;top:4px;width:56px;height:22px;font-size:14px}.upload_button input{height:32px;width:110px;position:absolute;left:22px;top:12px;opacity:0;filter:'alpha(opacity=0)';overflow:hidden}.upload_button img{position:relative;left:-6px;top:3px;width:14px;height:14px}.button_group_upload{position:absolute;right:18px;top:12px;height:26px;width:53px}.button_group_upload button{height:26px;width:26px}.fileinput-button{position:absolute;right:60px;bottom:40px;overflow:hidden;width:24px;height:24px;border-radius:12px;transform:scale(2.5);-ms-transform:scale(2.5);-moz-transform:scale(2.5);-webkit-transform:scale(2.5);-o-transform:scale(2.5);color:#0686fd}.fileinput-button input{position:absolute;left:0;top:0;opacity:0;filter:'alpha(opacity=0)'}.pic-droplist{height:24px;color:#e0e1e2;background-color:#e0e1e2}.pic-droplist input-group{display:table-cell;width:100px;text-align:center;border:0}.pic-droplist input-group div{border:0}.pic-droplist input-group div div,.pic-droplist input-group div input{background-color:#e0e1e2}.pic_list{padding:0;height:420px;overflow-y:auto;overflow-x:hidden}.pic_list ul{padding:0;list-style:none;width:100%;margin:20px 0 0 20px}.pic_list ul li{height:180px;width:135px;margin:8px 0 8px 12px;float:left;overflow:hidden;align-items:center;position:relative}.pic_list ul li div{width:135px;height:160px;margin:auto;display:table-cell;vertical-align:middle;text-align:center;position:relative}.pic_list ul li div img{max-width:120px;max-height:118px;align-items:center;margin:auto;vertical-align:middle;text-align:center}.pic_list ul li span.filename{width:100px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.queue_list{display:block;height:420px;overflow-y:auto}.file_list{list-style:none;margin:0;padding:0;overflow-x:hidden;overflow-y:auto}.file_list li{height:50px;line-height:35px;font-size:16px;position:relative}.file_list li button{float:right;top:6px;right:10px;width:20px}.file_list li p.title{padding:0 0 0 6px;margin:0 210px 0 0}.file_list li p.size{position:absolute;width:100px;top:0;right:100px}"]
1304
1483
  }] }
1305
1484
  ];
@@ -1493,12 +1672,13 @@
1493
1672
  * @fileoverview added by tsickle
1494
1673
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1495
1674
  */
1675
+ var ɵ0$1 = localStorage.getItem('languageCode') || 'zh-CHS';
1496
1676
  var UploadModule = /** @class */ (function () {
1497
1677
  function UploadModule() {
1498
1678
  }
1499
1679
  UploadModule.decorators = [
1500
1680
  { type: i0.NgModule, args: [{
1501
- declarations: [FileUploadComponent],
1681
+ declarations: [FileUploadComponent, LocalLangPipe],
1502
1682
  imports: [
1503
1683
  common.CommonModule,
1504
1684
  kendoAngularButtons.ButtonsModule,
@@ -1511,7 +1691,8 @@
1511
1691
  ],
1512
1692
  exports: [FileUploadComponent],
1513
1693
  entryComponents: [FileUploadComponent],
1514
- providers: [UploadService, DownloadService]
1694
+ providers: [UploadService, DownloadService, cafCommon.LanguageService,
1695
+ { provide: i0.LOCALE_ID, useValue: ɵ0$1 },]
1515
1696
  },] }
1516
1697
  ];
1517
1698
  return UploadModule;
@@ -1599,6 +1780,11 @@
1599
1780
  this.componentFactoryResolver = componentFactoryResolver;
1600
1781
  this.injector = injector;
1601
1782
  this.fileInfoList = [];
1783
+ if (this.injector) {
1784
+ this.modalService = this.injector.get(uiModal.BsModalService);
1785
+ this.localeid = localStorage.getItem("languageCode") || this.injector.get(i0.LOCALE_ID);
1786
+ this.localpipe = new LocalLangPipe(this.localeid);
1787
+ }
1602
1788
  }
1603
1789
  /**
1604
1790
  * @param {?} formId
@@ -1625,11 +1811,11 @@
1625
1811
  viewerRef.instance.rootId = rootId;
1626
1812
  viewerRef.instance.formId = formId;
1627
1813
  _this.dlg = _this.modalService.show(viewerRef, {
1628
- title: '上传文件',
1814
+ title: _this.localpipe.transform('uploadFile'),
1629
1815
  width: 950, height: 570,
1630
1816
  buttons: [
1631
1817
  {
1632
- text: '保存', cls: 'k-button k-button-icontext k-primary', handle: ( /**
1818
+ text: _this.localpipe.transform('save'), cls: 'k-button k-button-icontext k-primary', handle: ( /**
1633
1819
  * @return {?}
1634
1820
  */function () {
1635
1821
  _this.dlg.content.upload().subscribe(( /**
@@ -1645,7 +1831,7 @@
1645
1831
  })
1646
1832
  },
1647
1833
  {
1648
- text: '关闭', cls: 'k-button k-button-icontext', handle: ( /**
1834
+ text: _this.localpipe.transform('close'), cls: 'k-button k-button-icontext', handle: ( /**
1649
1835
  * @return {?}
1650
1836
  */function () {
1651
1837
  _this.dlg.close();
@@ -1720,11 +1906,11 @@
1720
1906
  uploadRef.instance.formId = formId;
1721
1907
  uploadRef.instance.oldIdList = oldIdList;
1722
1908
  _this.dlg = _this.modalService.show(uploadRef, {
1723
- title: '上传文件',
1909
+ title: _this.localpipe.transform('uploadFile'),
1724
1910
  width: 950, height: 570,
1725
1911
  buttons: [
1726
1912
  {
1727
- text: '保存', cls: 'k-button k-button-icontext k-primary', handle: ( /**
1913
+ text: _this.localpipe.transform('save'), cls: 'k-button k-button-icontext k-primary', handle: ( /**
1728
1914
  * @return {?}
1729
1915
  */function () {
1730
1916
  _this.dlg.content.upload().subscribe(( /**
@@ -1740,7 +1926,7 @@
1740
1926
  })
1741
1927
  },
1742
1928
  {
1743
- text: '关闭', cls: 'k-button k-button-icontext', handle: ( /**
1929
+ text: _this.localpipe.transform('close'), cls: 'k-button k-button-icontext', handle: ( /**
1744
1930
  * @return {?}
1745
1931
  */function () {
1746
1932
  _this.dlg.close();
@@ -1873,6 +2059,8 @@
1873
2059
  exports.GspFormUploadEntity = GspFormUploadEntity;
1874
2060
  exports.FileInfo = FileInfo;
1875
2061
  exports.OperatingModes = OperatingModes;
2062
+ exports.FileState = FileState;
2063
+ exports.ɵb = LocalLangPipe;
1876
2064
 
1877
2065
  Object.defineProperty(exports, '__esModule', { value: true });
1878
2066