@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.
- package/bundles/rs-pk-asset-management.umd.js +398 -63
- package/bundles/rs-pk-asset-management.umd.js.map +1 -1
- package/bundles/rs-pk-asset-management.umd.min.js +2 -2
- package/bundles/rs-pk-asset-management.umd.min.js.map +1 -1
- package/esm2015/lib/components/partial/asset-dialog/asset-dialog.component.js +1 -2
- package/esm2015/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +1 -2
- package/esm2015/lib/components/partial/asset-wrapper/asset-wrapper.component.js +2 -9
- package/esm2015/lib/components/partial/folder-item/folder-item.component.js +2 -2
- package/esm2015/lib/components/partial/folder-list/folder-list.component.js +33 -5
- package/esm2015/lib/components/partial/node-details/node-details.component.js +64 -12
- package/esm2015/lib/components/partial/node-tree/node-tree.component.js +148 -10
- package/esm2015/lib/components/partial/search-box/search-box.component.js +2 -2
- package/esm2015/lib/models/asset.model.js +15 -1
- package/esm2015/lib/models/index.js +2 -2
- package/esm2015/lib/services/asset.service.js +47 -7
- package/esm2015/lib/services/env-config.service.js +3 -1
- package/esm2015/lib/services/node-tree.service.js +14 -6
- package/esm5/lib/components/partial/asset-dialog/asset-dialog.component.js +1 -2
- package/esm5/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +1 -2
- package/esm5/lib/components/partial/asset-wrapper/asset-wrapper.component.js +2 -12
- package/esm5/lib/components/partial/folder-item/folder-item.component.js +2 -2
- package/esm5/lib/components/partial/folder-list/folder-list.component.js +40 -5
- package/esm5/lib/components/partial/node-details/node-details.component.js +82 -15
- package/esm5/lib/components/partial/node-tree/node-tree.component.js +184 -19
- package/esm5/lib/components/partial/search-box/search-box.component.js +2 -2
- package/esm5/lib/models/asset.model.js +15 -1
- package/esm5/lib/models/index.js +2 -2
- package/esm5/lib/services/asset.service.js +61 -8
- package/esm5/lib/services/env-config.service.js +3 -1
- package/esm5/lib/services/node-tree.service.js +23 -9
- package/fesm2015/rs-pk-asset-management.js +317 -47
- package/fesm2015/rs-pk-asset-management.js.map +1 -1
- package/fesm5/rs-pk-asset-management.js +401 -66
- package/fesm5/rs-pk-asset-management.js.map +1 -1
- package/lib/components/partial/asset-wrapper/asset-wrapper.component.d.ts +0 -1
- package/lib/components/partial/folder-list/folder-list.component.d.ts +8 -2
- package/lib/components/partial/node-details/node-details.component.d.ts +10 -0
- package/lib/components/partial/node-tree/node-tree.component.d.ts +15 -1
- package/lib/models/asset.model.d.ts +7 -0
- package/lib/services/asset.service.d.ts +9 -2
- package/lib/services/env-config.service.d.ts +1 -0
- package/lib/services/node-tree.service.d.ts +2 -1
- package/package.json +1 -1
- package/rs-pk-asset-management.metadata.json +1 -1
|
@@ -7,7 +7,7 @@ import { MatInputModule } from '@angular/material/input';
|
|
|
7
7
|
import { MatIconModule } from '@angular/material/icon';
|
|
8
8
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
9
9
|
import { MatTreeModule } from '@angular/material/tree';
|
|
10
|
-
import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
10
|
+
import { MatPaginator as MatPaginator$1, MatPaginatorModule } from '@angular/material/paginator';
|
|
11
11
|
import { MatTableModule } from '@angular/material/table';
|
|
12
12
|
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
13
13
|
import { MatMenuModule } from '@angular/material/menu';
|
|
@@ -21,7 +21,7 @@ import { BehaviorSubject as BehaviorSubject$1 } from 'rxjs/internal/BehaviorSubj
|
|
|
21
21
|
import { map, distinctUntilChanged, takeUntil, switchMap } from 'rxjs/operators';
|
|
22
22
|
import { Subject as Subject$1 } from 'rxjs/internal/Subject';
|
|
23
23
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
24
|
-
import { MAT_DIALOG_DATA as MAT_DIALOG_DATA$1, MatDialogRef as MatDialogRef$1 } from '@angular/material';
|
|
24
|
+
import { MAT_DIALOG_DATA as MAT_DIALOG_DATA$1, MatDialogRef as MatDialogRef$1, MatPaginator } from '@angular/material';
|
|
25
25
|
import { of } from 'rxjs/internal/observable/of';
|
|
26
26
|
import { FlatTreeControl } from '@angular/cdk/tree';
|
|
27
27
|
import { combineLatest } from 'rxjs/internal/observable/combineLatest';
|
|
@@ -72,6 +72,10 @@ if (false) {
|
|
|
72
72
|
IAssetByIdPayload.prototype.assetId;
|
|
73
73
|
/** @type {?|undefined} */
|
|
74
74
|
IAssetByIdPayload.prototype.isFilter;
|
|
75
|
+
/** @type {?|undefined} */
|
|
76
|
+
IAssetByIdPayload.prototype.pageIndex;
|
|
77
|
+
/** @type {?|undefined} */
|
|
78
|
+
IAssetByIdPayload.prototype.pageSize;
|
|
75
79
|
}
|
|
76
80
|
/**
|
|
77
81
|
* @record
|
|
@@ -80,6 +84,8 @@ function IInitialFolderTreeOptions() { }
|
|
|
80
84
|
if (false) {
|
|
81
85
|
/** @type {?|undefined} */
|
|
82
86
|
IInitialFolderTreeOptions.prototype.dispatchRootId;
|
|
87
|
+
/** @type {?|undefined} */
|
|
88
|
+
IInitialFolderTreeOptions.prototype.pageSize;
|
|
83
89
|
}
|
|
84
90
|
class AssetModel {
|
|
85
91
|
}
|
|
@@ -138,6 +144,8 @@ if (false) {
|
|
|
138
144
|
AssetModel.prototype.HaveChildren;
|
|
139
145
|
/** @type {?} */
|
|
140
146
|
AssetModel.prototype.ParentId;
|
|
147
|
+
/** @type {?} */
|
|
148
|
+
AssetModel.prototype.Children;
|
|
141
149
|
}
|
|
142
150
|
class FolderTreeModel extends AssetModel {
|
|
143
151
|
}
|
|
@@ -176,6 +184,12 @@ BackgroudProcessingStatus[BackgroudProcessingStatus.None] = 'None';
|
|
|
176
184
|
BackgroudProcessingStatus[BackgroudProcessingStatus.InProcessing] = 'InProcessing';
|
|
177
185
|
BackgroudProcessingStatus[BackgroudProcessingStatus.Processed] = 'Processed';
|
|
178
186
|
BackgroudProcessingStatus[BackgroudProcessingStatus.Failed] = 'Failed';
|
|
187
|
+
/** @type {?} */
|
|
188
|
+
const MAX_FOLDER_TREE_SIZE = 10;
|
|
189
|
+
/** @type {?} */
|
|
190
|
+
const DEFAULT_FOLDER_TREE_INDEX = 0;
|
|
191
|
+
/** @type {?} */
|
|
192
|
+
const ROOT_ASSET_ID = 'ROOT';
|
|
179
193
|
|
|
180
194
|
/**
|
|
181
195
|
* @fileoverview added by tsickle
|
|
@@ -406,6 +420,8 @@ if (false) {
|
|
|
406
420
|
AMConfig.prototype.asset2Url;
|
|
407
421
|
/** @type {?|undefined} */
|
|
408
422
|
AMConfig.prototype.requestHeader;
|
|
423
|
+
/** @type {?|undefined} */
|
|
424
|
+
AMConfig.prototype.pageFolderSize;
|
|
409
425
|
}
|
|
410
426
|
/** @type {?} */
|
|
411
427
|
const AM_CONFIG = new InjectionToken('asset.man.config.angular');
|
|
@@ -477,6 +493,14 @@ class AssetService {
|
|
|
477
493
|
this.baseUrl = this._env.asset2Url;
|
|
478
494
|
this.initOptionFiles();
|
|
479
495
|
}
|
|
496
|
+
/**
|
|
497
|
+
* @return {?}
|
|
498
|
+
*/
|
|
499
|
+
get AMConfig() {
|
|
500
|
+
return {
|
|
501
|
+
pageFolderSize: this._env.pageFolderSize
|
|
502
|
+
};
|
|
503
|
+
}
|
|
480
504
|
/**
|
|
481
505
|
* @private
|
|
482
506
|
* @return {?}
|
|
@@ -485,6 +509,8 @@ class AssetService {
|
|
|
485
509
|
this.keyword = '';
|
|
486
510
|
this.pageSize = 12;
|
|
487
511
|
this.pageIndex = 0;
|
|
512
|
+
this.pageFolderSize = this._env.pageFolderSize || MAX_FOLDER_TREE_SIZE;
|
|
513
|
+
this.pageFolderIndex = 0;
|
|
488
514
|
this.folderTotal = 0;
|
|
489
515
|
this.fileTotal = 0;
|
|
490
516
|
this.sortBy = SortFilesBy.MODIFIED_DATE;
|
|
@@ -513,11 +539,12 @@ class AssetService {
|
|
|
513
539
|
}
|
|
514
540
|
/**
|
|
515
541
|
* @param {?} folders
|
|
516
|
-
* @param {?=}
|
|
542
|
+
* @param {?=} pagination
|
|
517
543
|
* @return {?}
|
|
518
544
|
*/
|
|
519
|
-
setFolderList(folders,
|
|
520
|
-
this.
|
|
545
|
+
setFolderList(folders, pagination) {
|
|
546
|
+
this.setFolderTreePagination(pagination);
|
|
547
|
+
this.setFolderPagination(pagination);
|
|
521
548
|
this.folderList$.next(folders);
|
|
522
549
|
}
|
|
523
550
|
/**
|
|
@@ -560,6 +587,27 @@ class AssetService {
|
|
|
560
587
|
this.pageSize = pagination.PageSize;
|
|
561
588
|
}
|
|
562
589
|
}
|
|
590
|
+
/**
|
|
591
|
+
* @private
|
|
592
|
+
* @param {?} pagination
|
|
593
|
+
* @return {?}
|
|
594
|
+
*/
|
|
595
|
+
setFolderPagination(pagination) {
|
|
596
|
+
if (pagination) {
|
|
597
|
+
this.folderTotal = pagination.Total;
|
|
598
|
+
this.pageFolderIndex = pagination.PageIndex;
|
|
599
|
+
this.pageFolderSize = pagination.PageSize;
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
/**
|
|
603
|
+
* @param {?} pagination
|
|
604
|
+
* @return {?}
|
|
605
|
+
*/
|
|
606
|
+
setFolderTreePagination(pagination) {
|
|
607
|
+
if (pagination) {
|
|
608
|
+
this.folderTotal = pagination.Total;
|
|
609
|
+
}
|
|
610
|
+
}
|
|
563
611
|
/**
|
|
564
612
|
* @param {?} assetId
|
|
565
613
|
* @return {?}
|
|
@@ -573,11 +621,15 @@ class AssetService {
|
|
|
573
621
|
* @param {?} __0
|
|
574
622
|
* @return {?}
|
|
575
623
|
*/
|
|
576
|
-
getChildrenFolders({ assetId, isFilter = true }) {
|
|
624
|
+
getChildrenFolders({ assetId, isFilter = true, pageIndex = DEFAULT_FOLDER_TREE_INDEX, pageSize = this._env.pageFolderSize || MAX_FOLDER_TREE_SIZE }) {
|
|
577
625
|
/** @type {?} */
|
|
578
626
|
const url = `${this.baseUrl}/File/GetChildren`;
|
|
579
627
|
/** @type {?} */
|
|
580
|
-
let params = new HttpParams()
|
|
628
|
+
let params = new HttpParams()
|
|
629
|
+
.set('getAll', 'true')
|
|
630
|
+
.set('isFolder', 'true')
|
|
631
|
+
.set('pageSize', `${pageSize}`)
|
|
632
|
+
.set('pageIndex', `${pageIndex}`);
|
|
581
633
|
if (assetId) {
|
|
582
634
|
params = params.set('assetId', assetId);
|
|
583
635
|
}
|
|
@@ -648,6 +700,10 @@ if (false) {
|
|
|
648
700
|
/** @type {?} */
|
|
649
701
|
AssetService.prototype.pageIndex;
|
|
650
702
|
/** @type {?} */
|
|
703
|
+
AssetService.prototype.pageFolderSize;
|
|
704
|
+
/** @type {?} */
|
|
705
|
+
AssetService.prototype.pageFolderIndex;
|
|
706
|
+
/** @type {?} */
|
|
651
707
|
AssetService.prototype.folderTotal;
|
|
652
708
|
/** @type {?} */
|
|
653
709
|
AssetService.prototype.fileTotal;
|
|
@@ -1013,13 +1069,13 @@ class NodeTreeService {
|
|
|
1013
1069
|
* @param {?} __0
|
|
1014
1070
|
* @return {?}
|
|
1015
1071
|
*/
|
|
1016
|
-
initialData({ dispatchRootId }) {
|
|
1072
|
+
initialData({ dispatchRootId, pageSize = this.assetService.AMConfig.pageFolderSize || MAX_FOLDER_TREE_SIZE }) {
|
|
1017
1073
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1018
1074
|
if (dispatchRootId) {
|
|
1019
1075
|
this.loading$.next(true);
|
|
1020
1076
|
}
|
|
1021
1077
|
/** @type {?} */
|
|
1022
|
-
const result = yield this.assetService.getChildrenFolders({ isFilter: false }).toPromise();
|
|
1078
|
+
const result = yield this.assetService.getChildrenFolders({ isFilter: false, pageIndex: 0, pageSize }).toPromise();
|
|
1023
1079
|
if (!result) {
|
|
1024
1080
|
return;
|
|
1025
1081
|
}
|
|
@@ -1039,7 +1095,7 @@ class NodeTreeService {
|
|
|
1039
1095
|
* @param {?} folder
|
|
1040
1096
|
* @return {?}
|
|
1041
1097
|
*/
|
|
1042
|
-
(folder) =>
|
|
1098
|
+
(folder) => this.getDynamicFlatNode(folder, 0)));
|
|
1043
1099
|
this.initialData$.next(initData);
|
|
1044
1100
|
if (dispatchRootId) {
|
|
1045
1101
|
this.loading$.next(false);
|
|
@@ -1047,6 +1103,14 @@ class NodeTreeService {
|
|
|
1047
1103
|
return this.initialData$.getValue();
|
|
1048
1104
|
});
|
|
1049
1105
|
}
|
|
1106
|
+
/**
|
|
1107
|
+
* @param {?} node
|
|
1108
|
+
* @param {?=} level
|
|
1109
|
+
* @return {?}
|
|
1110
|
+
*/
|
|
1111
|
+
getDynamicFlatNode(node, level = 0) {
|
|
1112
|
+
return new DynamicFlatNode(node, level, this.isExpandable(node));
|
|
1113
|
+
}
|
|
1050
1114
|
/**
|
|
1051
1115
|
* @param {?} node
|
|
1052
1116
|
* @return {?}
|
|
@@ -1061,7 +1125,7 @@ class NodeTreeService {
|
|
|
1061
1125
|
* @return {?}
|
|
1062
1126
|
*/
|
|
1063
1127
|
isExpandable(node) {
|
|
1064
|
-
return node.HaveChildren;
|
|
1128
|
+
return Boolean(node.HaveChildren);
|
|
1065
1129
|
}
|
|
1066
1130
|
/**
|
|
1067
1131
|
* Add asset to stored data
|
|
@@ -1467,7 +1531,6 @@ class AssetManagementDialogComponent {
|
|
|
1467
1531
|
* @return {?}
|
|
1468
1532
|
*/
|
|
1469
1533
|
ngOnInit() {
|
|
1470
|
-
console.log('Assest Management Dialog', this.data);
|
|
1471
1534
|
this.initDialogConfig(this.data);
|
|
1472
1535
|
select((/**
|
|
1473
1536
|
* @param {?} state
|
|
@@ -2936,7 +2999,7 @@ class FolderItemComponent {
|
|
|
2936
2999
|
FolderItemComponent.decorators = [
|
|
2937
3000
|
{ type: Component, args: [{
|
|
2938
3001
|
selector: 'lib-folder-item',
|
|
2939
|
-
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
|
|
3002
|
+
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>",
|
|
2940
3003
|
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}"]
|
|
2941
3004
|
}] }
|
|
2942
3005
|
];
|
|
@@ -2981,10 +3044,21 @@ class FolderListComponent {
|
|
|
2981
3044
|
this.hasModifyPermission = true;
|
|
2982
3045
|
this.hasAccessPermission = true;
|
|
2983
3046
|
this.hasArchivePermission = true;
|
|
3047
|
+
this.onPageChange = new EventEmitter();
|
|
2984
3048
|
this.loading = false;
|
|
2985
3049
|
this.unsubscribe$ = new Subject$1();
|
|
2986
3050
|
this.bindSubscriber();
|
|
2987
3051
|
}
|
|
3052
|
+
/**
|
|
3053
|
+
* @return {?}
|
|
3054
|
+
*/
|
|
3055
|
+
ngOnChanges() {
|
|
3056
|
+
if (this.paginator && this.pagination) {
|
|
3057
|
+
this.paginator.pageIndex = this.pagination.pageIndex;
|
|
3058
|
+
this.paginator.pageSize = this.pagination.pageSize;
|
|
3059
|
+
this.paginator.length = this.pagination.length;
|
|
3060
|
+
}
|
|
3061
|
+
}
|
|
2988
3062
|
/**
|
|
2989
3063
|
* @return {?}
|
|
2990
3064
|
*/
|
|
@@ -2996,6 +3070,13 @@ class FolderListComponent {
|
|
|
2996
3070
|
this.unsubscribe$.next();
|
|
2997
3071
|
this.unsubscribe$.complete();
|
|
2998
3072
|
}
|
|
3073
|
+
/**
|
|
3074
|
+
* @param {?=} event
|
|
3075
|
+
* @return {?}
|
|
3076
|
+
*/
|
|
3077
|
+
pageChange(event) {
|
|
3078
|
+
this.onPageChange.emit(event);
|
|
3079
|
+
}
|
|
2999
3080
|
/**
|
|
3000
3081
|
* @private
|
|
3001
3082
|
* @return {?}
|
|
@@ -3019,8 +3100,8 @@ class FolderListComponent {
|
|
|
3019
3100
|
FolderListComponent.decorators = [
|
|
3020
3101
|
{ type: Component, args: [{
|
|
3021
3102
|
selector: 'lib-folder-list',
|
|
3022
|
-
template: "<div
|
|
3023
|
-
styles: [":host::ng-deep .folder-container h6{color:#979797}:host::ng-deep .folder-container .folder-list{display:flex;flex-wrap:
|
|
3103
|
+
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>",
|
|
3104
|
+
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}"]
|
|
3024
3105
|
}] }
|
|
3025
3106
|
];
|
|
3026
3107
|
/** @nocollapse */
|
|
@@ -3029,7 +3110,10 @@ FolderListComponent.propDecorators = {
|
|
|
3029
3110
|
hasModifyPermission: [{ type: Input }],
|
|
3030
3111
|
hasAccessPermission: [{ type: Input }],
|
|
3031
3112
|
hasArchivePermission: [{ type: Input }],
|
|
3032
|
-
|
|
3113
|
+
paginator: [{ type: ViewChild, args: [MatPaginator, { static: true },] }],
|
|
3114
|
+
folders: [{ type: Input }],
|
|
3115
|
+
pagination: [{ type: Input }],
|
|
3116
|
+
onPageChange: [{ type: Output }]
|
|
3033
3117
|
};
|
|
3034
3118
|
if (false) {
|
|
3035
3119
|
/** @type {?} */
|
|
@@ -3039,8 +3123,14 @@ if (false) {
|
|
|
3039
3123
|
/** @type {?} */
|
|
3040
3124
|
FolderListComponent.prototype.hasArchivePermission;
|
|
3041
3125
|
/** @type {?} */
|
|
3126
|
+
FolderListComponent.prototype.paginator;
|
|
3127
|
+
/** @type {?} */
|
|
3042
3128
|
FolderListComponent.prototype.folders;
|
|
3043
3129
|
/** @type {?} */
|
|
3130
|
+
FolderListComponent.prototype.pagination;
|
|
3131
|
+
/** @type {?} */
|
|
3132
|
+
FolderListComponent.prototype.onPageChange;
|
|
3133
|
+
/** @type {?} */
|
|
3044
3134
|
FolderListComponent.prototype.loading;
|
|
3045
3135
|
/**
|
|
3046
3136
|
* @type {?}
|
|
@@ -3281,7 +3371,7 @@ AssetListComponent.propDecorators = {
|
|
|
3281
3371
|
hasModifyPermission: [{ type: Input }],
|
|
3282
3372
|
hasAccessPermission: [{ type: Input }],
|
|
3283
3373
|
hasArchivePermission: [{ type: Input }],
|
|
3284
|
-
paginator: [{ type: ViewChild, args: [MatPaginator, { static: true },] }],
|
|
3374
|
+
paginator: [{ type: ViewChild, args: [MatPaginator$1, { static: true },] }],
|
|
3285
3375
|
assets: [{ type: Input }]
|
|
3286
3376
|
};
|
|
3287
3377
|
if (false) {
|
|
@@ -3439,7 +3529,6 @@ class AssetDialogComponent {
|
|
|
3439
3529
|
* @return {?}
|
|
3440
3530
|
*/
|
|
3441
3531
|
ngOnInit() {
|
|
3442
|
-
console.log('data', this.data.permission);
|
|
3443
3532
|
this.uploadAssetsService.supportedSize = this.assetsService.maxSize * 1024 * 1024;
|
|
3444
3533
|
this.linkDownload = `${this._env.asset2Url}/File/Download/${this.data.assetId}`;
|
|
3445
3534
|
this.getAssetDetail();
|
|
@@ -4249,17 +4338,22 @@ if (false) {
|
|
|
4249
4338
|
*/
|
|
4250
4339
|
class NodeTreeComponent {
|
|
4251
4340
|
/**
|
|
4341
|
+
* @param {?} assetService
|
|
4252
4342
|
* @param {?} nodeTreeService
|
|
4253
4343
|
* @param {?} svc
|
|
4254
4344
|
* @param {?} changeDetectorRef
|
|
4255
4345
|
*/
|
|
4256
|
-
constructor(nodeTreeService, svc, changeDetectorRef) {
|
|
4346
|
+
constructor(assetService, nodeTreeService, svc, changeDetectorRef) {
|
|
4347
|
+
this.assetService = assetService;
|
|
4257
4348
|
this.nodeTreeService = nodeTreeService;
|
|
4258
4349
|
this.svc = svc;
|
|
4259
4350
|
this.changeDetectorRef = changeDetectorRef;
|
|
4351
|
+
this.ROOT_ASSET_ID = ROOT_ASSET_ID;
|
|
4260
4352
|
this.isRoot = false;
|
|
4261
4353
|
this.homeLoading = false;
|
|
4262
4354
|
this.loading = false;
|
|
4355
|
+
this.loadingMoreList = {};
|
|
4356
|
+
this.folderChildrenMap = new Map();
|
|
4263
4357
|
this.unsubscribe$ = new Subject();
|
|
4264
4358
|
this.getLevel = (/**
|
|
4265
4359
|
* @param {?} node
|
|
@@ -4280,6 +4374,17 @@ class NodeTreeComponent {
|
|
|
4280
4374
|
this.treeControl = new FlatTreeControl(this.getLevel, this.isExpandable);
|
|
4281
4375
|
this.dataSource = new NodeTreeDataSource(this.treeControl, nodeTreeService);
|
|
4282
4376
|
}
|
|
4377
|
+
/**
|
|
4378
|
+
* @return {?}
|
|
4379
|
+
*/
|
|
4380
|
+
get folderTreeMeta() {
|
|
4381
|
+
/** @type {?} */
|
|
4382
|
+
const rootFolder = this.folderChildrenMap.get(ROOT_ASSET_ID);
|
|
4383
|
+
return {
|
|
4384
|
+
length: rootFolder ? rootFolder.size : 0,
|
|
4385
|
+
total: this.nodeTreeService.rootFolder ? this.nodeTreeService.rootFolder.TotalFolder || '0' : 0,
|
|
4386
|
+
};
|
|
4387
|
+
}
|
|
4283
4388
|
/**
|
|
4284
4389
|
* @return {?}
|
|
4285
4390
|
*/
|
|
@@ -4297,6 +4402,24 @@ class NodeTreeComponent {
|
|
|
4297
4402
|
this.changeDetectorRef.detectChanges();
|
|
4298
4403
|
});
|
|
4299
4404
|
}
|
|
4405
|
+
/**
|
|
4406
|
+
* @param {?} id
|
|
4407
|
+
* @return {?}
|
|
4408
|
+
*/
|
|
4409
|
+
getFolderChildrenSize(id) {
|
|
4410
|
+
/** @type {?} */
|
|
4411
|
+
const children = this.folderChildrenMap.get(id);
|
|
4412
|
+
return children ? children.size : 0;
|
|
4413
|
+
}
|
|
4414
|
+
/**
|
|
4415
|
+
* @param {?} node
|
|
4416
|
+
* @return {?}
|
|
4417
|
+
*/
|
|
4418
|
+
canLoadMore(node) {
|
|
4419
|
+
/** @type {?} */
|
|
4420
|
+
const size = this.getFolderChildrenSize(node.item.AssetId);
|
|
4421
|
+
return size < node.item.TotalFolder;
|
|
4422
|
+
}
|
|
4300
4423
|
/**
|
|
4301
4424
|
* @private
|
|
4302
4425
|
* @return {?}
|
|
@@ -4337,6 +4460,7 @@ class NodeTreeComponent {
|
|
|
4337
4460
|
*/
|
|
4338
4461
|
(data) => {
|
|
4339
4462
|
if (data && data.length) {
|
|
4463
|
+
this.handleDatasourceChange(data);
|
|
4340
4464
|
this.changeDetectorRef.detectChanges();
|
|
4341
4465
|
}
|
|
4342
4466
|
}));
|
|
@@ -4377,6 +4501,35 @@ class NodeTreeComponent {
|
|
|
4377
4501
|
this.changeDetectorRef.detectChanges();
|
|
4378
4502
|
})));
|
|
4379
4503
|
}
|
|
4504
|
+
/**
|
|
4505
|
+
* @private
|
|
4506
|
+
* @param {?=} data
|
|
4507
|
+
* @return {?}
|
|
4508
|
+
*/
|
|
4509
|
+
handleDatasourceChange(data = []) {
|
|
4510
|
+
if (!data || !data.length)
|
|
4511
|
+
return;
|
|
4512
|
+
/** @type {?} */
|
|
4513
|
+
const maps = new Map();
|
|
4514
|
+
maps.set(ROOT_ASSET_ID, new Map());
|
|
4515
|
+
data.forEach((/**
|
|
4516
|
+
* @param {?} node
|
|
4517
|
+
* @return {?}
|
|
4518
|
+
*/
|
|
4519
|
+
(node) => {
|
|
4520
|
+
/** @type {?} */
|
|
4521
|
+
const nodeId = node.item.AssetId;
|
|
4522
|
+
/** @type {?} */
|
|
4523
|
+
const parent = this.getParent(node);
|
|
4524
|
+
/** @type {?} */
|
|
4525
|
+
const parentId = parent ? parent.item.AssetId : ROOT_ASSET_ID;
|
|
4526
|
+
if (!maps.has(parentId)) {
|
|
4527
|
+
maps.set(parentId, new Map());
|
|
4528
|
+
}
|
|
4529
|
+
maps.get(parentId).set(nodeId, node);
|
|
4530
|
+
}));
|
|
4531
|
+
this.folderChildrenMap = maps;
|
|
4532
|
+
}
|
|
4380
4533
|
/**
|
|
4381
4534
|
* @param {?} node
|
|
4382
4535
|
* @return {?}
|
|
@@ -4411,6 +4564,58 @@ class NodeTreeComponent {
|
|
|
4411
4564
|
});
|
|
4412
4565
|
}
|
|
4413
4566
|
}
|
|
4567
|
+
/**
|
|
4568
|
+
* @param {?=} node
|
|
4569
|
+
* @return {?}
|
|
4570
|
+
*/
|
|
4571
|
+
loadMoreFolder(node) {
|
|
4572
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
4573
|
+
/** @type {?} */
|
|
4574
|
+
const id = node ? node.item.AssetId : ROOT_ASSET_ID;
|
|
4575
|
+
try {
|
|
4576
|
+
this.setLoadingMore(id, true);
|
|
4577
|
+
/** @type {?} */
|
|
4578
|
+
const children = this.folderChildrenMap.get(id);
|
|
4579
|
+
/** @type {?} */
|
|
4580
|
+
const itemsPerPage = this.assetService.AMConfig.pageFolderSize || MAX_FOLDER_TREE_SIZE;
|
|
4581
|
+
/** @type {?} */
|
|
4582
|
+
const result = yield this.assetService.getChildrenFolders({
|
|
4583
|
+
assetId: id === ROOT_ASSET_ID ? null : id,
|
|
4584
|
+
isFilter: false,
|
|
4585
|
+
pageIndex: Math.round((children ? children.size : 0) / itemsPerPage)
|
|
4586
|
+
}).toPromise();
|
|
4587
|
+
/** @type {?} */
|
|
4588
|
+
const assetChildren = result.Data.Children || [];
|
|
4589
|
+
// Handle datasource
|
|
4590
|
+
/** @type {?} */
|
|
4591
|
+
const index = this.dataSource.data.indexOf(node);
|
|
4592
|
+
/** @type {?} */
|
|
4593
|
+
const nodes = assetChildren.map((/**
|
|
4594
|
+
* @param {?} folder
|
|
4595
|
+
* @return {?}
|
|
4596
|
+
*/
|
|
4597
|
+
(folder) => {
|
|
4598
|
+
this.nodeTreeService.addNode(folder, id);
|
|
4599
|
+
return this.nodeTreeService.getDynamicFlatNode(folder, node ? node.level + 1 : 0);
|
|
4600
|
+
}));
|
|
4601
|
+
if (id !== ROOT_ASSET_ID) {
|
|
4602
|
+
/** @type {?} */
|
|
4603
|
+
const updatedData = this.dataSource.data.slice();
|
|
4604
|
+
updatedData.splice(index + 1, 0, ...nodes);
|
|
4605
|
+
this.dataSource.data = updatedData;
|
|
4606
|
+
}
|
|
4607
|
+
else {
|
|
4608
|
+
this.dataSource.data = [...this.dataSource.data, ...nodes];
|
|
4609
|
+
}
|
|
4610
|
+
this.setLoadingMore(id, false);
|
|
4611
|
+
this.changeDetectorRef.detectChanges();
|
|
4612
|
+
}
|
|
4613
|
+
catch (error) {
|
|
4614
|
+
console.log('Load more folder error', error);
|
|
4615
|
+
this.setLoadingMore(id, false);
|
|
4616
|
+
}
|
|
4617
|
+
});
|
|
4618
|
+
}
|
|
4414
4619
|
/**
|
|
4415
4620
|
* @param {?} node
|
|
4416
4621
|
* @return {?}
|
|
@@ -4473,6 +4678,7 @@ class NodeTreeComponent {
|
|
|
4473
4678
|
/** @type {?} */
|
|
4474
4679
|
const parent = this.getParent(node);
|
|
4475
4680
|
if (parent) {
|
|
4681
|
+
// Reload parent folder (get children and expand it again)
|
|
4476
4682
|
yield this.dataSource.reloadNode(parent);
|
|
4477
4683
|
/** @type {?} */
|
|
4478
4684
|
const updatedNode = this.getNodeById(id);
|
|
@@ -4481,20 +4687,30 @@ class NodeTreeComponent {
|
|
|
4481
4687
|
}
|
|
4482
4688
|
}
|
|
4483
4689
|
else {
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
const updatedNode = this.getNodeById(id);
|
|
4487
|
-
if (updatedNode) {
|
|
4488
|
-
|
|
4489
|
-
}
|
|
4690
|
+
// BUG: This will reload the root folder when the user selects a folder from the tree
|
|
4691
|
+
// await this.nodeTreeService.initialData({ dispatchRootId: false });
|
|
4692
|
+
// const updatedNode = this.getNodeById(id);
|
|
4693
|
+
// if (updatedNode) {
|
|
4694
|
+
// await this.treeControl.expand(updatedNode);
|
|
4695
|
+
// }
|
|
4490
4696
|
}
|
|
4491
4697
|
}
|
|
4492
4698
|
else {
|
|
4699
|
+
// Reload root folder
|
|
4493
4700
|
yield this.nodeTreeService.initialData({ dispatchRootId: false });
|
|
4494
4701
|
}
|
|
4495
4702
|
this.loading = false;
|
|
4496
4703
|
});
|
|
4497
4704
|
}
|
|
4705
|
+
/**
|
|
4706
|
+
* @private
|
|
4707
|
+
* @param {?} id
|
|
4708
|
+
* @param {?} value
|
|
4709
|
+
* @return {?}
|
|
4710
|
+
*/
|
|
4711
|
+
setLoadingMore(id, value) {
|
|
4712
|
+
this.loadingMoreList[id] = value;
|
|
4713
|
+
}
|
|
4498
4714
|
/**
|
|
4499
4715
|
* @return {?}
|
|
4500
4716
|
*/
|
|
@@ -4508,12 +4724,13 @@ class NodeTreeComponent {
|
|
|
4508
4724
|
NodeTreeComponent.decorators = [
|
|
4509
4725
|
{ type: Component, args: [{
|
|
4510
4726
|
selector: 'lib-node-tree',
|
|
4511
|
-
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
|
|
4512
|
-
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}"]
|
|
4727
|
+
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>",
|
|
4728
|
+
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}"]
|
|
4513
4729
|
}] }
|
|
4514
4730
|
];
|
|
4515
4731
|
/** @nocollapse */
|
|
4516
4732
|
NodeTreeComponent.ctorParameters = () => [
|
|
4733
|
+
{ type: AssetService },
|
|
4517
4734
|
{ type: NodeTreeService },
|
|
4518
4735
|
{ type: AssetManagementService },
|
|
4519
4736
|
{ type: ChangeDetectorRef }
|
|
@@ -4525,6 +4742,8 @@ if (false) {
|
|
|
4525
4742
|
/** @type {?} */
|
|
4526
4743
|
NodeTreeComponent.prototype.width;
|
|
4527
4744
|
/** @type {?} */
|
|
4745
|
+
NodeTreeComponent.prototype.ROOT_ASSET_ID;
|
|
4746
|
+
/** @type {?} */
|
|
4528
4747
|
NodeTreeComponent.prototype.currentFolderId;
|
|
4529
4748
|
/** @type {?} */
|
|
4530
4749
|
NodeTreeComponent.prototype.isRoot;
|
|
@@ -4533,9 +4752,13 @@ if (false) {
|
|
|
4533
4752
|
/** @type {?} */
|
|
4534
4753
|
NodeTreeComponent.prototype.loading;
|
|
4535
4754
|
/** @type {?} */
|
|
4755
|
+
NodeTreeComponent.prototype.loadingMoreList;
|
|
4756
|
+
/** @type {?} */
|
|
4536
4757
|
NodeTreeComponent.prototype.treeControl;
|
|
4537
4758
|
/** @type {?} */
|
|
4538
4759
|
NodeTreeComponent.prototype.dataSource;
|
|
4760
|
+
/** @type {?} */
|
|
4761
|
+
NodeTreeComponent.prototype.folderChildrenMap;
|
|
4539
4762
|
/**
|
|
4540
4763
|
* @type {?}
|
|
4541
4764
|
* @private
|
|
@@ -4547,6 +4770,8 @@ if (false) {
|
|
|
4547
4770
|
NodeTreeComponent.prototype.isExpandable;
|
|
4548
4771
|
/** @type {?} */
|
|
4549
4772
|
NodeTreeComponent.prototype.hasChild;
|
|
4773
|
+
/** @type {?} */
|
|
4774
|
+
NodeTreeComponent.prototype.assetService;
|
|
4550
4775
|
/**
|
|
4551
4776
|
* @type {?}
|
|
4552
4777
|
* @private
|
|
@@ -4772,7 +4997,7 @@ class SearchBoxComponent {
|
|
|
4772
4997
|
* @return {?}
|
|
4773
4998
|
*/
|
|
4774
4999
|
([folders, assets]) => {
|
|
4775
|
-
this.assetService.setFolderList(folders.Data, folders.
|
|
5000
|
+
this.assetService.setFolderList(folders.Data, { Total: folders.Data.TotalFolder });
|
|
4776
5001
|
this.assetService.setAssetList(assets.Data.Children, assets.Meta);
|
|
4777
5002
|
}))
|
|
4778
5003
|
.add((/**
|
|
@@ -4937,16 +5162,9 @@ class AssetWrapperComponent {
|
|
|
4937
5162
|
this.hasArchivePermission = true;
|
|
4938
5163
|
this.assets = new EventEmitter();
|
|
4939
5164
|
this.unsubscribe$ = new Subject$1();
|
|
4940
|
-
this.nodeTreeMinWidth =
|
|
5165
|
+
this.nodeTreeMinWidth = 300;
|
|
4941
5166
|
this.nodeTreeMaxWidth = 700;
|
|
4942
5167
|
}
|
|
4943
|
-
/**
|
|
4944
|
-
* @return {?}
|
|
4945
|
-
*/
|
|
4946
|
-
ngOnChanges() {
|
|
4947
|
-
console.log('modify', this.hasModifyPermission);
|
|
4948
|
-
console.log('archive', this.hasArchivePermission);
|
|
4949
|
-
}
|
|
4950
5168
|
/**
|
|
4951
5169
|
* @return {?}
|
|
4952
5170
|
*/
|
|
@@ -5284,17 +5502,20 @@ class NodeDetailsComponent {
|
|
|
5284
5502
|
type: ActionTypes.SET_GLOBAL_LOADING,
|
|
5285
5503
|
payload: true,
|
|
5286
5504
|
});
|
|
5505
|
+
const { pageIndex, pageSize } = this.getFolderPagePagination();
|
|
5287
5506
|
this.assetService
|
|
5288
|
-
.getChildrenFolders({ assetId: id })
|
|
5507
|
+
.getChildrenFolders({ assetId: id, pageIndex, pageSize })
|
|
5289
5508
|
.pipe(takeUntil(this.unsubscribe$))
|
|
5290
5509
|
.subscribe((/**
|
|
5291
5510
|
* @param {?} res
|
|
5292
5511
|
* @return {?}
|
|
5293
5512
|
*/
|
|
5294
5513
|
(res) => {
|
|
5295
|
-
|
|
5296
|
-
|
|
5297
|
-
|
|
5514
|
+
const { Data } = res;
|
|
5515
|
+
const { Children } = Data;
|
|
5516
|
+
this.setFolderList(res);
|
|
5517
|
+
if (Children) {
|
|
5518
|
+
Children.forEach((/**
|
|
5298
5519
|
* @param {?} node
|
|
5299
5520
|
* @return {?}
|
|
5300
5521
|
*/
|
|
@@ -5311,6 +5532,18 @@ class NodeDetailsComponent {
|
|
|
5311
5532
|
});
|
|
5312
5533
|
}));
|
|
5313
5534
|
}
|
|
5535
|
+
/**
|
|
5536
|
+
* @private
|
|
5537
|
+
* @param {?} res
|
|
5538
|
+
* @return {?}
|
|
5539
|
+
*/
|
|
5540
|
+
setFolderList(res) {
|
|
5541
|
+
const { Data, Meta } = res;
|
|
5542
|
+
const { TotalFolder } = Data;
|
|
5543
|
+
const { PageIndex, PageSize } = Meta;
|
|
5544
|
+
this.assetService.setFolderList(Data, { Total: TotalFolder, PageIndex, PageSize });
|
|
5545
|
+
this.setFolderPagination({ length: TotalFolder, pageIndex: PageIndex, pageSize: PageSize });
|
|
5546
|
+
}
|
|
5314
5547
|
/**
|
|
5315
5548
|
* @private
|
|
5316
5549
|
* @param {?} id
|
|
@@ -5321,8 +5554,9 @@ class NodeDetailsComponent {
|
|
|
5321
5554
|
type: ActionTypes.SET_GLOBAL_LOADING,
|
|
5322
5555
|
payload: true,
|
|
5323
5556
|
});
|
|
5557
|
+
const { pageIndex, pageSize } = this.getFolderPagePagination();
|
|
5324
5558
|
combineLatest([
|
|
5325
|
-
this.assetService.getChildrenFolders({ assetId: id }),
|
|
5559
|
+
this.assetService.getChildrenFolders({ assetId: id, pageIndex, pageSize }),
|
|
5326
5560
|
this.assetService.getChildrenAssets({
|
|
5327
5561
|
assetId: id,
|
|
5328
5562
|
}),
|
|
@@ -5332,11 +5566,11 @@ class NodeDetailsComponent {
|
|
|
5332
5566
|
* @param {?} __0
|
|
5333
5567
|
* @return {?}
|
|
5334
5568
|
*/
|
|
5335
|
-
([
|
|
5336
|
-
this.
|
|
5337
|
-
this.assetService.setAssetList(
|
|
5338
|
-
if (
|
|
5339
|
-
|
|
5569
|
+
([foldersRes, assetsRes]) => {
|
|
5570
|
+
this.setFolderList(foldersRes);
|
|
5571
|
+
this.assetService.setAssetList(assetsRes.Data.Children, assetsRes.Meta);
|
|
5572
|
+
if (foldersRes.Data && foldersRes.Data.Children) {
|
|
5573
|
+
foldersRes.Data.Children.forEach((/**
|
|
5340
5574
|
* @param {?} node
|
|
5341
5575
|
* @return {?}
|
|
5342
5576
|
*/
|
|
@@ -5353,6 +5587,40 @@ class NodeDetailsComponent {
|
|
|
5353
5587
|
});
|
|
5354
5588
|
}));
|
|
5355
5589
|
}
|
|
5590
|
+
/**
|
|
5591
|
+
* @return {?}
|
|
5592
|
+
*/
|
|
5593
|
+
getFolderPagePagination() {
|
|
5594
|
+
return {
|
|
5595
|
+
pageIndex: this.assetService.pageFolderIndex,
|
|
5596
|
+
pageSize: this.assetService.pageFolderSize,
|
|
5597
|
+
length: this.assetService.folderTotal,
|
|
5598
|
+
};
|
|
5599
|
+
}
|
|
5600
|
+
/**
|
|
5601
|
+
* @param {?} event
|
|
5602
|
+
* @return {?}
|
|
5603
|
+
*/
|
|
5604
|
+
onFolderPageChange(event) {
|
|
5605
|
+
this.assetService.pageFolderIndex = event.pageIndex;
|
|
5606
|
+
this.assetService.pageFolderSize = event.pageSize;
|
|
5607
|
+
this.fetchFolder(this.currentFolder.AssetId);
|
|
5608
|
+
}
|
|
5609
|
+
/**
|
|
5610
|
+
* @private
|
|
5611
|
+
* @param {?} pagination
|
|
5612
|
+
* @return {?}
|
|
5613
|
+
*/
|
|
5614
|
+
setFolderPagination(pagination) {
|
|
5615
|
+
if (!pagination)
|
|
5616
|
+
return;
|
|
5617
|
+
const { length, pageIndex, pageSize } = pagination;
|
|
5618
|
+
this.folderPagination = {
|
|
5619
|
+
pageIndex,
|
|
5620
|
+
pageSize,
|
|
5621
|
+
length
|
|
5622
|
+
};
|
|
5623
|
+
}
|
|
5356
5624
|
/**
|
|
5357
5625
|
* @return {?}
|
|
5358
5626
|
*/
|
|
@@ -5380,7 +5648,7 @@ class NodeDetailsComponent {
|
|
|
5380
5648
|
NodeDetailsComponent.decorators = [
|
|
5381
5649
|
{ type: Component, args: [{
|
|
5382
5650
|
selector: 'lib-node-details',
|
|
5383
|
-
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>",
|
|
5651
|
+
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>",
|
|
5384
5652
|
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}"]
|
|
5385
5653
|
}] }
|
|
5386
5654
|
];
|
|
@@ -5410,6 +5678,8 @@ if (false) {
|
|
|
5410
5678
|
*/
|
|
5411
5679
|
NodeDetailsComponent.prototype.unsubscribe$;
|
|
5412
5680
|
/** @type {?} */
|
|
5681
|
+
NodeDetailsComponent.prototype.folderPagination;
|
|
5682
|
+
/** @type {?} */
|
|
5413
5683
|
NodeDetailsComponent.prototype.selectedAssets;
|
|
5414
5684
|
/** @type {?} */
|
|
5415
5685
|
NodeDetailsComponent.prototype.loading$;
|