{"version":3,"file":"c8y-ngx-components-user-roles.mjs","sources":["../../user-roles/inventory-role-selector/inventory-role-selector.component.ts","../../user-roles/roles-asset-tree/roles-asset-tree.component.ts","../../user-roles/roles-asset-tree/roles-asset-tree.component.html","../../user-roles/user-roles.module.ts","../../user-roles/c8y-ngx-components-user-roles.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, Injector, Input, Output } from '@angular/core';\nimport { UpgradeComponent } from '@angular/upgrade/static';\n\n@Directive({\n  selector: 'c8y-inventory-role-selector-upgraded'\n})\nexport class InventoryRoleSelector extends UpgradeComponent {\n  @Input() assignedRoles: any;\n  @Input() inheritedRoles: any;\n  @Input() inventoryRoles: any;\n  @Input() ownerAllowedRoles: any;\n  @Output() onApply: EventEmitter<any>;\n\n  constructor(elementRef: ElementRef, injector: Injector) {\n    super('c8yInventoryRoleSelector', elementRef, injector);\n  }\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Optional, Output } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components';\n\nimport {\n  mergeWith,\n  map as _map,\n  filter,\n  flatten,\n  uniqBy,\n  identity,\n  property,\n  get,\n  reduce\n} from 'lodash-es';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { IIdentified } from '@c8y/client';\nimport {\n  Ng1RolesService,\n  Ng1UserInventoryRolesService\n} from '@c8y/ngx-components/upgrade/upgraded-services';\n\n@Component({\n  selector: 'c8y-roles-asset-tree-upgraded',\n  templateUrl: './roles-asset-tree.component.html'\n})\nexport class RolesAssetTreeComponent implements OnInit, OnChanges {\n  @Input() user;\n  @Input() searchFilter;\n  @Input() assignedRoles;\n  @Input() ownerAssignedRoles;\n  @Input() expandGroups;\n  @Input() pageSize;\n  @Input() paginationOffset;\n  @Output() onChangeRoles = new EventEmitter();\n  @Output() onChangeItemCount = new EventEmitter();\n\n  rootGroups;\n  flatAssetTree;\n  inventoryRoles;\n  loadingAssetTree;\n  inheritedRoles;\n  ownerAllAssignedRoles;\n\n  noSubgroupTitle = gettext('No subgroups');\n  manySubgroupsTitle = gettext('Subgroups: {{ count }}');\n  oneSubgroupTitle = gettext('Subgroup: 1');\n  clickToOpenTitle = gettext('Click to fetch subgroups');\n  expandAriaLabel = gettext('Expand');\n  collapseAriaLabel = gettext('Collapse');\n\n  searchTermSubject = new BehaviorSubject<string>('');\n  flatTreeSubject = new BehaviorSubject<IIdentified[]>([]);\n\n  flatAssetTree$ = combineLatest([this.searchTermSubject, this.flatTreeSubject]).pipe(\n    map(([searchTerm, flatTree]) => {\n      return flatTree\n        .filter(group => group.name.toLowerCase().includes(searchTerm.toLowerCase()))\n        .filter(this.filterAsset.bind(this));\n    }),\n    tap(flatTree => {\n      this.onChangeItemCount.emit(flatTree.length);\n    })\n  );\n\n  constructor(\n    @Optional() public c8yUserInventoryRoles: Ng1UserInventoryRolesService,\n    @Optional() public c8yRoles: Ng1RolesService\n  ) {}\n\n  ngOnInit() {\n    this.loadInventoryRoles();\n  }\n\n  loadAssetTree() {\n    const onlyRootsUser = this.user.owner;\n    return this.c8yUserInventoryRoles.listRootGroups({ onlyRootsUser }).then(result => {\n      this.rootGroups = result;\n      this.updateTree();\n    });\n  }\n\n  updateTree() {\n    this.flatAssetTree = this.c8yUserInventoryRoles.flatTree(this.rootGroups);\n    this.setInheritedRoles();\n    this.flatTreeSubject.next(this.flatAssetTree);\n  }\n\n  loadChildren(mo) {\n    if (mo.isOpened) {\n      // eslint-disable-next-line no-underscore-dangle\n      mo._subGroups = [];\n      mo.isOpened = false;\n      this.updateTree();\n    } else {\n      this.c8yUserInventoryRoles.loadChildren(mo).then(_ => {\n        this.updateTree();\n      });\n      mo.isOpened = true;\n    }\n  }\n\n  loadInventoryRoles() {\n    this.c8yRoles.list({ pageSize: 1000 }).then(roles => {\n      this.inventoryRoles = roles;\n    });\n  }\n\n  ngOnChanges(changes) {\n    if (changes.searchFilter) {\n      this.searchTermSubject.next(this.searchFilter || '');\n    }\n    if (changes.user && !this.loadingAssetTree) {\n      this.loadingAssetTree = this.loadAssetTree();\n    }\n    if (changes.assignedRoles || changes.ownerAssignedRoles) {\n      this.loadingAssetTree.then(this.setInheritedRoles.bind(this));\n    }\n    if (changes.expandGroups && this.expandGroups) {\n      this.c8yUserInventoryRoles.expandAll(this.rootGroups, this.updateTree.bind(this));\n    }\n  }\n\n  setInheritedRoles() {\n    if (this.assignedRoles) {\n      this.inheritedRoles = this.getInventoryInheritedRoles(this.flatAssetTree, this.assignedRoles);\n    }\n    if (this.ownerAssignedRoles) {\n      const ownerInheritedRoles = this.getInventoryInheritedRoles(\n        this.flatAssetTree,\n        this.ownerAssignedRoles\n      );\n      this.ownerAllAssignedRoles = mergeWith(\n        ownerInheritedRoles,\n        this.ownerAssignedRoles,\n        (objValue, srcValue) => {\n          if (srcValue) {\n            if (objValue) {\n              return uniqBy(objValue.concat(srcValue.roles), 'id');\n            }\n            return srcValue.roles;\n          }\n          return objValue;\n        }\n      );\n    }\n  }\n\n  getInventoryInheritedRoles(flatTree, assignedRoles) {\n    return reduce(\n      flatTree,\n      (inheritedRoles, asset) => {\n        // eslint-disable-next-line no-underscore-dangle\n        let chain = asset._parentGroups;\n        chain = _map(chain, group => get(assignedRoles, group.id));\n        chain = filter(chain, identity);\n        chain = _map(chain, property('roles'));\n        chain = flatten(chain);\n        chain = uniqBy(chain, 'id');\n        inheritedRoles[asset.id] = chain;\n        return inheritedRoles;\n      },\n      {}\n    );\n  }\n\n  onApply(ev, managedObjectId) {\n    return this.onChangeRoles.emit({\n      managedObjectId: managedObjectId,\n      roles: ev.roles\n    });\n  }\n\n  filterAsset(asset) {\n    if (this.ownerAllAssignedRoles) {\n      return get(this.ownerAllAssignedRoles, [asset.id, 'length']);\n    }\n    return true;\n  }\n}\n","<div class=\"c8y-list__group m-b-0 no-border-last\">\n  <div\n    class=\"c8y-list__item\"\n    *ngFor=\"\n      let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n    \"\n  >\n    <div\n      class=\"c8y-list__item__block\"\n      [title]=\"\n        (asset._subGroups && asset.isOpened\n          ? asset._subGroups.length\n            ? asset._subGroups.length > 1\n              ? manySubgroupsTitle\n              : oneSubgroupTitle\n            : noSubgroupTitle\n          : clickToOpenTitle\n        ) | translate: { count: asset._subGroups?.length }\n      \"\n    >\n      <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n      <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n        <button\n          class=\"btn-clean\"\n          [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n          type=\"button\"\n          (click)=\"loadChildren(asset)\"\n        >\n          <i\n            class=\"c8y-icon-duocolor\"\n            c8yIcon=\"c8y-group\"\n            *ngIf=\"!asset.isOpened\"\n          ></i>\n          <i\n            class=\"c8y-icon-duocolor\"\n            c8yIcon=\"c8y-group-open\"\n            *ngIf=\"asset.isOpened\"\n          ></i>\n        </button>\n      </div>\n      <div class=\"c8y-list__item__body\">\n        <div class=\"d-flex a-i-center\">\n          <div class=\"col-sm-7 p-l-0 col-xs-12\">\n            <button\n              class=\"btn-clean\"\n              type=\"button\"\n              (click)=\"loadChildren(asset)\"\n            >\n              <span\n                class=\"text-truncate\"\n                [ngStyle]=\"{ cursor: 'pointer' }\"\n                title=\"{{ asset.name }}\"\n              >\n                {{ asset.name }}\n              </span>\n            </button>\n          </div>\n          <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n          <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n            <div class=\"d-flex\">\n              <div class=\"flex-grow form-group-sm max-width-100\">\n                <c8y-inventory-role-selector-upgraded\n                  [ownerAllowedRoles]=\"\n                    ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n                  \"\n                  [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n                  [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n                  [inventoryRoles]=\"inventoryRoles\"\n                  (onApply)=\"onApply($event, asset.id)\"\n                  (click)=\"$event.stopPropagation()\"\n                ></c8y-inventory-role-selector-upgraded>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <c8y-ui-empty-state\n    [icon]=\"'search'\"\n    [title]=\"'No matching group found among the expanded groups.' | translate\"\n    [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n    *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n    [horizontal]=\"false\"\n  ></c8y-ui-empty-state>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { InventoryRoleSelector } from './inventory-role-selector/inventory-role-selector.component';\nimport { RolesAssetTreeComponent } from './roles-asset-tree/roles-asset-tree.component';\n\n@NgModule({\n  declarations: [InventoryRoleSelector, RolesAssetTreeComponent],\n  imports: [CoreModule]\n})\nexport class UserRolesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_map","i4.InventoryRoleSelector"],"mappings":"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"}