blob: 4d8acdb63ebcce806a541462d2ff26a08e0e1f1c [file] [log] [blame]
!function(e){function t(t){for(var n,o,a=t[0],c=t[1],l=t[2],d=0,f=[];d<a.length;d++)o=a[d],Object.prototype.hasOwnProperty.call(r,o)&&r[o]&&f.push(r[o][0]),r[o]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(u&&u(t);f.length;)f.shift()();return s.push.apply(s,l||[]),i()}function i(){for(var e,t=0;t<s.length;t++){for(var i=s[t],n=!0,a=1;a<i.length;a++){var c=i[a];0!==r[c]&&(n=!1)}n&&(s.splice(t--,1),e=o(o.s=i[0]))}return e}var n={},r={0:0},s=[];function o(t){if(n[t])return n[t].exports;var i=n[t]={i:t,l:!1,exports:{}};return e[t].call(i.exports,i,i.exports,o),i.l=!0,i.exports}o.m=e,o.c=n,o.d=function(e,t,i){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(o.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(i,n,function(t){return e[t]}.bind(null,n));return i},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="";var a=window.webpackJsonp=window.webpackJsonp||[],c=a.push.bind(a);a.push=t,a=a.slice();for(var l=0;l<a.length;l++)t(a[l]);var u=c;s.push([646,2]),i()}({134:function(e,t,i){"use strict";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},s=this&&this.__param||function(e,t){return function(i,n){t(i,n,e)}};t.__esModule=!0,t.NfRegistryExplorerAbout=void 0;var o=i(0),a=i(16),c=function(){function e(e){this.data=e}return e=n([(0,o.Component)({selector:"nifi-registry-explorer-about-dialog",template:i(617)}),s(0,(0,o.Inject)(a.MAT_DIALOG_DATA)),r("design:paramtypes",[Object])],e)}();t.NfRegistryExplorerAbout=c},190:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div class="pad-top-sm pad-bottom-sm pad-right-xxl pad-left-xxl">\n <div layout="row" layout-align="space-between center">\n <div flex fxLayout="row" fxLayoutAlign="start center">\n <span class="push-top-sm pad-right-sm">Sort by:</span>\n <div fxLayout="row" fxLayoutAlign="end center" [matMenuTriggerFor]="dropletGridSortMenu">\n <div class="push-top-sm" id="droplet-sort-by-field">{{nfRegistryService.getSortByLabel()}}</div>\n <i class="push-top-sm fa fa-caret-down pad-left-sm" aria-hidden="true"></i>\n </div>\n <mat-menu #dropletGridSortMenu="matMenu" [overlapTrigger]="false">\n <div *ngFor="let column of nfRegistryService.dropletColumns">\n <button mat-menu-item *ngIf="column.sortable" (click)="nfRegistryService.sortDroplets(column);">\n {{nfRegistryService.generateSortMenuLabels(column)}}\n </button>\n </div>\n </mat-menu>\n </div>\n <div flex fxLayout="row" fxLayoutAlign="end center">\n <td-chips [(ngModel)]="nfRegistryService.dropletsSearchTerms"\n [items]="nfRegistryService.autoCompleteDroplets"\n (add)="nfRegistryService.filterDroplets(nfRegistryService.activeDropletColumn.name, nfRegistryService.activeDropletColumn.sortOrder);"\n (remove)="nfRegistryService.filterDroplets(nfRegistryService.activeDropletColumn.name, nfRegistryService.activeDropletColumn.sortOrder);"class="push-right-sm"></td-chips>\n </div>\n <button [disabled]="nfRegistryService.buckets.length === 0 || (nfRegistryService.filterWritableBuckets(nfRegistryService.buckets)).length === 0"\n (click)="nfRegistryService.openImportNewFlowDialog(nfRegistryService.buckets, nfRegistryService.bucket)"\n class="push-left-sm push-top-sm" data-automation-id="import-new-flow-button"\n color="fds-primary" mat-raised-button i18n="Import new flow button|A button for importing a new flow in the registry.">\n Import New Flow\n </button>\n </div>\n</div>\n<div id="import-new-flow-disabled-message" flex fxLayout="row" fxLayoutAlign="end center" class="pad-right-xxl pad-bottom-sm" *ngIf="(nfRegistryService.filterWritableBuckets(nfRegistryService.buckets)).length === 0 && nfRegistryService.buckets.length != 0">\n <span>You are not authorized to import flows.</span>\n</div>\n<div id="nifi-registry-explorer-grid-list-viewer-droplet-container" class="pad-right-xxl pad-left-xxl"\n *ngIf="nfRegistryService.filteredDroplets.length > 0">\n <div *ngFor="let droplet of nfRegistryService.filteredDroplets trackBy: trackByFn" [@flyInOut]>\n <td-expansion-panel class="mat-elevation-z5" label={{droplet.name}} sublabel={{droplet.type}}\n [disabled]="disabled" (expanded)="nfRegistryService.getDropletSnapshotMetadata(droplet)">\n <ng-template td-expansion-panel-label>\n <div fxLayout="column" fxLayoutAlign="space-between start">\n <span class="md-title">{{droplet.name}} - {{droplet.bucketName}}</span>\n <span class="md-subhead">{{droplet.type}}</span>\n </div>\n </ng-template>\n <ng-template td-expansion-panel-sublabel>\n <div fxLayout="row" fxLayoutAlign="space-between center">\n <div class="pad-right-xxl pad-left-xxl" fxLayout="column" fxLayoutAlign="space-between start">\n <span class="uppercase">Versions</span> {{droplet.versionCount}}\n </div>\n </div>\n </ng-template>\n <div id="nifi-registry-explorer-grid-list-viewer-droplet-container-details" class="mat-padding">\n <div fxLayout="column" fxLayoutAlign="space-between stretch">\n <div fxLayout="row" fxLayoutAlign="end center">\n <button color="fds-primary" [matMenuTriggerFor]="primaryButtonDropdownMenu" mat-raised-button>\n Actions<i class="fa fa-caret-down" aria-hidden="true"></i>\n </button>\n <mat-menu class="fds-primary-dropdown-button-menu" #primaryButtonDropdownMenu="matMenu"\n [overlapTrigger]="false">\n <button mat-menu-item *ngFor="let action of nfRegistryService.dropletActions"\n [disabled]="action.disabled(droplet)"\n (click)="nfRegistryService.executeDropletAction(action, droplet)">\n {{action.name}}\n </button>\n </mat-menu>\n </div>\n <div fxLayout="row">\n <div fxFlex="25" class="pad-left-sm">\n <div>\n <span class="uppercase">Bucket Identifier</span>\n <p class="ellipsis" matTooltip="{{droplet.bucketIdentifier}}" *ngIf="droplet.bucketIdentifier">{{droplet.bucketIdentifier}}</p>\n </div>\n <div class="pad-top-md">\n <span class="uppercase">{{droplet.type}} Identifier</span>\n <p class="ellipsis" matTooltip="{{droplet.identifier}} "*ngIf="droplet.identifier">{{droplet.identifier}}</p>\n </div>\n <div class="pad-top-md">\n <span class="uppercase">Description</span>\n <p class="nf-registry-droplet-description" matTooltip="{{droplet.description}}" *ngIf="droplet.description">{{droplet.description}}</p>\n <p *ngIf="!droplet.description">No description specified</p>\n </div>\n </div>\n <div fxFlex="75">\n <span class="uppercase">Change Log</span>\n <button class="nf-registry-change-log-refresh" (click)="nfRegistryService.getDropletSnapshotMetadata(droplet)" matTooltip="Refresh" mat-icon-button>\n <i class="fa fa-refresh info" aria-hidden="true"></i>\n </button>\n <div id="nifi-registry-explorer-grid-list-viewer-droplet-container-details-change-log">\n <td-steps mode="vertical">\n <td-step label="Version {{snapshotMeta.version}} - {{snapshotMeta.timestamp | amTimeAgo}}" sublabel="by {{snapshotMeta.author}}"\n *ngFor="let snapshotMeta of droplet.snapshotMetadata; let i = index"\n [active]="i === 0 ? true : false">\n <div fxLayout="column" fxLayoutAlign="space-between stretch">\n <div *ngIf="snapshotMeta.comments" fxLayout="row" class="mat-body-2">\n {{snapshotMeta.comments}}\n </div>\n <div *ngIf="!snapshotMeta.comments" fxLayout="row" class="mat-body-2">\n No comments specified\n </div>\n <div fxLayout="row" class="mat-caption">\n {{(snapshotMeta.timestamp/1000 | amFromUnix) | amDateFormat:\'MMM-DD-YYYY\'}} at {{(snapshotMeta.timestamp/1000 | amFromUnix) | amDateFormat:\'h:mm A\'}}\n </div>\n </div>\n </td-step>\n </td-steps>\n </div>\n </div>\n </div>\n </div>\n </div>\n </td-expansion-panel>\n <div class="pad-bottom-sm"></div>\n </div>\n</div>\n<div class="pad-right-xxl pad-left-xxl" *ngIf="nfRegistryService.filteredDroplets.length === 0 && nfRegistryService.buckets.length != 0 && !nfRegistryService.inProgress">\n <p class="text-center">No results match this query.</p>\n</div>\n<div class="pad-right-xxl pad-left-xxl" *ngIf="nfRegistryService.filteredDroplets.length === 0 && nfRegistryService.buckets.length === 0 && !nfRegistryService.inProgress">\n <p class="text-center">There are no buckets to display.</p>\n</div>\n<router-outlet></router-outlet>\n'},232:function(e,t){function i(e){return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}))}i.keys=function(){return[]},i.resolve=i,e.exports=i,i.id=232},611:function(e,t,i){var n={"./af":233,"./af.js":233,"./ar":234,"./ar-dz":235,"./ar-dz.js":235,"./ar-kw":236,"./ar-kw.js":236,"./ar-ly":237,"./ar-ly.js":237,"./ar-ma":238,"./ar-ma.js":238,"./ar-sa":239,"./ar-sa.js":239,"./ar-tn":240,"./ar-tn.js":240,"./ar.js":234,"./az":241,"./az.js":241,"./be":242,"./be.js":242,"./bg":243,"./bg.js":243,"./bm":244,"./bm.js":244,"./bn":245,"./bn-bd":246,"./bn-bd.js":246,"./bn.js":245,"./bo":247,"./bo.js":247,"./br":248,"./br.js":248,"./bs":249,"./bs.js":249,"./ca":250,"./ca.js":250,"./cs":251,"./cs.js":251,"./cv":252,"./cv.js":252,"./cy":253,"./cy.js":253,"./da":254,"./da.js":254,"./de":255,"./de-at":256,"./de-at.js":256,"./de-ch":257,"./de-ch.js":257,"./de.js":255,"./dv":258,"./dv.js":258,"./el":259,"./el.js":259,"./en-au":260,"./en-au.js":260,"./en-ca":261,"./en-ca.js":261,"./en-gb":262,"./en-gb.js":262,"./en-ie":263,"./en-ie.js":263,"./en-il":264,"./en-il.js":264,"./en-in":265,"./en-in.js":265,"./en-nz":266,"./en-nz.js":266,"./en-sg":267,"./en-sg.js":267,"./eo":268,"./eo.js":268,"./es":269,"./es-do":270,"./es-do.js":270,"./es-mx":271,"./es-mx.js":271,"./es-us":272,"./es-us.js":272,"./es.js":269,"./et":273,"./et.js":273,"./eu":274,"./eu.js":274,"./fa":275,"./fa.js":275,"./fi":276,"./fi.js":276,"./fil":277,"./fil.js":277,"./fo":278,"./fo.js":278,"./fr":279,"./fr-ca":280,"./fr-ca.js":280,"./fr-ch":281,"./fr-ch.js":281,"./fr.js":279,"./fy":282,"./fy.js":282,"./ga":283,"./ga.js":283,"./gd":284,"./gd.js":284,"./gl":285,"./gl.js":285,"./gom-deva":286,"./gom-deva.js":286,"./gom-latn":287,"./gom-latn.js":287,"./gu":288,"./gu.js":288,"./he":289,"./he.js":289,"./hi":290,"./hi.js":290,"./hr":291,"./hr.js":291,"./hu":292,"./hu.js":292,"./hy-am":293,"./hy-am.js":293,"./id":294,"./id.js":294,"./is":295,"./is.js":295,"./it":296,"./it-ch":297,"./it-ch.js":297,"./it.js":296,"./ja":298,"./ja.js":298,"./jv":299,"./jv.js":299,"./ka":300,"./ka.js":300,"./kk":301,"./kk.js":301,"./km":302,"./km.js":302,"./kn":303,"./kn.js":303,"./ko":304,"./ko.js":304,"./ku":305,"./ku.js":305,"./ky":306,"./ky.js":306,"./lb":307,"./lb.js":307,"./lo":308,"./lo.js":308,"./lt":309,"./lt.js":309,"./lv":310,"./lv.js":310,"./me":311,"./me.js":311,"./mi":312,"./mi.js":312,"./mk":313,"./mk.js":313,"./ml":314,"./ml.js":314,"./mn":315,"./mn.js":315,"./mr":316,"./mr.js":316,"./ms":317,"./ms-my":318,"./ms-my.js":318,"./ms.js":317,"./mt":319,"./mt.js":319,"./my":320,"./my.js":320,"./nb":321,"./nb.js":321,"./ne":322,"./ne.js":322,"./nl":323,"./nl-be":324,"./nl-be.js":324,"./nl.js":323,"./nn":325,"./nn.js":325,"./oc-lnc":326,"./oc-lnc.js":326,"./pa-in":327,"./pa-in.js":327,"./pl":328,"./pl.js":328,"./pt":329,"./pt-br":330,"./pt-br.js":330,"./pt.js":329,"./ro":331,"./ro.js":331,"./ru":332,"./ru.js":332,"./sd":333,"./sd.js":333,"./se":334,"./se.js":334,"./si":335,"./si.js":335,"./sk":336,"./sk.js":336,"./sl":337,"./sl.js":337,"./sq":338,"./sq.js":338,"./sr":339,"./sr-cyrl":340,"./sr-cyrl.js":340,"./sr.js":339,"./ss":341,"./ss.js":341,"./sv":342,"./sv.js":342,"./sw":343,"./sw.js":343,"./ta":344,"./ta.js":344,"./te":345,"./te.js":345,"./tet":346,"./tet.js":346,"./tg":347,"./tg.js":347,"./th":348,"./th.js":348,"./tk":349,"./tk.js":349,"./tl-ph":350,"./tl-ph.js":350,"./tlh":351,"./tlh.js":351,"./tr":352,"./tr.js":352,"./tzl":353,"./tzl.js":353,"./tzm":354,"./tzm-latn":355,"./tzm-latn.js":355,"./tzm.js":354,"./ug-cn":356,"./ug-cn.js":356,"./uk":357,"./uk.js":357,"./ur":358,"./ur.js":358,"./uz":359,"./uz-latn":360,"./uz-latn.js":360,"./uz.js":359,"./vi":361,"./vi.js":361,"./x-pseudo":362,"./x-pseudo.js":362,"./yo":363,"./yo.js":363,"./zh-cn":364,"./zh-cn.js":364,"./zh-hk":365,"./zh-hk.js":365,"./zh-mo":366,"./zh-mo.js":366,"./zh-tw":367,"./zh-tw.js":367};function r(e){var t=s(e);return i(t)}function s(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}r.keys=function(){return Object.keys(n)},r.resolve=s,e.exports=r,r.id=611},617:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<h2 mat-dialog-title>About Nifi Registry</h2>\n<div id="nf-registry-about-dialog" class="pad-sm mat-typography">\n <div id="nf-registry-about-pic-container">\n <div id="nf-registry-about-pic"></div>\n </div>\n <div id="nf-registry-about-version-info">\n <p>Registry Version: {{ data.registryAboutVersion }}</p>\n </div>\n <div id="nf-registry-about-description">\n <p>\n Registry — a subproject of Apache NiFi — is a complementary application that provides\n a central location for storage and management of shared resources across one or more\n instances of NiFi and/or MiNiFi.\n </p>\n </div>\n</div>\n<mat-dialog-actions align="end">\n <button mat-raised-button color="fds-primary" mat-dialog-close>Close</button>\n</mat-dialog-actions>\n'},618:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-export-versioned-flow-dialog">\n <div class="pad-bottom-md" fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title>\n Export Version\n </mat-card-title>\n <button mat-icon-button (click)="cancel()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div fxLayout="column" fxLayoutAlign="space-between start" class="pad-bottom-sm">\n <div class="pad-bottom-sm label-name">\n <label>Choose Version</label>\n </div>\n <div class="fill-available-width bucket-dropdown-field">\n <mat-form-field appearance="fill" fxFlex>\n <mat-select panelClass="bucket-dropdown-select" [(value)]="selectedVersion">\n <mat-option *ngFor="let snapshotMeta of droplet.snapshotMetadata" [value]="snapshotMeta.version">\n <span *ngIf="snapshotMeta === droplet.snapshotMetadata[0]">Latest (Version {{snapshotMeta.version}})</span>\n <span *ngIf="snapshotMeta != droplet.snapshotMetadata[0]">Version {{snapshotMeta.version}}</span>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n <div fxLayout="row">\n <span fxFlex></span>\n <button (click)="cancel()" color="fds-regular" mat-raised-button\n i18n="Cancel export of versioned flow selection|A button for cancelling the versioned flow selection to export in the registry.">\n Cancel\n </button>\n <button class="push-left-sm" data-automation-id="export-versioned-flow-button" (click)="exportVersion()"\n color="fds-primary" mat-raised-button i18n="Cancel export of versioned flow selection|A button for cancelling the versioned flow selection to export in the registry.">\n Export\n </button>\n </div>\n</div>\n'},619:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-import-versioned-flow-dialog"\n xmlns:width="http://www.w3.org/1999/xhtml">\n <div class="pad-bottom-md" fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title>\n Import New Version\n </mat-card-title>\n <button mat-icon-button (click)="cancel()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div id="flow-version-container">\n <div class="fill-available-width">\n <div class="pad-bottom-sm label-name">\n <label>Flow Name</label>\n </div>\n <div id="flow-version-name" fxLayout="row" fxLayoutAlign="space-between center" class="push-bottom-md">\n <div id="version-flow-name-input" class="fill-available-width">\n <input\n id="version-flow-name-input-field"\n class="pad-bottom-md fill-available-width"\n matInput\n [disabled]="true"\n type="text"\n value="{{droplet.name}}"/>\n </div>\n <div class="version-count">\n <span>v.{{droplet.snapshotMetadata.length + 1}}</span>\n </div>\n </div>\n </div>\n <div id="versioned-flow-file-upload-message-container" fxLayout="row" fxLayoutAlign="space-between center">\n <div class="pad-bottom-xs label-name">\n <label>Flow Definition</label>\n </div>\n <ng-container *ngIf="fileToUpload != null && !hoverValidity || hoverValidity === \'valid\'">\n <span class="file-upload-message">\n Looks good!\n <i class="fa fa-check-circle-o" aria-hidden="true"\n style="color: #1eb475;"></i>\n </span>\n </ng-container>\n <ng-container *ngIf="hoverValidity === \'invalid\'">\n <span class="file-upload-message">\n File format is not valid\n <i class="fa fa-times-circle" aria-hidden="true"\n style="color: #ef6162;"></i></span>\n </ng-container>\n </div>\n <div id="flow-version-definition"\n class="fill-available-width"\n fxLayout="row"\n fxLayoutAlign="space-between center"\n (click)="selectFile()"\n (dragenter)="fileDragHandler($event, extensions)"\n (dragover)="fileDragHandler($event, extensions)"\n (dragend)="fileDragEndHandler()"\n (dragleave)="fileDragEndHandler()"\n (drop)="fileDropHandler($event)">\n <mat-form-field floatLabel="never" flex>\n <input matInput\n id="flow-version-definition-input"\n type="text"\n [value]="fileName"\n placeholder="Drop file or select..."\n autocomplete="off"\n [ngClass]="{\'file-hover-valid\': (hoverValidity === \'valid\'),\n \'file-hover-error\': (hoverValidity === \'invalid\'),\n \'file-selected\': (fileToUpload != null), \'multiple\': multiple}"/>\n <div id="select-flow-version-file-button" title="Browse">\n <i class="fa fa-upload" aria-hidden="true"></i>\n <span>Select file</span>\n </div>\n <div id="versioned-flow-file-upload-form-container">\n <form id="versioned-flow-file-upload-form" enctype="multipart/form-data" method="post">\n <input id="upload-versioned-flow-file-field"\n type="file"\n name="file"\n [accept]="extensions"\n (change)="handleFileInput($event.target.files)"/>\n </form>\n </div>\n </mat-form-field>\n </div>\n <div class="pad-bottom-sm">\n <label class="pad-bottom-sm label-name">Version Comments</label>\n </div>\n <div id="flow-version-comments" fxLayout="row" class="fill-available-width">\n <textarea [(ngModel)]="comments"></textarea>\n </div>\n </div>\n</div>\n<div fxLayout="row">\n <span fxFlex></span>\n <button (click)="cancel()" color="fds-regular" mat-raised-button\n i18n="Cancel new flow version import|A button for cancelling the new flow version to import in the registry.">\n Cancel\n </button>\n <button [disabled]="!fileToUpload" class="push-left-sm" data-automation-id="import-new-versioned-flow-button"\n (click)="importNewVersion()"\n color="fds-primary" mat-raised-button\n i18n="Cancel new flow version import|A button for cancelling the new flow version to import in the registry.">\n Import\n </button>\n</div>\n'},620:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-import-new-flow-dialog"\n xmlns:width="http://www.w3.org/1999/xhtml">\n <div class="pad-bottom-md" fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title class="ellipsis">\n Import New Flow\n </mat-card-title>\n <button mat-icon-button (click)="cancel()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div id="new-flow-container">\n <div class="fill-available-width">\n <div class="pad-bottom-sm label-name">\n <label>Flow Name</label>\n </div>\n <div id="flow-name" fxLayout="row" fxLayoutAlign="space-between center" class="push-bottom-md">\n <div id="new-flow-name-input" class="fill-available-width">\n <input\n #flowName\n id="new-flow-name-input-field"\n class="pad-bottom-md fill-available-width"\n matInput\n type="text"\n placeholder="Create a unique name"\n [(ngModel)]="name"/>\n </div>\n <div class="version-count">\n <span>v.1</span>\n </div>\n </div>\n </div>\n <div class="pad-bottom-sm label-name">\n <label class="pad-bottom-sm">Flow Description</label>\n </div>\n <div id="new-flow-description" fxLayout="row" class="pad-bottom-xs fill-available-width">\n <textarea class="push-bottom-md" [(ngModel)]="description"></textarea>\n </div>\n <div class="pad-bottom-sm label-name">\n <label>Bucket</label>\n </div>\n <div class="fill-available-width bucket-dropdown-field pad-bottom-xs">\n <mat-form-field appearance="fill" floatLabel="always" fxFlex>\n <mat-select #bucketSelect panelClass="bucket-dropdown-select" placeholder="Choose a location" [(value)]="activeBucket">\n <mat-option *ngFor="let bucket of writableBuckets" [value]="bucket.identifier">\n {{bucket.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div id="new-flow-file-upload-message-container" fxLayout="row" fxLayoutAlign="space-between center">\n <div class="label-name">\n <label>Flow Definition</label>\n </div>\n <ng-container *ngIf="fileToUpload != null && !hoverValidity || hoverValidity === \'valid\'">\n <span class="file-upload-message">\n Looks good!\n <i class="fa fa-check-circle-o" aria-hidden="true"\n style="color: #1eb475;"></i>\n </span>\n </ng-container>\n <ng-container *ngIf="hoverValidity === \'invalid\'">\n <span class="file-upload-message">\n File format is not valid\n <i class="fa fa-times-circle" aria-hidden="true"\n style="color: #ef6162;"></i></span>\n </ng-container>\n </div>\n <div id="new-flow-definition"\n class="fill-available-width pad-bottom-sm"\n fxLayout="row"\n fxLayoutAlign="space-between center"\n (click)="selectFile()"\n (dragenter)="fileDragHandler($event, extensions)"\n (dragover)="fileDragHandler($event, extensions)"\n (dragend)="fileDragEndHandler()"\n (dragleave)="fileDragEndHandler()"\n (drop)="fileDropHandler($event)">\n <mat-form-field floatLabel="never" flex>\n <input matInput\n id="new-flow-definition-input"\n class="ellipsis"\n type="text"\n autocomplete="off"\n placeholder="Drop file or select..."\n [value]="fileName"\n [ngClass]="{\'file-hover-valid\': (hoverValidity === \'valid\'),\n \'file-hover-error\': (hoverValidity === \'invalid\'),\n \'file-selected\': (fileToUpload != null), \'multiple\': multiple}"/>\n <div class="icon" id="select-flow-file-button">\n <i class="fa fa-upload" aria-hidden="true"></i>\n <span>Select file</span>\n </div>\n <div id="new-flow-file-upload-form-container">\n <form id="new-flow-file-upload-form" enctype="multipart/form-data" method="post">\n <input id="upload-flow-file-field"\n type="file"\n name="file"\n [accept]="extensions"\n (change)="handleFileInput($event.target.files)"/>\n </form>\n </div>\n </mat-form-field>\n </div>\n </div>\n</div>\n<div fxLayout="row">\n <span fxFlex></span>\n <button (click)="cancel()" color="fds-regular" mat-raised-button\n i18n="Cancel new flow definition import|A button for cancelling the new flow definition to import in the registry.">\n Cancel\n </button>\n <button [disabled]="!fileToUpload || !flowName.value || !bucketSelect.value" class="push-left-sm" data-automation-id="import-new-flow-button"\n (click)="importNewFlow()"\n color="fds-primary" mat-raised-button\n i18n="Cancel new flow definition import|A button for cancelling the new flow definition to import in the registry.">\n Import\n </button>\n</div>\n'},621:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-not-found-perspective"></div>\n<router-outlet></router-outlet>\n'},622:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-user-login-dialog">\n <div class="pad-bottom-md" fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title class="ellipsis">\n Log In\n </mat-card-title>\n <button mat-icon-button (click)="cancel()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div fxLayout="column" fxLayoutAlign="space-between start" class="pad-bottom-md">\n <div class="fill-available-width">\n <mat-form-field floatLabel="always" fxFlex>\n <input #usernameInput matInput floatPlaceholder="always" placeholder="Username" (keyup.enter)="login(usernameInput, passwordInput)">\n </mat-form-field>\n </div>\n <div class="fill-available-width">\n <mat-form-field floatLabel="always" fxFlex>\n <input #passwordInput type="password" matInput floatPlaceholder="always" placeholder="Password" autocomplete="off" (keyup.enter)="login(usernameInput, passwordInput)">\n </mat-form-field>\n </div>\n </div>\n <div fxLayout="row">\n <span fxFlex></span>\n <button (click)="cancel()" color="fds-regular" mat-raised-button\n i18n="Cancel log in|A button for cancelling the login form.@@nf-cancel-user-login-button">\n Cancel\n </button>\n <button [disabled]="usernameInput.value.length === 0 || passwordInput.value.length === 0" class="push-left-sm" (click)="login(usernameInput, passwordInput)" color="fds-primary" mat-raised-button\n i18n="Log in|A button for attempting to authenticate with the registry.@@nf-user-login-button">\n Log In\n </button>\n </div>\n</div>\n'},623:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-login-perspective"></div>\n<router-outlet></router-outlet>\n'},624:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<router-outlet></router-outlet>\n'},625:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-administration-perspective">\n <mat-button-toggle-group name="nifi-registry-administration-perspective" fxLayout="row"\n fxLayoutAlign="space-between center" class="tab-toggle-group">\n <mat-button-toggle\n [disabled]="!nfRegistryService.currentUser.resourcePermissions.buckets.canRead"\n [matTooltip]="\'Manage NiFi Registry buckets.\'"\n [checked]="nfRegistryService.adminPerspective === \'workflow\'" value="workflow"\n class="uppercase"\n (change)="navigateToAdminPerspective($event)"\n i18n="Workflow administration tab|A description of the type of administration options available.@@nf-admin-workflow-tab-title">\n Buckets\n </mat-button-toggle>\n <mat-button-toggle\n [disabled]="nfRegistryService.currentUser.anonymous || !nfRegistryService.currentUser.resourcePermissions.tenants.canRead"\n [matTooltip]="getUserTooltip()"\n [checked]="nfRegistryService.adminPerspective === \'users\'" value="users" class="uppercase"\n (change)="navigateToAdminPerspective($event)"\n i18n="Users administration tab|A description of the type of administration options available.@@nf-admin-users-tab-title">\n Users\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n<router-outlet></router-outlet>\n'},626:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-admin-create-new-group-dialog">\n <div class="pad-bottom-md" fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title class="ellipsis">\n Create New Group\n </mat-card-title>\n <button mat-icon-button (click)="cancel()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div fxLayout="column" fxLayoutAlign="space-between start" class="pad-bottom-md">\n <div class="fill-available-width">\n <mat-form-field floatLabel="always" fxFlex>\n <input #createNewGroupInput matInput floatPlaceholder="always" placeholder="Display Name">\n </mat-form-field>\n </div>\n <mat-checkbox [(ngModel)]="keepDialogOpen">\n Keep this dialog open after creating group\n </mat-checkbox>\n </div>\n <div fxLayout="row">\n <span fxFlex></span>\n <button (click)="cancel()" color="fds-regular" mat-raised-button\n i18n="Cancel creation of new group|A button for cancelling the creation of a new group in the registry.@@nf-admin-workflow-cancel-create-new-group-button">\n Cancel\n </button>\n <button [disabled]="createNewGroupInput.value.length === 0" class="push-left-sm" (click)="createNewGroup(createNewGroupInput)" color="fds-primary" mat-raised-button\n i18n="Create new group button|A button for creating a new group in the registry.@@nf-admin-workflow-create-new-group-button">\n Create\n </button>\n </div>\n</div>\n'},627:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-admin-add-user-dialog">\n <div class="pad-bottom-md" fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title class="ellipsis">\n Add User\n </mat-card-title>\n <button mat-icon-button (click)="cancel()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div fxLayout="column" fxLayoutAlign="space-between start" class="pad-bottom-md">\n <div class="fill-available-width">\n <mat-form-field floatLabel="always" fxFlex>\n <input #newUserInput matInput floatPlaceholder="always" placeholder="Identity/Username">\n </mat-form-field>\n </div>\n <mat-checkbox [(ngModel)]="keepDialogOpen">\n Keep this dialog open after adding user\n </mat-checkbox>\n </div>\n <div fxLayout="row">\n <span fxFlex></span>\n <button (click)="cancel()" color="fds-regular" mat-raised-button\n i18n="Cancel creation of new user|A button for cancelling the creation of a new user in the registry.@@nf-admin-workflow-create-bucket-button">\n Cancel\n </button>\n <button [disabled]="newUserInput.value.length === 0" class="push-left-sm" data-automation-id="add-new-user-button" (click)="addUser(newUserInput)" color="fds-primary" mat-raised-button\n i18n="Add new user button|A button for adding a new user in the registry.@@nf-admin-workflow-add-user-button">\n Add\n </button>\n </div>\n</div>\n'},628:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-users-administration-perspective" class="mat-elevation-z5">\n <div fxFlex class="pad-top-md pad-bottom-sm pad-left-md pad-right-md">\n <mat-card-title class="ellipsis">\n Authorized Users ({{nfRegistryService.users.length + nfRegistryService.groups.length}})\n </mat-card-title>\n <div flex class="push-right-sm" fxLayout="row" fxLayoutAlign="end center">\n <td-chips class="push-right-sm"\n [items]="nfRegistryService.autoCompleteUsersAndGroups"\n (add)="nfRegistryService.usersSearchAdd($event)"\n (remove)="nfRegistryService.usersSearchRemove($event)"></td-chips>\n <div matTooltip="{{(!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite) ? \'You do not have permission. Please contact your system administrator.\': \'\'}}">\n <button data-automation-id="add-user-button" class="push-top-sm push-right-sm" color="fds-secondary" mat-raised-button (click)="addUser()" [disabled]="!canEditUsers()">\n Add User\n </button>\n </div>\n <button class="push-top-sm" color="fds-primary"\n mat-raised-button [matMenuTriggerFor]="userActionMenu">\n Actions<i class="fa fa-caret-down" aria-hidden="true"></i>\n </button>\n </div>\n <mat-menu class="fds-primary-dropdown-button-menu" #userActionMenu="matMenu" [overlapTrigger]="false">\n <div matTooltip="{{nfRegistryService.disableMultiDeleteAction ? \'Please deselect any non-configurable users or groups to enable multi-delete.\': \'\'}}">\n <button mat-menu-item\n [disabled]="((nfRegistryService.getSelectedGroups().length === 0) && (nfRegistryService.getSelectedUsers().length === 0)) || nfRegistryService.disableMultiDeleteAction || !canEditUsers()"\n (click)="nfRegistryService.deleteSelectedUsersAndGroups()">\n <span>Delete</span>\n </button>\n </div>\n <div matTooltip="{{(nfRegistryService.getSelectedGroups().length > 0) ? \'Only users can be added when creating a new group. Please deselect any groups to enable.\': (!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite) ? \'You do not have permission. Please contact your system administrator.\': \'\'}}">\n <button mat-menu-item [disabled]="(nfRegistryService.getSelectedGroups().length > 0) || !canEditUsers()"\n (click)="createNewGroup()">\n <span>Create new group</span>\n </button>\n </div>\n </mat-menu>\n <div id="nifi-registry-users-administration-list-container-column-header" fxLayout="row"\n fxLayoutAlign="space-between center" class="td-data-table">\n <div class="td-data-table-column" (click)="nfRegistryService.sortUsersAndGroups(column)"\n *ngFor="let column of nfRegistryService.userColumns"\n fxFlex="{{column.width}}">\n {{column.label}}\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'ASC\'" class="fa fa-caret-up"\n aria-hidden="true"></i>\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'DESC\'" class="fa fa-caret-down"\n aria-hidden="true"></i>\n </div>\n <div class="td-data-table-column">\n <div fxLayout="row" fxLayoutAlign="end center">\n <mat-checkbox class="pad-left-sm" [(ngModel)]="nfRegistryService.allUsersAndGroupsSelected"\n (checked)="nfRegistryService.allUsersAndGroupsSelected"\n (change)="nfRegistryService.toggleUsersSelectAll()"></mat-checkbox>\n </div>\n </div>\n </div>\n <div id="nifi-registry-users-administration-list-container">\n <div\n *ngFor="let row of nfRegistryService.filteredUserGroups"\n (click)="row.checked = !row.checked;nfRegistryService.determineAllUsersAndGroupsSelectedState(row)">\n <div [ngClass]="{\'nonconfigurable\' : row.configurable === false, \'selected-nonconfigurable\' : (row.checked === true && row.configurable === false), \'selected\' : row.checked === true}" *ngFor="let column of nfRegistryService.userColumns" fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row">\n <div class="td-data-table-cell" fxFlex="{{column.width}}">\n <div class="ellipsis" matTooltip="{{column.format ? column.format(row[column.name]) : row[column.name]}}">\n <i class="fa fa-users push-right-sm" aria-hidden="true"></i>{{column.format ? column.format(row[column.name]) : row[column.name]}}\n </div>\n </div>\n <div class="td-data-table-cell">\n <div>\n <div *ngIf="nfRegistryService.userGroupsActions.length <= 4" fxLayout="row" fxLayoutAlign="end center">\n <button (click)="row.checked = !row.checked;nfRegistryService.executeGroupAction(action, row)"\n *ngFor="let action of nfRegistryService.userGroupsActions"\n matTooltip="{{action.tooltip}}" mat-icon-button color="accent"\n [disabled]="action.disabled(row)">\n <i class="{{action.icon}}" aria-hidden="true"></i>\n </button>\n <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked"\n (change)="nfRegistryService.determineAllUsersAndGroupsSelectedState(row)"\n (click)="row.checked = !row.checked;nfRegistryService.determineAllUsersAndGroupsSelectedState(row)"></mat-checkbox>\n </div>\n <div *ngIf="nfRegistryService.userGroupsActions.length > 4" fxLayout="row" fxLayoutAlign="end center">\n <button (click)="row.checked = !row.checked" matTooltip="Actions" mat-icon-button\n [matMenuTriggerFor]="userTableActionMenu">\n <i class="fa fa-ellipsis-h" aria-hidden="true"></i>\n </button>\n <mat-menu #userTableActionMenu="matMenu" [overlapTrigger]="false">\n <button (click)="nfRegistryService.executeGroupAction(action, row)"\n *ngFor="let action of nfRegistryService.userGroupsActions"\n matTooltip="{{action.tooltip}}" mat-menu-item\n [disabled]="action.disabled(row)">\n (click)="nfRegistryService.sidenav.toggle()">\n <i class="{{action.icon}}" aria-hidden="true"></i>\n <span>{{action.name}}</span>\n </button>\n </mat-menu>\n <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked"\n (change)="nfRegistryService.determineAllUsersAndGroupsSelectedState(row)"\n (click)="row.checked = !row.checked;nfRegistryService.determineAllUsersAndGroupsSelectedState(row)"></mat-checkbox>\n </div>\n </div>\n <div *ngIf="!nfRegistryService.userGroupsActions" fxLayout="row" fxLayoutAlign="end center">\n <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked"\n (change)="nfRegistryService.determineAllUsersAndGroupsSelectedState(row)"\n (click)="row.checked = !row.checked;nfRegistryService.determineAllUsersAndGroupsSelectedState(row)"></mat-checkbox>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngFor="let row of nfRegistryService.filteredUsers"\n (click)="row.checked = !row.checked;nfRegistryService.determineAllUsersAndGroupsSelectedState(row)">\n <div [ngClass]="{\'nonconfigurable\' : row.configurable === false, \'selected-nonconfigurable\' : (row.checked === true && row.configurable === false), \'selected\' : row.checked === true}" *ngFor="let column of nfRegistryService.userColumns" fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row">\n <div class="td-data-table-cell" fxFlex="{{column.width}}">\n <div class="ellipsis" matTooltip="{{column.format ? column.format(row[column.name]) : row[column.name]}}">\n {{column.format ? column.format(row[column.name]) : row[column.name]}}\n </div>\n </div>\n <div class="td-data-table-cell">\n <div>\n <div *ngIf="nfRegistryService.usersActions.length <= 4" fxLayout="row" fxLayoutAlign="end center">\n <button (click)="row.checked = !row.checked;nfRegistryService.executeUserAction(action, row)"\n *ngFor="let action of nfRegistryService.usersActions"\n matTooltip="{{action.tooltip}}" mat-icon-button color="accent"\n [disabled]="action.disabled(row)">\n <i class="{{action.icon}}" aria-hidden="true"></i>\n </button>\n <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked"\n (change)="nfRegistryService.determineAllUsersAndGroupsSelectedState(row)"\n (click)="row.checked = !row.checked;nfRegistryService.determineAllUsersAndGroupsSelectedState(row)"></mat-checkbox>\n </div>\n <div *ngIf="nfRegistryService.usersActions.length > 4" fxLayout="row" fxLayoutAlign="end center">\n <button (click)="row.checked = !row.checked" matTooltip="Actions" mat-icon-button\n [matMenuTriggerFor]="userTableActionMenu">\n <i class="fa fa-ellipsis-h" aria-hidden="true"></i>\n </button>\n <mat-menu #userTableActionMenu="matMenu" [overlapTrigger]="false">\n <button (click)="nfRegistryService.executeUserAction(action, row)"\n *ngFor="let action of nfRegistryService.usersActions"\n matTooltip="{{action.tooltip}}" mat-menu-item\n [disabled]="action.disabled(row)">\n (click)="nfRegistryService.sidenav.toggle()">\n <i class="{{action.icon}}" aria-hidden="true"></i>\n <span>{{action.name}}</span>\n </button>\n </mat-menu>\n <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked"\n (change)="nfRegistryService.determineAllUsersAndGroupsSelectedState(row)"\n (click)="row.checked = !row.checked;nfRegistryService.determineAllUsersAndGroupsSelectedState(row)"></mat-checkbox>\n </div>\n </div>\n <div *ngIf="!nfRegistryService.usersActions" fxLayout="row" fxLayoutAlign="end center">\n <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked"\n (change)="nfRegistryService.determineAllUsersAndGroupsSelectedState(row)"\n (click)="row.checked = !row.checked;nfRegistryService.determineAllUsersAndGroupsSelectedState(row)"></mat-checkbox>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="mat-padding" *ngIf="nfRegistryService.filteredUsers.length === 0 && nfRegistryService.filteredUserGroups.length === 0" layout="row"\n layout-align="center center">\n <h3>No results to display.</h3>\n </div>\n </div>\n</div>\n<router-outlet></router-outlet>\n'},629:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-admin-add-selected-users-to-group-dialog">\n <div class="pad-bottom-md" fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title class="ellipsis">\n Add user to groups\n </mat-card-title>\n <button mat-icon-button (click)="cancel()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div *ngIf="filteredUserGroups.length > 0" class="pad-bottom-md">\n <div id="nifi-registry-users-administration-list-container-column-header" class="td-data-table">\n <div class="td-data-table-column" (click)="sortUserGroups(column)"\n *ngFor="let column of userGroupsColumns"\n fxFlex="{{column.width}}">\n {{column.label}}\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'ASC\'" class="fa fa-caret-up"\n aria-hidden="true"></i>\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'DESC\'" class="fa fa-caret-down"\n aria-hidden="true"></i>\n </div>\n <div class="td-data-table-column">\n <mat-checkbox [(ngModel)]="allGroupsSelected"\n (checked)="allGroupsSelected"\n (change)="toggleUserGroupsSelectAll()"></mat-checkbox>\n </div>\n </div>\n <div id="nifi-registry-add-selected-users-to-group-list-container">\n <div fxLayout="row" fxLayoutAlign="space-between center"\n class="td-data-table-row"\n [ngClass]="{\'selected\' : group.checked}"\n *ngFor="let group of filteredUserGroups"\n (click)="group.checked = !group.checked;determineAllUserGroupsSelectedState();">\n <div class="td-data-table-cell" *ngFor="let column of userGroupsColumns"\n fxFlex="{{column.width}}">\n <div class="ellipsis" matTooltip="{{column.format ? column.format(group[column.name]) : group[column.name]}}">\n <i class="fa fa-users push-right-sm" aria-hidden="true"></i>{{column.format ?\n column.format(group[column.name]) : group[column.name]}}\n </div>\n </div>\n <div class="td-data-table-cell">\n <mat-checkbox [(ngModel)]="group.checked"\n [checked]="group.checked"\n (change)="determineAllUserGroupsSelectedState()"\n (click)="group.checked = !group.checked;determineAllUserGroupsSelectedState()">\n </mat-checkbox>\n </div>\n </div>\n </div>\n </div>\n <div class="mat-padding push-bottom-md" *ngIf="filteredUserGroups.length === 0" layout="row"\n layout-align="center center">\n <h3>User belongs to all groups.</h3>\n </div>\n <div fxLayout="row">\n <span fxFlex></span>\n <button (click)="cancel()" color="fds-regular" mat-raised-button\n i18n="Cancel addition of selected users to group|A button for cancelling the addition of selected users to a group in the registry.@@nf-admin-workflow-cancel-add-selected-users-to-group-button">\n Cancel\n </button>\n <button [disabled]="isAddToSelectedGroupsDisabled" class="push-left-sm" (click)="addToSelectedGroups()"\n color="fds-primary" mat-raised-button\n i18n="Add selected users to group button|A button for adding users to an existing group in the registry.@@nf-admin-workflow-add-selected-users-to-group-button">\n Add\n </button>\n </div>\n</div>\n'},630:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div fxFill>\n <div fxLayout="row" fxLayoutAlign="space-between center" class="pad-top-sm pad-bottom-md pad-left-md pad-right-md">\n <span class="md-card-title ellipsis">{{nfRegistryService.user.identity}}</span>\n <button mat-icon-button data-automation-id="nf-registry-manage-user-close-side-nav" (click)="closeSideNav()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div class="sidenav-content">\n <div class="pad-left-md pad-right-md" flex fxLayoutAlign="start center">\n <mat-form-field floatLabel="always" flex>\n <input #usernameInput\n matInput\n [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || (nfRegistryService.currentUser.identity === nfRegistryService.user.identity) || !nfRegistryService.user.configurable"\n placeholder="Identity/User Name"\n value="{{nfRegistryService.user.identity}}"\n [(ngModel)]="username">\n </mat-form-field>\n <button [disabled]="nfRegistryService.user.identity === username || (nfRegistryService.currentUser.identity === nfRegistryService.user.identity) || !nfRegistryService.user.configurable"\n (click)="updateUserName(usernameInput.value)"\n data-automation-id="nf-registry-manage-user-save-side-nav"\n class="input-button"\n color="fds-regular"\n mat-raised-button>\n Save\n </button>\n </div>\n <div class="pad-bottom-md pad-left-md pad-right-md" flex fxLayout="column" fxLayoutAlign="space-between start">\n <div>\n <span class="header">Special Privileges\n <i matTooltip="Additional permissions that allow a user to manage or access certain aspects of the registry."\n class="pad-left-sm fa fa-question-circle-o help-icon"></i>\n </span>\n </div>\n <mat-checkbox\n [disabled]="!canEditSpecialPrivileges()"\n [checked]="nfRegistryService.user.resourcePermissions.buckets.canRead && nfRegistryService.user.resourcePermissions.buckets.canWrite && nfRegistryService.user.resourcePermissions.buckets.canDelete"\n (change)="toggleUserManageBucketsPrivileges($event)">\n <span class="description">Can manage buckets<i\n matTooltip="Allow a user to manage all buckets in the registry, as well as provide the user access to all buckets from a connected system (e.g., NiFi)."\n class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>\n </mat-checkbox>\n <div flex fxLayout="row" fxLayoutAlign="space-around center">\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.user.resourcePermissions.buckets.canRead"\n (change)="toggleUserManageBucketsPrivileges($event, \'read\')">\n <span class="description">Read</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.user.resourcePermissions.buckets.canWrite"\n (change)="toggleUserManageBucketsPrivileges($event, \'write\')">\n <span class="description">Write</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.user.resourcePermissions.buckets.canDelete"\n (change)="toggleUserManageBucketsPrivileges($event, \'delete\')">\n <span class="description">Delete</span>\n </mat-checkbox>\n </div>\n <mat-checkbox\n [disabled]="!canEditSpecialPrivileges()"\n [checked]="nfRegistryService.user.resourcePermissions.tenants.canRead && nfRegistryService.user.resourcePermissions.tenants.canWrite && nfRegistryService.user.resourcePermissions.tenants.canDelete"\n (change)="toggleUserManageTenantsPrivileges($event)">\n <span class="description">Can manage users<i\n matTooltip="Allow a user to manage all registry users and groups."\n class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>\n </mat-checkbox>\n <div flex fxLayout="row" fxLayoutAlign="space-around center">\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.user.resourcePermissions.tenants.canRead"\n (change)="toggleUserManageTenantsPrivileges($event, \'read\')">\n <span class="description">Read</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.user.resourcePermissions.tenants.canWrite"\n (change)="toggleUserManageTenantsPrivileges($event, \'write\')">\n <span class="description">Write</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.user.resourcePermissions.tenants.canDelete"\n (change)="toggleUserManageTenantsPrivileges($event, \'delete\')">\n <span class="description">Delete</span>\n </mat-checkbox>\n </div>\n <mat-checkbox\n [disabled]="!canEditSpecialPrivileges()"\n [checked]="nfRegistryService.user.resourcePermissions.policies.canRead && nfRegistryService.user.resourcePermissions.policies.canWrite && nfRegistryService.user.resourcePermissions.policies.canDelete"\n (change)="toggleUserManagePoliciesPrivileges($event)">\n <span class="description">Can manage policies<i\n matTooltip="Allow a user to grant all registry users read, write, and delete permission to a bucket."\n class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>\n </mat-checkbox>\n <div flex fxLayout="row" fxLayoutAlign="space-around center">\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.user.resourcePermissions.policies.canRead"\n (change)="toggleUserManagePoliciesPrivileges($event, \'read\')">\n <span class="description">Read</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.user.resourcePermissions.policies.canWrite"\n (change)="toggleUserManagePoliciesPrivileges($event, \'write\')">\n <span class="description">Write</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.user.resourcePermissions.policies.canDelete"\n (change)="toggleUserManagePoliciesPrivileges($event, \'delete\')">\n <span class="description">Delete</span>\n </mat-checkbox>\n </div>\n <mat-checkbox\n [disabled]="!canEditSpecialPrivileges()"\n [checked]="nfRegistryService.user.resourcePermissions.proxy.canRead && nfRegistryService.user.resourcePermissions.proxy.canWrite && nfRegistryService.user.resourcePermissions.proxy.canDelete"\n (change)="toggleUserManageProxyPrivileges($event)">\n <span class="description">Can proxy user requests<i\n matTooltip="Allow a connected system (e.g., NiFi) to process requests of authorized users of that system."\n class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>\n </mat-checkbox>\n <div flex fxLayout="row" fxLayoutAlign="space-around center">\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.user.resourcePermissions.proxy.canRead"\n (change)="toggleUserManageProxyPrivileges($event, \'read\')">\n <span class="description">Read</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.user.resourcePermissions.proxy.canWrite"\n (change)="toggleUserManageProxyPrivileges($event, \'write\')">\n <span class="description">Write</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.user.resourcePermissions.proxy.canDelete"\n (change)="toggleUserManageProxyPrivileges($event, \'delete\')">\n <span class="description">Delete</span>\n </mat-checkbox>\n </div>\n </div>\n <mat-button-toggle-group name="nifi-registry-manage-user-perspective" class="pad-left-md tab-toggle-group">\n <mat-button-toggle [checked]="manageUserPerspective === \'membership\'"\n value="membership"\n class="uppercase"\n (change)="manageUserPerspective = \'membership\'"\n i18n="Group membership tab, user management sidenav|View the groups to which this user belongs.@@nf-admin-user-management-sidenav-membership-tab-title">\n Membership\n </mat-button-toggle>\n </mat-button-toggle-group>\n <div *ngIf="manageUserPerspective === \'membership\'">\n <div *ngIf="nfRegistryService.user.userGroups" class="pad-top-md pad-bottom-sm pad-left-md pad-right-md">\n <div flex fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title class="ellipsis">\n Membership ({{nfRegistryService.user.userGroups.length}})\n </mat-card-title>\n <button color="fds-secondary"\n [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || canAddNonConfigurableUserToGroup()"\n mat-raised-button\n (click)="addUserToGroups()">\n Add To Group\n </button>\n </div>\n <div id="nifi-registry-user-membership-list-container-column-header" fxLayout="row"\n fxLayoutAlign="space-between center" class="td-data-table">\n <div class="td-data-table-column" (click)="sortGroups(column)"\n *ngFor="let column of userGroupsColumns"\n fxFlex="{{column.width}}">\n {{column.label}}\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'ASC\'" class="fa fa-caret-up"\n aria-hidden="true"></i>\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'DESC\'"\n class="fa fa-caret-down"\n aria-hidden="true"></i>\n </div>\n </div>\n <div id="nifi-registry-user-membership-list-container">\n <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row"\n [ngClass]="{\'selected\' : row.checked}" *ngFor="let row of filteredUserGroups"\n (click)="row.checked = !row.checked">\n <div class="td-data-table-cell" *ngFor="let column of userGroupsColumns"\n fxFlex="{{column.width}}">\n <div class="ellipsis"\n matTooltip="{{column.format ? column.format(row[column.name]) : row[column.name]}}">\n <i class="fa fa-users push-right-sm" aria-hidden="true"></i>{{column.format ?\n column.format(row[column.name]) : row[column.name]}}\n </div>\n </div>\n <div class="td-data-table-cell">\n <div>\n <button (click)="removeUserFromGroup(row);row.checked = !row.checked;"\n [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || row.configurable === false"\n matTooltip="\'Remove user from group\'" mat-icon-button color="accent">\n <i class="fa fa-trash" aria-hidden="true"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class="mat-padding" *ngIf="nfRegistryService.user.userGroups.length === 0" layout="row"\n layout-align="center center">\n <h3>This user does not belong to any groups yet.</h3>\n </div>\n </div>\n </div>\n </div>\n <button id="nf-registry-user-permissions-side-nav-container" class="push-right-md" mat-raised-button\n color="fds-primary"\n (click)="closeSideNav()">Close\n </button>\n</div>\n'},631:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-admin-add-selected-users-to-group-dialog">\n <div class="pad-bottom-md" fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title class="ellipsis">\n Add users to group\n </mat-card-title>\n <button mat-icon-button (click)="cancel()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div *ngIf="filteredUsers.length > 0" class="pad-bottom-md">\n <div id="nifi-registry-users-administration-list-container-column-header" class="td-data-table">\n <div class="td-data-table-column" (click)="sortUsers(column)"\n *ngFor="let column of usersColumns"\n fxFlex="{{column.width}}">\n {{column.label}}\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'ASC\'" class="fa fa-caret-up"\n aria-hidden="true"></i>\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'DESC\'" class="fa fa-caret-down"\n aria-hidden="true"></i>\n </div>\n <div class="td-data-table-column">\n <mat-checkbox [(ngModel)]="allUsersSelected"\n (checked)="allUsersSelected"\n (change)="toggleUsersSelectAll()"></mat-checkbox>\n </div>\n </div>\n <div id="nifi-registry-add-selected-users-to-group-list-container">\n <div fxLayout="row" fxLayoutAlign="space-between center"\n class="td-data-table-row"\n [ngClass]="{\'selected\' : user.checked}"\n *ngFor="let user of filteredUsers"\n (click)="user.checked = !user.checked;determineAllUsersSelectedState();">\n <div class="td-data-table-cell" *ngFor="let column of usersColumns"\n fxFlex="{{column.width}}">\n <div class="ellipsis" matTooltip="{{column.format ? column.format(user[column.name]) : user[column.name]}}">\n {{column.format ? column.format(user[column.name]) : user[column.name]}}\n </div>\n </div>\n <div class="td-data-table-cell">\n <mat-checkbox [(ngModel)]="user.checked"\n [checked]="user.checked"\n (change)="determineAllUsersSelectedState()"\n (click)="user.checked = !user.checked;determineAllUsersSelectedState()">\n </mat-checkbox>\n </div>\n </div>\n </div>\n </div>\n <div class="mat-padding push-bottom-md" *ngIf="filteredUsers.length === 0" layout="row"\n layout-align="center center">\n <h3>All users belong to this group.</h3>\n </div>\n <div fxLayout="row">\n <span fxFlex></span>\n <button (click)="cancel()" color="fds-regular" mat-raised-button\n i18n="Cancel addition of selected users to group|A button for cancelling the addition of selected users to a group in the registry.@@nf-admin-workflow-cancel-add-selected-users-to-group-button">\n Cancel\n </button>\n <button [disabled]="isAddSelectedUsersToGroupDisabled" class="push-left-sm" (click)="addSelectedUsersToGroup()"\n color="fds-primary" mat-raised-button\n i18n="Add selected users to group button|A button for adding users to an existing group in the registry.@@nf-admin-workflow-add-selected-users-to-group-button">\n Add\n </button>\n </div>\n</div>\n'},632:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div fxFill>\n <div fxLayout="row" fxLayoutAlign="space-between center" class="pad-top-sm pad-bottom-md pad-left-md pad-right-md">\n <span class="md-card-title ellipsis"><i class="fa fa-users push-right-sm" aria-hidden="true"></i>{{nfRegistryService.group.identity}}</span>\n <button mat-icon-button (click)="closeSideNav()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div class="sidenav-content">\n <div class="pad-left-md pad-right-md" flex fxLayoutAlign="start center">\n <mat-form-field floatLabel="always" flex>\n <input #groupnameInput matInput\n [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || !nfRegistryService.group.configurable"\n placeholder="Identity/Group Name"\n value="{{nfRegistryService.group.identity}}"\n [(ngModel)]="groupname">\n </mat-form-field>\n <button [disabled]="nfRegistryService.group.identity === groupname || !nfRegistryService.group.configurable"\n (click)="updateGroupName(groupnameInput.value)"\n class="input-button"\n color="fds-regular"\n mat-raised-button>\n Save\n </button>\n </div>\n <div class="pad-bottom-md pad-left-md pad-right-md" flex fxLayout="column" fxLayoutAlign="space-between start">\n <div>\n <span class="header">Special Privileges\n <i matTooltip="Additional permissions that allow a user to manage or access certain aspects of the registry."\n class="pad-left-sm fa fa-question-circle-o help-icon"></i>\n </span>\n </div>\n <mat-checkbox [disabled]="!canEditSpecialPrivileges()"\n [checked]="nfRegistryService.group.resourcePermissions.buckets.canRead && nfRegistryService.group.resourcePermissions.buckets.canWrite && nfRegistryService.group.resourcePermissions.buckets.canDelete"\n (change)="toggleGroupManageBucketsPrivileges($event)">\n <span class="description">Can manage buckets<i\n matTooltip="Allow a user to manage all buckets in the registry, as well as provide the user access to all buckets from a connected system (e.g., NiFi)."\n class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>\n </mat-checkbox>\n <div flex fxLayout="row" fxLayoutAlign="space-around center">\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.group.resourcePermissions.buckets.canRead"\n (change)="toggleGroupManageBucketsPrivileges($event, \'read\')">\n <span class="description">Read</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.group.resourcePermissions.buckets.canWrite"\n (change)="toggleGroupManageBucketsPrivileges($event, \'write\')">\n <span class="description">Write</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.group.resourcePermissions.buckets.canDelete"\n (change)="toggleGroupManageBucketsPrivileges($event, \'delete\')">\n <span class="description">Delete</span>\n </mat-checkbox>\n </div>\n <mat-checkbox [disabled]="!canEditSpecialPrivileges()"\n [checked]="nfRegistryService.group.resourcePermissions.tenants.canRead && nfRegistryService.group.resourcePermissions.tenants.canWrite && nfRegistryService.group.resourcePermissions.tenants.canDelete"\n (change)="toggleGroupManageTenantsPrivileges($event)">\n <span class="description">Can manage users<i\n matTooltip="Allow a user to manage all registry users and groups."\n class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>\n </mat-checkbox>\n <div flex fxLayout="row" fxLayoutAlign="space-around center">\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.group.resourcePermissions.tenants.canRead"\n (change)="toggleGroupManageTenantsPrivileges($event, \'read\')">\n <span class="description">Read</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.group.resourcePermissions.tenants.canWrite"\n (change)="toggleGroupManageTenantsPrivileges($event, \'write\')">\n <span class="description">Write</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.group.resourcePermissions.tenants.canDelete"\n (change)="toggleGroupManageTenantsPrivileges($event, \'delete\')">\n <span class="description">Delete</span>\n </mat-checkbox>\n </div>\n <mat-checkbox [disabled]="!canEditSpecialPrivileges()"\n [checked]="nfRegistryService.group.resourcePermissions.policies.canRead && nfRegistryService.group.resourcePermissions.policies.canWrite && nfRegistryService.group.resourcePermissions.policies.canDelete"\n (change)="toggleGroupManagePoliciesPrivileges($event)">\n <span class="description">Can manage policies<i\n matTooltip="Allow a user to grant all registry users read, write, and delete permission to a bucket."\n class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>\n </mat-checkbox>\n <div flex fxLayout="row" fxLayoutAlign="space-around center">\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.group.resourcePermissions.policies.canRead"\n (change)="toggleGroupManagePoliciesPrivileges($event, \'read\')">\n <span class="description">Read</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.group.resourcePermissions.policies.canWrite"\n (change)="toggleGroupManagePoliciesPrivileges($event, \'write\')">\n <span class="description">Write</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.group.resourcePermissions.policies.canDelete"\n (change)="toggleGroupManagePoliciesPrivileges($event, \'delete\')">\n <span class="description">Delete</span>\n </mat-checkbox>\n </div>\n <mat-checkbox [disabled]="!canEditSpecialPrivileges()"\n [checked]="nfRegistryService.group.resourcePermissions.proxy.canRead && nfRegistryService.group.resourcePermissions.proxy.canWrite && nfRegistryService.group.resourcePermissions.proxy.canDelete"\n (change)="toggleGroupManageProxyPrivileges($event)">\n <span class="description">Can proxy user requests<i\n matTooltip="Allow a connected system (e.g., NiFi) to process requests of authorized users of that system."\n class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>\n </mat-checkbox>\n <div flex fxLayout="row" fxLayoutAlign="space-around center">\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.group.resourcePermissions.proxy.canRead"\n (change)="toggleGroupManageProxyPrivileges($event, \'read\')">\n <span class="description">Read</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.group.resourcePermissions.proxy.canWrite"\n (change)="toggleGroupManageProxyPrivileges($event, \'write\')">\n <span class="description">Write</span>\n </mat-checkbox>\n <mat-checkbox class="pad-left-md"\n [disabled]="!canEditSpecialPrivileges()"\n [(checked)]="nfRegistryService.group.resourcePermissions.proxy.canDelete"\n (change)="toggleGroupManageProxyPrivileges($event, \'delete\')">\n <span class="description">Delete</span>\n </mat-checkbox>\n </div>\n </div>\n <mat-button-toggle-group name="nifi-registry-manage-group-perspective" class="pad-left-md tab-toggle-group">\n <mat-button-toggle [checked]="manageGroupPerspective === \'membership\'"\n value="membership"\n class="uppercase"\n (change)="manageGroupPerspective = \'membership\'"\n i18n="User membership tab, group management sidenav|View the users that belong to this group.@@nf-admin-group-management-sidenav-membership-tab-title">\n Membership\n </mat-button-toggle>\n </mat-button-toggle-group>\n <div *ngIf="manageGroupPerspective === \'membership\'">\n <div *ngIf="nfRegistryService.group.users" class="pad-top-md pad-bottom-sm pad-left-md pad-right-md">\n <div flex fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title class="ellipsis">\n Membership ({{nfRegistryService.group.users.length}})\n </mat-card-title>\n <button color="fds-secondary"\n [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || !nfRegistryService.group.configurable"\n mat-raised-button\n (click)="addUsersToGroup()">\n Add Users\n </button>\n </div>\n <div id="nifi-registry-group-membership-list-container-column-header" fxLayout="row"\n fxLayoutAlign="space-between center" class="td-data-table">\n <div class="td-data-table-column" (click)="sortUsers(column)"\n *ngFor="let column of usersColumns"\n fxFlex="{{column.width}}">\n {{column.label}}\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'ASC\'" class="fa fa-caret-up"\n aria-hidden="true"></i>\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'DESC\'"\n class="fa fa-caret-down"\n aria-hidden="true"></i>\n </div>\n </div>\n <div id="nifi-registry-group-membership-list-container">\n <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row"\n [ngClass]="{\'selected\' : row.checked}" *ngFor="let row of filteredUsers"\n (click)="row.checked = !row.checked">\n <div class="td-data-table-cell" *ngFor="let column of usersColumns"\n fxFlex="{{column.width}}">\n <div class="ellipsis"\n matTooltip="{{column.format ? column.format(row[column.name]) : row[column.name]}}">\n {{column.format ? column.format(row[column.name]) : row[column.name]}}\n </div>\n </div>\n <div class="td-data-table-cell">\n <div>\n <button (click)="removeUserFromGroup(row);row.checked = !row.checked;"\n [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || !nfRegistryService.group.configurable"\n matTooltip="\'Remove user from group\'" mat-icon-button color="accent">\n <i class="fa fa-trash" aria-hidden="true"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class="mat-padding" *ngIf="nfRegistryService.group.users.length === 0" layout="row"\n layout-align="center center">\n <h3>This group does not have any users yet.</h3>\n </div>\n </div>\n </div>\n </div>\n <button id="nf-registry-user-permissions-side-nav-container" class="push-right-md" mat-raised-button\n color="fds-primary"\n (click)="closeSideNav()">Close\n </button>\n</div>\n'},633:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-admin-create-bucket-dialog">\n <div class="pad-bottom-md" fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title class="ellipsis">\n New Policy\n </mat-card-title>\n <button mat-icon-button (click)="cancel()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div class="pad-bottom-md">\n <div id="nifi-registry-users-administration-list-container-column-header" class="td-data-table">\n <div class="td-data-table-column" (click)="sortUserAndGroups(column)"\n *ngFor="let column of nfRegistryService.userGroupsColumns"\n fxFlex="{{column.width}}">\n {{column.label}}\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'ASC\'" class="fa fa-caret-up"\n aria-hidden="true"></i>\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'DESC\'" class="fa fa-caret-down"\n aria-hidden="true"></i>\n </div>\n <div class="td-data-table-column"></div>\n </div>\n <div id="nifi-registry-add-selected-users-to-group-list-container">\n <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row" [ngClass]="{\'selected\' : (group.identity === userOrGroup.identity)}"\n *ngFor="let group of filteredUserGroups"\n (click)="select(group, \'group\');">\n <div class="td-data-table-cell" *ngFor="let column of nfRegistryService.userGroupsColumns"\n fxFlex="{{column.width}}">\n <div class="ellipsis" matTooltip="{{column.format ? column.format(group[column.name]) : group[column.name]}}">\n <i class="fa fa-users push-right-sm" aria-hidden="true"></i>{{column.format ?\n column.format(group[column.name]) : group[column.name]}}\n </div>\n </div>\n <div class="td-data-table-cell">\n <mat-checkbox [(checked)]="group.checked" (change)="change($event)">\n </mat-checkbox>\n </div>\n </div>\n <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row" [ngClass]="{\'selected\' : (user.identity === userOrGroup.identity)}"\n *ngFor="let user of filteredUsers"\n (click)="select(user, \'user\');">\n <div class="td-data-table-cell" *ngFor="let column of nfRegistryService.userGroupsColumns"\n fxFlex="{{column.width}}">\n <div class="ellipsis" matTooltip="{{column.format ? column.format(user[column.name]) : user[column.name]}}">\n {{column.format ? column.format(user[column.name]) : user[column.name]}}\n </div>\n </div>\n <div class="td-data-table-cell">\n <mat-checkbox [(checked)]="user.checked" (change)="change($event)">\n </mat-checkbox>\n </div>\n </div>\n </div>\n </div>\n <div flex fxLayout="row" fxLayoutAlign="start center" class="pad-bottom-md">\n <mat-checkbox [(checked)]="readCheckbox.checked && writeCheckbox.checked && deleteCheckbox.checked" (change)="toggleAllPermissions($event)">\n <span class="description">All</span>\n </mat-checkbox>\n <mat-checkbox [(checked)]="readCheckbox.checked" #readCheckbox class="pad-left-md">\n <span class="description">Read</span>\n </mat-checkbox>\n <mat-checkbox [(checked)]="writeCheckbox.checked" #writeCheckbox class="pad-left-md">\n <span class="description">Write</span>\n </mat-checkbox>\n <mat-checkbox [(checked)]="deleteCheckbox.checked" #deleteCheckbox class="pad-left-md">\n <span class="description">Delete</span>\n </mat-checkbox>\n </div>\n <div fxLayout="row">\n <span fxFlex></span>\n <button (click)="cancel()" color="fds-regular" mat-raised-button\n i18n="Cancel creation of new bucket policy|A button for cancelling the creation of a new bucket policy in the registry.@@nf-admin-workflow-cancel-bucket-policy-creation-button">\n Cancel\n </button>\n <button [disabled]="(!userOrGroup.identity) || (!readCheckbox.checked && !writeCheckbox.checked && !deleteCheckbox.checked)" class="push-left-sm" (click)="applyPolicy()" color="fds-primary" mat-raised-button\n i18n="Apply new bucket policy button|A button for applying a new bucket policy in the registry.@@nf-admin-workflow-apply-policy-to-bucket-button">\n Apply\n </button>\n </div>\n</div>\n'},634:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-admin-create-bucket-dialog">\n <div class="pad-bottom-md" fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title class="ellipsis">\n Edit Policy\n </mat-card-title>\n <button mat-icon-button (click)="cancel()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div flex fxLayoutAlign="start center">\n <mat-form-field floatLabel="always" flex>\n <input disabled value="{{userOrGroup.identity}}" #userOrGroupInput matInput placeholder="For This User/Group">\n </mat-form-field>\n </div>\n <div flex fxLayout="row" fxLayoutAlign="start center" class="pad-bottom-md">\n <mat-checkbox [(checked)]="readCheckbox.checked && writeCheckbox.checked && deleteCheckbox.checked" (change)="toggleAllPermissions($event)">\n <span class="description">All</span>\n </mat-checkbox>\n <mat-checkbox [(checked)]="readCheckbox.checked" #readCheckbox class="pad-left-md">\n <span class="description">Read</span>\n </mat-checkbox>\n <mat-checkbox [(checked)]="writeCheckbox.checked" #writeCheckbox class="pad-left-md">\n <span class="description">Write</span>\n </mat-checkbox>\n <mat-checkbox [(checked)]="deleteCheckbox.checked" #deleteCheckbox class="pad-left-md">\n <span class="description">Delete</span>\n </mat-checkbox>\n </div>\n <div fxLayout="row">\n <span fxFlex></span>\n <button (click)="cancel()" color="fds-regular" mat-raised-button\n i18n="Cancel creation of new bucket policy|A button for cancelling the creation of a new bucket policy in the registry.@@nf-admin-workflow-cancel-bucket-policy-creation-button">\n Cancel\n </button>\n <button [disabled]="userOrGroupInput.value && !readCheckbox.checked && !writeCheckbox.checked && !deleteCheckbox.checked" class="push-left-sm" (click)="applyPolicy()" color="fds-primary" mat-raised-button\n i18n="Apply new bucket policy button|A button for applying a new bucket policy in the registry.@@nf-admin-workflow-apply-policy-to-bucket-button">\n Apply\n </button>\n </div>\n</div>\n'},635:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div fxFill>\n <div fxLayout="row" fxLayoutAlign="space-between center" class="pad-top-sm pad-bottom-md pad-left-md pad-right-md">\n <mat-card-title class="ellipsis">\n {{nfRegistryService.bucket.name}}\n </mat-card-title>\n <button mat-icon-button data-automation-id="nf-registry-manage-bucket-close-side-nav" (click)="closeSideNav()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div class="sidenav-content">\n <div class="pad-left-md pad-right-md" flex fxLayoutAlign="start center">\n <mat-form-field floatLabel="always" flex>\n <input #bucketnameInput\n data-automation-id="nf-registry-manage-bucket-input-name"\n matInput\n [disabled]="!nfRegistryService.currentUser.resourcePermissions.buckets.canWrite"\n placeholder="Identity/Bucket Name"\n value="{{nfRegistryService.bucket.name}}"\n [(ngModel)]="bucketname">\n </mat-form-field>\n </div>\n <div class="pad-left-md pad-right-md" flex fxLayoutAlign="start center">\n <mat-form-field floatLabel="always" flex>\n <input #descriptionInput\n data-automation-id="nf-registry-manage-bucket-input-description"\n matInput\n [disabled]="!nfRegistryService.currentUser.resourcePermissions.buckets.canWrite"\n placeholder="Description"\n value="{{nfRegistryService.bucket.description}}"\n [(ngModel)]="description">\n </mat-form-field>\n </div>\n\n <div class="pad-left-md pad-right-md" flex fxLayoutAlign="start center">\n <button [disabled]="nfRegistryService.bucket.name === bucketname && nfRegistryService.bucket.description === description"\n (click)="updateBucketNameAndDescription(bucketnameInput.value, descriptionInput.value)"\n data-automation-id="nf-registry-manage-bucket-save-side-nav"\n class="input-button"\n color="fds-regular"\n mat-raised-button>\n Save\n </button>\n </div>\n\n <div class="pad-left-md pad-right-md pad-top-md">\n <div class="pad-bottom-sm">\n <mat-card-title class="ellipsis">\n Permission Settings\n </mat-card-title>\n </div>\n <mat-checkbox #bundlePublicReadCheckbox\n [disabled]="!nfRegistryService.currentUser.resourcePermissions.buckets.canWrite || protocol === \'http:\'"\n [(ngModel)]="allowPublicRead"\n (change)="toggleBucketPublicRead($event)">\n Make publicly visible<i matTooltip="Allows read access to items in this bucket by unauthenticated users. Overrides any specific policies granting read access."\n class="pad-left-sm fa fa-question-circle-o help-icon"></i>\n </mat-checkbox>\n </div>\n <div class="pad-top-md pad-left-md pad-right-md">\n <div class="pad-bottom-sm">\n <mat-card-title class="ellipsis">\n Bundle Settings\n </mat-card-title>\n </div>\n <div>\n <mat-checkbox #bundleRedeployCheckbox\n [disabled]="!nfRegistryService.currentUser.resourcePermissions.buckets.canWrite"\n [(ngModel)]="allowBundleRedeploy"\n (change)="toggleBucketBundleRedeploy($event)">\n Allow bundle overwrite<i matTooltip="Allows released bundles in this bucket to be overwritten" class="pad-left-sm fa fa-question-circle-o help-icon"></i>\n </mat-checkbox>\n </div>\n </div>\n <div *ngIf="!nfRegistryService.currentUser.anonymous || nfRegistryService.currentUser.resourcePermissions.policies.canRead" class="pad-top-md pad-left-md pad-right-md">\n <div flex fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title class="ellipsis">\n Policies ({{userIdentitiesWithPolicies.length + groupIdentitiesWithPolicies.length}})\n </mat-card-title>\n <button color="fds-secondary"\n [disabled]="nfRegistryService.currentUser.anonymous || !canEditBucketPolicies() || !nfRegistryService.currentUser.resourcePermissions.tenants.canRead"\n mat-raised-button\n (click)="addPolicy()">\n New Policy\n </button>\n </div>\n <div id="nifi-registry-manage-bucket-list-container-column-header" fxLayout="row"\n fxLayoutAlign="space-between center" class="td-data-table">\n <div class="td-data-table-column" (click)="sortBuckets(column)"\n *ngFor="let column of bucketPoliciesColumns"\n fxFlex="{{column.width}}">\n {{column.label}}\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'ASC\'" class="fa fa-caret-up"\n aria-hidden="true"></i>\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'DESC\'" class="fa fa-caret-down"\n aria-hidden="true"></i>\n </div>\n <div class="td-data-table-column"></div>\n </div>\n <div id="nifi-registry-manage-bucket-list-container">\n <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row"\n [ngClass]="{\'selected\' : row.checked}" *ngFor="let row of filteredGroupPermsData"\n (click)="row.checked = !row.checked">\n <div class="td-data-table-cell" *ngFor="let column of bucketPoliciesColumns"\n fxFlex="{{column.width}}">\n <div class="ellipsis"\n matTooltip="{{column.format ? column.format(row[column.name]) : row[column.name]}}">\n <i *ngIf="column.name === \'identity\'" class="fa fa-users push-right-sm"\n aria-hidden="true"></i>{{column.format ? column.format(row[column.name]) :\n row[column.name]}}\n </div>\n </div>\n <div class="td-data-table-cell">\n <button (click)="editPolicy(row);row.checked = !row.checked;"\n [disabled]="!canEditBucketPolicies()"\n matTooltip="\'Edit user policies of this bucket\'" mat-icon-button color="accent">\n <i class="fa fa-pencil" aria-hidden="true"></i>\n </button>\n <button (click)="removePolicyFromBucket(row);row.checked = !row.checked;"\n [disabled]="!canEditBucketPolicies()"\n matTooltip="\'Remove group policies from bucket\'" mat-icon-button color="accent">\n <i class="fa fa-trash" aria-hidden="true"></i>\n </button>\n </div>\n </div>\n <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row"\n [ngClass]="{\'selected\' : row.checked}" *ngFor="let row of filteredUserPermsData"\n (click)="row.checked = !row.checked">\n <div class="td-data-table-cell" *ngFor="let column of bucketPoliciesColumns"\n fxFlex="{{column.width}}">\n <div class="ellipsis"\n matTooltip="{{column.format ? column.format(row[column.name]) : row[column.name]}}">\n {{column.format ? column.format(row[column.name]) : row[column.name]}}\n </div>\n </div>\n <div class="td-data-table-cell">\n <button (click)="editPolicy(row);row.checked = !row.checked;"\n matTooltip="\'Edit user policies of this bucket\'" mat-icon-button color="accent"\n [disabled]="!canEditBucketPolicies()">\n <i class="fa fa-pencil" aria-hidden="true"></i>\n </button>\n <button (click)="removePolicyFromBucket(row);row.checked = !row.checked;"\n matTooltip="\'Remove user policies from this bucket\'" mat-icon-button color="accent"\n [disabled]="!canEditBucketPolicies()">\n <i class="fa fa-trash" aria-hidden="true"></i>\n </button>\n </div>\n </div>\n <div class="mat-padding"\n *ngIf="filteredUserPermsData.length === 0 && filteredGroupPermsData.length === 0"\n layout="row"\n layout-align="center center">\n <h3>No results to display.</h3>\n </div>\n </div>\n </div>\n <div class="pad-top-md pad-left-md pad-right-md">\n <div class="pad-bottom-sm">\n <mat-card-title class="ellipsis">\n About\n </mat-card-title>\n </div>\n <div>\n <span class="field-header">Bucket Identifier</span>\n <div>\n <span class="ellipsis" matTooltip="{{nfRegistryService.bucket.identifier}}">{{nfRegistryService.bucket.identifier}}</span>\n </div>\n </div>\n </div>\n </div>\n <button id="nf-registry-workflow-bucket-permissions-side-nav-container" class="push-right-md" mat-raised-button\n color="fds-primary"\n (click)="closeSideNav()">Close\n </button>\n</div>\n'},636:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<div id="nifi-registry-admin-create-bucket-dialog">\n <div class="pad-bottom-md" fxLayout="row" fxLayoutAlign="space-between center">\n <mat-card-title class="ellipsis">\n New Bucket\n </mat-card-title>\n <button mat-icon-button (click)="cancel()">\n <mat-icon color="primary">close</mat-icon>\n </button>\n </div>\n <div fxLayout="column" fxLayoutAlign="space-between start" class="pad-bottom-md">\n <div class="fill-available-width">\n <mat-form-field floatLabel="always" fxFlex>\n <input #newBucketName matInput floatPlaceholder="always" placeholder="Bucket Name">\n </mat-form-field>\n </div>\n <div class="fill-available-width">\n <mat-form-field floatLabel="always" fxFlex>\n <input #newBucketDescription matInput floatPlaceholder="always" placeholder="Description">\n </mat-form-field>\n </div>\n <mat-checkbox #newBucketPublicReadCheckbox [disabled]="protocol === \'http:\'" >\n Make publicly visible<i matTooltip="Allows read access to items in this bucket by unauthenticated users. Overrides any specific policies granting read access."\n class="pad-left-sm fa fa-question-circle-o help-icon"></i>\n </mat-checkbox>\n <mat-checkbox [(ngModel)]="keepDialogOpen">\n Keep this dialog open after creating bucket\n </mat-checkbox>\n </div>\n <div fxLayout="row">\n <span fxFlex></span>\n <button (click)="cancel()" color="fds-regular" mat-raised-button\n i18n="Cancel creation of new bucket|A button for cancelling the creation of a new bucket in the registry.@@nf-admin-workflow-cancel-create-bucket-button">\n Cancel\n </button>\n <button [disabled]="newBucketName.value.length === 0" class="push-left-sm" data-automation-id="create-new-bucket-button"\n (click)="createBucket(newBucketName, newBucketDescription, newBucketPublicReadCheckbox)"\n color="fds-primary" mat-raised-button i18n="Create new bucket button|A button for creating a new bucket in the registry.@@nf-admin-workflow-create-bucket-button">\n Create\n </button>\n </div>\n</div>\n'},637:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n<div id="nifi-registry-workflow-administration-perspective-buckets-container" class="mat-elevation-z5">\n <div fxFlex class="pad-top-md pad-bottom-sm pad-left-md pad-right-md">\n <mat-card-title class="ellipsis">\n Buckets ({{nfRegistryService.buckets.length}})\n </mat-card-title>\n <div flex class="push-right-sm" fxLayout="row" fxLayoutAlign="end center">\n <td-chips class="push-right-sm"\n [items]="nfRegistryService.autoCompleteBuckets"\n (add)="nfRegistryService.bucketsSearchAdd($event)"\n (remove)="nfRegistryService.bucketsSearchRemove($event)"></td-chips>\n <div matTooltip="{{(!nfRegistryService.currentUser.resourcePermissions.buckets.canWrite) ? \'You do not have permission. Please contact your system administrator.\': \'\'}}">\n <button data-automation-id = "new-bucket-button"\n class="push-top-sm push-right-sm"\n color="fds-secondary"\n mat-raised-button\n [disabled]="!nfRegistryService.currentUser.resourcePermissions.buckets.canWrite"\n (click)="createBucket()">\n New Bucket\n </button>\n </div>\n <button class="push-top-sm" [disabled]="nfRegistryService.isMultiBucketActionsDisabled" color="fds-primary" mat-raised-button [matMenuTriggerFor]="bucketActionMenu">\n Actions<i class="fa fa-caret-down" aria-hidden="true"></i>\n </button>\n </div>\n <mat-menu class="fds-primary-dropdown-button-menu" #bucketActionMenu="matMenu" [overlapTrigger]="false">\n <button mat-menu-item\n [disabled]="nfRegistryService.disableMultiBucketDeleteAction"\n (click)="nfRegistryService.deleteSelectedBuckets()">\n <span>Delete</span>\n </button>\n </mat-menu>\n <div id="nifi-registry-workflow-administration-buckets-list-container-column-header" fxLayout="row"\n fxLayoutAlign="space-between center" class="td-data-table">\n <div class="td-data-table-column" (click)="nfRegistryService.sortBuckets(column)"\n *ngFor="let column of nfRegistryService.bucketColumns"\n fxFlex="1 1 {{column.width}}">\n {{column.label}}\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'ASC\'" class="fa fa-caret-up"\n aria-hidden="true"></i>\n <i *ngIf="column.active && column.sortable && column.sortOrder === \'DESC\'" class="fa fa-caret-down"\n aria-hidden="true"></i>\n </div>\n <div class="td-data-table-column" fxFlex="1 1 10%">\n <div fxLayout="row" fxLayoutAlign="end center">\n <mat-checkbox class="pad-left-sm" [(ngModel)]="nfRegistryService.allBucketsSelected"\n (checked)="nfRegistryService.allBucketsSelected"\n (change)="nfRegistryService.toggleBucketsSelectAll()"></mat-checkbox>\n </div>\n </div>\n </div>\n <div id="nifi-registry-workflow-administration-buckets-list-container">\n <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row"\n [ngClass]="{\'nonconfigurable\' : row.configurable === false, \'selected-nonconfigurable\' : (row.checked === true && row.configurable === false), \'selected\' : row.checked === true}"\n *ngFor="let row of nfRegistryService.filteredBuckets"\n (click)="row.checked = !row.checked;nfRegistryService.determineAllBucketsSelectedState()">\n <div class="td-data-table-cell" *ngFor="let column of nfRegistryService.bucketColumns"\n fxFlex="1 1 {{column.width}}">\n <div class="ellipsis" matTooltip="{{column.format ? column.format(row[column.name]) : row[column.name]}}">\n {{column.format ? column.format(row[column.name]) : row[column.name]}}\n </div>\n </div>\n <div class="td-data-table-cell" fxFlex="1 1 10%">\n <div>\n <div *ngIf="nfRegistryService.bucketActions.length <= 4" fxLayout="row" fxLayoutAlign="end center">\n <button (click)="nfRegistryService.executeBucketAction(action, row);row.checked = !row.checked;"\n *ngFor="let action of nfRegistryService.bucketActions"\n matTooltip="{{action.tooltip}}" mat-icon-button color="accent"\n [disabled]="action.disabled(row)">\n <i class="{{action.icon}}" aria-hidden="true"></i>\n </button>\n <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked"\n (change)="nfRegistryService.determineAllBucketsSelectedState()"\n (click)="row.checked = !row.checked;nfRegistryService.determineAllBucketsSelectedState()"></mat-checkbox>\n </div>\n <div *ngIf="nfRegistryService.bucketActions.length > 4" fxLayout="row" fxLayoutAlign="end center">\n <button (click)="row.checked = !row.checked" matTooltip="Actions" mat-icon-button\n [matMenuTriggerFor]="bucketTableActionMenu">\n <i class="fa fa-ellipsis-h" aria-hidden="true"></i>\n </button>\n <mat-menu #bucketTableActionMenu="matMenu" [overlapTrigger]="false">\n <button (click)="nfRegistryService.executeBucketAction(action, row);row.checked = !row.checked;"\n *ngFor="let action of nfRegistryService.bucketActions"\n matTooltip="{{action.tooltip}}" mat-menu-item\n [disabled]="action.disabled(row)">\n <i class="{{action.icon}}" aria-hidden="true"></i>\n <span>{{action.name}}</span>\n </button>\n </mat-menu>\n <mat-checkbox [(ngModel)]="row.checked" [checked]="row.checked"\n (change)="nfRegistryService.determineAllBucketsSelectedState()"\n (click)="row.checked = !row.checked;nfRegistryService.determineAllBucketsSelectedState()"></mat-checkbox>\n </div>\n </div>\n <div *ngIf="!nfRegistryService.bucketActions" fxLayout="row" fxLayoutAlign="end center">\n <mat-checkbox [(ngModel)]="row.checked" [checked]="row.checked"\n (change)="nfRegistryService.determineAllBucketsSelectedState(row)"\n (click)="row.checked = !row.checked;nfRegistryService.determineAllBucketsSelectedState()"></mat-checkbox>\n </div>\n </div>\n </div>\n </div>\n <div class="mat-padding" *ngIf="nfRegistryService.filteredBuckets.length === 0" layout="row"\n layout-align="center center">\n <h3 data-automation-id="no-buckets-message">No results to display.</h3>\n </div>\n </div>\n</div>\n<router-outlet></router-outlet>\n'},638:function(e,t){e.exports='\x3c!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the "License"); you may not use this file except in compliance with\nthe License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\x3e\n\n<mat-progress-spinner id="loading-spinner" *ngIf="nfRegistryService.inProgress" mode="indeterminate"></mat-progress-spinner>\n<mat-sidenav-container>\n <mat-sidenav #sidenav mode="over" position="end" opened="false" disableClose="true">\n <router-outlet name="sidenav"></router-outlet>\n </mat-sidenav>\n <div id="nf-registry-app-container">\n <mat-toolbar id="nifi-registry-toolbar">\n <img id="nifi-registry-logo" src="assets/images/registry-logo-web-app.svg">\n <div *ngIf="nfRegistryService.perspective !== \'login\' && nfRegistryService.perspective !== \'not-found\'" fxFlex="1 1 auto" class="pad-left-xl" [@flyInOut]="nfRegistryService.breadCrumbState">\n <span class="pointer" routerLink="explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : \'grid-list\'}}">{{nfRegistryService.registry.name}}</span>\n <mat-menu #availableRegistriesMenu="matMenu" [overlapTrigger]="false">\n <button mat-menu-item *ngFor="let registry of nfRegistryService.registries"\n routerLink="explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : \'grid-list\'}}">\n <span>{{registry.name}}</span>\n </button>\n </mat-menu>\n <span class="pointer" *ngIf="nfRegistryService.perspective === \'administration\'"> / Administration</span>\n <span class="pointer" *ngIf="(nfRegistryService.perspective === \'explorer\') && nfRegistryService.bucket.identifier"\n [matMenuTriggerFor]="availableBucketsMenu"> / {{nfRegistryService.bucket.name}}<i\n class="fa fa-caret-down pad-left-sm" aria-hidden="true"></i></span>\n <span class="pointer" *ngIf="nfRegistryService.perspective === \'explorer\' && !nfRegistryService.bucket.identifier"\n [matMenuTriggerFor]="availableBucketsMenu"> / All<i class="fa fa-caret-down pad-left-sm"\n aria-hidden="true"></i></span>\n <mat-menu #availableBucketsMenu="matMenu" [overlapTrigger]="false">\n <button mat-menu-item\n routerLink="explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : \'grid-list\'}}">\n <span>All buckets</span>\n </button>\n <button mat-menu-item *ngFor="let bucket of nfRegistryService.buckets"\n routerLink="explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : \'grid-list\'}}/buckets/{{bucket.identifier}}">\n <span>{{bucket.name}}</span>\n </button>\n </mat-menu>\n <span class="pointer" *ngIf="nfRegistryService.perspective === \'explorer\' && nfRegistryService.droplet.identifier"\n [matMenuTriggerFor]="availableDropletsMenu"> / {{nfRegistryService.droplet.name}}<i\n class="fa fa-caret-down pad-left-sm" aria-hidden="true"></i></span>\n <span class="pointer" [matMenuTriggerFor]="availableDropletsMenu"\n *ngIf="nfRegistryService.perspective === \'explorer\' && nfRegistryService.bucket.identifier && !nfRegistryService.droplet.identifier"> / All<i\n class="fa fa-caret-down pad-left-sm" aria-hidden="true"></i></span>\n <mat-menu #availableDropletsMenu="matMenu" [overlapTrigger]="false">\n <button mat-menu-item\n routerLink="explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : \'grid-list\'}}/buckets/{{nfRegistryService.bucket.identifier}}">\n <span>All resources</span>\n </button>\n <button mat-menu-item *ngFor="let droplet of nfRegistryService.droplets"\n routerLink="explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : \'grid-list\'}}/{{droplet.link.href}}">\n <span>{{droplet.name}}</span>\n </button>\n </mat-menu>\n </div>\n <div id="nifi-registry-alerts-count" *ngIf="nfRegistryService.alerts.length > 0">\n {{nfRegistryService.alerts.length}}\n </div>\n <button *ngIf="false" matTooltip="Alerts" mat-icon-button>\n <i class="fa fa-bell" aria-hidden="true"></i>\n </button>\n <div *ngIf="nfRegistryService.currentUser.identity && nfRegistryService.perspective !== \'login\' && nfRegistryService.perspective !== \'not-found\'" fxLayout="column" fxLayoutAlign="space-around end" class="push-right-sm">\n <div id="current-user" matTooltip="{{nfRegistryService.currentUser.identity}}">{{nfRegistryService.currentUser.identity}}</div>\n <a id="logout-link-container" *ngIf="nfRegistryService.currentUser.canLogout" class="link" (click)="logout()">logout</a>\n <a id="login-link-container" *ngIf="!nfRegistryService.currentUser.canLogout && nfRegistryService.currentUser.anonymous && (nfRegistryService.currentUser.loginSupported || nfRegistryService.currentUser.oidcloginSupported)" class="link" (click)="login()">login</a>\n </div>\n <div id="nifi-registry-documentation" *ngIf="nfRegistryService.perspective !== \'login\'" class="pad-right-sm">\n <a matTooltip="Help" href="{{nfRegistryService.documentation.link}}" target="_blank"><i class="fa fa-question-circle help-icon" aria-hidden="true"></i></a>\n </div>\n <button matTooltip="About" mat-ripple (click)="showAboutDialog()" mat-icon-button>\n <i class="fa fa-info help-icon" aria-hidden="true"></i>\n </button>\n <button matTooltip="Settings" mat-ripple *ngIf="nfRegistryService.currentUser.resourcePermissions.anyTopLevelResource.canRead && nfRegistryService.perspective === \'explorer\'" mat-icon-button\n routerLink="administration/workflow">\n <i class="fa fa-wrench" aria-hidden="true"></i>\n </button>\n <button color="primary" matTooltip="Close settings" mat-ripple *ngIf="nfRegistryService.perspective === \'administration\'" mat-mini-fab\n routerLink="explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : \'grid-list\'}}">\n <mat-icon>close</mat-icon>\n </button>\n </mat-toolbar>\n <div id="nf-registry-perspectives-container">\n <router-outlet></router-outlet>\n </div>\n </div>\n</mat-sidenav-container>\n'},642:function(e,t,i){e.exports=i.p+"assets/images/registry-logo-web-app.svg"},643:function(e,t,i){e.exports=i.p+"assets/images/registry-background-logo.svg"},646:function(e,t,i){"use strict";i.r(t);i(394),i(605);var n=i(45),r=i.n(n),s=i(67),o=i(380),a=i(0),c=i(24),l=i(52),u=i(16),d=i(26),f=function(e){return!function(e){return void 0===e}(e)&&!function(e){return null===e}(e)},p=function(e){try{var t=JSON.parse(localStorage.getItem(e));return f(t)?t:null}catch(e){return null}};function g(){}g.prototype={constructor:g,init:function(){for(var e=0;e<localStorage.length;e++)try{var t=localStorage.key(e);this.getItem(t)}catch(e){}},setItem:function(e,t,i){var n={expires:i=f(i)?i:(new Date).valueOf()+1728e5,item:t};localStorage.setItem(e,JSON.stringify(n))},hasItem:function(e){return null!==p(e)},getItem:function(e){var t=p(e);return null===t?null:function(e){if(f(e.expires)){var t=new Date(e.expires),i=new Date;return t.valueOf()<i.valueOf()}return!1}(t)?(this.removeItem(e),null):f(t.item)?t.item:null},getItemExpiration:function(e){var t=p(e);return null===t?null:f(t.expires)?t.expires:null},getJwtPayload:function(e){if(f(e)){var t=e.split(/\./);if(3!==t.length)return"";var i=window.atob(t[1]),n=JSON.parse(i);return f(n)?n:null}return null},removeItem:function(e){localStorage.removeItem(e)}},g.parameters=[];var h=g,m=i(55),v=i(40),b=i(649),y=i(54),S=i(160),k=i(134),R=new Headers({"Content-Type":"application/json"}),w={currentUser:"../nifi-registry-api/access",kerberos:"../nifi-registry-api/access/token/kerberos",oidc:"../nifi-registry-api/access/oidc/exchange",about:"../nifi-registry-api/about"};function A(e,t,i){this.nfStorage=e,this.http=t,this.dialogService=i}A.prototype={constructor:A,getDropletSnapshotMetadata:function(e){var t=this,i="../nifi-registry-api/"+e;return i+="/versions",this.http.get(i).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return t.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},exportDropletVersionedSnapshot:function(e,t){var i=this,n="../nifi-registry-api/"+e+"/versions/"+t+"/export",r={headers:R,observe:"response",responseType:"text"};return i.http.get(n,r).pipe(Object(v.a)((function(e){var t=encodeURIComponent(e.body),i=e.headers.get("Filename"),n=document.createElement("a");return n.href="data:application/json;charset=utf-8,"+t,n.download=i,n.style="display: none;",document.body.appendChild(n),n.click(),document.body.removeChild(n),e})),Object(b.a)((function(e){return i.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},uploadVersionedFlowSnapshot:function(e,t,i){var n=this,r="../nifi-registry-api/"+e+"/versions/import",o=(new s.d).set("Content-Type","application/json").set("Comments",i);return n.http.post(r,t,{headers:o}).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return n.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},uploadFlow:function(e,t,i,n){var r=this,s="../nifi-registry-api/"+e+"/flows",o={name:i,description:n};return r.http.post(s,o,R).pipe(Object(y.a)(1),Object(S.a)((function(e){var i=e.link.href,n="../nifi-registry-api/"+i+"/versions/import";return r.http.post(n,t,R).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){var t=i+"?versions=0";return r.deleteDroplet(t).subscribe((function(e){return e})),r.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))})),Object(b.a)((function(e){return r.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},getDroplet:function(e,t,i){var n=this,r="../nifi-registry-api/buckets/"+e+"/"+t+"/"+i;return this.http.get(r).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return n.dialogService.openConfirm({title:"Flow Not Found",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},getDroplets:function(e){var t="../nifi-registry-api/items";return e&&(t+="/"+e),this.http.get(t).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return Object(m.a)(e)})))},deleteDroplet:function(e){var t=this;return this.http.delete("../nifi-registry-api/"+e,R).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return t.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},createBucket:function(e,t,i){var n=this;return this.http.post("../nifi-registry-api/buckets",{name:e,description:t,allowPublicRead:i,revision:{version:0}},R).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return n.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},deleteBucket:function(e,t){var i=this;return this.http.delete("../nifi-registry-api/buckets/"+e+"?version="+t,R).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return i.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},getBucket:function(e){var t=this,i="../nifi-registry-api/buckets/"+e;return this.http.get(i).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return t.dialogService.openConfirm({title:"Bucket Not Found",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},getBuckets:function(){var e=this;return this.http.get("../nifi-registry-api/buckets").pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(t){return e.dialogService.openConfirm({title:"Buckets Not Found",message:t.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(t)})))},updateBucket:function(e){return this.http.put("../nifi-registry-api/buckets/"+e.identifier,e,R).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return Object(m.a)(e)})))},getUser:function(e){var t=this;return this.http.get("../nifi-registry-api/tenants/users/"+e).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return t.dialogService.openConfirm({title:"User Not Found",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},addUser:function(e){var t=this;return this.http.post("../nifi-registry-api/tenants/users",{identity:e,resourcePermissions:{anyTopLevelResource:{canRead:!1,canWrite:!1,canDelete:!1},buckets:{canRead:!1,canWrite:!1,canDelete:!1},tenants:{canRead:!1,canWrite:!1,canDelete:!1},policies:{canRead:!1,canWrite:!1,canDelete:!1},proxy:{canRead:!1,canWrite:!1,canDelete:!1}},revision:{version:0}},R).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return t.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},updateUser:function(e,t,i){return this.http.put("../nifi-registry-api/tenants/users/"+e,{identifier:e,identity:t,revision:i},R).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return Object(m.a)(e)})))},getUsers:function(){var e=this;return this.http.get("../nifi-registry-api/tenants/users").pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(t){return e.dialogService.openConfirm({title:"Users Not Found",message:t.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(t)})))},deleteUser:function(e,t){var i=this;return this.http.delete("../nifi-registry-api/tenants/users/"+e+"?version="+t,R).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return i.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},getUserGroups:function(){var e=this;return this.http.get("../nifi-registry-api/tenants/user-groups").pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(t){return e.dialogService.openConfirm({title:"Groups Not Found",message:t.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(t)})))},getUserGroup:function(e){var t=this;return this.http.get("../nifi-registry-api/tenants/user-groups/"+e).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return t.dialogService.openConfirm({title:"Group Not Found",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},deleteUserGroup:function(e,t){var i=this;return this.http.delete("../nifi-registry-api/tenants/user-groups/"+e+"?version="+t,R).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return i.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},createNewGroup:function(e,t,i){var n=this;return this.http.post("../nifi-registry-api/tenants/user-groups",{identifier:e,identity:t,users:i,revision:{version:0}},R).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return n.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},updateUserGroup:function(e,t,i,n){return this.http.put("../nifi-registry-api/tenants/user-groups/"+e,{identifier:e,identity:t,users:i,revision:n},R).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return Object(m.a)(e)})))},getPolicies:function(){return this.http.get("../nifi-registry-api/policies").pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return Object(m.a)(e)})))},getResourcePoliciesById:function(e,t,i){return this.http.get("../nifi-registry-api/policies/"+e+t+"/"+i).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return Object(m.a)(e)})))},getPolicyActionResource:function(e,t){return this.http.get("../nifi-registry-api/policies/"+e+t).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return Object(m.a)(e)})))},putPolicyActionResource:function(e,t,i,n,r,s){var o=this;return this.http.put("../nifi-registry-api/policies/"+e,{identifier:e,resource:i,action:t,users:n,userGroups:r,revision:s},R).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return o.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},postPolicyActionResource:function(e,t,i,n){var r=this;return this.http.post("../nifi-registry-api/policies",{resource:t,action:e,users:i,userGroups:n,revision:{version:0}},R).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return r.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)(e)})))},postToLogin:function(e,t){var i=this,n=btoa(e+":"+t),r={headers:new s.d({Authorization:"Basic "+n}),withCredentials:!0,responseType:"text"};return this.http.post("../nifi-registry-api/access/token/login",null,r).pipe(Object(v.a)((function(e){var t=i.nfStorage.getJwtPayload(e);if(t){var n=1e3*parseInt(t.exp,10);i.nfStorage.setItem("jwt",e,n)}return e})),Object(b.a)((function(){return i.dialogService.openConfirm({title:"Error",message:"Please contact your System Administrator.",acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)("")})))},deleteToLogout:function(){var e=this,t={headers:R,withCredentials:!0,responseType:"text"};return this.http.delete("../nifi-registry-api/access/logout",t).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(){return e.dialogService.openConfirm({title:"Error",message:"Please contact your System Administrator.",acceptButton:"Ok",acceptButtonColor:"fds-warn"}),Object(m.a)("")})))},ticketExchange:function(){var e=this;if(this.nfStorage.hasItem("jwt"))return Object(m.a)(e.nfStorage.getItem("jwt"));var t=function(t){var i=e.nfStorage.getJwtPayload(t);if(i){var n=1e3*parseInt(i.exp,10);e.nfStorage.setItem("jwt",t,n)}return t};return this.http.post(w.kerberos,null,{responseType:"text"}).pipe(Object(v.a)((function(e){return t(e)})),Object(b.a)((function(){return e.http.post(w.oidc,null,{responseType:"text",withCredentials:"true"}).pipe(Object(v.a)((function(e){return t(e)})),Object(b.a)((function(){return Object(m.a)("")})))})))},loadCurrentUser:function(){return this.http.get(w.currentUser).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(e){return Object(m.a)({error:e,resourcePermissions:{anyTopLevelResource:{canRead:!1,canWrite:!1,canDelete:!1},buckets:{canRead:!1,canWrite:!1,canDelete:!1},tenants:{canRead:!1,canWrite:!1,canDelete:!1},policies:{canRead:!1,canWrite:!1,canDelete:!1},proxy:{canRead:!1,canWrite:!1,canDelete:!1}}})})))},getRegistryConfig:function(){return this.http.get("../nifi-registry-api/config").pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(){return Object(m.a)({})})))},showRegistryAboutDialog:function(){var e=this;this.http.get(w.about).pipe(Object(v.a)((function(e){return e})),Object(b.a)((function(){return Object(m.a)({})}))).subscribe((function(t){e.dialogService.open(k.NfRegistryExplorerAbout,{width:"550px",height:"440px",data:t})}))}},A.parameters=[h,s.b,d.b];var x=A;function C(e,t,i,n){this.snackBarService=t,this.nfRegistryApi=e,this.dialogRef=i,this.keepDialogOpen=!1,this.protocol=location.protocol,this.droplet=n.droplet,this.selectedVersion=this.droplet.snapshotMetadata[0].version}C.prototype={constructor:C,exportVersion:function(){var e=this,t=this.selectedVersion;this.nfRegistryApi.exportDropletVersionedSnapshot(this.droplet.link.href,t).subscribe((function(t){t.status&&200!==t.status?e.dialogRef.close():(e.snackBarService.openCoaster({title:"Success",message:"Exported flow.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}),!0!==e.keepDialogOpen&&e.dialogRef.close())}))},cancel:function(){this.dialogRef.close()}},C.annotations=[new a.Component({template:i(618)})],C.parameters=[x,d.c,u.MatDialogRef,u.MAT_DIALOG_DATA];var P=C;function O(e,t,i,n){this.snackBarService=t,this.nfRegistryApi=e,this.dialogRef=i,this.keepDialogOpen=!1,this.droplet=n.droplet,this.fileToUpload=null,this.fileName=null,this.comments="",this.hoverValidity="",this.extensions="application/json",this.multiple=!1}O.prototype={constructor:O,fileDragHandler:function(e,t){e.preventDefault(),e.stopPropagation(),this.extensions=t;var i=e.dataTransfer.items;this.hoverValidity=this.isFileInvalid(i)?"invalid":"valid"},fileDragEndHandler:function(){this.hoverValidity=""},fileDropHandler:function(e){e.preventDefault(),e.stopPropagation();var t=e.dataTransfer.files;this.isFileInvalid(Array.from(t))||this.handleFileInput(t),this.hoverValidity=""},handleFileInput:function(e){this.fileToUpload=e[0];var t=this.fileToUpload.name;this.fileName=t.replace(/\..*/,"")},selectFile:function(){document.getElementById("upload-versioned-flow-file-field").click()},importNewVersion:function(){var e=this,t=this.comments;this.nfRegistryApi.uploadVersionedFlowSnapshot(this.droplet.link.href,this.fileToUpload,t).subscribe((function(t){t.status&&201!==t.status?e.dialogRef.close():(e.snackBarService.openCoaster({title:"Success",message:"Successfully imported version "+t.snapshotMetadata.version+" of "+t.flow.name+".",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}),!0!==e.keepDialogOpen&&e.dialogRef.close())}))},isFileInvalid:function(e){return e.length>1||""!==this.extensions&&""===e[0].type||-1===this.extensions.indexOf(e[0].type)},cancel:function(){this.dialogRef.close()}},O.annotations=[new a.Component({template:i(619)})],O.parameters=[x,d.c,u.MatDialogRef,u.MAT_DIALOG_DATA];var I=O;function B(e,t,i,n){this.snackBarService=t,this.nfRegistryApi=e,this.dialogRef=i,this.keepDialogOpen=!1,this.buckets=n.buckets,this.activeBucket=n.activeBucket.identifier,this.writableBuckets=[],this.fileToUpload=null,this.fileName=null,this.name="",this.description="",this.selectedBucket={},this.hoverValidity="",this.extensions="application/json",this.multiple=!1}B.prototype={constructor:B,ngOnInit:function(){this.writableBuckets=this.filterWritableBuckets(this.buckets),void 0===this.activeBucket&&1===this.writableBuckets.length&&(this.activeBucket=this.writableBuckets[0].identifier)},filterWritableBuckets:function(e){var t=this;return t.writableBuckets=this.writableBuckets,e.forEach((function(e){e.permissions.canWrite&&t.writableBuckets.push(e)})),t.writableBuckets},fileDragHandler:function(e,t){e.preventDefault(),e.stopPropagation(),this.extensions=t;var i=e.dataTransfer.items;this.hoverValidity=this.isFileInvalid(i)?"invalid":"valid"},fileDragEndHandler:function(){this.hoverValidity=""},fileDropHandler:function(e){e.preventDefault(),e.stopPropagation();var t=e.dataTransfer.files;this.isFileInvalid(Array.from(t))||this.handleFileInput(t),this.hoverValidity=""},handleFileInput:function(e){this.fileToUpload=e[0];var t=this.fileToUpload.name;this.fileName=t.replace(/\..*/,"")},selectFile:function(){document.getElementById("upload-flow-file-field").click()},importNewFlow:function(){var e=this;e.name=this.name,e.description=this.description,e.activeBucket=this.activeBucket,e.selectedBucket=this.writableBuckets.find((function(t){return t.identifier===e.activeBucket})),this.nfRegistryApi.uploadFlow(e.selectedBucket.link.href,e.fileToUpload,e.name,e.description).subscribe((function(t){if(t.status&&201!==t.status)e.dialogRef.close();else if(e.snackBarService.openCoaster({title:"Success",message:"Successfully imported "+t.flow.name+" to the "+t.bucket.name+" bucket.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}),!0!==e.keepDialogOpen){var i=t.flow.link.href;e.dialogRef.close(i)}}))},isFileInvalid:function(e){return e.length>1||""!==this.extensions&&""===e[0].type||-1===this.extensions.indexOf(e[0].type)},cancel:function(){this.dialogRef.close()}},B.annotations=[new a.Component({template:i(620)})],B.parameters=[x,d.c,u.MatDialogRef,u.MAT_DIALOG_DATA];var U=B;function L(e,t,i,n,r,s,o){var a=this;this.registry={name:"NiFi Registry",config:{}},this.documentation={link:"../nifi-registry-docs/documentation"},this.redirectUrl="explorer/grid-list",this.router=n,this.api=e,this.nfStorage=t,this.dialogService=r,this.snackBarService=s,this.dataTableService=i,this.matDialog=o,this.userColumns=[{name:"identity",label:"Display Name",sortable:!0,tooltip:"User name.",width:100}],this.userGroupsColumns=[{name:"identity",label:"Display Name",sortable:!0,tooltip:"Group name.",width:100}],this.dropletColumns=[{name:"name",label:"Name",sortable:!0,active:!0},{name:"modifiedTimestamp",label:"Updated",sortable:!0},{name:"type",label:"Type",sortable:!0}],this.bucketColumns=[{name:"name",label:"Bucket Name",sortable:!0,tooltip:"Sort Buckets by name.",width:"40%"},{name:"description",label:"Description",sortable:!1,width:"50%"}],this.disableMultiBucketDeleteAction=!1,this.bucketActions=[{name:"manage",icon:"fa fa-pencil",tooltip:"Manage Bucket",type:"sidenav",disabled:function(){return!1}},{name:"Delete",icon:"fa fa-trash",tooltip:"Delete Bucket",disabled:function(e){return!e.permissions.canDelete}}],this.bucketPoliciesActions=[{name:"manage",icon:"fa fa-pencil",tooltip:"Manage Policy",type:"dialog"},{name:"Delete",icon:"fa fa-trash",tooltip:"Delete Policy"}],this.dropletActions=[{name:"Import new version",icon:"fa fa-upload",tooltip:"Import new flow version",disabled:function(e){return!e.permissions.canWrite}},{name:"Export version",icon:"fa fa-download",tooltip:"Export flow version",disabled:function(e){return!e.permissions.canRead}},{name:"Delete flow",icon:"fa fa-trash",tooltip:"Delete",disabled:function(e){return!e.permissions.canDelete}}],this.disableMultiDeleteAction=!1,this.usersActions=[{name:"manage",icon:"fa fa-pencil",type:"sidenav",tooltip:"Manage User",disabled:function(){return!1}},{name:"delete",icon:"fa fa-trash",tooltip:"Delete User",disabled:function(e){return!a.currentUser.resourcePermissions.tenants.canWrite||!e.configurable}}],this.userGroupsActions=[{name:"manage",icon:"fa fa-pencil",tooltip:"Manage User Group Policies",type:"sidenav",disabled:function(){return!1}},{name:"delete",icon:"fa fa-trash",tooltip:"Delete User Group",disabled:function(e){return!a.currentUser.resourcePermissions.tenants.canWrite||!e.configurable}}],this.BUCKETS_PRIVS={"/buckets":["read","write","delete"]},this.TENANTS_PRIVS={"/tenants":["read","write","delete"]},this.POLICIES_PRIVS={"/policies":["read","write","delete"]},this.PROXY_PRIVS={"/proxy":["read","write","delete"]},this.alerts=[],this.inProgress=!1,this.perspective="",this.breadCrumbState="out",this.explorerViewType="",this.currentUser={loginSupported:!1,oidcloginSupported:!1,resourcePermissions:{anyTopLevelResource:{canRead:!1,canWrite:!1,canDelete:!1},buckets:{canRead:!1,canWrite:!1,canDelete:!1},tenants:{canRead:!1,canWrite:!1,canDelete:!1},policies:{canRead:!1,canWrite:!1,canDelete:!1},proxy:{canRead:!1,canWrite:!1,canDelete:!1}}},this.bucket={},this.buckets=[],this.droplet={},this.droplets=[],this.user={resourcePermissions:{anyTopLevelResource:{canRead:!1,canWrite:!1,canDelete:!1},buckets:{canRead:!1,canWrite:!1,canDelete:!1},tenants:{canRead:!1,canWrite:!1,canDelete:!1},policies:{canRead:!1,canWrite:!1,canDelete:!1},proxy:{canRead:!1,canWrite:!1,canDelete:!1}}},this.users=[],this.group={resourcePermissions:{anyTopLevelResource:{canRead:!1,canWrite:!1,canDelete:!1},buckets:{canRead:!1,canWrite:!1,canDelete:!1},tenants:{canRead:!1,canWrite:!1,canDelete:!1},policies:{canRead:!1,canWrite:!1,canDelete:!1},proxy:{canRead:!1,canWrite:!1,canDelete:!1}}},this.groups=[],this.filteredDroplets=[],this.activeDropletColumn=this.dropletColumns[0],this.autoCompleteDroplets=[],this.dropletsSearchTerms=[],this.filteredBuckets=[],this.allBucketsSelected=!1,this.autoCompleteBuckets=[],this.bucketsSearchTerms=[],this.isMultiBucketActionsDisabled=!0,this.filteredUsers=[],this.filteredUserGroups=[],this.allUsersAndGroupsSelected=!1,this.autoCompleteUsersAndGroups=[],this.usersSearchTerms=[]}L.prototype={constructor:L,setBreadcrumbState:function(e){this.breadCrumbState=e},getSortByLabel:function(){for(var e,t=this.dropletColumns.length,i=0;i<t;i++)if(!0===this.dropletColumns[i].active){e=this.dropletColumns[i];break}if(e){var n="";switch(e.label){case"Updated":n="ASC"===e.sortOrder?"Last Updated (oldest)":"Last Updated (newest)";break;case"Name":n="ASC"===e.sortOrder?"Name (a - z)":"Name (z - a)";break;case"Type":n="ASC"===e.sortOrder?"Type (a - z)":"Type (z - a)"}return n}},generateSortMenuLabels:function(e){var t="";switch(e.label){case"Updated":t="ASC"!==e.sortOrder?"Last Updated (oldest)":"Last Updated (newest)";break;case"Name":t="ASC"!==e.sortOrder?"Name (a - z)":"Name (z - a)";break;case"Type":t="ASC"!==e.sortOrder?"Type (a - z)":"Type (z - a)"}return t},deleteDroplet:function(e){var t=this;this.dialogService.openConfirm({title:"Delete Flow",message:"All versions of this "+e.type.toLowerCase()+" will be deleted.",cancelButton:"Cancel",acceptButton:"Delete",acceptButtonColor:"fds-warn"}).afterClosed().subscribe((function(i){if(i){var n=e.link.href;"Flow"===e.type&&(n=n+"?version="+e.revision.version),t.api.deleteDroplet(n).subscribe((function(i){i.status&&200!==i.status||(t.droplets=t.droplets.filter((function(t){return t.identifier!==e.identifier})),t.snackBarService.openCoaster({title:"Success",message:"All versions of this "+e.type.toLowerCase()+" have been deleted.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}),t.droplet={},t.filterDroplets())}))}}))},openExportVersionedFlowDialog:function(e){this.matDialog.open(P,{disableClose:!0,width:"400px",data:{droplet:e}})},openImportNewFlowDialog:function(e,t){var i=this;this.matDialog.open(U,{disableClose:!0,width:"550px",data:{buckets:e,activeBucket:t}}).afterClosed().subscribe((function(e){null!=e&&i.router.navigateByUrl("explorer/grid-list/"+e)}))},openImportVersionedFlowDialog:function(e){var t=this;this.matDialog.open(I,{disableClose:!0,width:"550px",data:{droplet:e}}).afterClosed().subscribe((function(){t.getDropletSnapshotMetadata(e)}))},executeDropletAction:function(e,t){switch(e.name.toLowerCase()){case"import new version":this.openImportVersionedFlowDialog(t);break;case"export version":this.openExportVersionedFlowDialog(t);break;case"delete flow":this.deleteDroplet(t)}},getDropletSnapshotMetadata:function(e){this.api.getDropletSnapshotMetadata(e.link.href,!0).subscribe((function(t){e.snapshotMetadata=t}))},sortDroplets:function(e){if(!0===e.sortable){var t="ASC"===e.sortOrder?"DESC":"ASC";e.sortOrder=t,this.filterDroplets(e.name,t),this.dropletColumns.forEach((function(e){e.active=!1})),e.active=!0,this.activeDropletColumn=e}},filterDroplets:function(e,t){if(void 0===t&&(t="ASC"),void 0===e)for(var i=this.dropletColumns.length,n=0;n<i;n++)if(!0===this.dropletColumns[n].sortable){e=this.dropletColumns[n].name,this.dropletColumns.forEach((function(e){e.active=!1})),this.dropletColumns[n].active=!0,this.dropletColumns[n].sortOrder=t;break}var r;r=this.droplet.identifier?[this.droplet]:this.droplets;for(n=0;n<this.dropletsSearchTerms.length;n++)r=this.dataTableService.filterData(r,this.dropletsSearchTerms[n],!0);r=this.dataTableService.sortData(r,e,t),this.filteredDroplets=r,this.getAutoCompleteDroplets()},getAutoCompleteDroplets:function(){var e=this;this.autoCompleteDroplets=[],this.dropletColumns.forEach((function(t){return e.filteredDroplets.forEach((function(i){return i[t.name.toLowerCase()]?e.autoCompleteDroplets.push(i[t.name.toLowerCase()].toString()):""}))}))},executeBucketAction:function(e,t){var i=this;switch(e.name.toLowerCase()){case"delete":this.dialogService.openConfirm({title:"Delete Bucket",message:"All items stored in this bucket will be deleted as well.",cancelButton:"Cancel",acceptButton:"Delete",acceptButtonColor:"fds-warn"}).afterClosed().subscribe((function(e){e&&i.api.deleteBucket(t.identifier,t.revision.version).subscribe((function(e){e.status&&200!==e.status||(i.buckets=i.buckets.filter((function(e){return e.identifier!==t.identifier})),i.snackBarService.openCoaster({title:"Success",message:"All versions of all items in this bucket, as well as the bucket, have been deleted.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}),i.bucket={},i.filterBuckets(),i.determineAllBucketsSelectedState())}))}));break;case"manage":this.router.navigateByUrl("administration/workflow("+e.type+":"+e.name+"/bucket/"+t.identifier+")")}},filterBuckets:function(e,t){if(void 0===t&&(t="ASC"),void 0===e)for(var i=this.bucketColumns.length,n=0;n<i;n++)if(!0===this.bucketColumns[n].sortable){e=this.bucketColumns[n].name,this.bucketColumns.forEach((function(e){e.active=!1})),this.bucketColumns[n].active=!0,this.bucketColumns[n].sortOrder=t;break}var r=this.buckets;for(n=0;n<this.bucketsSearchTerms.length;n++)r=this.dataTableService.filterData(r,this.bucketsSearchTerms[n],!0);r=this.dataTableService.sortData(r,e,t),this.filteredBuckets=r;var s=0;this.filteredBuckets.forEach((function(e){e.checked&&s++})),this.isMultiBucketActionsDisabled=!(s>0),this.getAutoCompleteBuckets()},filterWritableBuckets:function(e){var t=[];return e.forEach((function(e){e.permissions.canWrite&&t.push(e)})),t},getAutoCompleteBuckets:function(){var e=this;this.autoCompleteBuckets=[],this.bucketColumns.forEach((function(t){return e.filteredBuckets.forEach((function(i){return i[t.name.toLowerCase()]?e.autoCompleteBuckets.push(i[t.name.toLowerCase()].toString()):""}))}))},sortBuckets:function(e){if(!0===e.sortable){var t="ASC"===e.sortOrder?"DESC":"ASC";e.sortOrder=t,this.filterBuckets(e.name,t),this.bucketColumns.forEach((function(e){e.active=!1})),e.active=!0}},allFilteredBucketsSelected:function(){var e=0,t=!0,i=!1;return this.filteredBuckets.forEach((function(n){n.checked&&e++,void 0!==n.checked&&!1!==n.checked||(t=!1),!1===n.permissions.canDelete&&(i=!0)})),this.disableMultiBucketDeleteAction=i,this.isMultiBucketActionsDisabled=!(e>0),t},determineAllBucketsSelectedState:function(){this.allFilteredBucketsSelected()?this.allBucketsSelected=!0:this.allBucketsSelected=!1},toggleBucketsSelectAll:function(){this.allBucketsSelected?this.selectAllBuckets():this.deselectAllBuckets()},selectAllBuckets:function(){this.filteredBuckets.forEach((function(e){e.checked=!0})),this.isMultiBucketActionsDisabled=!1},deselectAllBuckets:function(){this.filteredBuckets.forEach((function(e){e.checked=!1})),this.isMultiBucketActionsDisabled=!0},bucketsSearchRemove:function(e){var t=this.bucketsSearchTerms.indexOf(e);-1!==t&&this.bucketsSearchTerms.splice(t,1),this.filterBuckets(),this.determineAllBucketsSelectedState()},bucketsSearchAdd:function(e){this.bucketsSearchTerms.push(e),this.filterBuckets(),this.determineAllBucketsSelectedState()},deleteSelectedBuckets:function(){var e=this;this.dialogService.openConfirm({title:"Delete Buckets",message:"All versions of all flows of each selected bucket will be deleted.",cancelButton:"Cancel",acceptButton:"Delete",acceptButtonColor:"fds-warn"}).afterClosed().subscribe((function(t){t&&(e.filteredBuckets.forEach((function(t){t.checked&&e.api.deleteBucket(t.identifier,t.revision.version).subscribe((function(i){i.status&&200!==i.status||(e.buckets=e.buckets.filter((function(e){return e.identifier!==t.identifier})),e.snackBarService.openCoaster({title:"Success",message:"All versions of all items in "+t.name+" have been deleted.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}),e.filterBuckets())}))})),e.determineAllBucketsSelectedState())}))},sortUsersAndGroups:function(e){if(e.sortable){var t=e.name,i="ASC"===e.sortOrder?"DESC":"ASC";e.sortOrder=i,this.filterUsersAndGroups(t,i),this.userColumns.forEach((function(e){e.active=!1})),e.active=!0}},usersSearchRemove:function(e){var t=this.usersSearchTerms.indexOf(e);-1!==t&&this.usersSearchTerms.splice(t,1),this.filterUsersAndGroups(),this.determineAllUsersAndGroupsSelectedState()},usersSearchAdd:function(e){this.usersSearchTerms.push(e),this.filterUsersAndGroups(),this.determineAllUsersAndGroupsSelectedState()},filterUsersAndGroups:function(e,t){if(void 0===t&&(t="ASC"),void 0===e)for(var i=this.userColumns.length,n=0;n<i;n++)if(!0===this.userColumns[n].sortable){e=this.userColumns[n].name,this.userColumns.forEach((function(e){e.active=!1})),this.userColumns[n].active=!0,this.userColumns[n].sortOrder=t;break}var r=this.users,s=this.groups;for(n=0;n<this.usersSearchTerms.length;n++)r=this.dataTableService.filterData(r,this.usersSearchTerms[n],!0);r=this.dataTableService.sortData(r,e,t),this.filteredUsers=r;for(n=0;n<this.usersSearchTerms.length;n++)s=this.dataTableService.filterData(s,this.usersSearchTerms[n],!0);s=this.dataTableService.sortData(s,e,t),this.filteredUserGroups=s,this.getAutoCompleteUserAndGroups()},determineAllUsersAndGroupsSelectedState:function(){var e=!0,t=!1;this.filteredUserGroups.forEach((function(i){void 0!==i.checked&&!1!==i.checked||(e=!1),i.checked&&!1===i.configurable&&(t=!0)})),this.filteredUsers.forEach((function(i){void 0!==i.checked&&!1!==i.checked||(e=!1),i.checked&&!1===i.configurable&&(t=!0)})),this.disableMultiDeleteAction=t,this.allUsersAndGroupsSelected=e},getSelectedGroups:function(){return this.filteredUserGroups.filter((function(e){return e.checked}))},getSelectedUsers:function(){return this.filteredUsers.filter((function(e){return e.checked}))},toggleUsersSelectAll:function(){this.allUsersAndGroupsSelected?this.selectAllUsersAndGroups():this.deselectAllUsersAndGroups()},selectAllUsersAndGroups:function(){this.filteredUsers.forEach((function(e){e.checked=!0})),this.filteredUserGroups.forEach((function(e){e.checked=!0})),this.determineAllUsersAndGroupsSelectedState()},deselectAllUsersAndGroups:function(){this.filteredUsers.forEach((function(e){e.checked=!1})),this.filteredUserGroups.forEach((function(e){e.checked=!1})),this.determineAllUsersAndGroupsSelectedState()},getAutoCompleteUserAndGroups:function(){var e=this;this.autoCompleteUsersAndGroups=[],this.userColumns.forEach((function(t){e.filteredUsers.concat(e.filteredUserGroups).forEach((function(i){i[t.name.toLowerCase()]&&e.autoCompleteUsersAndGroups.push(i[t.name.toLowerCase()].toString())}))}))},executeUserAction:function(e,t){var i=this;switch(this.user=t,e.name.toLowerCase()){case"delete":return this.dialogService.openConfirm({title:"Delete User",message:"This user will lose all access to the registry.",cancelButton:"Cancel",acceptButton:"Delete",acceptButtonColor:"fds-warn"}).afterClosed().subscribe((function(e){e&&i.api.deleteUser(t.identifier,t.revision.version).subscribe((function(e){e.status&&200!==e.status||(i.users=i.users.filter((function(e){return e.identifier!==t.identifier})),i.snackBarService.openCoaster({title:"Success",message:"User: "+t.identity+" has been deleted.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}),i.filterUsersAndGroups(),i.determineAllUsersAndGroupsSelectedState())}))}));case"manage":this.router.navigateByUrl("administration/users("+e.type+":"+e.name+"/user/"+t.identifier+")")}},executeGroupAction:function(e,t){var i=this;switch(this.group=t,e.name.toLowerCase()){case"delete":this.dialogService.openConfirm({title:"Delete Group",message:"All policies granted to this group will be deleted as well.",cancelButton:"Cancel",acceptButton:"Delete",acceptButtonColor:"fds-warn"}).afterClosed().subscribe((function(e){e&&i.api.deleteUserGroup(t.identifier,t.revision.version).subscribe((function(e){e.status&&200!==e.status||(i.groups=i.groups.filter((function(e){return e.identifier!==t.identifier})),i.snackBarService.openCoaster({title:"Success",message:"Group: "+t.identity+" has been deleted.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}),i.filterUsersAndGroups(),i.determineAllUsersAndGroupsSelectedState())}))}));break;case"manage":this.router.navigateByUrl("administration/users("+e.type+":"+e.name+"/group/"+t.identifier+")")}},deleteSelectedUsersAndGroups:function(){var e=this;this.dialogService.openConfirm({title:"Delete Users/Groups",message:"The selected users will lose all access to the registry and all policies granted to the selected groups will be deleted.",cancelButton:"Cancel",acceptButton:"Delete",acceptButtonColor:"fds-warn"}).afterClosed().subscribe((function(t){t&&(e.filteredUserGroups.forEach((function(t){t.checked&&e.api.deleteUserGroup(t.identifier,t.revision.version).subscribe((function(i){i.status&&200!==i.status||(e.groups=e.groups.filter((function(e){return e.identifier!==t.identifier})),e.snackBarService.openCoaster({title:"Success",message:"User group: "+t.identity+" has been deleted.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}),e.filterUsersAndGroups())}))})),e.filteredUsers.forEach((function(t){t.checked&&e.api.deleteUser(t.identifier,t.revision.version).subscribe((function(i){i.status&&200!==i.status||(e.users=e.users.filter((function(e){return e.identifier!==t.identifier})),e.snackBarService.openCoaster({title:"Success",message:"User: "+t.identity+" has been deleted.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}),e.filterUsersAndGroups())}))})),e.determineAllUsersAndGroupsSelectedState())}))},experimental_filterData:function(e,t,i){var n="";t.indexOf(":")>-1&&(n=t.split(":")[0].trim(),t=t.split(":")[1].trim());var r=t?i?t.toLowerCase():t:"";return r&&(e=e.filter((function(e){return!(void 0===Object.keys(e).find((function(t){if(t!==n&&""!==n)return!1;var s=""+e[t];return(i?s.toLowerCase():s).indexOf(r)>-1})))}))),e}},L.parameters=[x,h,l.b,c.b,d.b,d.c,u.MatDialog];var T=L,G=i(1);function D(){}D.prototype={constructor:D,fadeAnimation:G.n("routeAnimation",[G.k("*",G.l({opacity:1})),G.m(":enter",[G.l({opacity:0}),G.e("0.5s ease-in")]),G.m(":leave",[G.e("0.5s ease-out",G.l({opacity:0}))])]),slideInLeftAnimation:G.n("routeAnimation",[G.k("*",G.l({opacity:1,transform:"translateX(0)"})),G.m(":enter",[G.l({opacity:0,transform:"translateX(-100%)"}),G.e("0.5s ease-in")]),G.m(":leave",[G.e("0.5s ease-out",G.l({opacity:0,transform:"translateX(100%)"}))])]),slideInDownAnimation:G.n("routeAnimation",[G.k("*",G.l({opacity:1,transform:"translateY(0)"})),G.m(":enter",[G.l({opacity:0,transform:"translateY(-100%)"}),G.e("0.5s ease-in")]),G.m(":leave",[G.e("0.5s ease-out",G.l({opacity:0,transform:"translateY(100%)"}))])]),flyInOutAnimation:G.n("flyInOut",[G.k("in",G.l({transform:"translateX(0)"})),G.m("void => *",[G.l({transform:"translateX(100%)"}),G.e("0.4s 0.1s ease-in")]),G.m("* => void",G.e("0.2s ease-out",G.l({transform:"translateX(-100%)"})))]),fadeInOutAnimation:G.n("fadeInOut",[G.k("in",G.l({opacity:1})),G.m("void => *",[G.l({opacity:0}),G.e("0.5s 0.1s ease-in")]),G.m("* => void",G.e("0.5s ease-out",G.l({opacity:0})))])};var E=new D;function N(e,t,i){this.nfRegistryService=e,this.dialogService=t,this.router=i}N.prototype={constructor:N,ngOnInit:function(){var e=this;this.nfRegistryService.perspective="not-found",this.dialogService.openConfirm({title:"Page Not Found",acceptButton:"Home",acceptButtonColor:"fds-warn"}).afterClosed().subscribe((function(t){t&&e.router.navigateByUrl(e.nfRegistryService.redirectUrl)}))}},N.annotations=[new a.Component({template:i(621),animations:[E.slideInLeftAnimation],host:{"[@routeAnimation]":"routeAnimation"}})],N.parameters=[T,d.b,c.b];var j=N;function F(e,t,i,n,r){this.nfRegistryService=e,this.nfRegistryApi=t,this.nfStorage=i,this.router=n,this.dialogService=r}function M(e,t,i,n,r){this.nfRegistryService=e,this.nfRegistryApi=t,this.nfStorage=i,this.router=n,this.dialogService=r}function V(e,t,i,n){this.nfRegistryService=e,this.nfRegistryApi=t,this.nfStorage=i,this.router=n}function W(e,t,i,n){this.nfRegistryService=e,this.nfRegistryApi=t,this.nfStorage=i,this.router=n}function Y(e,t,i,n,r){this.nfRegistryService=t,this.nfRegistryApi=e,this.dialogRef=i,this.nfRegistryLoginAuthGuard=n,this.router=r}F.prototype={constructor:F,canActivate:function(e,t){var i=t.url;return this.checkLogin(i)},checkLogin:function(e){var t=this,i=this;return new Promise((function(n){t.nfRegistryService.currentUser.resourcePermissions.tenants.canRead&&n(!0),t.nfRegistryService.redirectUrl=e,t.nfRegistryApi.ticketExchange().subscribe((function(){i.nfRegistryApi.loadCurrentUser().subscribe((function(e){if(e.error)401===e.error.status&&(i.nfStorage.removeItem("jwt"),i.router.navigateByUrl("login"),n(!1));else if(i.nfRegistryService.currentUser=e,!1===e.anonymous)null!==i.nfStorage.getItem("jwt")&&(i.nfRegistryService.currentUser.canLogout=!0,i.nfRegistryApi.getRegistryConfig().subscribe((function(e){i.nfRegistryService.registry.config=e}))),e.resourcePermissions.anyTopLevelResource.canRead&&e.resourcePermissions.tenants.canRead?n(!0):(i.dialogService.openConfirm({title:"Access denied",message:"Please contact your system administrator.",acceptButton:"Ok",acceptButtonColor:"fds-warn"}),i.router.navigateByUrl("explorer"),n(!1));else if("http:"===location.protocol)i.dialogService.openConfirm({title:"Not Applicable",message:"User administration is not configured for this registry.",acceptButton:"Ok",acceptButtonColor:"fds-warn"}),i.router.navigateByUrl("administration/workflow"),n(!1);else{if(i.nfRegistryService.currentUser.resourcePermissions.tenants.canRead)return n(!0),!0;i.dialogService.openConfirm({title:"Access denied",message:"Please contact your system administrator.",acceptButton:"Ok",acceptButtonColor:"fds-warn"}),i.router.navigateByUrl("explorer"),n(!1)}}))}))}))}},F.parameters=[T,x,h,c.b,d.b],M.prototype={constructor:M,canActivate:function(e,t){var i=t.url;return this.checkLogin(i)},checkLogin:function(e){var t=this,i=this;return new Promise((function(n){t.nfRegistryService.currentUser.resourcePermissions.buckets.canRead?n(!0):(t.nfRegistryService.redirectUrl=e,t.nfRegistryApi.ticketExchange().subscribe((function(){i.nfRegistryApi.loadCurrentUser().subscribe((function(e){if(e.error)401===e.error.status&&(i.nfStorage.removeItem("jwt"),i.router.navigateByUrl("login"),n(!1));else if(i.nfRegistryService.currentUser=e,!1===e.anonymous)null!==i.nfStorage.getItem("jwt")&&(i.nfRegistryService.currentUser.canLogout=!0,i.nfRegistryApi.getRegistryConfig().subscribe((function(e){i.nfRegistryService.registry.config=e}))),e.resourcePermissions.anyTopLevelResource.canRead&&e.resourcePermissions.buckets.canRead?n(!0):(i.dialogService.openConfirm({title:"Access denied",message:"Please contact your system administrator.",acceptButton:"Ok",acceptButtonColor:"fds-warn"}),i.router.navigateByUrl("explorer"),n(!1));else if("http:"===location.protocol)n(!0);else{if(i.nfRegistryService.currentUser.resourcePermissions.buckets.canRead)return void n(!0);i.dialogService.openConfirm({title:"Access denied",message:"Please contact your system administrator.",acceptButton:"Ok",acceptButtonColor:"fds-warn"}),i.router.navigateByUrl("explorer"),n(!1)}}))})))}))}},M.parameters=[T,x,h,c.b,d.b],V.prototype={constructor:V,canActivate:function(e,t){var i=t.url;return this.checkLogin(i)},checkLogin:function(){var e=this,t=this;return new Promise((function(i){e.nfRegistryService.currentUser.anonymous?i(!0):e.nfRegistryApi.ticketExchange().subscribe((function(){t.nfRegistryApi.loadCurrentUser().subscribe((function(e){t.nfRegistryService.currentUser=e,!1===e.anonymous?(null!==t.nfStorage.getItem("jwt")&&(t.nfRegistryService.currentUser.canLogout=!0,t.nfRegistryApi.getRegistryConfig().subscribe((function(e){t.nfRegistryService.registry.config=e}))),t.nfRegistryService.currentUser.canActivateResourcesAuthGuard=!0,i(!1),t.router.navigateByUrl(t.nfRegistryService.redirectUrl)):t.nfRegistryService.currentUser.anonymous&&!t.nfRegistryService.currentUser.loginSupported?(i(!1),t.router.navigateByUrl("/nifi-registry")):(t.nfRegistryService.currentUser.anonymous=!0,i(!0))}))}))}))}},V.parameters=[T,x,h,c.b],W.prototype={constructor:W,canActivate:function(e,t){var i=t.url;return this.checkLogin(i)},checkLogin:function(e){var t=this,i=this;return new Promise((function(n){!0!==t.nfRegistryService.currentUser.canActivateResourcesAuthGuard?(t.nfRegistryService.redirectUrl=e,t.nfRegistryApi.ticketExchange().subscribe((function(){i.nfRegistryApi.loadCurrentUser().subscribe((function(e){e.error?401===e.error.status&&(i.nfStorage.removeItem("jwt"),i.router.navigateByUrl("login"),n(!1)):(i.nfRegistryService.currentUser=e,e&&!1!==e.anonymous?!0===e.anonymous&&(null!==i.nfStorage.getItem("jwt")&&(i.nfRegistryService.currentUser.canLogout=!0),i.nfRegistryService.currentUser.canActivateResourcesAuthGuard=!0,n(!0)):i.nfStorage.hasItem("jwt")?(i.nfRegistryService.currentUser.canLogout=!0,i.nfRegistryService.currentUser.canActivateResourcesAuthGuard=!0,i.nfRegistryApi.getRegistryConfig().subscribe((function(e){i.nfRegistryService.registry.config=e})),n(!0)):(i.router.navigateByUrl("login"),n(!1)))}))}))):n(!0)}))}},W.parameters=[T,x,h,c.b],Y.prototype={constructor:Y,login:function(e,t){if(0!==e.value.length&&0!==t.value.length){var i=this;this.nfRegistryApi.postToLogin(e.value,t.value).subscribe((function(e){(e||200===e.status)&&(i.nfRegistryService.currentUser.anonymous=!1,i.dialogRef.close(),i.nfRegistryLoginAuthGuard.checkLogin(i.nfRegistryService.redirectUrl))}))}},cancel:function(){this.dialogRef.close(),this.router.navigateByUrl("/nifi-registry")}},Y.annotations=[new a.Component({template:i(622)})],Y.parameters=[x,T,u.MatDialogRef,V,c.b];var _=Y;function z(e,t){this.nfRegistryService=e,this.dialog=t}z.prototype={constructor:z,ngOnInit:function(){this.nfRegistryService.perspective="login",this.dialog.open(_,{disableClose:!0,width:"400px"})}},z.annotations=[new a.Component({template:i(623),animations:[E.slideInLeftAnimation],host:{"[@routeAnimation]":"routeAnimation"}})],z.parameters=[T,u.MatDialog];var $=z;function q(e){this.nfRegistryService=e}q.prototype={constructor:q,ngOnInit:function(){this.nfRegistryService.perspective="explorer"},ngOnDestroy:function(){this.nfRegistryService.bucket={},this.nfRegistryService.droplet={},this.nfRegistryService.explorerViewType="",this.nfRegistryService.buckets=[],this.nfRegistryService.droplets=[],this.nfRegistryService.filteredDroplets=[],this.nfRegistryService.perspective=""}},q.annotations=[new a.Component({template:i(624),animations:[E.slideInLeftAnimation],host:{"[@routeAnimation]":"routeAnimation"}})],q.parameters=[T];var H=q;function K(e,t){this.router=t,this.nfRegistryService=e}K.prototype={constructor:K,ngOnInit:function(){this.nfRegistryService.perspective="administration",this.nfRegistryService.setBreadcrumbState("in")},ngOnDestroy:function(){this.nfRegistryService.perspective="",this.nfRegistryService.setBreadcrumbState("out")},navigateToAdminPerspective:function(e){this.router.navigateByUrl("administration/"+e.value)},getUserTooltip:function(){return this.nfRegistryService.currentUser.anonymous?"Please configure NiFi Registry security to enable.":this.nfRegistryService.currentUser.resourcePermissions.tenants.canRead?"Manage NiFi Registry users and groups.":"You do not have permission. Please contact your System Administrator."}},K.annotations=[new a.Component({template:i(625),animations:[E.slideInLeftAnimation],host:{"[@routeAnimation]":"routeAnimation"}})],K.parameters=[T,c.b];var X=K;function J(e,t,i,n){this.snackBarService=t,this.nfRegistryService=i,this.nfRegistryApi=e,this.dialogRef=n,this.keepDialogOpen=!1}J.prototype={constructor:J,createNewGroup:function(e){var t=this;this.nfRegistryApi.createNewGroup(null,e.value,this.nfRegistryService.getSelectedUsers()).subscribe((function(e){e.error?t.dialogRef.close():(t.nfRegistryService.groups.push(e),t.nfRegistryService.filterUsersAndGroups(),t.nfRegistryService.allUsersAndGroupsSelected=!1,!0!==t.keepDialogOpen&&t.dialogRef.close(),t.snackBarService.openCoaster({title:"Success",message:"Group has been added.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}))}))},cancel:function(){this.dialogRef.close()},ngAfterViewChecked:function(){this.createNewGroupInput.nativeElement.focus()}},J.annotations=[new a.Component({template:i(626),queries:{createNewGroupInput:new a.ViewChild("createNewGroupInput",{static:!0})}})],J.parameters=[x,d.c,T,u.MatDialogRef];var Q=J;function Z(e,t,i,n){this.snackBarService=i,this.nfRegistryService=t,this.nfRegistryApi=e,this.dialogRef=n,this.keepDialogOpen=!1}Z.prototype={constructor:Z,addUser:function(e){var t=this;this.nfRegistryApi.addUser(e.value).subscribe((function(e){e.error?t.dialogRef.close():(t.nfRegistryService.users.push(e),t.nfRegistryService.allUsersAndGroupsSelected=!1,t.nfRegistryService.filterUsersAndGroups(),!0!==t.keepDialogOpen&&t.dialogRef.close(),t.snackBarService.openCoaster({title:"Success",message:"User has been added.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}))}))},cancel:function(){this.dialogRef.close()},ngAfterViewChecked:function(){this.newUserInput.nativeElement.focus()}},Z.annotations=[new a.Component({template:i(627),queries:{newUserInput:new a.ViewChild("newUserInput",{static:!0})}})],Z.parameters=[x,T,d.c,u.MatDialogRef];var ee=Z,te=i(392);function ie(e,t,i,n,r,s,o){this.route=n,this.nfStorage=t,this.nfRegistryService=i,this.nfRegistryApi=e,this.dialogService=r,this.dialog=s,this.router=o}ie.prototype={constructor:ie,ngOnInit:function(){var e=this;this.nfRegistryService.inProgress=!0,this.$subscription=this.route.params.pipe(Object(S.a)((function(){return e.nfRegistryService.adminPerspective="users",Object(te.a)(e.nfRegistryApi.getUsers(),e.nfRegistryApi.getUserGroups())}))).subscribe((function(t){if(t[0].status&&200!==t[0].status)404===t[0].status?e.router.navigateByUrl("administration/users"):409===t[0].status&&e.router.navigateByUrl("administration/workflow");else{var i=t[0];e.nfRegistryService.users=i}if(t[1].status&&200!==t[1].status)404===t[1].status?e.router.navigateByUrl("administration/users"):409===t[1].status&&e.router.navigateByUrl("administration/workflow");else{var n=t[1];e.nfRegistryService.groups=n}e.nfRegistryService.filterUsersAndGroups(),e.nfRegistryService.inProgress=!1}))},ngOnDestroy:function(){this.nfRegistryService.adminPerspective="",this.nfRegistryService.users=[],this.nfRegistryService.filteredUsers=[],this.nfRegistryService.groups=[],this.nfRegistryService.filteredUserGroups=[],this.nfRegistryService.allUsersAndGroupsSelected=!1,this.$subscription.unsubscribe()},addUser:function(){this.dialog.open(ee,{disableClose:!0,width:"400px"})},createNewGroup:function(){this.dialog.open(Q,{disableClose:!0,width:"400px"})},canEditUsers:function(){return this.nfRegistryService.currentUser.resourcePermissions.tenants.canWrite&&this.nfRegistryService.registry.config.supportsConfigurableUsersAndGroups}},ie.annotations=[new a.Component({template:i(628),animations:[E.slideInLeftAnimation],host:{"[@routeAnimation]":"routeAnimation"}})],ie.parameters=[x,h,T,c.a,c.b,d.b,u.MatDialog];var ne=ie;function re(e,t,i,n,r,s,o){this.dataTableService=t,this.snackBarService=s,this.dialogService=r,this.nfRegistryService=i,this.nfRegistryApi=e,this.dialogRef=n,this.data=o,this.groups=[],this.filteredUserGroups=[],this.isAddToSelectedGroupsDisabled=!0,this.userGroupsSearchTerms=[],this.allGroupsSelected=!1,this.userGroupsColumns=[{name:"identity",label:"Display Name",sortable:!0,tooltip:"Group name.",width:100}]}re.prototype={constructor:re,ngOnInit:function(){var e=this;e.nfRegistryApi.getUserGroups().subscribe((function(t){t.status&&200!==t.status?e.dialogService.openConfirm({title:"Error",message:t.error,acceptButton:"Close",acceptButtonColor:"fds-warn"}):(e.groups=t,e.groups=e.groups.filter((function(e){return!!e.configurable})),e.data.user.userGroups.forEach((function(t){e.groups=e.groups.filter((function(e){return e.identifier!==t.identifier}))})),e.filterGroups(),e.deselectAllUserGroups(),e.determineAllUserGroupsSelectedState())}))},filterGroups:function(e,t){if(void 0===t&&(t="ASC"),void 0===e)for(var i=this.userGroupsColumns.length,n=0;n<i;n++)if(!0===this.userGroupsColumns[n].sortable){e=this.userGroupsColumns[n].name,this.userGroupsColumns.forEach((function(e){e.active=!1})),this.userGroupsColumns[n].active=!0,this.userGroupsColumns[n].sortOrder=t;break}var r=this.groups;for(n=0;n<this.userGroupsSearchTerms.length;n++)r=this.dataTableService.filterData(r,this.userGroupsSearchTerms[n],!0);r=this.dataTableService.sortData(r,e,t),this.filteredUserGroups=r},sortUserGroups:function(e){if(e.sortable){var t=e.name,i="ASC"===e.sortOrder?"DESC":"ASC";e.sortOrder=i,this.filterGroups(t,i)}},toggleUserGroupsSelectAll:function(){this.allGroupsSelected?this.selectAllUserGroups():this.deselectAllUserGroups()},selectAllUserGroups:function(){this.filteredUserGroups.forEach((function(e){e.checked=!0})),this.isAddToSelectedGroupsDisabled=!1,this.allGroupsSelected=!0},deselectAllUserGroups:function(){this.filteredUserGroups.forEach((function(e){e.checked=!1})),this.isAddToSelectedGroupsDisabled=!0,this.allGroupsSelected=!1},determineAllUserGroupsSelectedState:function(){var e=0,t=!0;this.filteredUserGroups.forEach((function(i){i.checked&&e++,void 0!==i.checked&&!1!==i.checked||(t=!1)})),this.isAddToSelectedGroupsDisabled=!(e>0),this.allGroupsSelected=t},addToSelectedGroups:function(){var e=this;this.filteredUserGroups.filter((function(e){return e.checked})).forEach((function(t){t.users.push(e.data.user),e.nfRegistryApi.updateUserGroup(t.identifier,t.identity,t.users,t.revision).subscribe((function(t){e.dialogRef.close(),t.status&&200!==t.status?e.dialogService.openConfirm({title:"Error",message:t.error,acceptButton:"Close",acceptButtonColor:"fds-warn"}):e.snackBarService.openCoaster({title:"Success",message:"User has been added to the "+t.identity+" group.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3})}))}))},cancel:function(){this.dialogRef.close()}},re.annotations=[new a.Component({template:i(629)})],re.parameters=[x,l.b,T,u.MatDialogRef,d.b,d.c,u.MAT_DIALOG_DATA];var se=re;function oe(e,t,i,n,r,s,o,a){this.sortBy=null,this.sortOrder=null,this.filteredUserGroups=[],this.userGroupsSearchTerms=[],this.username="",this.manageUserPerspective="membership",this.userGroupsColumns=[{name:"identity",label:"Display Name",sortable:!0,tooltip:"Group name.",width:100,active:!0}],this.nfRegistryService=t,this.route=s,this.router=o,this.dialog=a,this.nfRegistryApi=e,this.dialogService=n,this.snackBarService=r,this.dataTableService=i}oe.prototype={constructor:oe,ngOnInit:function(){var e=this;this.$subscription=e.route.params.pipe(Object(S.a)((function(t){return e.nfRegistryApi.getUser(t.userId)}))).subscribe((function(t){t.status&&200!==t.status?404===t.status?e.router.navigateByUrl("administration/users"):409===t.status&&e.router.navigateByUrl("administration/workflow"):(e.nfRegistryService.sidenav.open(),e.nfRegistryService.user=t,e.username=t.identity,e.sortGroups(e.userGroupsColumns.find((function(e){return!0===e.active}))))}))},ngOnDestroy:function(){this.nfRegistryService.sidenav.close(),this.$subscription.unsubscribe()},closeSideNav:function(){this.router.navigateByUrl("administration/users")},toggleUserManageBucketsPrivileges:function(e,t){var i=this,n=this;if(e.checked){var r=function(e){i.nfRegistryService.BUCKETS_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.BUCKETS_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(t){t.status&&404===t.status?n.nfRegistryApi.postPolicyActionResource(i,e,[n.nfRegistryService.user],[]).subscribe((function(e){e.users.forEach((function(e){e.identifier===n.nfRegistryService.user.identifier&&n.nfRegistryApi.getUser(n.nfRegistryService.user.identifier).subscribe((function(e){n.nfRegistryService.user=e}))}))})):(t.users.push(n.nfRegistryService.user),n.nfRegistryApi.putPolicyActionResource(t.identifier,t.action,t.resource,t.users,t.userGroups,t.revision).subscribe((function(e){e.users.forEach((function(e){e.identifier===n.nfRegistryService.user.identifier&&n.nfRegistryApi.getUser(n.nfRegistryService.user.identifier).subscribe((function(e){n.nfRegistryService.user=e}))}))})))}))}))};for(var s in this.nfRegistryService.BUCKETS_PRIVS)r(s)}else{var o=function(e){i.nfRegistryService.BUCKETS_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.BUCKETS_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(e){e.status&&404===e.status||(e.users=e.users.filter((function(e){return e.identifier!==n.nfRegistryService.user.identifier})),n.nfRegistryApi.putPolicyActionResource(e.identifier,e.action,e.resource,e.users,e.userGroups,e.revision).subscribe((function(){n.nfRegistryApi.getUser(n.nfRegistryService.user.identifier).subscribe((function(e){n.nfRegistryService.user=e}))})))}))}))};for(var a in this.nfRegistryService.BUCKETS_PRIVS)o(a)}},toggleUserManageTenantsPrivileges:function(e,t){var i=this,n=this;if(e.checked){var r=function(e){i.nfRegistryService.TENANTS_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.TENANTS_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(t){t.status&&404===t.status?n.nfRegistryApi.postPolicyActionResource(i,e,[n.nfRegistryService.user],[]).subscribe((function(e){e.users.forEach((function(e){e.identifier===n.nfRegistryService.user.identifier&&n.nfRegistryApi.getUser(n.nfRegistryService.user.identifier).subscribe((function(e){n.nfRegistryService.user=e}))}))})):(t.users.push(n.nfRegistryService.user),n.nfRegistryApi.putPolicyActionResource(t.identifier,t.action,t.resource,t.users,t.userGroups,t.revision).subscribe((function(e){e.users.forEach((function(e){e.identifier===n.nfRegistryService.user.identifier&&n.nfRegistryApi.getUser(n.nfRegistryService.user.identifier).subscribe((function(e){n.nfRegistryService.user=e}))}))})))}))}))};for(var s in this.nfRegistryService.TENANTS_PRIVS)r(s)}else{var o=function(e){i.nfRegistryService.TENANTS_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.TENANTS_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(e){e.status&&404===e.status||(e.users=e.users.filter((function(e){return e.identifier!==n.nfRegistryService.user.identifier})),n.nfRegistryApi.putPolicyActionResource(e.identifier,e.action,e.resource,e.users,e.userGroups,e.revision).subscribe((function(){n.nfRegistryApi.getUser(n.nfRegistryService.user.identifier).subscribe((function(e){n.nfRegistryService.user=e}))})))}))}))};for(var a in this.nfRegistryService.TENANTS_PRIVS)o(a)}},toggleUserManagePoliciesPrivileges:function(e,t){var i=this,n=this;if(e.checked){var r=function(e){i.nfRegistryService.POLICIES_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.POLICIES_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(t){t.status&&404===t.status?n.nfRegistryApi.postPolicyActionResource(i,e,[n.nfRegistryService.user],[]).subscribe((function(e){e.users.forEach((function(e){e.identifier===n.nfRegistryService.user.identifier&&n.nfRegistryApi.getUser(n.nfRegistryService.user.identifier).subscribe((function(e){n.nfRegistryService.user=e}))}))})):(t.users.push(n.nfRegistryService.user),n.nfRegistryApi.putPolicyActionResource(t.identifier,t.action,t.resource,t.users,t.userGroups,t.revision).subscribe((function(e){e.users.forEach((function(e){e.identifier===n.nfRegistryService.user.identifier&&n.nfRegistryApi.getUser(n.nfRegistryService.user.identifier).subscribe((function(e){n.nfRegistryService.user=e}))}))})))}))}))};for(var s in this.nfRegistryService.POLICIES_PRIVS)r(s)}else{var o=function(e){i.nfRegistryService.POLICIES_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.POLICIES_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(e){e.status&&404===e.status||(e.users=e.users.filter((function(e){return e.identifier!==n.nfRegistryService.user.identifier})),n.nfRegistryApi.putPolicyActionResource(e.identifier,e.action,e.resource,e.users,e.userGroups,e.revision).subscribe((function(){n.nfRegistryApi.getUser(n.nfRegistryService.user.identifier).subscribe((function(e){n.nfRegistryService.user=e}))})))}))}))};for(var a in this.nfRegistryService.POLICIES_PRIVS)o(a)}},toggleUserManageProxyPrivileges:function(e,t){var i=this,n=this;if(e.checked){var r=function(e){i.nfRegistryService.PROXY_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.PROXY_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(t){t.status&&404===t.status?n.nfRegistryApi.postPolicyActionResource(i,e,[n.nfRegistryService.user],[]).subscribe((function(e){e.users.forEach((function(e){e.identifier===n.nfRegistryService.user.identifier&&n.nfRegistryApi.getUser(n.nfRegistryService.user.identifier).subscribe((function(e){n.nfRegistryService.user=e}))}))})):(t.users.push(n.nfRegistryService.user),n.nfRegistryApi.putPolicyActionResource(t.identifier,t.action,t.resource,t.users,t.userGroups,t.revision).subscribe((function(e){e.users.forEach((function(e){e.identifier===n.nfRegistryService.user.identifier&&n.nfRegistryApi.getUser(n.nfRegistryService.user.identifier).subscribe((function(e){n.nfRegistryService.user=e}))}))})))}))}))};for(var s in this.nfRegistryService.PROXY_PRIVS)r(s)}else{var o=function(e){i.nfRegistryService.PROXY_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.PROXY_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(e){e.status&&404===e.status||(e.users=e.users.filter((function(e){return e.identifier!==n.nfRegistryService.user.identifier})),n.nfRegistryApi.putPolicyActionResource(e.identifier,e.action,e.resource,e.users,e.userGroups,e.revision).subscribe((function(){n.nfRegistryApi.getUser(n.nfRegistryService.user.identifier).subscribe((function(e){n.nfRegistryService.user=e}))})))}))}))};for(var a in this.nfRegistryService.PROXY_PRIVS)o(a)}},addUserToGroups:function(){var e=this;this.dialog.open(se,{data:{user:this.nfRegistryService.user,disableClose:!0},width:"400px"}).afterClosed().subscribe((function(){e.nfRegistryApi.getUser(e.nfRegistryService.user.identifier).subscribe((function(t){t.status&&200!==t.status||(e.nfRegistryService.user=t,e.username=t.identity,e.filterGroups(this.sortBy,this.sortOrder),e.nfRegistryService.users.filter((function(t){return e.nfRegistryService.user.identifier===t.identifier})).forEach((function(e){e.identity=t.identity,e.revision=t.revision})))}))}))},filterGroups:function(e,t){if(void 0===t&&(t=void 0===this.sortOrder?"ASC":this.sortOrder),void 0===e)if(void 0===this.sortBy){for(var i=this.userGroupsColumns.length,n=0;n<i;n++)if(!0===this.userGroupsColumns[n].sortable){e=this.userGroupsColumns[n].name,this.userGroupsColumns.forEach((function(e){e.active=!1})),this.userGroupsColumns[n].active=!0,this.userGroupsColumns[n].sortOrder=t;break}}else e=this.sortBy;var r=this.nfRegistryService.user.userGroups||[];for(n=0;n<this.userGroupsSearchTerms.length;n++)r=this.dataTableService.filterData(r,this.userGroupsSearchTerms[n],!0);r=this.dataTableService.sortData(r,e,t),this.filteredUserGroups=r},sortGroups:function(e){e.sortable&&(this.sortBy=e.name,this.sortOrder="ASC"===e.sortOrder?"DESC":"ASC",e.sortOrder=this.sortOrder,this.filterGroups(this.sortBy,this.sortOrder),this.userGroupsColumns.forEach((function(e){e.active=!1})),e.active=!0)},removeUserFromGroup:function(e){var t=this;this.nfRegistryApi.getUserGroup(e.identifier).subscribe((function(i){if(!i.error){var n=i,r=n.users.filter((function(e){return t.nfRegistryService.user.identifier!==e.identifier}));t.nfRegistryApi.updateUserGroup(n.identifier,n.identity,r,n.revision).subscribe((function(i){t.nfRegistryApi.getUser(t.nfRegistryService.user.identifier).subscribe((function(e){t.nfRegistryService.user=e,t.username=e.identity,t.filterGroups(this.sortBy,this.sortOrder)})),i.status&&200!==i.status?t.dialogService.openConfirm({title:"Error",message:i.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}):t.snackBarService.openCoaster({title:"Success",message:"This user has been removed from the "+e.identity+" group.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3})}))}}))},updateUserName:function(e){var t=this;this.nfRegistryApi.updateUser(this.nfRegistryService.user.identifier,e,this.nfRegistryService.user.revision).subscribe((function(e){e.status&&200!==e.status?409===e.status?(t.username=t.nfRegistryService.user.identity,t.dialogService.openConfirm({title:"Error",message:"This user already exists. Please enter a different identity/user name.",acceptButton:"Ok",acceptButtonColor:"fds-warn"})):404===e.status?t.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}):(t.username=t.nfRegistryService.user.identity,t.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}).afterClosed().subscribe((function(){t.nfRegistryApi.getUser(t.nfRegistryService.user.identifier).subscribe((function(e){e.status&&200!==e.status?404===e.status&&t.router.navigateByUrl("administration/users"):(t.nfRegistryService.user=e,t.username=e.identity,t.filterGroups(this.sortBy,this.sortOrder))}))}))):(t.nfRegistryService.user=e,t.nfRegistryService.users.filter((function(e){return t.nfRegistryService.user.identifier===e.identifier})).forEach((function(t){t.identity=e.identity,t.revision=e.revision})),t.snackBarService.openCoaster({title:"Success",message:"This user name has been updated.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}))}))},canAddNonConfigurableUserToGroup:function(){var e=!0;return this.nfRegistryService.groups.forEach((function(t){!0===t.configurable&&(e=!1)})),e},canEditSpecialPrivileges:function(){return this.nfRegistryService.currentUser.resourcePermissions.policies.canWrite&&!(this.nfRegistryService.currentUser.identity===this.nfRegistryService.user.identity)&&this.nfRegistryService.registry.config.supportsConfigurableAuthorizer}},oe.annotations=[new a.Component({template:i(630)})],oe.parameters=[x,T,l.b,d.b,d.c,c.a,c.b,u.MatDialog];var ae=oe;function ce(e,t,i,n,r,s,o){this.dataTableService=t,this.snackBarService=s,this.dialogService=r,this.nfRegistryService=i,this.nfRegistryApi=e,this.dialogRef=n,this.data=o,this.users=[],this.filteredUsers=[],this.isAddSelectedUsersToGroupDisabled=!0,this.usersSearchTerms=[],this.allUsersSelected=!1,this.usersColumns=[{name:"identity",label:"Display Name",sortable:!0,tooltip:"Group name.",width:100}]}ce.prototype={constructor:ce,ngOnInit:function(){var e=this;e.nfRegistryApi.getUsers().subscribe((function(t){t.status&&200!==t.status?e.dialogService.openConfirm({title:"Error",message:t.error,acceptButton:"Close",acceptButtonColor:"fds-warn"}):(e.users=t,e.data.group.users.forEach((function(t){e.users=e.users.filter((function(e){return e.identifier!==t.identifier}))})),e.filterUsers(),e.deselectAllUsers(),e.determineAllUsersSelectedState())}))},filterUsers:function(e,t){if(void 0===t&&(t="ASC"),void 0===e)for(var i=this.usersColumns.length,n=0;n<i;n++)if(!0===this.usersColumns[n].sortable){e=this.usersColumns[n].name,this.usersColumns.forEach((function(e){e.active=!1})),this.usersColumns[n].active=!0,this.usersColumns[n].sortOrder=t;break}var r=this.users;for(n=0;n<this.usersSearchTerms.length;n++)r=this.dataTableService.filterData(r,this.usersSearchTerms[n],!0);r=this.dataTableService.sortData(r,e,t),this.filteredUsers=r},sortUsers:function(e){if(e.sortable){var t=e.name,i="ASC"===e.sortOrder?"DESC":"ASC";e.sortOrder=i,this.filterUsers(t,i)}},toggleUsersSelectAll:function(){this.allUsersSelected?this.selectAllUsers():this.deselectAllUsers()},selectAllUsers:function(){this.filteredUsers.forEach((function(e){e.checked=!0})),this.isAddSelectedUsersToGroupDisabled=!1,this.allUsersSelected=!0},deselectAllUsers:function(){this.filteredUsers.forEach((function(e){e.checked=!1})),this.isAddSelectedUsersToGroupDisabled=!0,this.allUsersSelected=!1},determineAllUsersSelectedState:function(){var e=0,t=!0;this.filteredUsers.forEach((function(i){i.checked&&e++,void 0!==i.checked&&!1!==i.checked||(t=!1)})),this.isAddSelectedUsersToGroupDisabled=!(e>0),this.allUsersSelected=t},addSelectedUsersToGroup:function(){var e=this;this.filteredUsers.filter((function(e){return e.checked})).forEach((function(t){e.data.group.users.push(t)})),this.nfRegistryApi.updateUserGroup(e.data.group.identifier,e.data.group.identity,e.data.group.users,e.data.group.revision).subscribe((function(t){e.dialogRef.close(),t.status&&200!==t.status?e.dialogService.openConfirm({title:"Error",message:t.error,acceptButton:"Close",acceptButtonColor:"fds-warn"}):e.snackBarService.openCoaster({title:"Success",message:"Selected users have been added to the "+e.data.group.identity+" group.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3})}))},cancel:function(){this.dialogRef.close()}},ce.annotations=[new a.Component({template:i(631)})],ce.parameters=[x,l.b,T,u.MatDialogRef,d.b,d.c,u.MAT_DIALOG_DATA];var le=ce;function ue(e,t,i,n,r,s,o,a){this.sortBy=null,this.sortOrder=null,this.filteredUsers=[],this.usersSearchTerms=[],this.groupname="",this.manageGroupPerspective="membership",this.usersColumns=[{name:"identity",label:"Display Name",sortable:!0,tooltip:"Group name.",width:100,active:!0}],this.nfRegistryService=t,this.route=s,this.router=o,this.dialog=a,this.nfRegistryApi=e,this.dialogService=n,this.snackBarService=r,this.dataTableService=i}ue.prototype={constructor:ue,ngOnInit:function(){var e=this;this.$subscription=e.route.params.pipe(Object(S.a)((function(t){return e.nfRegistryApi.getUserGroup(t.groupId)}))).subscribe((function(t){t.status&&200!==t.status?404===t.status?e.router.navigateByUrl("administration/users"):409===t.status&&e.router.navigateByUrl("administration/workflow"):(e.nfRegistryService.sidenav.open(),e.nfRegistryService.group=t,e.groupname=t.identity,e.sortUsers(e.usersColumns.find((function(e){return!0===e.active}))))}))},ngOnDestroy:function(){this.nfRegistryService.sidenav.close(),this.$subscription.unsubscribe()},closeSideNav:function(){this.router.navigateByUrl("administration/users")},toggleGroupManageBucketsPrivileges:function(e,t){var i=this,n=this;if(e.checked){var r=function(e){i.nfRegistryService.BUCKETS_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.BUCKETS_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(t){t.status&&404===t.status?n.nfRegistryApi.postPolicyActionResource(i,e,n.nfRegistryService.group.users,[]).subscribe((function(e){e.userGroups.forEach((function(e){e.identifier===n.nfRegistryService.group.identifier&&n.nfRegistryApi.getUserGroup(n.nfRegistryService.group.identifier).subscribe((function(e){n.nfRegistryService.group=e}))}))})):(t.userGroups.push(n.nfRegistryService.group),n.nfRegistryApi.putPolicyActionResource(t.identifier,t.action,t.resource,t.users,t.userGroups,t.revision).subscribe((function(e){e.userGroups.forEach((function(e){e.identifier===n.nfRegistryService.group.identifier&&n.nfRegistryApi.getUserGroup(n.nfRegistryService.group.identifier).subscribe((function(e){n.nfRegistryService.group=e}))}))})))}))}))};for(var s in this.nfRegistryService.BUCKETS_PRIVS)r(s)}else{var o=function(e){i.nfRegistryService.BUCKETS_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.BUCKETS_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(e){e.status&&404===e.status||(e.userGroups=e.userGroups.filter((function(e){return e.identifier!==n.nfRegistryService.group.identifier})),n.nfRegistryApi.putPolicyActionResource(e.identifier,e.action,e.resource,e.users,e.userGroups,e.revision).subscribe((function(){n.nfRegistryApi.getUserGroup(n.nfRegistryService.group.identifier).subscribe((function(e){n.nfRegistryService.group=e}))})))}))}))};for(var a in this.nfRegistryService.BUCKETS_PRIVS)o(a)}},toggleGroupManageTenantsPrivileges:function(e,t){var i=this,n=this;if(e.checked){var r=function(e){i.nfRegistryService.TENANTS_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.TENANTS_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(t){t.status&&404===t.status?n.nfRegistryApi.postPolicyActionResource(i,e,n.nfRegistryService.group.users,[]).subscribe((function(e){e.userGroups.forEach((function(e){e.identifier===n.nfRegistryService.group.identifier&&n.nfRegistryApi.getUserGroup(n.nfRegistryService.group.identifier).subscribe((function(e){n.nfRegistryService.group=e}))}))})):(t.userGroups.push(n.nfRegistryService.group),n.nfRegistryApi.putPolicyActionResource(t.identifier,t.action,t.resource,t.users,t.userGroups,t.revision).subscribe((function(e){e.userGroups.forEach((function(e){e.identifier===n.nfRegistryService.group.identifier&&n.nfRegistryApi.getUserGroup(n.nfRegistryService.group.identifier).subscribe((function(e){n.nfRegistryService.group=e}))}))})))}))}))};for(var s in this.nfRegistryService.TENANTS_PRIVS)r(s)}else{var o=function(e){i.nfRegistryService.TENANTS_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.TENANTS_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(e){e.status&&404===e.status||(e.userGroups=e.userGroups.filter((function(e){return e.identifier!==n.nfRegistryService.group.identifier})),n.nfRegistryApi.putPolicyActionResource(e.identifier,e.action,e.resource,e.users,e.userGroups,e.revision).subscribe((function(){n.nfRegistryApi.getUserGroup(n.nfRegistryService.group.identifier).subscribe((function(e){n.nfRegistryService.group=e}))})))}))}))};for(var a in this.nfRegistryService.TENANTS_PRIVS)o(a)}},toggleGroupManagePoliciesPrivileges:function(e,t){var i=this,n=this;if(e.checked){var r=function(e){i.nfRegistryService.POLICIES_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.POLICIES_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(t){t.status&&404===t.status?n.nfRegistryApi.postPolicyActionResource(i,e,n.nfRegistryService.group.users,[]).subscribe((function(e){e.userGroups.forEach((function(e){e.identifier===n.nfRegistryService.group.identifier&&n.nfRegistryApi.getUserGroup(n.nfRegistryService.group.identifier).subscribe((function(e){n.nfRegistryService.group=e}))}))})):(t.userGroups.push(n.nfRegistryService.group),n.nfRegistryApi.putPolicyActionResource(t.identifier,t.action,t.resource,t.users,t.userGroups,t.revision).subscribe((function(e){e.userGroups.forEach((function(e){e.identifier===n.nfRegistryService.group.identifier&&n.nfRegistryApi.getUserGroup(n.nfRegistryService.group.identifier).subscribe((function(e){n.nfRegistryService.group=e}))}))})))}))}))};for(var s in this.nfRegistryService.POLICIES_PRIVS)r(s)}else{var o=function(e){i.nfRegistryService.POLICIES_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.POLICIES_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(e){e.status&&404===e.status||(e.userGroups=e.userGroups.filter((function(e){return e.identifier!==n.nfRegistryService.group.identifier})),n.nfRegistryApi.putPolicyActionResource(e.identifier,e.action,e.resource,e.users,e.userGroups,e.revision).subscribe((function(){n.nfRegistryApi.getUserGroup(n.nfRegistryService.group.identifier).subscribe((function(e){n.nfRegistryService.group=e}))})))}))}))};for(var a in this.nfRegistryService.POLICIES_PRIVS)o(a)}},toggleGroupManageProxyPrivileges:function(e,t){var i=this,n=this;if(e.checked){var r=function(e){i.nfRegistryService.PROXY_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.PROXY_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(t){t.status&&404===t.status?n.nfRegistryApi.postPolicyActionResource(i,e,n.nfRegistryService.group.users,[]).subscribe((function(e){e.userGroups.forEach((function(e){e.identifier===n.nfRegistryService.group.identifier&&n.nfRegistryApi.getUserGroup(n.nfRegistryService.group.identifier).subscribe((function(e){n.nfRegistryService.group=e}))}))})):(t.userGroups.push(n.nfRegistryService.group),n.nfRegistryApi.putPolicyActionResource(t.identifier,t.action,t.resource,t.users,t.userGroups,t.revision).subscribe((function(e){e.userGroups.forEach((function(e){e.identifier===n.nfRegistryService.group.identifier&&n.nfRegistryApi.getUserGroup(n.nfRegistryService.group.identifier).subscribe((function(e){n.nfRegistryService.group=e}))}))})))}))}))};for(var s in this.nfRegistryService.PROXY_PRIVS)r(s)}else{var o=function(e){i.nfRegistryService.PROXY_PRIVS.hasOwnProperty(e)&&i.nfRegistryService.PROXY_PRIVS[e].forEach((function(i){t&&i!==t||n.nfRegistryApi.getPolicyActionResource(i,e).subscribe((function(e){e.status&&404===e.status||(e.userGroups=e.userGroups.filter((function(e){return e.identifier!==n.nfRegistryService.group.identifier})),n.nfRegistryApi.putPolicyActionResource(e.identifier,e.action,e.resource,e.users,e.userGroups,e.revision).subscribe((function(){n.nfRegistryApi.getUserGroup(n.nfRegistryService.group.identifier).subscribe((function(e){n.nfRegistryService.group=e}))})))}))}))};for(var a in this.nfRegistryService.PROXY_PRIVS)o(a)}},addUsersToGroup:function(){var e=this;this.dialog.open(le,{data:{group:this.nfRegistryService.group,disableClose:!0}}).afterClosed().subscribe((function(){e.nfRegistryApi.getUserGroup(e.nfRegistryService.group.identifier).subscribe((function(t){t.status&&200!==t.status||(e.nfRegistryService.group=t,e.groupname=t.identity,e.filterUsers(),e.nfRegistryService.groups.filter((function(t){return e.nfRegistryService.group.identifier===t.identifier})).forEach((function(e){e.identity=t.identity,e.revision=t.revision})))}))}))},filterUsers:function(e,t){if(void 0===t&&(t=void 0===this.sortOrder?"ASC":this.sortOrder),void 0===e)if(void 0===this.sortBy){for(var i=this.usersColumns.length,n=0;n<i;n++)if(!0===this.usersColumns[n].sortable){e=this.usersColumns[n].name,this.usersColumns.forEach((function(e){e.active=!1})),this.usersColumns[n].active=!0,this.usersColumns[n].sortOrder=t;break}}else e=this.sortBy;var r=this.nfRegistryService.group.users||[];for(n=0;n<this.usersSearchTerms.length;n++)r=this.filterData(r,this.usersSearchTerms[n],!0);r=this.dataTableService.sortData(r,e,t),this.filteredUsers=r},sortUsers:function(e){e.sortable&&(this.sortBy=e.name,this.sortOrder="ASC"===e.sortOrder?"DESC":"ASC",e.sortOrder=this.sortOrder,this.filterUsers(this.sortBy,this.sortOrder),this.usersColumns.forEach((function(e){e.active=!1})),e.active=!0)},removeUserFromGroup:function(e){var t=this,i=this.nfRegistryService.group.users.filter((function(t){return t.identifier!==e.identifier}));this.nfRegistryApi.updateUserGroup(this.nfRegistryService.group.identifier,this.nfRegistryService.group.identity,i,this.nfRegistryService.group.revision).subscribe((function(e){t.nfRegistryApi.getUserGroup(t.nfRegistryService.group.identifier).subscribe((function(e){t.nfRegistryService.group=e,t.filterUsers()})),e.status&&200!==e.status?t.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}):t.snackBarService.openCoaster({title:"Success",message:"The user has been removed from the "+t.nfRegistryService.group.identity+" group.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3})}))},updateGroupName:function(e){var t=this;this.nfRegistryApi.updateUserGroup(this.nfRegistryService.group.identifier,e,this.nfRegistryService.group.users,this.nfRegistryService.group.revision).subscribe((function(e){e.status&&200!==e.status?409===e.status?(t.groupname=t.nfRegistryService.group.identity,t.dialogService.openConfirm({title:"Error",message:"This group already exists. Please enter a different identity/group name.",acceptButton:"Ok",acceptButtonColor:"fds-warn"})):404===e.status?t.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}):(t.groupname=t.nfRegistryService.group.identity,t.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}).afterClosed().subscribe((function(){t.nfRegistryApi.getUserGroup(t.nfRegistryService.group.identifier).subscribe((function(e){e.status&&200!==e.status?404===e.status&&t.router.navigateByUrl("administration/users"):(t.nfRegistryService.group=e,t.groupname=e.identity,t.filterUsers())}))}))):(t.nfRegistryService.group=e,t.nfRegistryService.groups.filter((function(e){return t.nfRegistryService.group.identifier===e.identifier})).forEach((function(t){t.identity=e.identity,t.revision=e.revision})),t.snackBarService.openCoaster({title:"Success",message:"This group name has been updated.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}))}))},canEditSpecialPrivileges:function(){return this.nfRegistryService.currentUser.resourcePermissions.policies.canWrite&&this.nfRegistryService.registry.config.supportsConfigurableAuthorizer}},ue.annotations=[new a.Component({template:i(632)})],ue.parameters=[x,T,l.b,d.b,d.c,c.a,c.b,u.MatDialog];var de=ue;function fe(e,t,i,n,r,s,o){this.users=[],this.groups=[],this.userOrGroup={},this.filteredGroups=[],this.filteredUsers=[],this.usersSearchTerms=[],this.userGroupsSearchTerms=[],this.dataTableService=t,this.snackBarService=i,this.nfRegistryService=n,this.route=r,this.nfRegistryApi=e,this.dialogRef=s,this.data=o}fe.prototype={constructor:fe,ngOnInit:function(){var e=this;this.route.params.pipe(Object(S.a)((function(){return Object(te.a)(e.nfRegistryApi.getUsers(),e.nfRegistryApi.getUserGroups())}))).subscribe((function(t){e.users=t[0],e.users=e.users.filter((function(t){return t.checked=!1,e.data.users.indexOf(t.identity)<0})),e.groups=t[1],e.groups=e.groups.filter((function(t){return t.checked=!1,e.data.groups.indexOf(t.identity)<0})),e.filterUsersAndGroups()}))},filterUsersAndGroups:function(e,t){if(void 0===t&&(t="ASC"),void 0===e)for(var i=this.nfRegistryService.userGroupsColumns.length,n=0;n<i;n++)if(!0===this.nfRegistryService.userGroupsColumns[n].sortable){e=this.nfRegistryService.userGroupsColumns[n].name,this.nfRegistryService.userGroupsColumns.forEach((function(e){e.active=!1})),this.nfRegistryService.userGroupsColumns[n].active=!0,this.nfRegistryService.userGroupsColumns[n].sortOrder=t;break}var r=this.groups;for(n=0;n<this.userGroupsSearchTerms.length;n++)r=this.dataTableService.filterData(r,this.userGroupsSearchTerms[n],!0);r=this.dataTableService.sortData(r,e,t),this.filteredUserGroups=r;var s=this.users;for(n=0;n<this.usersSearchTerms.length;n++)s=this.dataTableService.filterData(s,this.usersSearchTerms[n],!0);s=this.dataTableService.sortData(s,e,t),this.filteredUsers=s},sortUserAndGroups:function(e){if(e.sortable){var t=e.name,i="ASC"===e.sortOrder?"DESC":"ASC";e.sortOrder=i,this.filterUsersAndGroups(t,i)}},applyPolicy:function(){var e=this,t="",i=[];this.readCheckbox.checked&&(t="read",i.push(t),this.nfRegistryApi.getResourcePoliciesById(t,"/buckets",this.nfRegistryService.bucket.identifier).subscribe((function(i){if(t="read",i.status&&404===i.status){var n=[],r=[];"user"===e.userOrGroup.type?n.push(e.userOrGroup):r.push(e.userOrGroup),e.nfRegistryApi.postPolicyActionResource(t,"/buckets/"+e.nfRegistryService.bucket.identifier,n,r).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t,e.snackBarService.openCoaster({title:"Success",message:"Policy created.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3})}))}))}else"user"===e.userOrGroup.type?i.users.push(e.userOrGroup):i.userGroups.push(e.userOrGroup),e.nfRegistryApi.putPolicyActionResource(i.identifier,i.action,i.resource,i.users,i.userGroups,i.revision).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t,e.snackBarService.openCoaster({title:"Success",message:"Policy created.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3})}))}))}))),this.writeCheckbox.checked&&(t="write",i.push(t),this.nfRegistryApi.getResourcePoliciesById(t,"/buckets",this.nfRegistryService.bucket.identifier).subscribe((function(i){if(t="write",i.status&&404===i.status){var n=[],r=[];"user"===e.userOrGroup.type?n.push(e.userOrGroup):r.push(e.userOrGroup),e.nfRegistryApi.postPolicyActionResource(t,"/buckets/"+e.nfRegistryService.bucket.identifier,n,r).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t,e.snackBarService.openCoaster({title:"Success",message:"Policy created.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3})}))}))}else"user"===e.userOrGroup.type?i.users.push(e.userOrGroup):i.userGroups.push(e.userOrGroup),e.nfRegistryApi.putPolicyActionResource(i.identifier,i.action,i.resource,i.users,i.userGroups,i.revision).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t,e.snackBarService.openCoaster({title:"Success",message:"Policy created.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3})}))}))}))),this.deleteCheckbox.checked&&(t="delete",i.push(t),this.nfRegistryApi.getResourcePoliciesById(t,"/buckets",this.nfRegistryService.bucket.identifier).subscribe((function(i){if(t="delete",i.status&&404===i.status){var n=[],r=[];"user"===e.userOrGroup.type?n.push(e.userOrGroup):r.push(e.userOrGroup),e.nfRegistryApi.postPolicyActionResource(t,"/buckets/"+e.nfRegistryService.bucket.identifier,n,r).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t,e.snackBarService.openCoaster({title:"Success",message:"Policy created.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3})}))}))}else"user"===e.userOrGroup.type?i.users.push(e.userOrGroup):i.userGroups.push(e.userOrGroup),e.nfRegistryApi.putPolicyActionResource(i.identifier,i.action,i.resource,i.users,i.userGroups,i.revision).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t,e.snackBarService.openCoaster({title:"Success",message:"Policy created.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3})}))}))}))),this.dialogRef.close({userOrGroup:e.userOrGroup,permissions:i})},toggleAllPermissions:function(e){e.checked?(this.readCheckbox.checked=!0,this.writeCheckbox.checked=!0,this.deleteCheckbox.checked=!0):(this.readCheckbox.checked=!1,this.writeCheckbox.checked=!1,this.deleteCheckbox.checked=!1)},cancel:function(){this.dialogRef.close()},select:function(e,t){this.filteredUsers=this.filteredUsers.filter((function(e){return e.checked=!1,!0})),this.filteredUserGroups=this.filteredUserGroups.filter((function(e){return e.checked=!1,!0})),e.checked=!0,this.userOrGroup=e,this.userOrGroup.type=t},change:function(e){e.source.checked=!0}},fe.annotations=[new a.Component({template:i(633),queries:{readCheckbox:new a.ViewChild("readCheckbox",{static:!0}),writeCheckbox:new a.ViewChild("writeCheckbox",{static:!0}),deleteCheckbox:new a.ViewChild("deleteCheckbox",{static:!0})}})],fe.parameters=[x,l.b,d.c,T,c.a,u.MatDialogRef,u.MAT_DIALOG_DATA];var pe=fe;function ge(e,t,i,n,r){this.userOrGroup={},this.nfRegistryService=t,this.route=i,this.nfRegistryApi=e,this.dialogRef=n,this.data=r}ge.prototype={constructor:ge,ngOnInit:function(){var e=this;this.route.params.pipe(Object(S.a)((function(){return Object(te.a)(e.nfRegistryApi.getUsers(),e.nfRegistryApi.getUserGroups())}))).subscribe((function(t){var i=t[0],n=t[1];0===(i=i.filter((function(t){return e.data.userOrGroup.identity===t.identity}))).length?(n=n.filter((function(t){return e.data.userOrGroup.identity===t.identity})),e.userOrGroup=n[0],e.userOrGroup.type="group"):(e.userOrGroup=i[0],e.userOrGroup.type="user"),e.data.userOrGroup.permissions.split(", ").forEach((function(t){"read"===t&&(e.readCheckbox.checked=!0),"write"===t&&(e.writeCheckbox.checked=!0),"delete"===t&&(e.deleteCheckbox.checked=!0)}))}))},applyPolicy:function(){var e=this,t="",i=[];this.readCheckbox.checked?(t="read",i.push(t),this.nfRegistryApi.getResourcePoliciesById(t,"/buckets",this.nfRegistryService.bucket.identifier).subscribe((function(i){if(t="read",i.status&&404===i.status){var n=[],r=[];"user"===e.userOrGroup.type?n.push(e.userOrGroup):r.push(e.userOrGroup),e.nfRegistryApi.postPolicyActionResource(t,"/buckets/"+e.nfRegistryService.bucket.identifier,n,r).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t}))}))}else"user"===e.userOrGroup.type?i.users.push(e.userOrGroup):i.userGroups.push(e.userOrGroup),e.nfRegistryApi.putPolicyActionResource(i.identifier,i.action,i.resource,i.users,i.userGroups,i.revision).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t}))}))}))):(t="read",this.nfRegistryApi.getResourcePoliciesById(t,"/buckets",this.nfRegistryService.bucket.identifier).subscribe((function(i){t="read",i.status&&404===i.status||("user"===e.userOrGroup.type?i.users=i.users.filter((function(t){return e.userOrGroup.identity!==t.identity})):i.userGroups=i.userGroups.filter((function(t){return e.userOrGroup.identity!==t.identity})),e.nfRegistryApi.putPolicyActionResource(i.identifier,i.action,i.resource,i.users,i.userGroups,i.revision).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t}))})))}))),this.writeCheckbox.checked?(t="write",i.push(t),this.nfRegistryApi.getResourcePoliciesById(t,"/buckets",this.nfRegistryService.bucket.identifier).subscribe((function(i){if(t="write",i.status&&404===i.status){var n=[],r=[];"user"===e.userOrGroup.type?n.push(e.userOrGroup):r.push(e.userOrGroup),e.nfRegistryApi.postPolicyActionResource(t,"/buckets/"+e.nfRegistryService.bucket.identifier,n,r).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t}))}))}else"user"===e.userOrGroup.type?i.users.push(e.userOrGroup):i.userGroups.push(e.userOrGroup),e.nfRegistryApi.putPolicyActionResource(i.identifier,i.action,i.resource,i.users,i.userGroups,i.revision).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t}))}))}))):(t="write",this.nfRegistryApi.getResourcePoliciesById(t,"/buckets",this.nfRegistryService.bucket.identifier).subscribe((function(i){t="write",i.status&&404===i.status||("user"===e.userOrGroup.type?i.users=i.users.filter((function(t){return e.userOrGroup.identity!==t.identity})):i.userGroups=i.userGroups.filter((function(t){return e.userOrGroup.identity!==t.identity})),e.nfRegistryApi.putPolicyActionResource(i.identifier,i.action,i.resource,i.users,i.userGroups,i.revision).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t}))})))}))),this.deleteCheckbox.checked?(t="delete",i.push(t),this.nfRegistryApi.getResourcePoliciesById(t,"/buckets",this.nfRegistryService.bucket.identifier).subscribe((function(i){if(t="delete",i.status&&404===i.status){var n=[],r=[];"user"===e.userOrGroup.type?n.push(e.userOrGroup):r.push(e.userOrGroup),e.nfRegistryApi.postPolicyActionResource(t,"/buckets/"+e.nfRegistryService.bucket.identifier,n,r).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t}))}))}else"user"===e.userOrGroup.type?i.users.push(e.userOrGroup):i.userGroups.push(e.userOrGroup),e.nfRegistryApi.putPolicyActionResource(i.identifier,i.action,i.resource,i.users,i.userGroups,i.revision).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t}))}))}))):(t="delete",this.nfRegistryApi.getResourcePoliciesById(t,"/buckets",this.nfRegistryService.bucket.identifier).subscribe((function(i){t="delete",i.status&&404===i.status||("user"===e.userOrGroup.type?i.users=i.users.filter((function(t){return e.userOrGroup.identity!==t.identity})):i.userGroups=i.userGroups.filter((function(t){return e.userOrGroup.identity!==t.identity})),e.nfRegistryApi.putPolicyActionResource(i.identifier,i.action,i.resource,i.users,i.userGroups,i.revision).subscribe((function(){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(t){e.nfRegistryService.bucket=t}))})))}))),this.dialogRef.close({userOrGroup:e.userOrGroup,permissions:i})},toggleAllPermissions:function(e){e.checked?(this.readCheckbox.checked=!0,this.writeCheckbox.checked=!0,this.deleteCheckbox.checked=!0):(this.readCheckbox.checked=!1,this.writeCheckbox.checked=!1,this.deleteCheckbox.checked=!1)},cancel:function(){this.dialogRef.close()}},ge.annotations=[new a.Component({template:i(634),queries:{readCheckbox:new a.ViewChild("readCheckbox",{static:!0}),writeCheckbox:new a.ViewChild("writeCheckbox",{static:!0}),deleteCheckbox:new a.ViewChild("deleteCheckbox",{static:!0})}})],ge.parameters=[x,T,c.a,u.MatDialogRef,u.MAT_DIALOG_DATA];var he=ge;function me(e,t,i,n,r,s,o,a){this.sortBy=null,this.sortOrder=null,this.bucketPoliciesColumns=[{name:"identity",label:"Display Name",sortable:!0,tooltip:"User/Group name.",width:40,active:!0},{name:"permissions",label:"Permissions",sortable:!1,tooltip:"User/Group permissions for this bucket.",width:40}],this.userPermsSearchTerms=[],this.bucketname="",this.description="",this.allowBundleRedeploy=!1,this.allowPublicRead=!1,this.bucketPolicies=[],this.userPerms={},this.groupPerms={},this.filteredGroupPermsData=[],this.filteredUserPermsData=[],this.userIdentitiesWithPolicies=[],this.groupIdentitiesWithPolicies=[],this.nfRegistryService=t,this.route=s,this.router=o,this.dialog=a,this.nfRegistryApi=e,this.dialogService=n,this.snackBarService=r,this.dataTableService=i,this.protocol=location.protocol}me.prototype={constructor:me,ngOnInit:function(){var e=this;this.$subscription=this.route.params.pipe(Object(S.a)((function(t){return Object(te.a)(e.nfRegistryApi.getBucket(t.bucketId),e.nfRegistryApi.getPolicies())}))).subscribe((function(t){if(t[0].status&&200!==t[0].status)404===t[0].status&&e.router.navigateByUrl("administration/workflow");else{e.nfRegistryService.sidenav.open();var i=t[0];if(e.nfRegistryService.bucket=i,e.bucketname=i.name,e.description=i.description,e.allowBundleRedeploy=i.allowBundleRedeploy,e.allowPublicRead=i.allowPublicRead,!e.nfRegistryService.currentUser.anonymous)if(!t[1].status||200===t[1].status)t[1].forEach((function(t){t.resource.indexOf("/buckets/"+e.nfRegistryService.bucket.identifier)>=0&&(e.bucketPolicies.push(t),t.users.forEach((function(i){var n=e.userPerms[i.identity]||[];n.push(t.action),e.userPerms[i.identity]=n})),t.userGroups.forEach((function(i){var n=e.groupPerms[i.identity]||[];n.push(t.action),e.groupPerms[i.identity]=n})))})),e.sortBuckets(e.bucketPoliciesColumns.find((function(e){return!0===e.active})))}}))},ngOnDestroy:function(){this.nfRegistryService.sidenav.close(),this.$subscription.unsubscribe()},closeSideNav:function(){this.router.navigateByUrl("administration/workflow")},addPolicy:function(){var e=this;this.dialog.open(pe,{data:{users:this.userIdentitiesWithPolicies,groups:this.groupIdentitiesWithPolicies,disableClose:!0}}).afterClosed().subscribe((function(t){e.nfRegistryApi.getBucket(e.nfRegistryService.bucket.identifier).subscribe((function(i){e.nfRegistryService.bucket=i,e.bucketname=i.name,e.description=i.description,e.allowBundleRedeploy=i.allowBundleRedeploy,e.allowPublicRead=i.allowPublicRead,t&&("user"===t.userOrGroup.type?e.userPerms[t.userOrGroup.identity]=t.permissions:e.groupPerms[t.userOrGroup.identity]=t.permissions,e.snackBarService.openCoaster({title:"Success",message:"The policy has been created for this user/group.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3})),e.filterPolicies(this.sortBy,this.sortOrder)}))}))},editPolicy:function(e){var t=this;this.dialog.open(he,{data:{userOrGroup:e,disableClose:!0},width:"400px"}).afterClosed().subscribe((function(e){t.nfRegistryApi.getBucket(t.nfRegistryService.bucket.identifier).subscribe((function(i){t.nfRegistryService.bucket=i,t.bucketname=i.name,t.description=i.description,t.allowBundleRedeploy=i.allowBundleRedeploy,t.allowPublicRead=i.allowPublicRead,e&&("user"===e.userOrGroup.type?t.userPerms[e.userOrGroup.identity]=e.permissions:t.groupPerms[e.userOrGroup.identity]=e.permissions,t.snackBarService.openCoaster({title:"Success",message:"The policy has been updated for this user/group.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3})),t.filterPolicies(this.sortBy,this.sortOrder)}))}))},filterPolicies:function(e,t){if(void 0===t&&(t=void 0===this.sortOrder?"ASC":this.sortOrder),void 0===e)if(void 0===this.sortBy){for(var i=this.bucketPoliciesColumns.length,n=0;n<i;n++)if(!0===this.bucketPoliciesColumns[n].sortable){e=this.bucketPoliciesColumns[n].name,this.bucketPoliciesColumns.forEach((function(e){e.active=!1})),this.bucketPoliciesColumns[n].active=!0,this.bucketPoliciesColumns[n].sortOrder=t;break}}else e=this.sortBy;var r=[];for(var s in this.userIdentitiesWithPolicies=[],this.userPerms)this.userPerms.hasOwnProperty(s)&&(this.userIdentitiesWithPolicies.push(s),r.push({identity:s,permissions:this.userPerms[s].join(", ")}));for(n=0;n<this.userPermsSearchTerms.length;n++)r=this.filterData(r,this.userPermsSearchTerms[n],!0);r=this.dataTableService.sortData(r,e,t),this.filteredUserPermsData=r;var o=[];for(var s in this.groupIdentitiesWithPolicies=[],this.groupPerms)this.groupPerms.hasOwnProperty(s)&&(this.groupIdentitiesWithPolicies.push(s),o.push({identity:s,permissions:this.groupPerms[s].join(", ")}));for(n=0;n<this.userPermsSearchTerms.length;n++)o=this.filterData(o,this.userPermsSearchTerms[n],!0);o=this.dataTableService.sortData(o,e,t),this.filteredGroupPermsData=o},sortBuckets:function(e){e.sortable&&(this.sortBy=e.name,this.sortOrder="ASC"===e.sortOrder?"DESC":"ASC",e.sortOrder=this.sortOrder,this.filterPolicies(this.sortBy,this.sortOrder),this.bucketPoliciesColumns.forEach((function(e){e.active=!1})),e.active=!0)},removePolicyFromBucket:function(e){var t=this;this.dialogService.openConfirm({title:"Delete Policy",message:"All permissions granted by this policy will be removed for this user/group.",cancelButton:"Cancel",acceptButton:"Delete",acceptButtonColor:"fds-warn"}).afterClosed().subscribe((function(i){i&&e.permissions.split(", ").forEach((function(i){t.nfRegistryApi.getPolicyActionResource(i,"/buckets/"+t.nfRegistryService.bucket.identifier).subscribe((function(i){i.status&&404===i.status||(i.users=i.users.filter((function(t){return t.identity!==e.identity})),i.userGroups=i.userGroups.filter((function(t){return t.identity!==e.identity})),t.nfRegistryApi.putPolicyActionResource(i.identifier,i.action,i.resource,i.users,i.userGroups,i.revision).subscribe((function(){t.nfRegistryApi.getPolicies().subscribe((function(e){t.userPerms={},t.groupPerms={},t.filteredGroupPermsData=[],t.filteredUserPermsData=[],t.userIdentitiesWithPolicies=[],t.groupIdentitiesWithPolicies=[],e.forEach((function(e){e.resource.indexOf("/buckets/"+t.nfRegistryService.bucket.identifier)>=0&&(t.bucketPolicies.push(e),e.users.forEach((function(i){var n=t.userPerms[i.identity]||[];n.push(e.action),t.userPerms[i.identity]=n})),e.userGroups.forEach((function(i){var n=t.groupPerms[i.identity]||[];n.push(e.action),t.groupPerms[i.identity]=n})))})),t.filterPolicies(this.sortBy,this.sortOrder),t.snackBarService.openCoaster({title:"Success",message:"All permissions granted by this policy have be removed for this user/group.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3})}))})))}))}))}))},updateBucketNameAndDescription:function(e,t){var i=this;this.nfRegistryApi.updateBucket({identifier:this.nfRegistryService.bucket.identifier,name:e,description:t,revision:this.nfRegistryService.bucket.revision}).subscribe((function(e){e.status&&200!==e.status?409===e.status?(i.bucketname=i.nfRegistryService.bucket.name,i.description=i.nfRegistryService.bucket.description,i.allowBundleRedeploy=i.nfRegistryService.bucket.allowBundleRedeploy,i.allowPublicRead=i.nfRegistryService.bucket.allowPublicRead,i.dialogService.openConfirm({title:"Error",message:"This bucket already exists. Please enter a different identity/bucket name.",acceptButton:"Ok",acceptButtonColor:"fds-warn"})):404===e.status?i.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}):i.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}).afterClosed().subscribe((function(){i.nfRegistryApi.getBucket(i.nfRegistryService.bucket.identifier).subscribe((function(e){e.status&&200!==e.status?404===e.status&&i.router.navigateByUrl("administration/workflow"):(i.nfRegistryService.bucket=e,i.bucketname=i.nfRegistryService.bucket.name,i.description=i.nfRegistryService.bucket.description,i.allowBundleRedeploy=i.nfRegistryService.bucket.allowBundleRedeploy,i.allowPublicRead=i.nfRegistryService.bucket.allowPublicRead)}))})):(i.nfRegistryService.bucket=e,i.nfRegistryService.buckets.filter((function(e){return i.nfRegistryService.bucket.identifier===e.identifier})).forEach((function(t){t.name=e.name,t.description=e.description,t.revision=e.revision})),i.snackBarService.openCoaster({title:"Success",message:"This bucket name and description have been updated.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}))}))},toggleBucketBundleRedeploy:function(e){var t=this;this.nfRegistryApi.updateBucket({identifier:this.nfRegistryService.bucket.identifier,allowBundleRedeploy:e.checked,revision:this.nfRegistryService.bucket.revision}).subscribe((function(e){e.status&&200!==e.status?404===e.status?t.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}):t.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}).afterClosed().subscribe((function(){t.nfRegistryApi.getBucket(t.nfRegistryService.bucket.identifier).subscribe((function(e){e.status&&200!==e.status?404===e.status&&t.router.navigateByUrl("administration/workflow"):(t.nfRegistryService.bucket=e,t.bucketname=t.nfRegistryService.bucket.name,t.description=t.nfRegistryService.bucket.description,t.allowBundleRedeploy=t.nfRegistryService.bucket.allowBundleRedeploy,t.allowPublicRead=t.nfRegistryService.bucket.allowPublicRead)}))})):(t.nfRegistryService.bucket=e,t.nfRegistryService.buckets.filter((function(e){return t.nfRegistryService.bucket.identifier===e.identifier})).forEach((function(t){t.revision=e.revision})),t.snackBarService.openCoaster({title:"Success",message:"Bundle settings have been updated.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}))}))},toggleBucketPublicRead:function(e){var t=this;this.nfRegistryApi.updateBucket({identifier:this.nfRegistryService.bucket.identifier,allowPublicRead:e.checked,revision:this.nfRegistryService.bucket.revision}).subscribe((function(e){e.status&&200!==e.status?404===e.status?t.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}):t.dialogService.openConfirm({title:"Error",message:e.error,acceptButton:"Ok",acceptButtonColor:"fds-warn"}).afterClosed().subscribe((function(){t.nfRegistryApi.getBucket(t.nfRegistryService.bucket.identifier).subscribe((function(e){e.status&&200!==e.status?404===e.status&&t.router.navigateByUrl("administration/workflow"):(t.nfRegistryService.bucket=e,t.bucketname=t.nfRegistryService.bucket.name,t.description=t.nfRegistryService.bucket.description,t.allowBundleRedeploy=t.nfRegistryService.bucket.allowBundleRedeploy,t.allowPublicRead=t.nfRegistryService.bucket.allowPublicRead)}))})):(t.nfRegistryService.bucket=e,t.nfRegistryService.buckets.filter((function(e){return t.nfRegistryService.bucket.identifier===e.identifier})).forEach((function(t){t.revision=e.revision})),t.snackBarService.openCoaster({title:"Success",message:"Bucket settings have been updated.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}))}))},canEditBucketPolicies:function(){return this.nfRegistryService.currentUser.resourcePermissions.policies.canWrite&&this.nfRegistryService.registry.config.supportsConfigurableAuthorizer}},me.annotations=[new a.Component({template:i(635)})],me.parameters=[x,T,l.b,d.b,d.c,c.a,c.b,u.MatDialog];var ve=me;function be(e,t,i,n){this.snackBarService=t,this.nfRegistryService=i,this.nfRegistryApi=e,this.dialogRef=n,this.keepDialogOpen=!1,this.protocol=location.protocol}be.prototype={constructor:be,createBucket:function(e,t,i){var n=this;this.nfRegistryApi.createBucket(e.value,t.value,i.checked).subscribe((function(e){e.error?n.dialogRef.close():(n.nfRegistryService.buckets.push(e),n.nfRegistryService.filterBuckets(),n.nfRegistryService.allBucketsSelected=!1,!0!==n.keepDialogOpen&&n.dialogRef.close(),n.snackBarService.openCoaster({title:"Success",message:"Bucket has been added.",verticalPosition:"bottom",horizontalPosition:"right",icon:"fa fa-check-circle-o",color:"#1EB475",duration:3e3}))}))},cancel:function(){this.dialogRef.close()}},be.annotations=[new a.Component({template:i(636),queries:{newBucketName:new a.ViewChild("newBucketName",{static:!0}),newBucketDescription:new a.ViewChild("newBucketDescription",{static:!0})}})],be.parameters=[x,d.c,T,u.MatDialogRef];var ye=be;function Se(e,t,i,n,r){this.route=n,this.nfStorage=t,this.nfRegistryService=i,this.nfRegistryApi=e,this.dialog=r}Se.prototype={constructor:Se,ngOnInit:function(){var e=this;this.nfRegistryService.inProgress=!0,this.$subscription=this.route.params.pipe(Object(S.a)((function(){return e.nfRegistryService.adminPerspective="workflow",e.nfRegistryApi.getBuckets()}))).subscribe((function(t){e.nfRegistryService.buckets=t,e.nfRegistryService.filterBuckets(),e.nfRegistryService.inProgress=!1}))},ngOnDestroy:function(){this.nfRegistryService.adminPerspective="",this.nfRegistryService.buckets=[],this.nfRegistryService.filteredBuckets=[],this.nfRegistryService.allBucketsSelected=!1,this.$subscription.unsubscribe()},createBucket:function(){this.dialog.open(ye,{disableClose:!0,width:"400px"})}},Se.annotations=[new a.Component({template:i(637),animations:[E.slideInLeftAnimation],host:{"[@routeAnimation]":"routeAnimation"}})],Se.parameters=[x,h,T,c.a,u.MatDialog];var ke=Se;function Re(e,t,i,n){this.route=i,this.nfRegistryService=e,this.nfRegistryApi=t,this.nfStorage=n}Re.prototype={constructor:Re,ngOnInit:function(){var e=this;this.nfRegistryService.explorerViewType="grid-list",this.nfRegistryService.inProgress=!0,this.nfRegistryService.bucket={},this.nfRegistryService.droplet={},this.$subscription=this.route.params.pipe(Object(S.a)((function(){return Object(te.a)(e.nfRegistryApi.getDroplets(),e.nfRegistryApi.getBuckets())}))).subscribe((function(t){var i=t[0],n=t[1];e.nfRegistryService.buckets=n,e.nfRegistryService.droplets=i,e.nfRegistryService.filterDroplets(),e.nfRegistryService.setBreadcrumbState("in"),e.nfRegistryService.inProgress=!1}))},ngOnDestroy:function(){this.nfRegistryService.explorerViewType="",this.nfRegistryService.setBreadcrumbState("out"),this.nfRegistryService.filteredDroplets=[],this.$subscription.unsubscribe()},trackByFn:function(e){return e}},Re.annotations=[new a.Component({template:i(190),animations:[E.flyInOutAnimation]})],Re.parameters=[T,x,c.a,h];var we=Re;function Ae(e,t,i,n,r){this.route=n,this.router=r,this.nfStorage=t,this.nfRegistryService=i,this.nfRegistryApi=e}Ae.prototype={constructor:Ae,ngOnInit:function(){var e=this;this.nfRegistryService.inProgress=!0,this.nfRegistryService.explorerViewType="grid-list",this.nfRegistryService.droplet={},this.$subscription=this.route.params.pipe(Object(S.a)((function(t){return Object(te.a)(e.nfRegistryApi.getBuckets(),e.nfRegistryApi.getDroplets(t.bucketId),e.nfRegistryApi.getBucket(t.bucketId))}))).subscribe((function(t){if(t[0].status&&200!==t[0].status)404===t[0].status&&e.router.navigateByUrl("explorer/grid-list");else{var i=t[0];e.nfRegistryService.buckets=i}if(t[2].status&&200!==t[2].status)404===t[2].status&&e.router.navigateByUrl("explorer/grid-list");else{var n=t[2];e.nfRegistryService.bucket=n}if(t[1].status&&200!==t[1].status){if(404===t[1].status)if(t[2].status&&200!==t[2].status)e.router.navigateByUrl("explorer/grid-list");else{n=t[2];e.router.navigateByUrl("explorer/grid-list/buckets/"+n)}}else{var r=t[1];e.nfRegistryService.droplets=r}e.nfRegistryService.filterDroplets(),e.nfRegistryService.setBreadcrumbState("in"),e.nfRegistryService.inProgress=!1}))},ngOnDestroy:function(){this.nfRegistryService.explorerViewType="",this.nfRegistryService.setBreadcrumbState("out"),this.nfRegistryService.filteredDroplets=[],this.$subscription.unsubscribe()},trackByFn:function(e){return e}},Ae.annotations=[new a.Component({template:i(190),animations:[E.flyInOutAnimation]})],Ae.parameters=[x,h,T,c.a,c.b];var xe=Ae;function Ce(e,t,i,n,r){this.route=n,this.router=r,this.nfStorage=t,this.nfRegistryService=i,this.nfRegistryApi=e}Ce.prototype={constructor:Ce,ngOnInit:function(){var e=this;this.nfRegistryService.inProgress=!0,this.nfRegistryService.explorerViewType="grid-list",this.$subscription=this.route.params.pipe(Object(S.a)((function(t){return Object(te.a)(e.nfRegistryApi.getDroplet(t.bucketId,t.dropletType,t.dropletId),e.nfRegistryApi.getBucket(t.bucketId),e.nfRegistryApi.getBuckets(),e.nfRegistryApi.getDroplets(t.bucketId))}))).subscribe((function(t){if(t[0].status&&200!==t[0].status){if(404===t[0].status)if(t[1].status&&200!==t[1].status)404===t[1].status&&e.router.navigateByUrl("explorer/grid-list");else{var i=t[1];e.nfRegistryService.bucket=i,e.router.navigateByUrl("explorer/grid-list/buckets/"+i.identifier)}}else{var n=t[0];e.nfRegistryService.droplet=n}if(t[1].status&&200!==t[1].status)404===t[1].status&&e.router.navigateByUrl("explorer/grid-list");else{i=t[1];e.nfRegistryService.bucket=i}if(!t[2].status||200===t[2].status){var r=t[2];e.nfRegistryService.buckets=r}if(!t[3].status||200===t[3].status){var s=t[3];e.nfRegistryService.droplets=s}e.nfRegistryService.filterDroplets(),e.nfRegistryService.setBreadcrumbState("in"),e.nfRegistryService.inProgress=!1}))},ngOnDestroy:function(){this.nfRegistryService.explorerViewType="",this.nfRegistryService.setBreadcrumbState("out"),this.nfRegistryService.filteredDroplets=[],this.$subscription.unsubscribe()},trackByFn:function(e){return e}},Ce.annotations=[new a.Component({template:i(190),animations:[E.flyInOutAnimation]})],Ce.parameters=[x,h,T,c.a,c.b];var Pe=Ce,Oe=c.c.forRoot([{path:"explorer",component:H,children:[{path:"",redirectTo:"grid-list",pathMatch:"full"},{path:"grid-list",component:we,canActivate:[W]},{path:"grid-list/buckets/:bucketId",component:xe,canActivate:[W]},{path:"grid-list/buckets/:bucketId/:dropletType/:dropletId",component:Pe,canActivate:[W]}]},{path:"login",component:$,canActivate:[V]},{path:"administration",component:X,children:[{path:"",redirectTo:"workflow",pathMatch:"full"},{path:"users",component:ne,canActivate:[F]},{path:"workflow",component:ke,canActivate:[M]}]},{path:"explorer/grid-list/buckets",redirectTo:"/explorer/grid-list",pathMatch:"full"},{path:"nifi-registry",redirectTo:"explorer/grid-list"},{path:"",redirectTo:"explorer/grid-list",pathMatch:"full"},{path:"**",component:j},{path:"manage/user/:userId",component:ae,canActivate:[F],outlet:"sidenav"},{path:"manage/group/:groupId",component:de,canActivate:[F],outlet:"sidenav"},{path:"manage/bucket/:bucketId",component:ve,canActivate:[M],outlet:"sidenav"}],{useHash:!0});function Ie(e,t,i,n,r,s){this.http=e,this.nfStorage=t,this.nfRegistryService=i,this.nfRegistryApi=n,this.cd=r,this.router=s}Ie.prototype={constructor:Ie,ngOnInit:function(){var e=this;this.nfRegistryService.sidenav=this.sidenav,this.nfRegistryApi.getRegistryConfig().subscribe((function(t){e.nfRegistryService.registry.config=t}))},ngAfterViewChecked:function(){this.cd.detectChanges()},logout:function(){var e=this;e.nfRegistryApi.deleteToLogout().subscribe((function(){}),(function(){}),(function(){e.nfStorage.removeItem("jwt"),delete e.nfRegistryService.currentUser.identity,delete e.nfRegistryService.currentUser.anonymous,window.location.href=location.origin+"/nifi-registry/logout"}))},login:function(){!0===this.nfRegistryService.currentUser.oidcloginSupported?window.location.href=location.origin+"/nifi-registry/login":this.router.navigateByUrl("login")},showAboutDialog:function(){this.nfRegistryApi.showRegistryAboutDialog()}},Ie.annotations=[new a.Component({selector:"nf-registry-app",template:i(638),queries:{sidenav:new a.ViewChild("sidenav",{static:!0})},animations:[E.flyInOutAnimation]})],Ie.parameters=[s.b,h,T,x,a.ChangeDetectorRef,c.b];var Be=Ie;function Ue(e){this.nfStorage=e}Ue.prototype={constructor:Ue,intercept:function(e,t){var i=this.nfStorage.getItem("jwt");return i&&(e=e.clone({headers:e.headers.set("Authorization","Bearer "+i)})),t.handle(e)}},Ue.parameters=[h];var Le=Ue;function Te(){}Te.prototype={constructor:Te},Te.annotations=[new a.NgModule({imports:[o.MomentModule,d.a,s.c,Oe],declarations:[Be,H,k.NfRegistryExplorerAbout,X,ne,ae,de,ve,ke,ee,ye,Q,se,le,pe,he,we,xe,Pe,j,$,_,P,I,U],entryComponents:[ee,ye,Q,se,le,pe,he,_,P,I,U,k.NfRegistryExplorerAbout],providers:[T,F,M,V,W,x,h,{provide:s.a,useClass:Le,multi:!0}],bootstrap:[Be]})];var Ge=Te,De=i(387);i(639),i(640),i(641),i(642),i(643);Object(a.enableProdMode)();var Ee=navigator.language.toLowerCase(),Ne=[];if(Ee&&"en-us"!==Ee){var je="locale/messages."+Ee+".xlf";r.a.ajax({url:je,dataType:"text"}).done((function(e){e&&(Ne.push({provide:a.TRANSLATIONS,useValue:e}),Ne.push({provide:a.TRANSLATIONS_FORMAT,useValue:"xlf"}),Ne.push({provide:a.LOCALE_ID,useValue:Ee})),Fe()})).fail((function(){var e=Ee.split("-");2===e.length?(je="locale/messages."+e[0]+".xlf",r.a.ajax({url:je,dataType:"text"}).done((function(t){t&&(Ne.push({provide:a.TRANSLATIONS,useValue:t}),Ne.push({provide:a.TRANSLATIONS_FORMAT,useValue:"xlf"}),Ne.push({provide:a.LOCALE_ID,useValue:e[0]})),Fe()})).fail((function(){Fe()}))):Fe()}))}else Fe();function Fe(){Object(De.a)().bootstrapModule(Ge,{providers:Ne})}}});