@rs-pk/asset-management 1.0.26 → 1.0.28

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 (44) hide show
  1. package/bundles/rs-pk-asset-management.umd.js +398 -63
  2. package/bundles/rs-pk-asset-management.umd.js.map +1 -1
  3. package/bundles/rs-pk-asset-management.umd.min.js +2 -2
  4. package/bundles/rs-pk-asset-management.umd.min.js.map +1 -1
  5. package/esm2015/lib/components/partial/asset-dialog/asset-dialog.component.js +1 -2
  6. package/esm2015/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +1 -2
  7. package/esm2015/lib/components/partial/asset-wrapper/asset-wrapper.component.js +2 -9
  8. package/esm2015/lib/components/partial/folder-item/folder-item.component.js +2 -2
  9. package/esm2015/lib/components/partial/folder-list/folder-list.component.js +33 -5
  10. package/esm2015/lib/components/partial/node-details/node-details.component.js +64 -12
  11. package/esm2015/lib/components/partial/node-tree/node-tree.component.js +148 -10
  12. package/esm2015/lib/components/partial/search-box/search-box.component.js +2 -2
  13. package/esm2015/lib/models/asset.model.js +15 -1
  14. package/esm2015/lib/models/index.js +2 -2
  15. package/esm2015/lib/services/asset.service.js +47 -7
  16. package/esm2015/lib/services/env-config.service.js +3 -1
  17. package/esm2015/lib/services/node-tree.service.js +14 -6
  18. package/esm5/lib/components/partial/asset-dialog/asset-dialog.component.js +1 -2
  19. package/esm5/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +1 -2
  20. package/esm5/lib/components/partial/asset-wrapper/asset-wrapper.component.js +2 -12
  21. package/esm5/lib/components/partial/folder-item/folder-item.component.js +2 -2
  22. package/esm5/lib/components/partial/folder-list/folder-list.component.js +40 -5
  23. package/esm5/lib/components/partial/node-details/node-details.component.js +82 -15
  24. package/esm5/lib/components/partial/node-tree/node-tree.component.js +184 -19
  25. package/esm5/lib/components/partial/search-box/search-box.component.js +2 -2
  26. package/esm5/lib/models/asset.model.js +15 -1
  27. package/esm5/lib/models/index.js +2 -2
  28. package/esm5/lib/services/asset.service.js +61 -8
  29. package/esm5/lib/services/env-config.service.js +3 -1
  30. package/esm5/lib/services/node-tree.service.js +23 -9
  31. package/fesm2015/rs-pk-asset-management.js +317 -47
  32. package/fesm2015/rs-pk-asset-management.js.map +1 -1
  33. package/fesm5/rs-pk-asset-management.js +401 -66
  34. package/fesm5/rs-pk-asset-management.js.map +1 -1
  35. package/lib/components/partial/asset-wrapper/asset-wrapper.component.d.ts +0 -1
  36. package/lib/components/partial/folder-list/folder-list.component.d.ts +8 -2
  37. package/lib/components/partial/node-details/node-details.component.d.ts +10 -0
  38. package/lib/components/partial/node-tree/node-tree.component.d.ts +15 -1
  39. package/lib/models/asset.model.d.ts +7 -0
  40. package/lib/services/asset.service.d.ts +9 -2
  41. package/lib/services/env-config.service.d.ts +1 -0
  42. package/lib/services/node-tree.service.d.ts +2 -1
  43. package/package.json +1 -1
  44. package/rs-pk-asset-management.metadata.json +1 -1
@@ -268,6 +268,10 @@
268
268
  IAssetByIdPayload.prototype.assetId;
269
269
  /** @type {?|undefined} */
270
270
  IAssetByIdPayload.prototype.isFilter;
271
+ /** @type {?|undefined} */
272
+ IAssetByIdPayload.prototype.pageIndex;
273
+ /** @type {?|undefined} */
274
+ IAssetByIdPayload.prototype.pageSize;
271
275
  }
272
276
  /**
273
277
  * @record
@@ -276,6 +280,8 @@
276
280
  if (false) {
277
281
  /** @type {?|undefined} */
278
282
  IInitialFolderTreeOptions.prototype.dispatchRootId;
283
+ /** @type {?|undefined} */
284
+ IInitialFolderTreeOptions.prototype.pageSize;
279
285
  }
280
286
  var AssetModel = /** @class */ (function () {
281
287
  function AssetModel() {
@@ -337,6 +343,8 @@
337
343
  AssetModel.prototype.HaveChildren;
338
344
  /** @type {?} */
339
345
  AssetModel.prototype.ParentId;
346
+ /** @type {?} */
347
+ AssetModel.prototype.Children;
340
348
  }
341
349
  var FolderTreeModel = /** @class */ (function (_super) {
342
350
  __extends(FolderTreeModel, _super);
@@ -386,6 +394,12 @@
386
394
  BackgroudProcessingStatus[BackgroudProcessingStatus.InProcessing] = 'InProcessing';
387
395
  BackgroudProcessingStatus[BackgroudProcessingStatus.Processed] = 'Processed';
388
396
  BackgroudProcessingStatus[BackgroudProcessingStatus.Failed] = 'Failed';
397
+ /** @type {?} */
398
+ var MAX_FOLDER_TREE_SIZE = 10;
399
+ /** @type {?} */
400
+ var DEFAULT_FOLDER_TREE_INDEX = 0;
401
+ /** @type {?} */
402
+ var ROOT_ASSET_ID = 'ROOT';
389
403
 
390
404
  /**
391
405
  * @fileoverview added by tsickle
@@ -632,6 +646,8 @@
632
646
  AMConfig.prototype.asset2Url;
633
647
  /** @type {?|undefined} */
634
648
  AMConfig.prototype.requestHeader;
649
+ /** @type {?|undefined} */
650
+ AMConfig.prototype.pageFolderSize;
635
651
  }
636
652
  /** @type {?} */
637
653
  var AM_CONFIG = new core.InjectionToken('asset.man.config.angular');
@@ -704,6 +720,18 @@
704
720
  this.baseUrl = this._env.asset2Url;
705
721
  this.initOptionFiles();
706
722
  }
723
+ Object.defineProperty(AssetService.prototype, "AMConfig", {
724
+ get: /**
725
+ * @return {?}
726
+ */
727
+ function () {
728
+ return {
729
+ pageFolderSize: this._env.pageFolderSize
730
+ };
731
+ },
732
+ enumerable: true,
733
+ configurable: true
734
+ });
707
735
  /**
708
736
  * @private
709
737
  * @return {?}
@@ -716,6 +744,8 @@
716
744
  this.keyword = '';
717
745
  this.pageSize = 12;
718
746
  this.pageIndex = 0;
747
+ this.pageFolderSize = this._env.pageFolderSize || MAX_FOLDER_TREE_SIZE;
748
+ this.pageFolderIndex = 0;
719
749
  this.folderTotal = 0;
720
750
  this.fileTotal = 0;
721
751
  this.sortBy = SortFilesBy.MODIFIED_DATE;
@@ -754,16 +784,17 @@
754
784
  };
755
785
  /**
756
786
  * @param {?} folders
757
- * @param {?=} folderTotal
787
+ * @param {?=} pagination
758
788
  * @return {?}
759
789
  */
760
790
  AssetService.prototype.setFolderList = /**
761
791
  * @param {?} folders
762
- * @param {?=} folderTotal
792
+ * @param {?=} pagination
763
793
  * @return {?}
764
794
  */
765
- function (folders, folderTotal) {
766
- this.folderTotal = folderTotal || 0;
795
+ function (folders, pagination) {
796
+ this.setFolderTreePagination(pagination);
797
+ this.setFolderPagination(pagination);
767
798
  this.folderList$.next(folders);
768
799
  };
769
800
  /**
@@ -826,6 +857,36 @@
826
857
  this.pageSize = pagination.PageSize;
827
858
  }
828
859
  };
860
+ /**
861
+ * @private
862
+ * @param {?} pagination
863
+ * @return {?}
864
+ */
865
+ AssetService.prototype.setFolderPagination = /**
866
+ * @private
867
+ * @param {?} pagination
868
+ * @return {?}
869
+ */
870
+ function (pagination) {
871
+ if (pagination) {
872
+ this.folderTotal = pagination.Total;
873
+ this.pageFolderIndex = pagination.PageIndex;
874
+ this.pageFolderSize = pagination.PageSize;
875
+ }
876
+ };
877
+ /**
878
+ * @param {?} pagination
879
+ * @return {?}
880
+ */
881
+ AssetService.prototype.setFolderTreePagination = /**
882
+ * @param {?} pagination
883
+ * @return {?}
884
+ */
885
+ function (pagination) {
886
+ if (pagination) {
887
+ this.folderTotal = pagination.Total;
888
+ }
889
+ };
829
890
  /**
830
891
  * @param {?} assetId
831
892
  * @return {?}
@@ -848,11 +909,15 @@
848
909
  * @return {?}
849
910
  */
850
911
  function (_a) {
851
- var assetId = _a.assetId, _b = _a.isFilter, isFilter = _b === void 0 ? true : _b;
912
+ var assetId = _a.assetId, _b = _a.isFilter, isFilter = _b === void 0 ? true : _b, _c = _a.pageIndex, pageIndex = _c === void 0 ? DEFAULT_FOLDER_TREE_INDEX : _c, _d = _a.pageSize, pageSize = _d === void 0 ? this._env.pageFolderSize || MAX_FOLDER_TREE_SIZE : _d;
852
913
  /** @type {?} */
853
914
  var url = this.baseUrl + "/File/GetChildren";
854
915
  /** @type {?} */
855
- var params = new http.HttpParams().set('getAll', 'true').set('isFolder', 'true');
916
+ var params = new http.HttpParams()
917
+ .set('getAll', 'true')
918
+ .set('isFolder', 'true')
919
+ .set('pageSize', "" + pageSize)
920
+ .set('pageIndex', "" + pageIndex);
856
921
  if (assetId) {
857
922
  params = params.set('assetId', assetId);
858
923
  }
@@ -929,6 +994,10 @@
929
994
  /** @type {?} */
930
995
  AssetService.prototype.pageIndex;
931
996
  /** @type {?} */
997
+ AssetService.prototype.pageFolderSize;
998
+ /** @type {?} */
999
+ AssetService.prototype.pageFolderIndex;
1000
+ /** @type {?} */
932
1001
  AssetService.prototype.folderTotal;
933
1002
  /** @type {?} */
934
1003
  AssetService.prototype.fileTotal;
@@ -1332,19 +1401,19 @@
1332
1401
  * @return {?}
1333
1402
  */
1334
1403
  function (_a) {
1335
- var dispatchRootId = _a.dispatchRootId;
1404
+ var dispatchRootId = _a.dispatchRootId, _b = _a.pageSize, pageSize = _b === void 0 ? this.assetService.AMConfig.pageFolderSize || MAX_FOLDER_TREE_SIZE : _b;
1336
1405
  return __awaiter(this, void 0, void 0, function () {
1337
1406
  var result, initData;
1338
1407
  var _this = this;
1339
- return __generator(this, function (_b) {
1340
- switch (_b.label) {
1408
+ return __generator(this, function (_c) {
1409
+ switch (_c.label) {
1341
1410
  case 0:
1342
1411
  if (dispatchRootId) {
1343
1412
  this.loading$.next(true);
1344
1413
  }
1345
- return [4 /*yield*/, this.assetService.getChildrenFolders({ isFilter: false }).toPromise()];
1414
+ return [4 /*yield*/, this.assetService.getChildrenFolders({ isFilter: false, pageIndex: 0, pageSize: pageSize }).toPromise()];
1346
1415
  case 1:
1347
- result = _b.sent();
1416
+ result = _c.sent();
1348
1417
  if (!result) {
1349
1418
  return [2 /*return*/];
1350
1419
  }
@@ -1363,7 +1432,7 @@
1363
1432
  * @param {?} folder
1364
1433
  * @return {?}
1365
1434
  */
1366
- function (folder) { return new DynamicFlatNode(folder, 0, _this.isExpandable(folder)); }));
1435
+ function (folder) { return _this.getDynamicFlatNode(folder, 0); }));
1367
1436
  this.initialData$.next(initData);
1368
1437
  if (dispatchRootId) {
1369
1438
  this.loading$.next(false);
@@ -1373,6 +1442,20 @@
1373
1442
  });
1374
1443
  });
1375
1444
  };
1445
+ /**
1446
+ * @param {?} node
1447
+ * @param {?=} level
1448
+ * @return {?}
1449
+ */
1450
+ NodeTreeService.prototype.getDynamicFlatNode = /**
1451
+ * @param {?} node
1452
+ * @param {?=} level
1453
+ * @return {?}
1454
+ */
1455
+ function (node, level) {
1456
+ if (level === void 0) { level = 0; }
1457
+ return new DynamicFlatNode(node, level, this.isExpandable(node));
1458
+ };
1376
1459
  /**
1377
1460
  * @param {?} node
1378
1461
  * @return {?}
@@ -1400,7 +1483,7 @@
1400
1483
  * @return {?}
1401
1484
  */
1402
1485
  function (node) {
1403
- return node.HaveChildren;
1486
+ return Boolean(node.HaveChildren);
1404
1487
  };
1405
1488
  /** Add asset to stored data */
1406
1489
  /**
@@ -1876,7 +1959,6 @@
1876
1959
  */
1877
1960
  function () {
1878
1961
  var _this = this;
1879
- console.log('Assest Management Dialog', this.data);
1880
1962
  this.initDialogConfig(this.data);
1881
1963
  select((/**
1882
1964
  * @param {?} state
@@ -3541,7 +3623,7 @@
3541
3623
  FolderItemComponent.decorators = [
3542
3624
  { type: core.Component, args: [{
3543
3625
  selector: 'lib-folder-item',
3544
- template: "<div class=\"folder\" (dblclick)=\"openFolder()\">\n <mat-icon class=\"folder__icon\">folder</mat-icon>\n <span class=\"folder__name\" [matTooltip]=\"folder.OriginalFileName\">\n {{ folder.OriginalFileName }}\n </span>\n <mat-icon class=\"folder__action\" [matMenuTriggerFor]=\"menu\"\n >more_vert</mat-icon\n >\n</div>\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"renameFolder()\" [disabled]=\"!hasModifyPermission\">\n <mat-icon>edit_outline</mat-icon> <span>Rename</span>\n </button>\n <button mat-menu-item (click)=\"deleteFolder()\" [disabled]=\"!hasArchivePermission\">\n <mat-icon color=\"warn\">delete_outline</mat-icon> <span>Delete</span>\n </button>\n</mat-menu>\n",
3626
+ template: "<div class=\"folder\" (dblclick)=\"openFolder()\">\n <mat-icon class=\"folder__icon\">folder</mat-icon>\n <span class=\"folder__name\" [matTooltip]=\"folder.OriginalFileName\">\n {{ folder.OriginalFileName }}\n </span>\n <mat-icon class=\"folder__action\" [matMenuTriggerFor]=\"menu\"\n >more_vert</mat-icon\n >\n</div>\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"renameFolder()\" [disabled]=\"!hasModifyPermission\">\n <mat-icon>edit_outline</mat-icon> <span>Rename</span>\n </button>\n <button mat-menu-item (click)=\"deleteFolder()\" [disabled]=\"!hasArchivePermission\">\n <mat-icon color=\"warn\">delete_outline</mat-icon> <span>Delete</span>\n </button>\n</mat-menu>",
3545
3627
  styles: [":host::ng-deep .folder{width:180px;height:50px;display:flex;position:relative;align-items:center;padding:5px 20px 5px 10px;border-radius:10px;cursor:pointer;transition:.3s}:host::ng-deep .folder:hover{background-color:#f1f1f1}:host::ng-deep .folder:hover .folder__action{display:block}:host::ng-deep .folder__icon{display:flex;align-items:center;color:#6fc0ff;font-size:38px;margin-right:20px}:host::ng-deep .folder__name{font-size:14px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .folder__action{display:none;right:0;position:absolute;color:#979797;transition:.3s}:host::ng-deep .folder__action:hover{color:#000}"]
3546
3628
  }] }
3547
3629
  ];
@@ -3588,10 +3670,24 @@
3588
3670
  this.hasModifyPermission = true;
3589
3671
  this.hasAccessPermission = true;
3590
3672
  this.hasArchivePermission = true;
3673
+ this.onPageChange = new core.EventEmitter();
3591
3674
  this.loading = false;
3592
3675
  this.unsubscribe$ = new Subject.Subject();
3593
3676
  this.bindSubscriber();
3594
3677
  }
3678
+ /**
3679
+ * @return {?}
3680
+ */
3681
+ FolderListComponent.prototype.ngOnChanges = /**
3682
+ * @return {?}
3683
+ */
3684
+ function () {
3685
+ if (this.paginator && this.pagination) {
3686
+ this.paginator.pageIndex = this.pagination.pageIndex;
3687
+ this.paginator.pageSize = this.pagination.pageSize;
3688
+ this.paginator.length = this.pagination.length;
3689
+ }
3690
+ };
3595
3691
  /**
3596
3692
  * @return {?}
3597
3693
  */
@@ -3609,6 +3705,17 @@
3609
3705
  this.unsubscribe$.next();
3610
3706
  this.unsubscribe$.complete();
3611
3707
  };
3708
+ /**
3709
+ * @param {?=} event
3710
+ * @return {?}
3711
+ */
3712
+ FolderListComponent.prototype.pageChange = /**
3713
+ * @param {?=} event
3714
+ * @return {?}
3715
+ */
3716
+ function (event) {
3717
+ this.onPageChange.emit(event);
3718
+ };
3612
3719
  /**
3613
3720
  * @private
3614
3721
  * @return {?}
@@ -3636,8 +3743,8 @@
3636
3743
  FolderListComponent.decorators = [
3637
3744
  { type: core.Component, args: [{
3638
3745
  selector: 'lib-folder-list',
3639
- template: "<div class=\"folder-container\">\n <h6>Folders</h6>\n <div class=\"folder-list custom-scrollbar\">\n <lib-folder-item\n *ngFor=\"let folder of folders\"\n [folder]=\"folder\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-folder-item>\n </div>\n <div class=\"folder-empty\" *ngIf=\"folders && !folders.length\">\n <span>This folder is empty.</span>\n </div>\n</div>\n",
3640
- styles: [":host::ng-deep .folder-container h6{color:#979797}:host::ng-deep .folder-container .folder-list{display:flex;flex-wrap:nowrap;overflow:auto;padding-bottom:10px}:host::ng-deep .folder-container .folder-empty{text-align:center;color:#979797;font-size:14px}"]
3746
+ template: "<div class=\"folder-container\">\n <h6>Folders</h6>\n <div class=\"folder-list custom-scrollbar\">\n <lib-folder-item\n *ngFor=\"let folder of folders\"\n [folder]=\"folder\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-folder-item>\n </div>\n <div class=\"folder-empty\" *ngIf=\"folders && !folders.length\">\n <span>This folder is empty.</span>\n </div>\n <div [hidden]=\"!folders?.length\">\n <mat-paginator\n #paginator\n [pageSizeOptions]=\"[10, 20, 50, 100]\"\n (page)=\"pageChange($event)\"\n [showFirstLastButtons]=\"true\"\n >\n </mat-paginator>\n </div>\n</div>",
3747
+ styles: [":host::ng-deep .folder-container h6{color:#979797}:host::ng-deep .folder-container .folder-list{display:flex;flex-wrap:wrap;overflow:auto;padding-bottom:10px;max-height:320px}:host::ng-deep .folder-container .folder-empty{text-align:center;color:#979797;font-size:14px}"]
3641
3748
  }] }
3642
3749
  ];
3643
3750
  /** @nocollapse */
@@ -3646,7 +3753,10 @@
3646
3753
  hasModifyPermission: [{ type: core.Input }],
3647
3754
  hasAccessPermission: [{ type: core.Input }],
3648
3755
  hasArchivePermission: [{ type: core.Input }],
3649
- folders: [{ type: core.Input }]
3756
+ paginator: [{ type: core.ViewChild, args: [material.MatPaginator, { static: true },] }],
3757
+ folders: [{ type: core.Input }],
3758
+ pagination: [{ type: core.Input }],
3759
+ onPageChange: [{ type: core.Output }]
3650
3760
  };
3651
3761
  return FolderListComponent;
3652
3762
  }());
@@ -3658,8 +3768,14 @@
3658
3768
  /** @type {?} */
3659
3769
  FolderListComponent.prototype.hasArchivePermission;
3660
3770
  /** @type {?} */
3771
+ FolderListComponent.prototype.paginator;
3772
+ /** @type {?} */
3661
3773
  FolderListComponent.prototype.folders;
3662
3774
  /** @type {?} */
3775
+ FolderListComponent.prototype.pagination;
3776
+ /** @type {?} */
3777
+ FolderListComponent.prototype.onPageChange;
3778
+ /** @type {?} */
3663
3779
  FolderListComponent.prototype.loading;
3664
3780
  /**
3665
3781
  * @type {?}
@@ -4088,7 +4204,6 @@
4088
4204
  * @return {?}
4089
4205
  */
4090
4206
  function () {
4091
- console.log('data', this.data.permission);
4092
4207
  this.uploadAssetsService.supportedSize = this.assetsService.maxSize * 1024 * 1024;
4093
4208
  this.linkDownload = this._env.asset2Url + "/File/Download/" + this.data.assetId;
4094
4209
  this.getAssetDetail();
@@ -5039,13 +5154,17 @@
5039
5154
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5040
5155
  */
5041
5156
  var NodeTreeComponent = /** @class */ (function () {
5042
- function NodeTreeComponent(nodeTreeService, svc, changeDetectorRef) {
5157
+ function NodeTreeComponent(assetService, nodeTreeService, svc, changeDetectorRef) {
5158
+ this.assetService = assetService;
5043
5159
  this.nodeTreeService = nodeTreeService;
5044
5160
  this.svc = svc;
5045
5161
  this.changeDetectorRef = changeDetectorRef;
5162
+ this.ROOT_ASSET_ID = ROOT_ASSET_ID;
5046
5163
  this.isRoot = false;
5047
5164
  this.homeLoading = false;
5048
5165
  this.loading = false;
5166
+ this.loadingMoreList = {};
5167
+ this.folderChildrenMap = new Map();
5049
5168
  this.unsubscribe$ = new rxjs.Subject();
5050
5169
  this.getLevel = (/**
5051
5170
  * @param {?} node
@@ -5066,6 +5185,21 @@
5066
5185
  this.treeControl = new tree$1.FlatTreeControl(this.getLevel, this.isExpandable);
5067
5186
  this.dataSource = new NodeTreeDataSource(this.treeControl, nodeTreeService);
5068
5187
  }
5188
+ Object.defineProperty(NodeTreeComponent.prototype, "folderTreeMeta", {
5189
+ get: /**
5190
+ * @return {?}
5191
+ */
5192
+ function () {
5193
+ /** @type {?} */
5194
+ var rootFolder = this.folderChildrenMap.get(ROOT_ASSET_ID);
5195
+ return {
5196
+ length: rootFolder ? rootFolder.size : 0,
5197
+ total: this.nodeTreeService.rootFolder ? this.nodeTreeService.rootFolder.TotalFolder || '0' : 0,
5198
+ };
5199
+ },
5200
+ enumerable: true,
5201
+ configurable: true
5202
+ });
5069
5203
  /**
5070
5204
  * @return {?}
5071
5205
  */
@@ -5097,6 +5231,32 @@
5097
5231
  });
5098
5232
  });
5099
5233
  };
5234
+ /**
5235
+ * @param {?} id
5236
+ * @return {?}
5237
+ */
5238
+ NodeTreeComponent.prototype.getFolderChildrenSize = /**
5239
+ * @param {?} id
5240
+ * @return {?}
5241
+ */
5242
+ function (id) {
5243
+ /** @type {?} */
5244
+ var children = this.folderChildrenMap.get(id);
5245
+ return children ? children.size : 0;
5246
+ };
5247
+ /**
5248
+ * @param {?} node
5249
+ * @return {?}
5250
+ */
5251
+ NodeTreeComponent.prototype.canLoadMore = /**
5252
+ * @param {?} node
5253
+ * @return {?}
5254
+ */
5255
+ function (node) {
5256
+ /** @type {?} */
5257
+ var size = this.getFolderChildrenSize(node.item.AssetId);
5258
+ return size < node.item.TotalFolder;
5259
+ };
5100
5260
  /**
5101
5261
  * @private
5102
5262
  * @return {?}
@@ -5142,6 +5302,7 @@
5142
5302
  */
5143
5303
  function (data) {
5144
5304
  if (data && data.length) {
5305
+ _this.handleDatasourceChange(data);
5145
5306
  _this.changeDetectorRef.detectChanges();
5146
5307
  }
5147
5308
  }));
@@ -5198,6 +5359,42 @@
5198
5359
  });
5199
5360
  }); }));
5200
5361
  };
5362
+ /**
5363
+ * @private
5364
+ * @param {?=} data
5365
+ * @return {?}
5366
+ */
5367
+ NodeTreeComponent.prototype.handleDatasourceChange = /**
5368
+ * @private
5369
+ * @param {?=} data
5370
+ * @return {?}
5371
+ */
5372
+ function (data) {
5373
+ var _this = this;
5374
+ if (data === void 0) { data = []; }
5375
+ if (!data || !data.length)
5376
+ return;
5377
+ /** @type {?} */
5378
+ var maps = new Map();
5379
+ maps.set(ROOT_ASSET_ID, new Map());
5380
+ data.forEach((/**
5381
+ * @param {?} node
5382
+ * @return {?}
5383
+ */
5384
+ function (node) {
5385
+ /** @type {?} */
5386
+ var nodeId = node.item.AssetId;
5387
+ /** @type {?} */
5388
+ var parent = _this.getParent(node);
5389
+ /** @type {?} */
5390
+ var parentId = parent ? parent.item.AssetId : ROOT_ASSET_ID;
5391
+ if (!maps.has(parentId)) {
5392
+ maps.set(parentId, new Map());
5393
+ }
5394
+ maps.get(parentId).set(nodeId, node);
5395
+ }));
5396
+ this.folderChildrenMap = maps;
5397
+ };
5201
5398
  /**
5202
5399
  * @param {?} node
5203
5400
  * @return {?}
@@ -5248,6 +5445,67 @@
5248
5445
  });
5249
5446
  }
5250
5447
  };
5448
+ /**
5449
+ * @param {?=} node
5450
+ * @return {?}
5451
+ */
5452
+ NodeTreeComponent.prototype.loadMoreFolder = /**
5453
+ * @param {?=} node
5454
+ * @return {?}
5455
+ */
5456
+ function (node) {
5457
+ return __awaiter(this, void 0, void 0, function () {
5458
+ var id, children, itemsPerPage, result, assetChildren, index, nodes, updatedData, error_1;
5459
+ var _this = this;
5460
+ return __generator(this, function (_a) {
5461
+ switch (_a.label) {
5462
+ case 0:
5463
+ id = node ? node.item.AssetId : ROOT_ASSET_ID;
5464
+ _a.label = 1;
5465
+ case 1:
5466
+ _a.trys.push([1, 3, , 4]);
5467
+ this.setLoadingMore(id, true);
5468
+ children = this.folderChildrenMap.get(id);
5469
+ itemsPerPage = this.assetService.AMConfig.pageFolderSize || MAX_FOLDER_TREE_SIZE;
5470
+ return [4 /*yield*/, this.assetService.getChildrenFolders({
5471
+ assetId: id === ROOT_ASSET_ID ? null : id,
5472
+ isFilter: false,
5473
+ pageIndex: Math.round((children ? children.size : 0) / itemsPerPage)
5474
+ }).toPromise()];
5475
+ case 2:
5476
+ result = _a.sent();
5477
+ assetChildren = result.Data.Children || [];
5478
+ // Handle datasource
5479
+ index = this.dataSource.data.indexOf(node);
5480
+ nodes = assetChildren.map((/**
5481
+ * @param {?} folder
5482
+ * @return {?}
5483
+ */
5484
+ function (folder) {
5485
+ _this.nodeTreeService.addNode(folder, id);
5486
+ return _this.nodeTreeService.getDynamicFlatNode(folder, node ? node.level + 1 : 0);
5487
+ }));
5488
+ if (id !== ROOT_ASSET_ID) {
5489
+ updatedData = this.dataSource.data.slice();
5490
+ updatedData.splice.apply(updatedData, __spread([index + 1, 0], nodes));
5491
+ this.dataSource.data = updatedData;
5492
+ }
5493
+ else {
5494
+ this.dataSource.data = __spread(this.dataSource.data, nodes);
5495
+ }
5496
+ this.setLoadingMore(id, false);
5497
+ this.changeDetectorRef.detectChanges();
5498
+ return [3 /*break*/, 4];
5499
+ case 3:
5500
+ error_1 = _a.sent();
5501
+ console.log('Load more folder error', error_1);
5502
+ this.setLoadingMore(id, false);
5503
+ return [3 /*break*/, 4];
5504
+ case 4: return [2 /*return*/];
5505
+ }
5506
+ });
5507
+ });
5508
+ };
5251
5509
  /**
5252
5510
  * @param {?} node
5253
5511
  * @return {?}
@@ -5321,7 +5579,7 @@
5321
5579
  */
5322
5580
  function (id) {
5323
5581
  return __awaiter(this, void 0, void 0, function () {
5324
- var node, parent_1, updatedNode, updatedNode;
5582
+ var node, parent_1, updatedNode;
5325
5583
  return __generator(this, function (_a) {
5326
5584
  switch (_a.label) {
5327
5585
  case 0:
@@ -5330,11 +5588,13 @@
5330
5588
  }
5331
5589
  this.loading = true;
5332
5590
  node = this.getNodeById(id);
5333
- if (!node) return [3 /*break*/, 8];
5591
+ if (!node) return [3 /*break*/, 5];
5334
5592
  parent_1 = this.getParent(node);
5335
5593
  if (!parent_1) return [3 /*break*/, 4];
5594
+ // Reload parent folder (get children and expand it again)
5336
5595
  return [4 /*yield*/, this.dataSource.reloadNode(parent_1)];
5337
5596
  case 1:
5597
+ // Reload parent folder (get children and expand it again)
5338
5598
  _a.sent();
5339
5599
  updatedNode = this.getNodeById(id);
5340
5600
  if (!updatedNode) return [3 /*break*/, 3];
@@ -5342,28 +5602,37 @@
5342
5602
  case 2:
5343
5603
  _a.sent();
5344
5604
  _a.label = 3;
5345
- case 3: return [3 /*break*/, 7];
5346
- case 4: return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: false })];
5347
- case 5:
5348
- _a.sent();
5349
- updatedNode = this.getNodeById(id);
5350
- if (!updatedNode) return [3 /*break*/, 7];
5351
- return [4 /*yield*/, this.treeControl.expand(updatedNode)];
5605
+ case 3: return [3 /*break*/, 4];
5606
+ case 4: return [3 /*break*/, 7];
5607
+ case 5:
5608
+ // Reload root folder
5609
+ return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: false })];
5352
5610
  case 6:
5611
+ // Reload root folder
5353
5612
  _a.sent();
5354
5613
  _a.label = 7;
5355
- case 7: return [3 /*break*/, 10];
5356
- case 8: return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: false })];
5357
- case 9:
5358
- _a.sent();
5359
- _a.label = 10;
5360
- case 10:
5614
+ case 7:
5361
5615
  this.loading = false;
5362
5616
  return [2 /*return*/];
5363
5617
  }
5364
5618
  });
5365
5619
  });
5366
5620
  };
5621
+ /**
5622
+ * @private
5623
+ * @param {?} id
5624
+ * @param {?} value
5625
+ * @return {?}
5626
+ */
5627
+ NodeTreeComponent.prototype.setLoadingMore = /**
5628
+ * @private
5629
+ * @param {?} id
5630
+ * @param {?} value
5631
+ * @return {?}
5632
+ */
5633
+ function (id, value) {
5634
+ this.loadingMoreList[id] = value;
5635
+ };
5367
5636
  /**
5368
5637
  * @return {?}
5369
5638
  */
@@ -5379,12 +5648,13 @@
5379
5648
  NodeTreeComponent.decorators = [
5380
5649
  { type: core.Component, args: [{
5381
5650
  selector: 'lib-node-tree',
5382
- template: "<div class=\"node custom-scrollbar node-tree\">\n <div class=\"node__home\" (click)=\"backToHome()\" [ngClass]=\"{ active: isRoot,\n disabled: loading || homeLoading}\">\n <mat-icon *ngIf=\"!homeLoading\">home</mat-icon>\n <mat-spinner *ngIf=\"homeLoading\" [diameter]=\"20\"\n class=\"node__home--loading\"></mat-spinner>\n <span>Home</span>\n </div>\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\"\n class=\"node__item\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\n [ngClass]=\"{ active: checked(node),disabled: loading || node.isLoading }\"\n (click)=\"selectNode(node)\">\n <button mat-icon-button disabled class=\"node__item--pading\"></button>\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\n <mat-icon class=\"folder-icon\">folder</mat-icon>\n <div class=\"node-name\">\n <span>\n {{ node.item.OriginalFileName }}\n </span>\n <span class=\"node-summary\" *ngIf=\"node.item?.TotalFolder ||\n node.item?.TotalFile\">\n <small *ngIf=\"node.item?.TotalFolder\">{{ node.item?.TotalFolder}}\n {{node.item?.TotalFolder> 1 ?\n 'folders':'folder'}}</small>\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\n </small>\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\n {{node.item?.TotalFile> 1 ?\n 'files':'file'}}</small>\n </span>\n </div>\n </div>\n </mat-tree-node>\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\n (click)=\"selectNode(node)\"\n [ngClass]=\"{ active: checked(node), disabled: loading || node.isLoading\n }\">\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' +\n node.item.OriginalFileName\" matTreeNodeToggle\n [disabled]=\"node.isLoading\">\n <mat-icon *ngIf=\"!node.isLoading\" class=\"mat-icon-rtl-mirror\">\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n <mat-spinner *ngIf=\"node.isLoading\" [diameter]=\"20\"\n class=\"node__item--loading\"></mat-spinner>\n </button>\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\n <mat-icon class=\"folder-icon\">folder</mat-icon>\n <div class=\"node-name\">\n <span>\n {{ node.item.OriginalFileName }}\n </span>\n <span class=\"node-summary\">\n <small *ngIf=\"node.item?.TotalFolder\">{{ node.item?.TotalFolder}}\n {{node.item?.TotalFolder> 1 ?\n 'folders':'folder'}}</small>\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\n </small>\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\n {{node.item?.TotalFile> 1 ?\n 'files':'file'}}</small>\n </span>\n </div>\n </div>\n </mat-tree-node>\n </mat-tree>\n</div>",
5383
- styles: [":host::ng-deep .node{overflow-x:hidden;height:100%;display:-ms-grid;display:grid;grid-auto-rows:-webkit-max-content;grid-auto-rows:max-content}:host::ng-deep .node__home{padding:8px 10px;display:flex;align-items:center;height:44px}:host::ng-deep .node__home .mat-icon{color:#979797;margin-right:15px;margin-bottom:10px;font-size:32px}:host::ng-deep .node__home .node__home--loading{margin-right:19px}:host::ng-deep .node__item--loading{margin-left:10px}:host::ng-deep .node__item--info{display:flex;align-items:center}:host::ng-deep .node__item--info .folder-icon{display:flex;align-items:center;color:#6fc0ff;font-size:32px;margin-right:20px}:host::ng-deep .node__item--info .node-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name .node-summary{margin-top:-5px;color:#979797}:host::ng-deep .node .mat-tree{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important;min-width:100%}:host::ng-deep .node .mat-tree .mat-tree-node{padding:5px 0;min-height:44px}:host::ng-deep .node .mat-tree .mat-tree-node .node__item--pading{height:20px}:host::ng-deep .node .mat-tree-node:hover,:host::ng-deep .node .node__home{transition:.3s;cursor:pointer}:host::ng-deep .node .mat-tree-node:hover:hover,:host::ng-deep .node .node__home:hover{background-color:#e8e8e8}:host::ng-deep .node .active{background-color:#f0f0f0}:host::ng-deep .node .disabled{pointer-events:none}"]
5651
+ template: "<div class=\"node custom-scrollbar node-tree\">\n <div class=\"node__home\" (click)=\"backToHome()\" [ngClass]=\"{ active: isRoot,\n disabled: loading || homeLoading}\">\n <mat-icon *ngIf=\"!homeLoading\">home</mat-icon>\n <mat-spinner *ngIf=\"homeLoading\" [diameter]=\"20\"\n class=\"node__home--loading\"></mat-spinner>\n <span>Home</span>\n </div>\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\"\n class=\"node__item\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\n [ngClass]=\"{ active: checked(node),disabled: loading || node.isLoading }\"\n (click)=\"selectNode(node)\">\n <button mat-icon-button disabled class=\"node__item--pading\"></button>\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\n <mat-icon class=\"folder-icon\">folder</mat-icon>\n <div class=\"node-name\">\n <span>\n {{ node.item.OriginalFileName }}\n </span>\n <span class=\"node-summary\" *ngIf=\"node.item?.TotalFolder ||\n node.item?.TotalFile\">\n <small *ngIf=\"node.item?.TotalFolder\">{{ node.item?.TotalFolder}}\n {{node.item?.TotalFolder> 1 ?\n 'folders':'folder'}}</small>\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\n </small>\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\n {{node.item?.TotalFile> 1 ?\n 'files':'file'}}</small>\n </span>\n </div>\n </div>\n </mat-tree-node>\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding \n [ngClass]=\"{ active: checked(node), disabled: loading || node.isLoading\n }\">\n <div class=\"d-flex align-items-center\" (click)=\"selectNode(node)\">\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' +\n node.item.OriginalFileName\" matTreeNodeToggle\n [disabled]=\"node.isLoading\">\n <mat-icon *ngIf=\"!node.isLoading\" class=\"mat-icon-rtl-mirror\">\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n <mat-spinner *ngIf=\"node.isLoading\" [diameter]=\"20\"\n class=\"node__item--loading\"></mat-spinner>\n </button>\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\n <mat-icon class=\"folder-icon\">folder</mat-icon>\n <div class=\"node-name\">\n <span>\n {{ node.item.OriginalFileName }}\n </span>\n <span class=\"node-summary\">\n <small *ngIf=\"node.item?.TotalFolder\"><ng-container *ngIf=\"treeControl.isExpanded(node)\"><b>{{getFolderChildrenSize(node.item.AssetId)}}</b>/</ng-container>{{ node.item?.TotalFolder}}\n {{node.item?.TotalFolder> 1 ?\n 'folders':'folder'}}</small>\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\n </small>\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\n {{node.item?.TotalFile> 1 ?\n 'files':'file'}}</small>\n </span>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"treeControl.isExpanded(node)\"> \n <div *ngIf=\"!!loadingMoreList[node.item.AssetId]\" class=\"mx-2\" [style.minWidth.px]=\"40\">\n <mat-spinner [diameter]=\"20\"\n class=\"node__item--loading\"></mat-spinner>\n </div>\n <button *ngIf=\"!loadingMoreList[node.item.AssetId] && canLoadMore(node)\" matTooltip=\"Load More\" class=\"mx-2\" mat-icon-button (click)=\"loadMoreFolder(node)\" [disabled]=\"loadingMoreList[node.item.AssetId] || homeLoading || loading\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\"><path d=\"m482-200 114-113-114-113-42 42 43 43q-28 1-54.5-9T381-381q-20-20-30.5-46T340-479q0-17 4.5-34t12.5-33l-44-44q-17 25-25 53t-8 57q0 38 15 75t44 66q29 29 65 43.5t74 15.5l-38 38 42 42Zm165-170q17-25 25-53t8-57q0-38-14.5-75.5T622-622q-29-29-65.5-43T482-679l38-39-42-42-114 113 114 113 42-42-44-44q27 0 55 10.5t48 30.5q20 20 30.5 46t10.5 52q0 17-4.5 34T603-414l44 44ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/></svg>\n </button>\n </ng-container>\n </mat-tree-node>\n </mat-tree>\n <div class=\"p-2 d-flex flex-column align-items-center justify-content-center\" *ngIf=\"folderTreeMeta.length\">\n <button mat-raised-button *ngIf=\"folderTreeMeta.length !== folderTreeMeta.total\" (click)=\"loadMoreFolder()\" [disabled]=\"loadingMoreList[ROOT_ASSET_ID] || loading || homeLoading\">\n <div class=\"d-flex align-items-center\">\n <mat-spinner [diameter]=\"20\" *ngIf=\"loadingMoreList[ROOT_ASSET_ID]\"></mat-spinner>\n <mat-icon *ngIf=\"!loadingMoreList[ROOT_ASSET_ID]\">expand_more</mat-icon>\n <div class=\"ml-2\">Load More</div>\n </div>\n </button>\n <div class=\"mt-2\" [style.fontSize.px]=\"13\"><b>{{ folderTreeMeta.length }}</b> of <b>{{ folderTreeMeta.total }} folders</b></div>\n </div>\n</div>",
5652
+ styles: [":host::ng-deep .node{overflow-x:hidden;height:100%;display:-ms-grid;display:grid;grid-auto-rows:-webkit-max-content;grid-auto-rows:max-content}:host::ng-deep .node-tree{max-height:max(800px,90vh);overflow-y:auto}:host::ng-deep .node__home{padding:8px 10px;display:flex;align-items:center;height:44px}:host::ng-deep .node__home .mat-icon{color:#979797;margin-right:15px;margin-bottom:10px;font-size:32px}:host::ng-deep .node__home .node__home--loading{margin-right:19px}:host::ng-deep .node__item--loading{margin-left:10px}:host::ng-deep .node__item--info{display:flex;align-items:center}:host::ng-deep .node__item--info .folder-icon{display:flex;align-items:center;color:#6fc0ff;font-size:32px;margin-right:20px}:host::ng-deep .node__item--info .node-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name .node-summary{margin-top:-5px;color:#979797}:host::ng-deep .node .mat-tree{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important;min-width:100%}:host::ng-deep .node .mat-tree .mat-tree-node{padding:5px 0;min-height:44px}:host::ng-deep .node .mat-tree .mat-tree-node .node__item--pading{height:20px}:host::ng-deep .node .mat-tree-node:hover,:host::ng-deep .node .node__home{transition:.3s;cursor:pointer}:host::ng-deep .node .mat-tree-node:hover:hover,:host::ng-deep .node .node__home:hover{background-color:#e8e8e8}:host::ng-deep .node .active{background-color:#f0f0f0}:host::ng-deep .node .disabled{pointer-events:none}"]
5384
5653
  }] }
5385
5654
  ];
5386
5655
  /** @nocollapse */
5387
5656
  NodeTreeComponent.ctorParameters = function () { return [
5657
+ { type: AssetService },
5388
5658
  { type: NodeTreeService },
5389
5659
  { type: AssetManagementService },
5390
5660
  { type: core.ChangeDetectorRef }
@@ -5398,6 +5668,8 @@
5398
5668
  /** @type {?} */
5399
5669
  NodeTreeComponent.prototype.width;
5400
5670
  /** @type {?} */
5671
+ NodeTreeComponent.prototype.ROOT_ASSET_ID;
5672
+ /** @type {?} */
5401
5673
  NodeTreeComponent.prototype.currentFolderId;
5402
5674
  /** @type {?} */
5403
5675
  NodeTreeComponent.prototype.isRoot;
@@ -5406,9 +5678,13 @@
5406
5678
  /** @type {?} */
5407
5679
  NodeTreeComponent.prototype.loading;
5408
5680
  /** @type {?} */
5681
+ NodeTreeComponent.prototype.loadingMoreList;
5682
+ /** @type {?} */
5409
5683
  NodeTreeComponent.prototype.treeControl;
5410
5684
  /** @type {?} */
5411
5685
  NodeTreeComponent.prototype.dataSource;
5686
+ /** @type {?} */
5687
+ NodeTreeComponent.prototype.folderChildrenMap;
5412
5688
  /**
5413
5689
  * @type {?}
5414
5690
  * @private
@@ -5420,6 +5696,8 @@
5420
5696
  NodeTreeComponent.prototype.isExpandable;
5421
5697
  /** @type {?} */
5422
5698
  NodeTreeComponent.prototype.hasChild;
5699
+ /** @type {?} */
5700
+ NodeTreeComponent.prototype.assetService;
5423
5701
  /**
5424
5702
  * @type {?}
5425
5703
  * @private
@@ -5686,7 +5964,7 @@
5686
5964
  */
5687
5965
  function (_a) {
5688
5966
  var _b = __read(_a, 2), folders = _b[0], assets = _b[1];
5689
- _this.assetService.setFolderList(folders.Data, folders.Meta.Total);
5967
+ _this.assetService.setFolderList(folders.Data, { Total: folders.Data.TotalFolder });
5690
5968
  _this.assetService.setAssetList(assets.Data.Children, assets.Meta);
5691
5969
  }))
5692
5970
  .add((/**
@@ -5859,19 +6137,9 @@
5859
6137
  this.hasArchivePermission = true;
5860
6138
  this.assets = new core.EventEmitter();
5861
6139
  this.unsubscribe$ = new Subject.Subject();
5862
- this.nodeTreeMinWidth = 250;
6140
+ this.nodeTreeMinWidth = 300;
5863
6141
  this.nodeTreeMaxWidth = 700;
5864
6142
  }
5865
- /**
5866
- * @return {?}
5867
- */
5868
- AssetWrapperComponent.prototype.ngOnChanges = /**
5869
- * @return {?}
5870
- */
5871
- function () {
5872
- console.log('modify', this.hasModifyPermission);
5873
- console.log('archive', this.hasArchivePermission);
5874
- };
5875
6143
  /**
5876
6144
  * @return {?}
5877
6145
  */
@@ -6246,23 +6514,24 @@
6246
6514
  type: ActionTypes.SET_GLOBAL_LOADING,
6247
6515
  payload: true,
6248
6516
  });
6517
+ var _a = this.getFolderPagePagination(), pageIndex = _a.pageIndex, pageSize = _a.pageSize;
6249
6518
  this.assetService
6250
- .getChildrenFolders({ assetId: id })
6519
+ .getChildrenFolders({ assetId: id, pageIndex: pageIndex, pageSize: pageSize })
6251
6520
  .pipe(operators.takeUntil(this.unsubscribe$))
6252
6521
  .subscribe((/**
6253
6522
  * @param {?} res
6254
6523
  * @return {?}
6255
6524
  */
6256
6525
  function (res) {
6257
- _this.assetService.setFolderList(res.Data, res.Meta.Total);
6258
- if (res.Data && res.Data.Children) {
6259
- res.Data.Children.forEach((/**
6526
+ var Data = res.Data;
6527
+ var Children = Data.Children;
6528
+ _this.setFolderList(res);
6529
+ if (Children) {
6530
+ Children.forEach((/**
6260
6531
  * @param {?} node
6261
6532
  * @return {?}
6262
6533
  */
6263
- function (node) {
6264
- return _this.nodeTreeService.addNode(node, _this.currentFolder.AssetId);
6265
- }));
6534
+ function (node) { return _this.nodeTreeService.addNode(node, _this.currentFolder.AssetId); }));
6266
6535
  }
6267
6536
  }))
6268
6537
  .add((/**
@@ -6275,6 +6544,23 @@
6275
6544
  });
6276
6545
  }));
6277
6546
  };
6547
+ /**
6548
+ * @private
6549
+ * @param {?} res
6550
+ * @return {?}
6551
+ */
6552
+ NodeDetailsComponent.prototype.setFolderList = /**
6553
+ * @private
6554
+ * @param {?} res
6555
+ * @return {?}
6556
+ */
6557
+ function (res) {
6558
+ var Data = res.Data, Meta = res.Meta;
6559
+ var TotalFolder = Data.TotalFolder;
6560
+ var PageIndex = Meta.PageIndex, PageSize = Meta.PageSize;
6561
+ this.assetService.setFolderList(Data, { Total: TotalFolder, PageIndex: PageIndex, PageSize: PageSize });
6562
+ this.setFolderPagination({ length: TotalFolder, pageIndex: PageIndex, pageSize: PageSize });
6563
+ };
6278
6564
  /**
6279
6565
  * @private
6280
6566
  * @param {?} id
@@ -6291,8 +6577,9 @@
6291
6577
  type: ActionTypes.SET_GLOBAL_LOADING,
6292
6578
  payload: true,
6293
6579
  });
6580
+ var _a = this.getFolderPagePagination(), pageIndex = _a.pageIndex, pageSize = _a.pageSize;
6294
6581
  combineLatest.combineLatest([
6295
- this.assetService.getChildrenFolders({ assetId: id }),
6582
+ this.assetService.getChildrenFolders({ assetId: id, pageIndex: pageIndex, pageSize: pageSize }),
6296
6583
  this.assetService.getChildrenAssets({
6297
6584
  assetId: id,
6298
6585
  }),
@@ -6303,11 +6590,11 @@
6303
6590
  * @return {?}
6304
6591
  */
6305
6592
  function (_a) {
6306
- var _b = __read(_a, 2), folders = _b[0], assets = _b[1];
6307
- _this.assetService.setFolderList(folders.Data, folders.Meta.Total);
6308
- _this.assetService.setAssetList(assets.Data.Children, assets.Meta);
6309
- if (folders.Data && folders.Data.Children) {
6310
- folders.Data.Children.forEach((/**
6593
+ var _b = __read(_a, 2), foldersRes = _b[0], assetsRes = _b[1];
6594
+ _this.setFolderList(foldersRes);
6595
+ _this.assetService.setAssetList(assetsRes.Data.Children, assetsRes.Meta);
6596
+ if (foldersRes.Data && foldersRes.Data.Children) {
6597
+ foldersRes.Data.Children.forEach((/**
6311
6598
  * @param {?} node
6312
6599
  * @return {?}
6313
6600
  */
@@ -6326,6 +6613,52 @@
6326
6613
  });
6327
6614
  }));
6328
6615
  };
6616
+ /**
6617
+ * @return {?}
6618
+ */
6619
+ NodeDetailsComponent.prototype.getFolderPagePagination = /**
6620
+ * @return {?}
6621
+ */
6622
+ function () {
6623
+ return {
6624
+ pageIndex: this.assetService.pageFolderIndex,
6625
+ pageSize: this.assetService.pageFolderSize,
6626
+ length: this.assetService.folderTotal,
6627
+ };
6628
+ };
6629
+ /**
6630
+ * @param {?} event
6631
+ * @return {?}
6632
+ */
6633
+ NodeDetailsComponent.prototype.onFolderPageChange = /**
6634
+ * @param {?} event
6635
+ * @return {?}
6636
+ */
6637
+ function (event) {
6638
+ this.assetService.pageFolderIndex = event.pageIndex;
6639
+ this.assetService.pageFolderSize = event.pageSize;
6640
+ this.fetchFolder(this.currentFolder.AssetId);
6641
+ };
6642
+ /**
6643
+ * @private
6644
+ * @param {?} pagination
6645
+ * @return {?}
6646
+ */
6647
+ NodeDetailsComponent.prototype.setFolderPagination = /**
6648
+ * @private
6649
+ * @param {?} pagination
6650
+ * @return {?}
6651
+ */
6652
+ function (pagination) {
6653
+ if (!pagination)
6654
+ return;
6655
+ var length = pagination.length, pageIndex = pagination.pageIndex, pageSize = pagination.pageSize;
6656
+ this.folderPagination = {
6657
+ pageIndex: pageIndex,
6658
+ pageSize: pageSize,
6659
+ length: length
6660
+ };
6661
+ };
6329
6662
  Object.defineProperty(NodeDetailsComponent.prototype, "noResults", {
6330
6663
  get: /**
6331
6664
  * @return {?}
@@ -6359,7 +6692,7 @@
6359
6692
  NodeDetailsComponent.decorators = [
6360
6693
  { type: core.Component, args: [{
6361
6694
  selector: 'lib-node-details',
6362
- template: "<div class=\"node-details custom-scrollbar\">\n <div class=\"node-header\">\n <mat-progress-bar [style.visibility]=\"(loading$ | async) ? 'visible' : 'hidden'\" mode=\"indeterminate\">\n </mat-progress-bar>\n <div class=\"node-header-content\">\n <div class=\"node-header-content__left\">\n <H5 class=\"node-header-content__left--title\">\n <ng-container *ngIf=\"assetService?.keyword\">\n Search results for <span>{{ assetService?.keyword }}</span> in\n </ng-container>\n {{ currentFolder?.OriginalFileName }}\n </H5>\n <p *ngIf=\"!noResults\" class=\"node-header-content__left--subtitle\">\n {{ assetService?.folderTotal }}\n {{ assetService?.folderTotal > 1 ? 'folders' : 'folder' }},\n {{ assetService?.fileTotal }}\n {{ assetService?.fileTotal > 1 ? 'files': 'file' }}\n </p>\n </div>\n <div class=\"node-header-content__right\">\n <div class=\"button-wrapper\">\n <button mat-raised-button [disabled]=\"!selectedAssets?.length || !hasArchivePermission\" (click)=\"deleteAssets()\" color=\"warn\">\n <span>{{selectedAssets?.length > 1 ? 'Delete assets' : 'Delete asset'}}</span>\n <span *ngIf=\"selectedAssets?.length\" class=\"count\">({{ selectedAssets.length }})</span>\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"openUploadDialog()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Upload asset\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"addFolder()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Add folder\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"node-body\">\n <lib-search-not-found *ngIf=\"noResults; else contentAsset\"></lib-search-not-found>\n <ng-template #contentAsset>\n <lib-folder-list\n class=\"node-body__section\"\n [folders]=\"currentFolder?.Children\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-folder-list>\n <lib-asset-list\n [assets]=\"assets\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-asset-list>\n </ng-template>\n </div>\n</div>",
6695
+ template: "<div class=\"node-details custom-scrollbar\">\n <div class=\"node-header\">\n <mat-progress-bar [style.visibility]=\"(loading$ | async) ? 'visible' : 'hidden'\" mode=\"indeterminate\">\n </mat-progress-bar>\n <div class=\"node-header-content\">\n <div class=\"node-header-content__left\">\n <H5 class=\"node-header-content__left--title\">\n <ng-container *ngIf=\"assetService?.keyword\">\n Search results for <span>{{ assetService?.keyword }}</span> in\n </ng-container>\n {{ currentFolder?.OriginalFileName }}\n </H5>\n <p *ngIf=\"!noResults\" class=\"node-header-content__left--subtitle\">\n {{ assetService?.folderTotal }}\n {{ assetService?.folderTotal > 1 ? 'folders' : 'folder' }},\n {{ assetService?.fileTotal }}\n {{ assetService?.fileTotal > 1 ? 'files': 'file' }}\n </p>\n </div>\n <div class=\"node-header-content__right\">\n <div class=\"button-wrapper\">\n <button mat-raised-button [disabled]=\"!selectedAssets?.length || !hasArchivePermission\" (click)=\"deleteAssets()\" color=\"warn\">\n <span>{{selectedAssets?.length > 1 ? 'Delete assets' : 'Delete asset'}}</span>\n <span *ngIf=\"selectedAssets?.length\" class=\"count\">({{ selectedAssets.length }})</span>\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"openUploadDialog()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Upload asset\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"addFolder()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Add folder\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"node-body\">\n <lib-search-not-found *ngIf=\"noResults; else contentAsset\"></lib-search-not-found>\n <ng-template #contentAsset>\n <lib-folder-list\n class=\"node-body__section\"\n [folders]=\"currentFolder?.Children\"\n [pagination]=\"folderPagination\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n (onPageChange)=\"onFolderPageChange($event)\"\n ></lib-folder-list>\n <lib-asset-list\n [assets]=\"assets\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-asset-list>\n </ng-template>\n </div>\n</div>",
6363
6696
  styles: [":host::ng-deep .node-details{max-height:100%;overflow-y:auto}:host::ng-deep .node-details .node-header{position:-webkit-sticky;position:sticky;top:0;background-color:#fff;z-index:20}:host::ng-deep .node-details .node-header-content{padding:10px 20px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}:host::ng-deep .node-details .node-header-content__left--title{margin-bottom:5px}:host::ng-deep .node-details .node-header-content__left--title span{color:#fb3458}:host::ng-deep .node-details .node-header-content__left--subtitle{margin:0;color:#979797;font-size:14px}:host::ng-deep .node-details .node-header-content__right{flex:1}:host::ng-deep .node-details .node-header-content__right .button-wrapper{display:flex;gap:15px;justify-content:flex-end}:host::ng-deep .node-details .node-header-content__right .button-wrapper .count{margin-left:3px}:host::ng-deep .node-details .node-body{padding:0 20px}:host::ng-deep .node-details .node-body__section{display:block;margin-bottom:15px}"]
6364
6697
  }] }
6365
6698
  ];
@@ -6391,6 +6724,8 @@
6391
6724
  */
6392
6725
  NodeDetailsComponent.prototype.unsubscribe$;
6393
6726
  /** @type {?} */
6727
+ NodeDetailsComponent.prototype.folderPagination;
6728
+ /** @type {?} */
6394
6729
  NodeDetailsComponent.prototype.selectedAssets;
6395
6730
  /** @type {?} */
6396
6731
  NodeDetailsComponent.prototype.loading$;