@c8y/ngx-components 1018.0.196 → 1018.0.201
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/core/common/global-config.service.d.ts +1 -1
- package/core/common/permissions.service.d.ts +2 -2
- package/core/i18n/pattern-messages.data.d.ts +20 -20
- package/esm2020/assets-navigator/asset-node.service.mjs +9 -3
- package/esm2020/context-dashboard/add-dashboard.factory.mjs +10 -3
- package/esm2020/context-dashboard/context-dashboard.service.mjs +11 -3
- package/esm2020/context-dashboard/dashboard-detail.component.mjs +7 -2
- package/esm2020/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +4 -2
- package/esm2020/core/common/global-config.service.mjs +6 -2
- package/esm2020/core/common/permissions.service.mjs +2 -2
- package/esm2020/core/common/user-preferences/user-preferences.service.mjs +6 -2
- package/esm2020/core/i18n/pattern-messages.data.mjs +21 -21
- package/esm2020/files-repository/files-repository.guard.mjs +6 -5
- package/esm2020/repository/configuration/device-tab/configuration-preview.component.mjs +11 -3
- package/esm2020/sub-assets/add-group/add-group.component.mjs +7 -2
- package/esm2020/sub-assets/groups.component.mjs +5 -2
- package/esm2020/sub-assets/sub-assets.component.mjs +7 -2
- package/esm2020/sub-assets/sub-assets.service.mjs +12 -6
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs +8 -2
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs +28 -6
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-files-repository.mjs +5 -4
- package/fesm2015/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-repository-configuration.mjs +10 -2
- package/fesm2015/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sub-assets.mjs +27 -8
- package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +31 -23
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs +8 -2
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs +28 -6
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-files-repository.mjs +5 -4
- package/fesm2020/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-repository-configuration.mjs +10 -2
- package/fesm2020/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sub-assets.mjs +27 -8
- package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +31 -23
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -26,10 +26,11 @@ class FilesRepositoryGuard {
|
|
|
26
26
|
* @returns True, if the feature should be active.
|
|
27
27
|
*/
|
|
28
28
|
canActivate() {
|
|
29
|
-
return this.permissions.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
return (this.permissions.hasRole(Permissions.ROLE_INVENTORY_READ) ||
|
|
30
|
+
this.permissions.hasAllRoles([
|
|
31
|
+
Permissions.ROLE_MANAGED_OBJECT_READ,
|
|
32
|
+
Permissions.ROLE_BINARY_READ
|
|
33
|
+
]));
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
FilesRepositoryGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FilesRepositoryGuard, deps: [{ token: i3.Permissions }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-files-repository.mjs","sources":["../../files-repository/files-repository.guard.ts","../../files-repository/files-repository-navigation.factory.ts","../../files-repository/files-repository-product-experience.constants.ts","../../files-repository/files-repository-upload.component.ts","../../files-repository/files-repository-upload.component.html","../../files-repository/files-repository.service.ts","../../files-repository/files-repository.component.ts","../../files-repository/files-repository.component.html","../../files-repository/files-repository.module.ts","../../files-repository/c8y-ngx-components-files-repository.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { CanActivate } from '@angular/router';\nimport { Permissions } from '@c8y/ngx-components';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FilesRepositoryGuard implements CanActivate {\n constructor(private permissions: Permissions) {}\n\n /**\n * Checks if files repository should be active,\n * i.e. whether the current tenant can read or admin files in repository.\n *\n * @returns True, if the feature should be active.\n */\n canActivate(): boolean {\n return this.permissions.hasAnyRole([\n Permissions.ROLE_INVENTORY_READ,\n Permissions.ROLE_INVENTORY_ADMIN\n ]);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { gettext, NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\nimport { FilesRepositoryGuard } from './files-repository.guard';\n\n@Injectable({ providedIn: 'root' })\nexport class FilesRepositoryNavigationFactory implements NavigatorNodeFactory {\n private navs: NavigatorNode[] = [];\n\n constructor(private filesRepositoryGuard: FilesRepositoryGuard) {}\n\n async get(): Promise<NavigatorNode[]> {\n if (this.filesRepositoryGuard.canActivate()) {\n if (!this.navs.length) {\n this.navs.push(\n new NavigatorNode({\n parent: gettext('Management'),\n label: gettext('Files repository'),\n icon: 'c8y-archive',\n path: 'files',\n routerLinkExact: false,\n priority: 1000\n })\n );\n }\n }\n return this.navs;\n }\n}\n","export const PRODUCT_EXPERIENCE = {\n EVENTS: {\n FILE_REPOSITORY_UPLOAD: 'filesRepositoryUpload'\n },\n COMPONENTS: {\n FILE_REPOSITORY_UPLOAD_COMPONENT: 'files-repository-upload'\n },\n RESULTS: {\n UPLOAD_ITEM_SUCCESS: 'fileUploadSuccess',\n UPLOAD_ITEM_FAILED: 'fileUploadFailed'\n }\n};\n","import { Component, Output } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { InventoryBinaryService } from '@c8y/client';\nimport { AlertService, GainsightService, gettext } from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE } from './files-repository-product-experience.constants';\n\n@Component({\n selector: 'c8y-files-repository-upload',\n templateUrl: './files-repository-upload.component.html'\n})\nexport class FilesRepositoryUploadComponent {\n /** Emits an event when modal is closed. `uploaded` indicates if any files were uploaded. */\n @Output() onClose: EventEmitter<{ uploaded: boolean }> = new EventEmitter();\n isLoading = false;\n dropFilesHereMessage: string = gettext('Drop files here');\n filesToUpload;\n\n constructor(\n private inventoryBinaryService: InventoryBinaryService,\n private alertService: AlertService,\n private gainsightService: GainsightService\n ) {}\n\n async upload(): Promise<void> {\n if (this.filesToUpload === undefined) {\n this.alertService.warning(gettext('No files to upload.'));\n } else {\n this.isLoading = true;\n const promises = [];\n try {\n this.filesToUpload.forEach(file => {\n promises.push(this.inventoryBinaryService.create(file));\n });\n await Promise.all(promises);\n this.alertService.success(gettext('File(s) uploaded.'));\n this.onClose.emit({ uploaded: true });\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.EVENTS.FILE_REPOSITORY_UPLOAD, {\n component: PRODUCT_EXPERIENCE.COMPONENTS.FILE_REPOSITORY_UPLOAD_COMPONENT,\n action: PRODUCT_EXPERIENCE.RESULTS.UPLOAD_ITEM_SUCCESS\n });\n } catch (e) {\n if (e) {\n this.alertService.addServerFailure(e);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.EVENTS.FILE_REPOSITORY_UPLOAD, {\n component: PRODUCT_EXPERIENCE.COMPONENTS.FILE_REPOSITORY_UPLOAD_COMPONENT,\n action: PRODUCT_EXPERIENCE.RESULTS.UPLOAD_ITEM_FAILED\n });\n }\n } finally {\n this.isLoading = false;\n }\n }\n }\n\n onFileDroppedEvent(event: File[]): void {\n if (event && event.length > 0) {\n this.filesToUpload = event;\n }\n }\n}\n","<div class=\"c8y-viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"upload\"></i>\n <h4 translate id=\"modal-title\">Upload files</h4>\n </div>\n <div class=\"modal-inner-scroll\">\n <div class=\"modal-body\" id=\"modal-body\">\n <c8y-file-picker-new\n #filePicker\n [uploadInProgress]=\"isLoading\"\n (dropped)=\"onFileDroppedEvent($event)\"\n ></c8y-file-picker-new>\n </div>\n </div>\n <div class=\"card-footer separator d-flex j-c-center\">\n <button\n (click)=\"onClose.emit({ uploaded: false })\"\n [disabled]=\"isLoading\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n translate\n type=\"button\"\n >\n Cancel\n </button>\n <button\n (click)=\"upload()\"\n [disabled]=\"!filePicker.valid || isLoading\"\n class=\"btn btn-primary btn-form\"\n title=\"{{ 'Upload' | translate }}\"\n translate\n type=\"button\"\n data-cy=\"c8y-files-repository-upload--upload\"\n >\n Upload\n </button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { QueriesUtil } from '@c8y/client';\nimport { InventoryService } from '@c8y/client';\nimport { gettext, Pagination, SortOrder, Column, Row } from '@c8y/ngx-components';\nimport { transform, has } from 'lodash-es';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FilesRepositoryService {\n queriesUtil: QueriesUtil;\n baseQuery = { __has: 'c8y_IsBinary' };\n constructor(private inventoryService: InventoryService) {\n this.queriesUtil = new QueriesUtil();\n }\n\n getPagination(): Pagination {\n return {\n pageSize: 10,\n currentPage: 1\n };\n }\n\n hasApplicationStorageFragment(file: Row): boolean {\n return has(file, 'c8y_applications_storage');\n }\n\n getColumns(): Column[] {\n return [\n {\n name: 'name',\n header: gettext('Name'),\n path: 'name',\n filterable: true,\n sortable: true,\n sortOrder: 'asc' as SortOrder\n },\n {\n name: 'type',\n header: gettext('Type'),\n path: 'type',\n filterable: true,\n sortable: true\n },\n {\n name: 'length',\n header: gettext('Size'),\n path: 'length',\n filterable: false,\n sortable: true\n },\n {\n name: 'owner',\n header: gettext('Owner'),\n path: 'owner',\n filterable: true,\n sortable: true\n },\n {\n name: 'lastUpdated',\n header: gettext('Last update'),\n path: 'lastUpdated',\n filterable: false,\n sortable: true\n }\n ];\n }\n\n /** Returns array with items id where item has not c8y_applications_storage fragment. */\n getDeletableItemsIds(selectedItemsIds: string[], dataFromDataGrid: Array<any>): string[] {\n const selectedItemsWithoutApplications = [];\n dataFromDataGrid.forEach(item => {\n selectedItemsIds.forEach(selectedItemId => {\n if (selectedItemId === item.id && !this.hasApplicationStorageFragment(item)) {\n selectedItemsWithoutApplications.push(selectedItemId);\n }\n });\n });\n\n return selectedItemsWithoutApplications;\n }\n\n /** Returns the total number of items (with no filters based on columns setup). */\n async getTotal(): Promise<number> {\n const filters = {\n query: this.queriesUtil.buildQuery(this.baseQuery),\n pageSize: 1,\n withTotalPages: true\n };\n return (await this.inventoryService.list(filters)).paging.totalPages;\n }\n\n /** Returns data for current columns and pagination setup. */\n async getData(columns: Column[], pagination: Pagination, searchText = '') {\n // build filters based on columns and pagination\n const filters = {\n text: searchText,\n ...this.getFilters(columns, pagination)\n };\n // execute inventory query for the list of managed objects\n\n return this.inventoryService.list(filters);\n }\n\n /** Returns the number of items matching current columns and pagination setup. */\n async getCount(columns: Column[], pagination: Pagination) {\n const filters = {\n // build filters based on columns and pagination\n ...this.getFilters(columns, pagination),\n // but we only need the number of items, not the items themselves\n pageSize: 1,\n currentPage: 1\n };\n return (await this.inventoryService.list(filters)).paging.totalPages;\n }\n\n /** Returns filters for given columns and pagination setup. */\n private getFilters(columns: Column[], pagination: Pagination) {\n return {\n query: this.getQueryString(columns),\n pageSize: pagination.pageSize,\n currentPage: pagination.currentPage,\n withChildren: false,\n withTotalPages: true\n };\n }\n\n /** Returns a query string based on columns setup. */\n private getQueryString(columns: Column[]): string {\n let fullQuery = this.getQueryObj(columns);\n fullQuery = this.queriesUtil.addAndFilter(fullQuery, this.baseQuery);\n return this.queriesUtil.buildQuery(fullQuery);\n }\n\n /** Returns a query object based on columns setup. */\n private getQueryObj(columns: Column[]) {\n return transform(columns, (query, column) => this.addColumnQuery(query, column), {\n __filter: {},\n __orderby: []\n });\n }\n\n /** Extends given query with a part based on the setup of given column. */\n private addColumnQuery(query, column: Column): void {\n // when a column is marked as filterable\n if (column.filterable) {\n // in the case of default filtering form, `filterPredicate` will contain the string entered by a user\n if (column.filterPredicate) {\n // so we use it as the expected value, * allow to search for it anywhere in the property\n query.__filter[column.path] = `*${column.filterPredicate}*`;\n }\n\n // in the case of custom filtering form, we're storing the query in `externalFilterQuery.query`\n if (column.externalFilterQuery) {\n query = this.queriesUtil.addAndFilter(query, column.externalFilterQuery.query);\n }\n }\n\n // when a column is sortable and has a specified sorting order\n if (column.sortable && column.sortOrder) {\n // add sorting condition for the configured column `path`\n query.__orderby.push({\n [column.path]: column.sortOrder === 'asc' ? 1 : -1\n });\n }\n\n return query;\n }\n}\n","import { Component, EventEmitter, ViewChild } from '@angular/core';\nimport { IManagedObjectBinary, InventoryBinaryService } from '@c8y/client';\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport {\n gettext,\n Pagination,\n DisplayOptions,\n Column,\n Row,\n Status,\n LoadMoreMode,\n ServerSideDataResult,\n DataSourceModifier,\n BuiltInActionType,\n ActionControl,\n BulkActionControl,\n ModalService,\n AlertService,\n FilesService,\n ServerSideDataCallback,\n DataGridComponent\n} from '@c8y/ngx-components';\nimport { BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport { FilesRepositoryUploadComponent } from './files-repository-upload.component';\nimport { FilesRepositoryService } from './files-repository.service';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'c8y-files-repository',\n templateUrl: './files-repository.component.html'\n})\nexport class FilesRepositoryComponent {\n @ViewChild(DataGridComponent, { static: true }) dataGrid: DataGridComponent;\n destroy$: Subject<boolean> = new Subject<boolean>();\n title: string = gettext('Files repository');\n managementTitle: string = gettext('Management');\n loadMoreItemsLabel: string = gettext('Load more files');\n loadingItemsLabel: string = gettext('Loading files…');\n\n isLoading = true;\n\n displayOptions: DisplayOptions = {\n bordered: false,\n striped: true,\n filter: true,\n gridHeader: true\n };\n\n columns: Column[] = this.filesRepositoryService.getColumns();\n pagination: Pagination = this.filesRepositoryService.getPagination();\n infiniteScroll: LoadMoreMode = 'auto';\n serverSideDataCallback: ServerSideDataCallback;\n returnedDataSize: number;\n selectable = true;\n actionControls: ActionControl[] = [\n {\n text: gettext('Delete'),\n icon: 'trash',\n type: BuiltInActionType.Delete,\n showIf: selectedItem =>\n !this.filesRepositoryService.hasApplicationStorageFragment(selectedItem),\n callback: selectedItem => this.onDeleteItem(selectedItem)\n },\n {\n text: gettext('Download'),\n icon: 'download',\n type: BuiltInActionType.Export,\n callback: selectedItem => this.onDownloadItem(selectedItem as IManagedObjectBinary)\n }\n ];\n bulkActionControls: BulkActionControl[] = [\n {\n type: BuiltInActionType.Delete,\n callback: selectedItemIds => this.onDeleteItems(selectedItemIds)\n }\n ];\n\n refresh: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(\n private filesRepositoryService: FilesRepositoryService,\n private inventoryBinaryService: InventoryBinaryService,\n private modalService: ModalService,\n private alertService: AlertService,\n private bsModalService: BsModalService,\n private fileService: FilesService,\n private translateService: TranslateService\n ) {\n // we're setting up `serverSideDataCallback` to execute a method from this component with bound `this`\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n const { res, data, paging } = await this.filesRepositoryService.getData(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n dataSourceModifier.searchText\n );\n\n const filteredSize: number = await this.filesRepositoryService.getCount(\n dataSourceModifier.columns,\n dataSourceModifier.pagination\n );\n const size: number = await this.filesRepositoryService.getTotal();\n const serverSideDataResult: ServerSideDataResult = { res, data, paging, filteredSize, size };\n this.isLoading = false;\n this.returnedDataSize = serverSideDataResult.size;\n\n return serverSideDataResult;\n }\n\n async onDeleteItem(selectedItem: Row) {\n return this.deleteItemsWithConfirmation([selectedItem.id], {\n title: gettext('Delete file'),\n body: this.translateService.instant(\n gettext('You are about to delete file \"{{ name }}\". Do you want to proceed?'),\n selectedItem\n ),\n successText: gettext('File deleted.')\n });\n }\n\n async onDeleteItems(selectedItemsIds: string[]) {\n const dataGridDataSourceData = await this.dataGrid.dataSource.data$.pipe(take(1)).toPromise();\n const deletableItemsIds = this.filesRepositoryService.getDeletableItemsIds(\n selectedItemsIds,\n dataGridDataSourceData\n );\n let body: string;\n if (deletableItemsIds.length < selectedItemsIds.length) {\n body = gettext(`\n You are about to delete the selected files.\n Note: the selected files of type \"c8y_applications_storage_*\" won't be deleted though\n - such files can be deleted only from the \"Activity log\" of the associated application.\n Do you want to proceed?\n `);\n } else {\n body = gettext('You are about to delete the selected files. Do you want to proceed?');\n }\n\n return this.deleteItemsWithConfirmation(deletableItemsIds, {\n title: gettext('Delete files'),\n body,\n successText: gettext('Files deleted.')\n });\n }\n\n async onDownloadItem(selectedItem: IManagedObjectBinary) {\n return this.fileService.download(selectedItem);\n }\n\n openFileUploadComponent() {\n const modalOptions: ModalOptions<FilesRepositoryUploadComponent> = {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n ignoreBackdropClick: true\n };\n const modalRef = this.bsModalService.show(FilesRepositoryUploadComponent, modalOptions);\n modalRef.content.onClose.pipe(takeUntil(this.destroy$)).subscribe(({ uploaded }) => {\n if (uploaded) {\n this.refresh.emit();\n }\n modalRef.hide();\n });\n }\n\n private async deleteItemsWithConfirmation(\n selectedItemsIds: string[],\n options: { title: string; body: string; successText: string }\n ) {\n try {\n await this.confirmItemsDeletion(options);\n this.isLoading = true;\n const promises = selectedItemsIds.map(selectedItemId =>\n this.inventoryBinaryService.delete(selectedItemId)\n );\n await Promise.all(promises);\n this.alertService.success(options.successText);\n this.refresh.next();\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n }\n } finally {\n this.isLoading = false;\n }\n }\n\n private async confirmItemsDeletion({ title, body }: { title: string; body: string }) {\n const status = Status.DANGER;\n const labels = { ok: gettext('Delete'), cancel: gettext('Cancel') };\n await this.modalService.confirm(title, body, status, labels);\n }\n}\n","<c8y-title>\n {{ title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n [label]=\"managementTitle | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"title | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n *c8yIfAllowed=\"['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE']; allowAny: true\"\n class=\"btn btn-link\"\n title=\"{{ 'Upload files' | translate }}\"\n (click)=\"openFileUploadComponent()\"\n data-cy=\"c8y-files-repository--open-file-upload-component\"\n >\n <i c8yIcon=\"upload\"></i>\n {{ 'Upload files' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/administration/#files\"></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [displayOptions]=\"displayOptions\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [infiniteScroll]=\"infiniteScroll\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [actionControls]=\"actionControls\"\n [selectable]=\"selectable\"\n [showSearch]=\"true\"\n [refresh]=\"refresh\"\n [bulkActionControls]=\"bulkActionControls\"\n >\n <div class=\"c8y-empty-state\">\n <ng-container *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </ng-container>\n <ng-container>\n <div class=\"text-center list-group\">\n <h1 class=\"c8y-icon-duocolor\" c8yIcon=\"c8y-archive\"></h1>\n <h3 translate>No files to display.</h3>\n <div\n class=\"text-center\"\n *c8yIfAllowed=\"['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE']\"\n >\n <p translate>Add a new file by clicking below.</p>\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Upload file' | translate }}\"\n type=\"button\"\n (click)=\"openFileUploadComponent()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Upload file' | translate }}\n </button>\n </p>\n </div>\n </div>\n </ng-container>\n </div>\n\n <c8y-column name=\"name\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span title=\"{{ context.value }}\">\n <div class=\"d-flex j-c-between a-i-center\">\n {{ context.value }}\n <c8y-file-preview [mo]=\"context.item\" class=\"m-l-auto\">\n <button\n class=\"btn btn-emphasis btn-icon\"\n type=\"button\"\n [title]=\"'Preview file' | translate\"\n customButton\n >\n <i c8yIcon=\"search\"></i>\n </button>\n </c8y-file-preview>\n </div>\n </span>\n </ng-container>\n </c8y-column>\n\n <c8y-column name=\"length\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span title=\"{{ context.value }} B\">\n {{ context.value | bytes }}\n </span>\n </ng-container>\n </c8y-column>\n\n <c8y-column name=\"lastUpdated\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span title=\"{{ context.value | c8yDate }}\">\n {{ context.value | c8yDate }}\n </span>\n </ng-container>\n </c8y-column>\n </c8y-data-grid>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CoreModule, hookNavigator, hookRoute, DropAreaModule } from '@c8y/ngx-components';\nimport { FilesRepositoryNavigationFactory } from './files-repository-navigation.factory';\nimport { FilesRepositoryComponent } from './files-repository.component';\nimport { FilesRepositoryUploadComponent } from './files-repository-upload.component';\nimport { FilesRepositoryService } from './files-repository.service';\nimport { FilesRepositoryGuard } from './files-repository.guard';\nimport { FilePreviewModule } from '@c8y/ngx-components/file-preview';\n\n@NgModule({\n imports: [RouterModule, CoreModule, DropAreaModule, FilePreviewModule],\n exports: [],\n declarations: [FilesRepositoryComponent, FilesRepositoryUploadComponent],\n providers: [\n FilesRepositoryGuard,\n hookNavigator(FilesRepositoryNavigationFactory),\n hookRoute(\n {\n path: 'files',\n component: FilesRepositoryComponent,\n canActivate: [FilesRepositoryGuard]\n },\n { multi: true }\n ),\n FilesRepositoryService\n ]\n})\nexport class FilesRepositoryModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.FilesRepositoryGuard","i2","i1.FilesRepositoryService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-files-repository.mjs","sources":["../../files-repository/files-repository.guard.ts","../../files-repository/files-repository-navigation.factory.ts","../../files-repository/files-repository-product-experience.constants.ts","../../files-repository/files-repository-upload.component.ts","../../files-repository/files-repository-upload.component.html","../../files-repository/files-repository.service.ts","../../files-repository/files-repository.component.ts","../../files-repository/files-repository.component.html","../../files-repository/files-repository.module.ts","../../files-repository/c8y-ngx-components-files-repository.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { CanActivate } from '@angular/router';\nimport { Permissions } from '@c8y/ngx-components';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FilesRepositoryGuard implements CanActivate {\n constructor(private permissions: Permissions) {}\n\n /**\n * Checks if files repository should be active,\n * i.e. whether the current tenant can read or admin files in repository.\n *\n * @returns True, if the feature should be active.\n */\n canActivate(): boolean {\n return (\n this.permissions.hasRole(Permissions.ROLE_INVENTORY_READ) ||\n this.permissions.hasAllRoles([\n Permissions.ROLE_MANAGED_OBJECT_READ,\n Permissions.ROLE_BINARY_READ\n ])\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { gettext, NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\nimport { FilesRepositoryGuard } from './files-repository.guard';\n\n@Injectable({ providedIn: 'root' })\nexport class FilesRepositoryNavigationFactory implements NavigatorNodeFactory {\n private navs: NavigatorNode[] = [];\n\n constructor(private filesRepositoryGuard: FilesRepositoryGuard) {}\n\n async get(): Promise<NavigatorNode[]> {\n if (this.filesRepositoryGuard.canActivate()) {\n if (!this.navs.length) {\n this.navs.push(\n new NavigatorNode({\n parent: gettext('Management'),\n label: gettext('Files repository'),\n icon: 'c8y-archive',\n path: 'files',\n routerLinkExact: false,\n priority: 1000\n })\n );\n }\n }\n return this.navs;\n }\n}\n","export const PRODUCT_EXPERIENCE = {\n EVENTS: {\n FILE_REPOSITORY_UPLOAD: 'filesRepositoryUpload'\n },\n COMPONENTS: {\n FILE_REPOSITORY_UPLOAD_COMPONENT: 'files-repository-upload'\n },\n RESULTS: {\n UPLOAD_ITEM_SUCCESS: 'fileUploadSuccess',\n UPLOAD_ITEM_FAILED: 'fileUploadFailed'\n }\n};\n","import { Component, Output } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { InventoryBinaryService } from '@c8y/client';\nimport { AlertService, GainsightService, gettext } from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE } from './files-repository-product-experience.constants';\n\n@Component({\n selector: 'c8y-files-repository-upload',\n templateUrl: './files-repository-upload.component.html'\n})\nexport class FilesRepositoryUploadComponent {\n /** Emits an event when modal is closed. `uploaded` indicates if any files were uploaded. */\n @Output() onClose: EventEmitter<{ uploaded: boolean }> = new EventEmitter();\n isLoading = false;\n dropFilesHereMessage: string = gettext('Drop files here');\n filesToUpload;\n\n constructor(\n private inventoryBinaryService: InventoryBinaryService,\n private alertService: AlertService,\n private gainsightService: GainsightService\n ) {}\n\n async upload(): Promise<void> {\n if (this.filesToUpload === undefined) {\n this.alertService.warning(gettext('No files to upload.'));\n } else {\n this.isLoading = true;\n const promises = [];\n try {\n this.filesToUpload.forEach(file => {\n promises.push(this.inventoryBinaryService.create(file));\n });\n await Promise.all(promises);\n this.alertService.success(gettext('File(s) uploaded.'));\n this.onClose.emit({ uploaded: true });\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.EVENTS.FILE_REPOSITORY_UPLOAD, {\n component: PRODUCT_EXPERIENCE.COMPONENTS.FILE_REPOSITORY_UPLOAD_COMPONENT,\n action: PRODUCT_EXPERIENCE.RESULTS.UPLOAD_ITEM_SUCCESS\n });\n } catch (e) {\n if (e) {\n this.alertService.addServerFailure(e);\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.EVENTS.FILE_REPOSITORY_UPLOAD, {\n component: PRODUCT_EXPERIENCE.COMPONENTS.FILE_REPOSITORY_UPLOAD_COMPONENT,\n action: PRODUCT_EXPERIENCE.RESULTS.UPLOAD_ITEM_FAILED\n });\n }\n } finally {\n this.isLoading = false;\n }\n }\n }\n\n onFileDroppedEvent(event: File[]): void {\n if (event && event.length > 0) {\n this.filesToUpload = event;\n }\n }\n}\n","<div class=\"c8y-viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"upload\"></i>\n <h4 translate id=\"modal-title\">Upload files</h4>\n </div>\n <div class=\"modal-inner-scroll\">\n <div class=\"modal-body\" id=\"modal-body\">\n <c8y-file-picker-new\n #filePicker\n [uploadInProgress]=\"isLoading\"\n (dropped)=\"onFileDroppedEvent($event)\"\n ></c8y-file-picker-new>\n </div>\n </div>\n <div class=\"card-footer separator d-flex j-c-center\">\n <button\n (click)=\"onClose.emit({ uploaded: false })\"\n [disabled]=\"isLoading\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n translate\n type=\"button\"\n >\n Cancel\n </button>\n <button\n (click)=\"upload()\"\n [disabled]=\"!filePicker.valid || isLoading\"\n class=\"btn btn-primary btn-form\"\n title=\"{{ 'Upload' | translate }}\"\n translate\n type=\"button\"\n data-cy=\"c8y-files-repository-upload--upload\"\n >\n Upload\n </button>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { QueriesUtil } from '@c8y/client';\nimport { InventoryService } from '@c8y/client';\nimport { gettext, Pagination, SortOrder, Column, Row } from '@c8y/ngx-components';\nimport { transform, has } from 'lodash-es';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FilesRepositoryService {\n queriesUtil: QueriesUtil;\n baseQuery = { __has: 'c8y_IsBinary' };\n constructor(private inventoryService: InventoryService) {\n this.queriesUtil = new QueriesUtil();\n }\n\n getPagination(): Pagination {\n return {\n pageSize: 10,\n currentPage: 1\n };\n }\n\n hasApplicationStorageFragment(file: Row): boolean {\n return has(file, 'c8y_applications_storage');\n }\n\n getColumns(): Column[] {\n return [\n {\n name: 'name',\n header: gettext('Name'),\n path: 'name',\n filterable: true,\n sortable: true,\n sortOrder: 'asc' as SortOrder\n },\n {\n name: 'type',\n header: gettext('Type'),\n path: 'type',\n filterable: true,\n sortable: true\n },\n {\n name: 'length',\n header: gettext('Size'),\n path: 'length',\n filterable: false,\n sortable: true\n },\n {\n name: 'owner',\n header: gettext('Owner'),\n path: 'owner',\n filterable: true,\n sortable: true\n },\n {\n name: 'lastUpdated',\n header: gettext('Last update'),\n path: 'lastUpdated',\n filterable: false,\n sortable: true\n }\n ];\n }\n\n /** Returns array with items id where item has not c8y_applications_storage fragment. */\n getDeletableItemsIds(selectedItemsIds: string[], dataFromDataGrid: Array<any>): string[] {\n const selectedItemsWithoutApplications = [];\n dataFromDataGrid.forEach(item => {\n selectedItemsIds.forEach(selectedItemId => {\n if (selectedItemId === item.id && !this.hasApplicationStorageFragment(item)) {\n selectedItemsWithoutApplications.push(selectedItemId);\n }\n });\n });\n\n return selectedItemsWithoutApplications;\n }\n\n /** Returns the total number of items (with no filters based on columns setup). */\n async getTotal(): Promise<number> {\n const filters = {\n query: this.queriesUtil.buildQuery(this.baseQuery),\n pageSize: 1,\n withTotalPages: true\n };\n return (await this.inventoryService.list(filters)).paging.totalPages;\n }\n\n /** Returns data for current columns and pagination setup. */\n async getData(columns: Column[], pagination: Pagination, searchText = '') {\n // build filters based on columns and pagination\n const filters = {\n text: searchText,\n ...this.getFilters(columns, pagination)\n };\n // execute inventory query for the list of managed objects\n\n return this.inventoryService.list(filters);\n }\n\n /** Returns the number of items matching current columns and pagination setup. */\n async getCount(columns: Column[], pagination: Pagination) {\n const filters = {\n // build filters based on columns and pagination\n ...this.getFilters(columns, pagination),\n // but we only need the number of items, not the items themselves\n pageSize: 1,\n currentPage: 1\n };\n return (await this.inventoryService.list(filters)).paging.totalPages;\n }\n\n /** Returns filters for given columns and pagination setup. */\n private getFilters(columns: Column[], pagination: Pagination) {\n return {\n query: this.getQueryString(columns),\n pageSize: pagination.pageSize,\n currentPage: pagination.currentPage,\n withChildren: false,\n withTotalPages: true\n };\n }\n\n /** Returns a query string based on columns setup. */\n private getQueryString(columns: Column[]): string {\n let fullQuery = this.getQueryObj(columns);\n fullQuery = this.queriesUtil.addAndFilter(fullQuery, this.baseQuery);\n return this.queriesUtil.buildQuery(fullQuery);\n }\n\n /** Returns a query object based on columns setup. */\n private getQueryObj(columns: Column[]) {\n return transform(columns, (query, column) => this.addColumnQuery(query, column), {\n __filter: {},\n __orderby: []\n });\n }\n\n /** Extends given query with a part based on the setup of given column. */\n private addColumnQuery(query, column: Column): void {\n // when a column is marked as filterable\n if (column.filterable) {\n // in the case of default filtering form, `filterPredicate` will contain the string entered by a user\n if (column.filterPredicate) {\n // so we use it as the expected value, * allow to search for it anywhere in the property\n query.__filter[column.path] = `*${column.filterPredicate}*`;\n }\n\n // in the case of custom filtering form, we're storing the query in `externalFilterQuery.query`\n if (column.externalFilterQuery) {\n query = this.queriesUtil.addAndFilter(query, column.externalFilterQuery.query);\n }\n }\n\n // when a column is sortable and has a specified sorting order\n if (column.sortable && column.sortOrder) {\n // add sorting condition for the configured column `path`\n query.__orderby.push({\n [column.path]: column.sortOrder === 'asc' ? 1 : -1\n });\n }\n\n return query;\n }\n}\n","import { Component, EventEmitter, ViewChild } from '@angular/core';\nimport { IManagedObjectBinary, InventoryBinaryService } from '@c8y/client';\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport {\n gettext,\n Pagination,\n DisplayOptions,\n Column,\n Row,\n Status,\n LoadMoreMode,\n ServerSideDataResult,\n DataSourceModifier,\n BuiltInActionType,\n ActionControl,\n BulkActionControl,\n ModalService,\n AlertService,\n FilesService,\n ServerSideDataCallback,\n DataGridComponent\n} from '@c8y/ngx-components';\nimport { BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport { FilesRepositoryUploadComponent } from './files-repository-upload.component';\nimport { FilesRepositoryService } from './files-repository.service';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'c8y-files-repository',\n templateUrl: './files-repository.component.html'\n})\nexport class FilesRepositoryComponent {\n @ViewChild(DataGridComponent, { static: true }) dataGrid: DataGridComponent;\n destroy$: Subject<boolean> = new Subject<boolean>();\n title: string = gettext('Files repository');\n managementTitle: string = gettext('Management');\n loadMoreItemsLabel: string = gettext('Load more files');\n loadingItemsLabel: string = gettext('Loading files…');\n\n isLoading = true;\n\n displayOptions: DisplayOptions = {\n bordered: false,\n striped: true,\n filter: true,\n gridHeader: true\n };\n\n columns: Column[] = this.filesRepositoryService.getColumns();\n pagination: Pagination = this.filesRepositoryService.getPagination();\n infiniteScroll: LoadMoreMode = 'auto';\n serverSideDataCallback: ServerSideDataCallback;\n returnedDataSize: number;\n selectable = true;\n actionControls: ActionControl[] = [\n {\n text: gettext('Delete'),\n icon: 'trash',\n type: BuiltInActionType.Delete,\n showIf: selectedItem =>\n !this.filesRepositoryService.hasApplicationStorageFragment(selectedItem),\n callback: selectedItem => this.onDeleteItem(selectedItem)\n },\n {\n text: gettext('Download'),\n icon: 'download',\n type: BuiltInActionType.Export,\n callback: selectedItem => this.onDownloadItem(selectedItem as IManagedObjectBinary)\n }\n ];\n bulkActionControls: BulkActionControl[] = [\n {\n type: BuiltInActionType.Delete,\n callback: selectedItemIds => this.onDeleteItems(selectedItemIds)\n }\n ];\n\n refresh: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(\n private filesRepositoryService: FilesRepositoryService,\n private inventoryBinaryService: InventoryBinaryService,\n private modalService: ModalService,\n private alertService: AlertService,\n private bsModalService: BsModalService,\n private fileService: FilesService,\n private translateService: TranslateService\n ) {\n // we're setting up `serverSideDataCallback` to execute a method from this component with bound `this`\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n const { res, data, paging } = await this.filesRepositoryService.getData(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n dataSourceModifier.searchText\n );\n\n const filteredSize: number = await this.filesRepositoryService.getCount(\n dataSourceModifier.columns,\n dataSourceModifier.pagination\n );\n const size: number = await this.filesRepositoryService.getTotal();\n const serverSideDataResult: ServerSideDataResult = { res, data, paging, filteredSize, size };\n this.isLoading = false;\n this.returnedDataSize = serverSideDataResult.size;\n\n return serverSideDataResult;\n }\n\n async onDeleteItem(selectedItem: Row) {\n return this.deleteItemsWithConfirmation([selectedItem.id], {\n title: gettext('Delete file'),\n body: this.translateService.instant(\n gettext('You are about to delete file \"{{ name }}\". Do you want to proceed?'),\n selectedItem\n ),\n successText: gettext('File deleted.')\n });\n }\n\n async onDeleteItems(selectedItemsIds: string[]) {\n const dataGridDataSourceData = await this.dataGrid.dataSource.data$.pipe(take(1)).toPromise();\n const deletableItemsIds = this.filesRepositoryService.getDeletableItemsIds(\n selectedItemsIds,\n dataGridDataSourceData\n );\n let body: string;\n if (deletableItemsIds.length < selectedItemsIds.length) {\n body = gettext(`\n You are about to delete the selected files.\n Note: the selected files of type \"c8y_applications_storage_*\" won't be deleted though\n - such files can be deleted only from the \"Activity log\" of the associated application.\n Do you want to proceed?\n `);\n } else {\n body = gettext('You are about to delete the selected files. Do you want to proceed?');\n }\n\n return this.deleteItemsWithConfirmation(deletableItemsIds, {\n title: gettext('Delete files'),\n body,\n successText: gettext('Files deleted.')\n });\n }\n\n async onDownloadItem(selectedItem: IManagedObjectBinary) {\n return this.fileService.download(selectedItem);\n }\n\n openFileUploadComponent() {\n const modalOptions: ModalOptions<FilesRepositoryUploadComponent> = {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n ignoreBackdropClick: true\n };\n const modalRef = this.bsModalService.show(FilesRepositoryUploadComponent, modalOptions);\n modalRef.content.onClose.pipe(takeUntil(this.destroy$)).subscribe(({ uploaded }) => {\n if (uploaded) {\n this.refresh.emit();\n }\n modalRef.hide();\n });\n }\n\n private async deleteItemsWithConfirmation(\n selectedItemsIds: string[],\n options: { title: string; body: string; successText: string }\n ) {\n try {\n await this.confirmItemsDeletion(options);\n this.isLoading = true;\n const promises = selectedItemsIds.map(selectedItemId =>\n this.inventoryBinaryService.delete(selectedItemId)\n );\n await Promise.all(promises);\n this.alertService.success(options.successText);\n this.refresh.next();\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n }\n } finally {\n this.isLoading = false;\n }\n }\n\n private async confirmItemsDeletion({ title, body }: { title: string; body: string }) {\n const status = Status.DANGER;\n const labels = { ok: gettext('Delete'), cancel: gettext('Cancel') };\n await this.modalService.confirm(title, body, status, labels);\n }\n}\n","<c8y-title>\n {{ title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n [label]=\"managementTitle | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"title | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n *c8yIfAllowed=\"['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE']; allowAny: true\"\n class=\"btn btn-link\"\n title=\"{{ 'Upload files' | translate }}\"\n (click)=\"openFileUploadComponent()\"\n data-cy=\"c8y-files-repository--open-file-upload-component\"\n >\n <i c8yIcon=\"upload\"></i>\n {{ 'Upload files' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/administration/#files\"></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [displayOptions]=\"displayOptions\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [infiniteScroll]=\"infiniteScroll\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [actionControls]=\"actionControls\"\n [selectable]=\"selectable\"\n [showSearch]=\"true\"\n [refresh]=\"refresh\"\n [bulkActionControls]=\"bulkActionControls\"\n >\n <div class=\"c8y-empty-state\">\n <ng-container *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </ng-container>\n <ng-container>\n <div class=\"text-center list-group\">\n <h1 class=\"c8y-icon-duocolor\" c8yIcon=\"c8y-archive\"></h1>\n <h3 translate>No files to display.</h3>\n <div\n class=\"text-center\"\n *c8yIfAllowed=\"['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE']\"\n >\n <p translate>Add a new file by clicking below.</p>\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Upload file' | translate }}\"\n type=\"button\"\n (click)=\"openFileUploadComponent()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Upload file' | translate }}\n </button>\n </p>\n </div>\n </div>\n </ng-container>\n </div>\n\n <c8y-column name=\"name\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span title=\"{{ context.value }}\">\n <div class=\"d-flex j-c-between a-i-center\">\n {{ context.value }}\n <c8y-file-preview [mo]=\"context.item\" class=\"m-l-auto\">\n <button\n class=\"btn btn-emphasis btn-icon\"\n type=\"button\"\n [title]=\"'Preview file' | translate\"\n customButton\n >\n <i c8yIcon=\"search\"></i>\n </button>\n </c8y-file-preview>\n </div>\n </span>\n </ng-container>\n </c8y-column>\n\n <c8y-column name=\"length\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span title=\"{{ context.value }} B\">\n {{ context.value | bytes }}\n </span>\n </ng-container>\n </c8y-column>\n\n <c8y-column name=\"lastUpdated\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span title=\"{{ context.value | c8yDate }}\">\n {{ context.value | c8yDate }}\n </span>\n </ng-container>\n </c8y-column>\n </c8y-data-grid>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CoreModule, hookNavigator, hookRoute, DropAreaModule } from '@c8y/ngx-components';\nimport { FilesRepositoryNavigationFactory } from './files-repository-navigation.factory';\nimport { FilesRepositoryComponent } from './files-repository.component';\nimport { FilesRepositoryUploadComponent } from './files-repository-upload.component';\nimport { FilesRepositoryService } from './files-repository.service';\nimport { FilesRepositoryGuard } from './files-repository.guard';\nimport { FilePreviewModule } from '@c8y/ngx-components/file-preview';\n\n@NgModule({\n imports: [RouterModule, CoreModule, DropAreaModule, FilePreviewModule],\n exports: [],\n declarations: [FilesRepositoryComponent, FilesRepositoryUploadComponent],\n providers: [\n FilesRepositoryGuard,\n hookNavigator(FilesRepositoryNavigationFactory),\n hookRoute(\n {\n path: 'files',\n component: FilesRepositoryComponent,\n canActivate: [FilesRepositoryGuard]\n },\n { multi: true }\n ),\n FilesRepositoryService\n ]\n})\nexport class FilesRepositoryModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.FilesRepositoryGuard","i2","i1.FilesRepositoryService"],"mappings":"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"}
|
|
@@ -400,10 +400,18 @@ class ConfigurationPreviewComponent {
|
|
|
400
400
|
});
|
|
401
401
|
}
|
|
402
402
|
hasPermission() {
|
|
403
|
-
return this.user.hasAnyRole(this.appState.currentUser.value, [
|
|
403
|
+
return (this.user.hasAnyRole(this.appState.currentUser.value, [
|
|
404
404
|
Permissions.ROLE_INVENTORY_ADMIN,
|
|
405
405
|
Permissions.ROLE_INVENTORY_CREATE
|
|
406
|
-
])
|
|
406
|
+
]) ||
|
|
407
|
+
(this.user.hasAnyRole(this.appState.currentUser.value, [
|
|
408
|
+
Permissions.ROLE_MANAGED_OBJECT_ADMIN,
|
|
409
|
+
Permissions.ROLE_MANAGED_OBJECT_CREATE
|
|
410
|
+
]) &&
|
|
411
|
+
this.user.hasAnyRole(this.appState.currentUser.value, [
|
|
412
|
+
Permissions.ROLE_BINARY_ADMIN,
|
|
413
|
+
Permissions.ROLE_BINARY_CREATE
|
|
414
|
+
])));
|
|
407
415
|
}
|
|
408
416
|
ngOnDestroy() {
|
|
409
417
|
if (this.operationsSubscription) {
|