@openziti/ziti-console-lib 0.4.6 → 0.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/images/visualizer/node-click.png +0 -0
- package/assets/styles/ziti.css +1 -0
- package/assets/svgs/cursor-pointer.svg +1 -0
- package/esm2022/lib/features/data-table/data-table-filter.service.mjs +2 -2
- package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +4 -2
- package/esm2022/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.mjs +3 -3
- package/esm2022/lib/features/extendable/extensions-noop.service.mjs +3 -1
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +3 -1
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +7 -7
- package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.component.mjs +441 -259
- package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.helper.mjs +180 -63
- package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.mjs +307 -118
- package/esm2022/lib/pages/configurations/configurations-page.service.mjs +2 -1
- package/esm2022/lib/pages/identities/identities-page.component.mjs +4 -4
- package/esm2022/lib/pages/identities/identities-page.service.mjs +11 -1
- package/esm2022/lib/services/ziti-controller-data.service.mjs +6 -3
- package/esm2022/lib/shared/list-page-component.class.mjs +6 -4
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/openziti-ziti-console-lib.mjs +966 -458
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/lib/features/data-table/data-table-filter.service.d.ts +1 -0
- package/lib/features/data-table/data-table-filter.service.d.ts.map +1 -1
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts.map +1 -1
- package/lib/features/extendable/extensions-noop.service.d.ts +2 -0
- package/lib/features/extendable/extensions-noop.service.d.ts.map +1 -1
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
- package/lib/features/visualizer/network-visualizer/network-visualizer.component.d.ts +36 -20
- package/lib/features/visualizer/network-visualizer/network-visualizer.component.d.ts.map +1 -1
- package/lib/features/visualizer/network-visualizer/network-visualizer.helper.d.ts +42 -1
- package/lib/features/visualizer/network-visualizer/network-visualizer.helper.d.ts.map +1 -1
- package/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.d.ts +6 -2
- package/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.d.ts.map +1 -1
- package/lib/pages/configurations/configurations-page.service.d.ts.map +1 -1
- package/lib/pages/identities/identities-page.component.d.ts +1 -1
- package/lib/pages/identities/identities-page.component.d.ts.map +1 -1
- package/lib/pages/identities/identities-page.service.d.ts.map +1 -1
- package/lib/services/ziti-controller-data.service.d.ts.map +1 -1
- package/lib/shared/list-page-component.class.d.ts +3 -1
- package/lib/shared/list-page-component.class.d.ts.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/public-api.d.ts.map +1 -1
|
@@ -1078,6 +1078,8 @@ class ExtensionsNoopService {
|
|
|
1078
1078
|
this.closeAfterSave = true;
|
|
1079
1079
|
this.moreActions = [];
|
|
1080
1080
|
}
|
|
1081
|
+
extendOnInit() {
|
|
1082
|
+
}
|
|
1081
1083
|
extendAfterViewInits(extentionPoints) {
|
|
1082
1084
|
}
|
|
1083
1085
|
updateFormData(data) {
|
|
@@ -2301,7 +2303,7 @@ class DataTableFilterService {
|
|
|
2301
2303
|
this.pageChanged = new BehaviorSubject(this.currentPage);
|
|
2302
2304
|
}
|
|
2303
2305
|
updateFilter(filterObj) {
|
|
2304
|
-
if (isEmpty(filterObj.value) && isNaN(filterObj.value))
|
|
2306
|
+
if (isEmpty(filterObj.value) && (isNaN(filterObj.value) || filterObj.value === ''))
|
|
2305
2307
|
this.removeFilter(filterObj);
|
|
2306
2308
|
else {
|
|
2307
2309
|
let isFound = false;
|
|
@@ -2589,11 +2591,12 @@ ListPageServiceClass = __decorate([
|
|
|
2589
2591
|
], ListPageServiceClass);
|
|
2590
2592
|
|
|
2591
2593
|
class ListPageComponent {
|
|
2592
|
-
constructor(filterService, svc, consoleEvents, dialogForm) {
|
|
2594
|
+
constructor(filterService, svc, consoleEvents, dialogForm, extensionService) {
|
|
2593
2595
|
this.filterService = filterService;
|
|
2594
2596
|
this.svc = svc;
|
|
2595
2597
|
this.consoleEvents = consoleEvents;
|
|
2596
2598
|
this.dialogForm = dialogForm;
|
|
2599
|
+
this.extensionService = extensionService;
|
|
2597
2600
|
this.startCount = '-';
|
|
2598
2601
|
this.endCount = '-';
|
|
2599
2602
|
this.totalCount = '-';
|
|
@@ -2612,6 +2615,7 @@ class ListPageComponent {
|
|
|
2612
2615
|
this.svc.refreshData = this.refreshData.bind(this);
|
|
2613
2616
|
this.columnDefs = this.svc.initTableColumns();
|
|
2614
2617
|
this.filterService.clearFilters();
|
|
2618
|
+
this.extensionService?.extendOnInit();
|
|
2615
2619
|
this.subscription.add(this.filterService.filtersChanged.subscribe(filters => {
|
|
2616
2620
|
this.filterApplied = filters && filters.length > 0;
|
|
2617
2621
|
this.refreshData();
|
|
@@ -2716,12 +2720,12 @@ class ListPageComponent {
|
|
|
2716
2720
|
this.gridObj?.api?.refreshCells(params);
|
|
2717
2721
|
});
|
|
2718
2722
|
}
|
|
2719
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListPageComponent, deps:
|
|
2723
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListPageComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2720
2724
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListPageComponent }); }
|
|
2721
2725
|
}
|
|
2722
2726
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListPageComponent, decorators: [{
|
|
2723
2727
|
type: Injectable
|
|
2724
|
-
}], ctorParameters: function () { return [{ type: DataTableFilterService }, { type: ListPageServiceClass }, { type: ConsoleEventsService }, { type: i3$2.MatDialog }]; } });
|
|
2728
|
+
}], ctorParameters: function () { return [{ type: DataTableFilterService }, { type: ListPageServiceClass }, { type: ConsoleEventsService }, { type: i3$2.MatDialog }, { type: undefined }]; } });
|
|
2725
2729
|
|
|
2726
2730
|
/*
|
|
2727
2731
|
Copyright NetFoundry Inc.
|
|
@@ -4330,6 +4334,7 @@ class ConfigurationsPageService extends ListPageServiceClass {
|
|
|
4330
4334
|
throw new Error('no schema definition selected');
|
|
4331
4335
|
}
|
|
4332
4336
|
};
|
|
4337
|
+
this.getConfigTypes();
|
|
4333
4338
|
}
|
|
4334
4339
|
initTableColumns() {
|
|
4335
4340
|
const typeRenderer = (row) => {
|
|
@@ -5258,6 +5263,15 @@ class IdentitiesPageService extends ListPageServiceClass {
|
|
|
5258
5263
|
],
|
|
5259
5264
|
columnFilters,
|
|
5260
5265
|
};
|
|
5266
|
+
const isAdminHeaderComponentParams = {
|
|
5267
|
+
filterType: 'SELECT',
|
|
5268
|
+
enableSorting: true,
|
|
5269
|
+
filterOptions: [
|
|
5270
|
+
{ label: 'All', value: '' },
|
|
5271
|
+
{ label: 'Admins', value: true },
|
|
5272
|
+
{ label: 'Non-Admins', value: false },
|
|
5273
|
+
]
|
|
5274
|
+
};
|
|
5261
5275
|
return [
|
|
5262
5276
|
{
|
|
5263
5277
|
colId: 'name',
|
|
@@ -5338,6 +5352,7 @@ class IdentitiesPageService extends ListPageServiceClass {
|
|
|
5338
5352
|
field: 'isAdmin',
|
|
5339
5353
|
headerName: 'Is Admin',
|
|
5340
5354
|
headerComponent: TableColumnDefaultComponent,
|
|
5355
|
+
headerComponentParams: isAdminHeaderComponentParams,
|
|
5341
5356
|
resizable: true,
|
|
5342
5357
|
sortable: true,
|
|
5343
5358
|
sortColumn: this.sort.bind(this),
|
|
@@ -6416,7 +6431,9 @@ class FilterBarComponent {
|
|
|
6416
6431
|
this.filterString = '';
|
|
6417
6432
|
this.inputChangedDebounced = debounce(this.inputChanged.bind(this), 400);
|
|
6418
6433
|
this.filterService.filtersChanged.subscribe(filters => {
|
|
6419
|
-
this._filters =
|
|
6434
|
+
this._filters = filters.filter((filter) => {
|
|
6435
|
+
return filter.hidden !== true;
|
|
6436
|
+
});
|
|
6420
6437
|
let tmp = '';
|
|
6421
6438
|
for (let idx = 0; idx < filters.length; idx++) {
|
|
6422
6439
|
if (filters[idx].columnId === 'name') {
|
|
@@ -6490,11 +6507,11 @@ class HiddenColumnsBarComponent {
|
|
|
6490
6507
|
this.columnVisibilityChanged.emit(event);
|
|
6491
6508
|
}
|
|
6492
6509
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HiddenColumnsBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6493
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HiddenColumnsBarComponent, selector: "lib-table-hidden-columns-bar", inputs: { hiddenColumns: "hiddenColumns" }, outputs: { columnVisibilityChanged: "columnVisibilityChanged" }, ngImport: i0, template: "<div class=\"hidden-columns-list\" id=\"ColumnVisibilityHeader\">\n
|
|
6510
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HiddenColumnsBarComponent, selector: "lib-table-hidden-columns-bar", inputs: { hiddenColumns: "hiddenColumns" }, outputs: { columnVisibilityChanged: "columnVisibilityChanged" }, ngImport: i0, template: "<div class=\"hidden-columns-bar-container\">\n <div class=\"hidden-columns-list\" id=\"ColumnVisibilityHeader\">\n <div\n (click)=\"setColumnVisibilityColumn(col, true)\"\n *ngFor=\"let col of hiddenColumns\"\n class=\"hidden-column-item ag-dnd-ghost ag-unselectable ag-theme-alpine\"\n id=\"ColumnVisibility_{{ col.headerName }}\"\n title=\"Show column\"\n >\n <span class=\"ag-dnd-ghost-icon\">\n <span class=\"ag-icon ag-icon-eye-slash\"></span>\n </span>\n <div class=\"ag-dnd-ghost-label\">{{ col.headerName }}</div>\n </div>\n </div>\n</div>", styles: [".hidden-columns-bar-container{display:flex;align-items:center;justify-content:space-between;flex-direction:row;width:100%}.hidden-columns-list{align-items:center;display:flex;flex-direction:row;margin-left:7px;min-height:30px;flex-wrap:wrap;flex:0 1 auto}.hidden-columns-list.hidden-results{flex-wrap:nowrap;overflow:auto}.hidden-columns-list.hidden-results .hidden-column-item{flex:1 0 auto}.hidden-columns-list::-webkit-scrollbar{height:14px}.hidden-columns-list .hidden-column-item{align-items:center;background-color:var(--background);border:2px solid var(--background);border-radius:12px;cursor:pointer;color:var(--inputBorder);font-weight:600;font-family:Open Sans,sans-serif;display:flex;flex:0 1 auto;height:25px!important;margin-left:10px;margin-top:5px;padding:2px 10px 2px 5px;position:relative;text-align:center;box-shadow:unset;transform:translateY(0)}.hidden-columns-list .ag-dnd-ghost:hover{border:2px solid var(--primaryColor)!important}.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-label,.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-eye-slash{color:var(--ag-alpine-active-color, var(--primaryColor))}.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-eye-slash:before{content:\"\\f113\"}.hidden-columns-list .ag-dnd-ghost-label{line-height:initial;color:var(--text)}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
|
|
6494
6511
|
}
|
|
6495
6512
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HiddenColumnsBarComponent, decorators: [{
|
|
6496
6513
|
type: Component,
|
|
6497
|
-
args: [{ selector: 'lib-table-hidden-columns-bar', template: "<div class=\"hidden-columns-list\" id=\"ColumnVisibilityHeader\">\n
|
|
6514
|
+
args: [{ selector: 'lib-table-hidden-columns-bar', template: "<div class=\"hidden-columns-bar-container\">\n <div class=\"hidden-columns-list\" id=\"ColumnVisibilityHeader\">\n <div\n (click)=\"setColumnVisibilityColumn(col, true)\"\n *ngFor=\"let col of hiddenColumns\"\n class=\"hidden-column-item ag-dnd-ghost ag-unselectable ag-theme-alpine\"\n id=\"ColumnVisibility_{{ col.headerName }}\"\n title=\"Show column\"\n >\n <span class=\"ag-dnd-ghost-icon\">\n <span class=\"ag-icon ag-icon-eye-slash\"></span>\n </span>\n <div class=\"ag-dnd-ghost-label\">{{ col.headerName }}</div>\n </div>\n </div>\n</div>", styles: [".hidden-columns-bar-container{display:flex;align-items:center;justify-content:space-between;flex-direction:row;width:100%}.hidden-columns-list{align-items:center;display:flex;flex-direction:row;margin-left:7px;min-height:30px;flex-wrap:wrap;flex:0 1 auto}.hidden-columns-list.hidden-results{flex-wrap:nowrap;overflow:auto}.hidden-columns-list.hidden-results .hidden-column-item{flex:1 0 auto}.hidden-columns-list::-webkit-scrollbar{height:14px}.hidden-columns-list .hidden-column-item{align-items:center;background-color:var(--background);border:2px solid var(--background);border-radius:12px;cursor:pointer;color:var(--inputBorder);font-weight:600;font-family:Open Sans,sans-serif;display:flex;flex:0 1 auto;height:25px!important;margin-left:10px;margin-top:5px;padding:2px 10px 2px 5px;position:relative;text-align:center;box-shadow:unset;transform:translateY(0)}.hidden-columns-list .ag-dnd-ghost:hover{border:2px solid var(--primaryColor)!important}.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-label,.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-eye-slash{color:var(--ag-alpine-active-color, var(--primaryColor))}.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-eye-slash:before{content:\"\\f113\"}.hidden-columns-list .ag-dnd-ghost-label{line-height:initial;color:var(--text)}\n"] }]
|
|
6498
6515
|
}], propDecorators: { hiddenColumns: [{
|
|
6499
6516
|
type: Input
|
|
6500
6517
|
}], columnVisibilityChanged: [{
|
|
@@ -8467,13 +8484,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
8467
8484
|
args: [JsonEditorComponent, { static: false }]
|
|
8468
8485
|
}] } });
|
|
8469
8486
|
|
|
8470
|
-
class Config {
|
|
8487
|
+
let Config$1 = class Config {
|
|
8471
8488
|
constructor() {
|
|
8472
8489
|
this.name = '';
|
|
8473
8490
|
this.data = {};
|
|
8474
8491
|
this.configTypeId = '';
|
|
8475
8492
|
}
|
|
8476
|
-
}
|
|
8493
|
+
};
|
|
8477
8494
|
;
|
|
8478
8495
|
|
|
8479
8496
|
class ConfigurationService {
|
|
@@ -8586,7 +8603,7 @@ class ConfigurationService {
|
|
|
8586
8603
|
});
|
|
8587
8604
|
}
|
|
8588
8605
|
getConfigDataModel(formData, isUpdate) {
|
|
8589
|
-
const saveModel = new Config();
|
|
8606
|
+
const saveModel = new Config$1();
|
|
8590
8607
|
const modelProperties = keys(saveModel);
|
|
8591
8608
|
modelProperties.forEach((prop) => {
|
|
8592
8609
|
switch (prop) {
|
|
@@ -8841,7 +8858,7 @@ class ConfigurationFormComponent extends ProjectableForm {
|
|
|
8841
8858
|
this.settings = {};
|
|
8842
8859
|
this.selectedConfigTypeId = '';
|
|
8843
8860
|
this.entityType = 'configs';
|
|
8844
|
-
this.entityClass = Config;
|
|
8861
|
+
this.entityClass = Config$1;
|
|
8845
8862
|
this._apiData = {};
|
|
8846
8863
|
}
|
|
8847
8864
|
ngOnInit() {
|
|
@@ -8936,6 +8953,8 @@ class ConfigurationFormComponent extends ProjectableForm {
|
|
|
8936
8953
|
this.isLoading = false;
|
|
8937
8954
|
});
|
|
8938
8955
|
if (configId) {
|
|
8956
|
+
this.initData = this.formData;
|
|
8957
|
+
this._dataChange = false;
|
|
8939
8958
|
if (this.isModal) {
|
|
8940
8959
|
this.closeModal(true, true);
|
|
8941
8960
|
}
|
|
@@ -10368,7 +10387,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
10368
10387
|
*/
|
|
10369
10388
|
class IdentitiesPageComponent extends ListPageComponent {
|
|
10370
10389
|
constructor(svc, filterService, dialogForm, tabNames, zacWrapperService, router, consoleEvents, extService) {
|
|
10371
|
-
super(filterService, svc, consoleEvents, dialogForm);
|
|
10390
|
+
super(filterService, svc, consoleEvents, dialogForm, extService);
|
|
10372
10391
|
this.svc = svc;
|
|
10373
10392
|
this.tabNames = tabNames;
|
|
10374
10393
|
this.zacWrapperService = zacWrapperService;
|
|
@@ -10547,11 +10566,11 @@ class IdentitiesPageComponent extends ListPageComponent {
|
|
|
10547
10566
|
return true;
|
|
10548
10567
|
}
|
|
10549
10568
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentitiesPageComponent, deps: [{ token: IdentitiesPageService }, { token: DataTableFilterService }, { token: i3$2.MatDialog }, { token: TabNameService }, { token: ZAC_WRAPPER_SERVICE }, { token: i3.Router }, { token: ConsoleEventsService }, { token: IDENTITY_EXTENSION_SERVICE }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10550
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IdentitiesPageComponent, selector: "lib-identities", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-identities-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'identities'\"\n [rowData]=\"rowData\"\n [isLoading]=\"isLoading\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [currentPage]=\"currentPage\"\n [emptyMsg]=\"'No Identities defined, Click the plus to add an Identity.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n [headerActions]=\"svc.tableHeaderActions\"\n [noItemsImage]=\"'No_Clients'\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n<lib-side-modal [(open)]=\"svc.sideModalOpen\" [showClose]=\"false\">\n <lib-overrides\n *ngIf=\"svc.modalType === 'overrides' && svc.sideModalOpen\"\n [identity]=\"svc.selectedIdentity\"\n (close)=\"closeModal($event)\"\n ></lib-overrides>\n</lib-side-modal>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n", styles: [".ziti-page-container .action{line-height:60px;top:25px;right:25px;z-index:999}.ziti-identities-container ::ng-deep .zac-wrapper-container{height:0px;left:-999999px;position:fixed}.ziti-identities-container ::ng-deep .zac-wrapper-container .action{display:none}.ziti-ag-grid{height:100%;position:relative;width:100%}.ziti-ag-grid .ziti-ag-grid-table{height:100%;width:100%}.ziti-ag-grid .ziti-ag-grid-table .ag-root-wrapper{border-bottom-style:none}.ziti-ag-grid .ziti-ag-grid-table .ag-cell{align-items:center;display:flex}.system-policies-toggle,.hidden-results-container{position:relative;right:0;display:flex;flex-direction:row;justify-content:center;align-items:flex-start;margin-top:10px;padding:0 0 0 20px;border-radius:7px;flex-wrap:nowrap;flex:1 0 auto}.system-policies-toggle .toggle-text,.hidden-results-container .toggle-text{font-weight:600;font-size:12px}.system-policies-toggle .toggle-text a,.hidden-results-container .toggle-text a{cursor:pointer}.system-policies-toggle .toggle,.hidden-results-container .toggle{width:75px;margin-left:10px}.system-policies-toggle .toggle.on .switch,.hidden-results-container .toggle.on .switch{left:52px}.system-policies-toggle .spinner,.hidden-results-container .spinner{display:inline-block;width:10px;height:10px;border-radius:50%;background:transparent;border-top:2px solid var(--tableText);border-right:2px solid var(--tableText);border-bottom:2px solid transparent;border-left:2px solid transparent;animation:loading .5s infinite linear;margin-left:5px}.hidden-results-container.loading-results{opacity:.7}.nf-cell-vert-align,.ag-row .ag-cell{align-items:center;display:flex}.hidden-columns-list{align-items:center;display:flex;flex-direction:row;margin-left:7px;min-height:30px;flex-wrap:wrap;flex:0 1 auto}.hidden-columns-list.hidden-results{flex-wrap:nowrap;overflow:auto}.hidden-columns-list.hidden-results .hidden-column-item{flex:1 0 auto}.hidden-columns-list::-webkit-scrollbar{height:14px}.hidden-columns-list .hidden-column-item{align-items:center;background-color:var(--background);border:2px solid var(--background);border-radius:12px;cursor:pointer;color:var(----stroke);font-weight:600;font-family:Open Sans,sans-serif;display:flex;flex:0 1 auto;height:25px!important;margin-left:10px;margin-top:5px;padding:2px 10px 2px 5px;position:relative;text-align:center;box-shadow:unset;transform:translateY(0)}.hidden-columns-list .ag-dnd-ghost:hover{border:2px solid var(--primaryColor)!important}.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-label,.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-eye-slash{color:var(--ag-alpine-active-color, var(--primaryColor))}.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-eye-slash:before{content:\"\\f113\"}.hidden-columns-list .ag-dnd-ghost-label{line-height:initial}::ng-deep .darkmode .ag-dnd-ghost-icon .ag-icon-eye-slash{color:#fff!important}.tMenu{transition-property:opacity;z-index:99999999999;height:-moz-fit-content;height:fit-content}.tMenu.action-menu{position:fixed;width:175px}.tMenu .tActionRow{transition-property:opacity}.tMenu .tActionRow.has-icon{display:flex;flex-direction:row;align-items:center}.tMenu .tActionRow .v7Offline{background-color:var(--placeholder)}.tMenu .tActionRow .v7OnlineOffline{width:14px;height:14px;border-color:var(--placeholder)}.tMenu .tActionRow .v7OnlineOffline:hover{border-color:var(--placeholder)}.hidden-items-container{display:flex;flex-direction:row;width:100%;flex-wrap:nowrap;justify-content:space-between}.os-icon{width:23px;height:23px;background-size:23px 23px;display:inline-flex;margin-right:8px;margin-top:5px;margin-bottom:5px}::ng-deep .date-time-container{position:fixed}::ng-deep .date-time-container .p-calendar .p-inputtext{height:1px;width:1px;padding:0}::ng-deep .date-time-container .filter-button-container{height:50px;display:flex;flex-direction:row;justify-content:center;align-items:center}::ng-deep .date-time-container .filter-button-container .toggleButton{padding-left:5px;padding-right:5px;width:unset}::ng-deep .date-time-container .p-calendar{height:30px}::ng-deep .date-time-container .p-calendar .p-inputtext{height:30px;border-top-left-radius:20px;border-bottom-left-radius:20px;text-indent:5px}::ng-deep .date-time-container .p-calendar .p-button-icon-only{border-top-right-radius:20px;border-bottom-right-radius:20px}#TimeSearch{position:relative;float:left;display:inline-block;margin-left:10px;width:50px;height:40px;background-color:var(--primary)}#TimeSearch #TimeSearchList{width:44px;height:0;position:absolute;top:0;left:-2px;overflow:hidden;transition:var(--transition);background-color:var(--menu);border-radius:8px;z-index:30}#TimeSearch #TimeSearchList .time{width:40px;background-color:var(--background);padding-left:8px;padding-right:8px;border-radius:8px;line-height:26px;font-size:12px;font-weight:700;text-align:center;margin-top:2px;margin-left:2px;left:-2px;top:-51px;cursor:pointer;transition:var(--transition)}#TimeSearch #TimeSearchList.open{top:-51px;width:44px;height:226px}#TimeSearch #TimeSelectButton{width:40px;background-color:var(--background);padding-left:8px;padding-right:8px;border-radius:8px;line-height:26px;text-align:center;font-size:12px;font-weight:700;margin-top:7px;cursor:pointer;transition:var(--transition)}#TimeSearch #TimeSelectButton:hover,#TimeSearch #TimeSearchList .time:hover{background-color:var(--primaryColor);color:var(--white)}::ng-deep p-togglebutton .p-togglebutton.p-button{border-radius:7px!important;box-shadow:0 5px 20px #0000000d!important;margin-top:-2px!important}::ng-deep p-togglebutton .p-togglebutton.p-button:hover{filter:brightness(99%)!important;box-shadow:0 5px 20px #0000000d!important;transition:all .3s ease}::ng-deep p-togglebutton .p-togglebutton.p-button:active{filter:brightness(95%)!important;box-shadow:none!important;transform:translateY(1px)!important;transition:all .3s ease}#TimeSearch #TimeSelectButton{margin-top:4px!important}::ng-deep .p-calendar .p-inputtext{height:37px}::ng-deep .p-inputtext{border-radius:7px}.calendar{display:inline-block;padding-left:5px;float:left;padding-right:10px;margin-top:-2px}::ng-deep .p-datepicker:not(.p-datepicker-inline){background:var(--table);border:0 none;box-shadow:#091e4226 0 20px 32px -8px;border-radius:12px}::ng-deep .p-button.p-button-text{background-color:transparent;color:var(--primaryColor);border-color:transparent}::ng-deep .p-button.p-button-text:enabled:hover{background:var(--primaryColorShadowLight);color:var(--primaryColor);border-color:transparent}::ng-deep .p-datepicker table td>span.p-highlight{color:var(--tableText);background:var(--primaryColorShadowLight)}::ng-deep .p-inputtext:enabled:hover{border-color:var(--primaryColor)}::ng-deep .p-datepicker{padding:.5rem;padding-bottom:0;background:var(--table);color:var(--tableText);border:1px solid var(--inputBorder);border-radius:3px}::ng-deep .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 1 var(--primaryColorShadowLight);border-color:var(--primaryColor)}::ng-deep .p-inputtext{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;font-size:1rem;color:var(--tableText);background:var(--table);padding:.5rem;border:1px solid var(--inputBorder);transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s;appearance:none;border-radius:7px}::ng-deep .p-datepicker:not(.p-datepicker-inline) .p-datepicker-header{background:var(--table)}::ng-deep .p-datepicker .p-datepicker-header{padding:.5rem;color:var(--tableText);background:var(--table);font-weight:600;margin:0;border-bottom:1px solid var(--inputBorder);border-top-right-radius:12px;border-top-left-radius:12px}::ng-deep .p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover{background:#e9ecef;color:var(--table)}::ng-deep .p-datepicker .p-timepicker{border-top:1px solid var(--background);padding:.5rem}::ng-deep .p-togglebutton.p-button{background:var(--background);border:1px solid var(--inputBorder);color:var(--tableText);transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}::ng-deep .p-datepicker .p-datepicker-buttonbar{padding:1rem 0;border-top:1px solid var(--inputBorder)}::ng-deep .p-button{color:#fff;background:var(--primaryColor);border:1px solid var(--primaryColor);padding:.495rem 1rem;font-size:1rem;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s;border-radius:7px}::ng-deep .p-togglebutton.p-button.p-highlight{background:var(--primaryColor);border:1px solid var(--primaryColor);color:var(--background)}::ng-deep .p-togglebutton.p-button.p-highlight:hover{background:var(--primaryColor);border:1px solid var(--primaryColor);color:var(--background)}app-zac-wrapper{z-index:999999}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ListPageHeaderComponent, selector: "lib-list-page-header", inputs: ["title", "tabs", "showAdd", "hideAction"], outputs: ["actionClicked"] }, { kind: "component", type: DataTableComponent, selector: "lib-data-table", inputs: ["rowData", "expandRowData", "collapseRowData", "rowValidation", "isTimeSearchAvailable", "isLoading", "tableId", "options", "validateService", "rowsToggled", "tableRefreshCount", "view", "serverSideDataSource", "allowDownload", "startCount", "endCount", "totalCount", "emptyMsg", "filterApplied", "menuItems", "headerActions", "noItemsClass", "entityTypeName", "showNoItemsAdd", "currentPage", "noItemsImage", "columnDefinitions", "refreshCount"], outputs: ["actionRequested", "gridReady", "dragStart", "dragLeave", "pageChanged"] }, { kind: "component", type: SideModalComponent, selector: "lib-side-modal", inputs: ["showClose", "open"], outputs: ["openChange"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: OverridesComponent, selector: "lib-overrides", inputs: ["identity"], outputs: ["close"] }] }); }
|
|
10569
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IdentitiesPageComponent, selector: "lib-identities", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-identities-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n <ng-content select=\"[slot=list-page-subheader]\"></ng-content>\n <lib-data-table [tableId]=\"'identities'\"\n [rowData]=\"rowData\"\n [isLoading]=\"isLoading\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [currentPage]=\"currentPage\"\n [emptyMsg]=\"'No Identities defined, Click the plus to add an Identity.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n [headerActions]=\"svc.tableHeaderActions\"\n [noItemsImage]=\"'No_Clients'\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n<lib-side-modal [(open)]=\"svc.sideModalOpen\" [showClose]=\"false\">\n <lib-overrides\n *ngIf=\"svc.modalType === 'overrides' && svc.sideModalOpen\"\n [identity]=\"svc.selectedIdentity\"\n (close)=\"closeModal($event)\"\n ></lib-overrides>\n</lib-side-modal>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n", styles: [".ziti-page-container .action{line-height:60px;top:25px;right:25px;z-index:999}.ziti-identities-container ::ng-deep .zac-wrapper-container{height:0px;left:-999999px;position:fixed}.ziti-identities-container ::ng-deep .zac-wrapper-container .action{display:none}.ziti-ag-grid{height:100%;position:relative;width:100%}.ziti-ag-grid .ziti-ag-grid-table{height:100%;width:100%}.ziti-ag-grid .ziti-ag-grid-table .ag-root-wrapper{border-bottom-style:none}.ziti-ag-grid .ziti-ag-grid-table .ag-cell{align-items:center;display:flex}.system-policies-toggle,.hidden-results-container{position:relative;right:0;display:flex;flex-direction:row;justify-content:center;align-items:flex-start;margin-top:10px;padding:0 0 0 20px;border-radius:7px;flex-wrap:nowrap;flex:1 0 auto}.system-policies-toggle .toggle-text,.hidden-results-container .toggle-text{font-weight:600;font-size:12px}.system-policies-toggle .toggle-text a,.hidden-results-container .toggle-text a{cursor:pointer}.system-policies-toggle .toggle,.hidden-results-container .toggle{width:75px;margin-left:10px}.system-policies-toggle .toggle.on .switch,.hidden-results-container .toggle.on .switch{left:52px}.system-policies-toggle .spinner,.hidden-results-container .spinner{display:inline-block;width:10px;height:10px;border-radius:50%;background:transparent;border-top:2px solid var(--tableText);border-right:2px solid var(--tableText);border-bottom:2px solid transparent;border-left:2px solid transparent;animation:loading .5s infinite linear;margin-left:5px}.hidden-results-container.loading-results{opacity:.7}.nf-cell-vert-align,.ag-row .ag-cell{align-items:center;display:flex}.hidden-columns-list{align-items:center;display:flex;flex-direction:row;margin-left:7px;min-height:30px;flex-wrap:wrap;flex:0 1 auto}.hidden-columns-list.hidden-results{flex-wrap:nowrap;overflow:auto}.hidden-columns-list.hidden-results .hidden-column-item{flex:1 0 auto}.hidden-columns-list::-webkit-scrollbar{height:14px}.hidden-columns-list .hidden-column-item{align-items:center;background-color:var(--background);border:2px solid var(--background);border-radius:12px;cursor:pointer;color:var(----stroke);font-weight:600;font-family:Open Sans,sans-serif;display:flex;flex:0 1 auto;height:25px!important;margin-left:10px;margin-top:5px;padding:2px 10px 2px 5px;position:relative;text-align:center;box-shadow:unset;transform:translateY(0)}.hidden-columns-list .ag-dnd-ghost:hover{border:2px solid var(--primaryColor)!important}.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-label,.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-eye-slash{color:var(--ag-alpine-active-color, var(--primaryColor))}.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-eye-slash:before{content:\"\\f113\"}.hidden-columns-list .ag-dnd-ghost-label{line-height:initial}::ng-deep .darkmode .ag-dnd-ghost-icon .ag-icon-eye-slash{color:#fff!important}.tMenu{transition-property:opacity;z-index:99999999999;height:-moz-fit-content;height:fit-content}.tMenu.action-menu{position:fixed;width:175px}.tMenu .tActionRow{transition-property:opacity}.tMenu .tActionRow.has-icon{display:flex;flex-direction:row;align-items:center}.tMenu .tActionRow .v7Offline{background-color:var(--placeholder)}.tMenu .tActionRow .v7OnlineOffline{width:14px;height:14px;border-color:var(--placeholder)}.tMenu .tActionRow .v7OnlineOffline:hover{border-color:var(--placeholder)}.hidden-items-container{display:flex;flex-direction:row;width:100%;flex-wrap:nowrap;justify-content:space-between}.os-icon{width:23px;height:23px;background-size:23px 23px;display:inline-flex;margin-right:8px;margin-top:5px;margin-bottom:5px}::ng-deep .date-time-container{position:fixed}::ng-deep .date-time-container .p-calendar .p-inputtext{height:1px;width:1px;padding:0}::ng-deep .date-time-container .filter-button-container{height:50px;display:flex;flex-direction:row;justify-content:center;align-items:center}::ng-deep .date-time-container .filter-button-container .toggleButton{padding-left:5px;padding-right:5px;width:unset}::ng-deep .date-time-container .p-calendar{height:30px}::ng-deep .date-time-container .p-calendar .p-inputtext{height:30px;border-top-left-radius:20px;border-bottom-left-radius:20px;text-indent:5px}::ng-deep .date-time-container .p-calendar .p-button-icon-only{border-top-right-radius:20px;border-bottom-right-radius:20px}#TimeSearch{position:relative;float:left;display:inline-block;margin-left:10px;width:50px;height:40px;background-color:var(--primary)}#TimeSearch #TimeSearchList{width:44px;height:0;position:absolute;top:0;left:-2px;overflow:hidden;transition:var(--transition);background-color:var(--menu);border-radius:8px;z-index:30}#TimeSearch #TimeSearchList .time{width:40px;background-color:var(--background);padding-left:8px;padding-right:8px;border-radius:8px;line-height:26px;font-size:12px;font-weight:700;text-align:center;margin-top:2px;margin-left:2px;left:-2px;top:-51px;cursor:pointer;transition:var(--transition)}#TimeSearch #TimeSearchList.open{top:-51px;width:44px;height:226px}#TimeSearch #TimeSelectButton{width:40px;background-color:var(--background);padding-left:8px;padding-right:8px;border-radius:8px;line-height:26px;text-align:center;font-size:12px;font-weight:700;margin-top:7px;cursor:pointer;transition:var(--transition)}#TimeSearch #TimeSelectButton:hover,#TimeSearch #TimeSearchList .time:hover{background-color:var(--primaryColor);color:var(--white)}::ng-deep p-togglebutton .p-togglebutton.p-button{border-radius:7px!important;box-shadow:0 5px 20px #0000000d!important;margin-top:-2px!important}::ng-deep p-togglebutton .p-togglebutton.p-button:hover{filter:brightness(99%)!important;box-shadow:0 5px 20px #0000000d!important;transition:all .3s ease}::ng-deep p-togglebutton .p-togglebutton.p-button:active{filter:brightness(95%)!important;box-shadow:none!important;transform:translateY(1px)!important;transition:all .3s ease}#TimeSearch #TimeSelectButton{margin-top:4px!important}::ng-deep .p-calendar .p-inputtext{height:37px}::ng-deep .p-inputtext{border-radius:7px}.calendar{display:inline-block;padding-left:5px;float:left;padding-right:10px;margin-top:-2px}::ng-deep .p-datepicker:not(.p-datepicker-inline){background:var(--table);border:0 none;box-shadow:#091e4226 0 20px 32px -8px;border-radius:12px}::ng-deep .p-button.p-button-text{background-color:transparent;color:var(--primaryColor);border-color:transparent}::ng-deep .p-button.p-button-text:enabled:hover{background:var(--primaryColorShadowLight);color:var(--primaryColor);border-color:transparent}::ng-deep .p-datepicker table td>span.p-highlight{color:var(--tableText);background:var(--primaryColorShadowLight)}::ng-deep .p-inputtext:enabled:hover{border-color:var(--primaryColor)}::ng-deep .p-datepicker{padding:.5rem;padding-bottom:0;background:var(--table);color:var(--tableText);border:1px solid var(--inputBorder);border-radius:3px}::ng-deep .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 1 var(--primaryColorShadowLight);border-color:var(--primaryColor)}::ng-deep .p-inputtext{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;font-size:1rem;color:var(--tableText);background:var(--table);padding:.5rem;border:1px solid var(--inputBorder);transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s;appearance:none;border-radius:7px}::ng-deep .p-datepicker:not(.p-datepicker-inline) .p-datepicker-header{background:var(--table)}::ng-deep .p-datepicker .p-datepicker-header{padding:.5rem;color:var(--tableText);background:var(--table);font-weight:600;margin:0;border-bottom:1px solid var(--inputBorder);border-top-right-radius:12px;border-top-left-radius:12px}::ng-deep .p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover{background:#e9ecef;color:var(--table)}::ng-deep .p-datepicker .p-timepicker{border-top:1px solid var(--background);padding:.5rem}::ng-deep .p-togglebutton.p-button{background:var(--background);border:1px solid var(--inputBorder);color:var(--tableText);transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}::ng-deep .p-datepicker .p-datepicker-buttonbar{padding:1rem 0;border-top:1px solid var(--inputBorder)}::ng-deep .p-button{color:#fff;background:var(--primaryColor);border:1px solid var(--primaryColor);padding:.495rem 1rem;font-size:1rem;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s;border-radius:7px}::ng-deep .p-togglebutton.p-button.p-highlight{background:var(--primaryColor);border:1px solid var(--primaryColor);color:var(--background)}::ng-deep .p-togglebutton.p-button.p-highlight:hover{background:var(--primaryColor);border:1px solid var(--primaryColor);color:var(--background)}app-zac-wrapper{z-index:999999}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ListPageHeaderComponent, selector: "lib-list-page-header", inputs: ["title", "tabs", "showAdd", "hideAction"], outputs: ["actionClicked"] }, { kind: "component", type: DataTableComponent, selector: "lib-data-table", inputs: ["rowData", "expandRowData", "collapseRowData", "rowValidation", "isTimeSearchAvailable", "isLoading", "tableId", "options", "validateService", "rowsToggled", "tableRefreshCount", "view", "serverSideDataSource", "allowDownload", "startCount", "endCount", "totalCount", "emptyMsg", "filterApplied", "menuItems", "headerActions", "noItemsClass", "entityTypeName", "showNoItemsAdd", "currentPage", "noItemsImage", "columnDefinitions", "refreshCount"], outputs: ["actionRequested", "gridReady", "dragStart", "dragLeave", "pageChanged"] }, { kind: "component", type: SideModalComponent, selector: "lib-side-modal", inputs: ["showClose", "open"], outputs: ["openChange"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: OverridesComponent, selector: "lib-overrides", inputs: ["identity"], outputs: ["close"] }] }); }
|
|
10551
10570
|
}
|
|
10552
10571
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentitiesPageComponent, decorators: [{
|
|
10553
10572
|
type: Component,
|
|
10554
|
-
args: [{ selector: 'lib-identities', template: "<div class=\"ziti-page-container ziti-identities-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'identities'\"\n [rowData]=\"rowData\"\n [isLoading]=\"isLoading\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [currentPage]=\"currentPage\"\n [emptyMsg]=\"'No Identities defined, Click the plus to add an Identity.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n [headerActions]=\"svc.tableHeaderActions\"\n [noItemsImage]=\"'No_Clients'\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n<lib-side-modal [(open)]=\"svc.sideModalOpen\" [showClose]=\"false\">\n <lib-overrides\n *ngIf=\"svc.modalType === 'overrides' && svc.sideModalOpen\"\n [identity]=\"svc.selectedIdentity\"\n (close)=\"closeModal($event)\"\n ></lib-overrides>\n</lib-side-modal>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n", styles: [".ziti-page-container .action{line-height:60px;top:25px;right:25px;z-index:999}.ziti-identities-container ::ng-deep .zac-wrapper-container{height:0px;left:-999999px;position:fixed}.ziti-identities-container ::ng-deep .zac-wrapper-container .action{display:none}.ziti-ag-grid{height:100%;position:relative;width:100%}.ziti-ag-grid .ziti-ag-grid-table{height:100%;width:100%}.ziti-ag-grid .ziti-ag-grid-table .ag-root-wrapper{border-bottom-style:none}.ziti-ag-grid .ziti-ag-grid-table .ag-cell{align-items:center;display:flex}.system-policies-toggle,.hidden-results-container{position:relative;right:0;display:flex;flex-direction:row;justify-content:center;align-items:flex-start;margin-top:10px;padding:0 0 0 20px;border-radius:7px;flex-wrap:nowrap;flex:1 0 auto}.system-policies-toggle .toggle-text,.hidden-results-container .toggle-text{font-weight:600;font-size:12px}.system-policies-toggle .toggle-text a,.hidden-results-container .toggle-text a{cursor:pointer}.system-policies-toggle .toggle,.hidden-results-container .toggle{width:75px;margin-left:10px}.system-policies-toggle .toggle.on .switch,.hidden-results-container .toggle.on .switch{left:52px}.system-policies-toggle .spinner,.hidden-results-container .spinner{display:inline-block;width:10px;height:10px;border-radius:50%;background:transparent;border-top:2px solid var(--tableText);border-right:2px solid var(--tableText);border-bottom:2px solid transparent;border-left:2px solid transparent;animation:loading .5s infinite linear;margin-left:5px}.hidden-results-container.loading-results{opacity:.7}.nf-cell-vert-align,.ag-row .ag-cell{align-items:center;display:flex}.hidden-columns-list{align-items:center;display:flex;flex-direction:row;margin-left:7px;min-height:30px;flex-wrap:wrap;flex:0 1 auto}.hidden-columns-list.hidden-results{flex-wrap:nowrap;overflow:auto}.hidden-columns-list.hidden-results .hidden-column-item{flex:1 0 auto}.hidden-columns-list::-webkit-scrollbar{height:14px}.hidden-columns-list .hidden-column-item{align-items:center;background-color:var(--background);border:2px solid var(--background);border-radius:12px;cursor:pointer;color:var(----stroke);font-weight:600;font-family:Open Sans,sans-serif;display:flex;flex:0 1 auto;height:25px!important;margin-left:10px;margin-top:5px;padding:2px 10px 2px 5px;position:relative;text-align:center;box-shadow:unset;transform:translateY(0)}.hidden-columns-list .ag-dnd-ghost:hover{border:2px solid var(--primaryColor)!important}.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-label,.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-eye-slash{color:var(--ag-alpine-active-color, var(--primaryColor))}.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-eye-slash:before{content:\"\\f113\"}.hidden-columns-list .ag-dnd-ghost-label{line-height:initial}::ng-deep .darkmode .ag-dnd-ghost-icon .ag-icon-eye-slash{color:#fff!important}.tMenu{transition-property:opacity;z-index:99999999999;height:-moz-fit-content;height:fit-content}.tMenu.action-menu{position:fixed;width:175px}.tMenu .tActionRow{transition-property:opacity}.tMenu .tActionRow.has-icon{display:flex;flex-direction:row;align-items:center}.tMenu .tActionRow .v7Offline{background-color:var(--placeholder)}.tMenu .tActionRow .v7OnlineOffline{width:14px;height:14px;border-color:var(--placeholder)}.tMenu .tActionRow .v7OnlineOffline:hover{border-color:var(--placeholder)}.hidden-items-container{display:flex;flex-direction:row;width:100%;flex-wrap:nowrap;justify-content:space-between}.os-icon{width:23px;height:23px;background-size:23px 23px;display:inline-flex;margin-right:8px;margin-top:5px;margin-bottom:5px}::ng-deep .date-time-container{position:fixed}::ng-deep .date-time-container .p-calendar .p-inputtext{height:1px;width:1px;padding:0}::ng-deep .date-time-container .filter-button-container{height:50px;display:flex;flex-direction:row;justify-content:center;align-items:center}::ng-deep .date-time-container .filter-button-container .toggleButton{padding-left:5px;padding-right:5px;width:unset}::ng-deep .date-time-container .p-calendar{height:30px}::ng-deep .date-time-container .p-calendar .p-inputtext{height:30px;border-top-left-radius:20px;border-bottom-left-radius:20px;text-indent:5px}::ng-deep .date-time-container .p-calendar .p-button-icon-only{border-top-right-radius:20px;border-bottom-right-radius:20px}#TimeSearch{position:relative;float:left;display:inline-block;margin-left:10px;width:50px;height:40px;background-color:var(--primary)}#TimeSearch #TimeSearchList{width:44px;height:0;position:absolute;top:0;left:-2px;overflow:hidden;transition:var(--transition);background-color:var(--menu);border-radius:8px;z-index:30}#TimeSearch #TimeSearchList .time{width:40px;background-color:var(--background);padding-left:8px;padding-right:8px;border-radius:8px;line-height:26px;font-size:12px;font-weight:700;text-align:center;margin-top:2px;margin-left:2px;left:-2px;top:-51px;cursor:pointer;transition:var(--transition)}#TimeSearch #TimeSearchList.open{top:-51px;width:44px;height:226px}#TimeSearch #TimeSelectButton{width:40px;background-color:var(--background);padding-left:8px;padding-right:8px;border-radius:8px;line-height:26px;text-align:center;font-size:12px;font-weight:700;margin-top:7px;cursor:pointer;transition:var(--transition)}#TimeSearch #TimeSelectButton:hover,#TimeSearch #TimeSearchList .time:hover{background-color:var(--primaryColor);color:var(--white)}::ng-deep p-togglebutton .p-togglebutton.p-button{border-radius:7px!important;box-shadow:0 5px 20px #0000000d!important;margin-top:-2px!important}::ng-deep p-togglebutton .p-togglebutton.p-button:hover{filter:brightness(99%)!important;box-shadow:0 5px 20px #0000000d!important;transition:all .3s ease}::ng-deep p-togglebutton .p-togglebutton.p-button:active{filter:brightness(95%)!important;box-shadow:none!important;transform:translateY(1px)!important;transition:all .3s ease}#TimeSearch #TimeSelectButton{margin-top:4px!important}::ng-deep .p-calendar .p-inputtext{height:37px}::ng-deep .p-inputtext{border-radius:7px}.calendar{display:inline-block;padding-left:5px;float:left;padding-right:10px;margin-top:-2px}::ng-deep .p-datepicker:not(.p-datepicker-inline){background:var(--table);border:0 none;box-shadow:#091e4226 0 20px 32px -8px;border-radius:12px}::ng-deep .p-button.p-button-text{background-color:transparent;color:var(--primaryColor);border-color:transparent}::ng-deep .p-button.p-button-text:enabled:hover{background:var(--primaryColorShadowLight);color:var(--primaryColor);border-color:transparent}::ng-deep .p-datepicker table td>span.p-highlight{color:var(--tableText);background:var(--primaryColorShadowLight)}::ng-deep .p-inputtext:enabled:hover{border-color:var(--primaryColor)}::ng-deep .p-datepicker{padding:.5rem;padding-bottom:0;background:var(--table);color:var(--tableText);border:1px solid var(--inputBorder);border-radius:3px}::ng-deep .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 1 var(--primaryColorShadowLight);border-color:var(--primaryColor)}::ng-deep .p-inputtext{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;font-size:1rem;color:var(--tableText);background:var(--table);padding:.5rem;border:1px solid var(--inputBorder);transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s;appearance:none;border-radius:7px}::ng-deep .p-datepicker:not(.p-datepicker-inline) .p-datepicker-header{background:var(--table)}::ng-deep .p-datepicker .p-datepicker-header{padding:.5rem;color:var(--tableText);background:var(--table);font-weight:600;margin:0;border-bottom:1px solid var(--inputBorder);border-top-right-radius:12px;border-top-left-radius:12px}::ng-deep .p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover{background:#e9ecef;color:var(--table)}::ng-deep .p-datepicker .p-timepicker{border-top:1px solid var(--background);padding:.5rem}::ng-deep .p-togglebutton.p-button{background:var(--background);border:1px solid var(--inputBorder);color:var(--tableText);transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}::ng-deep .p-datepicker .p-datepicker-buttonbar{padding:1rem 0;border-top:1px solid var(--inputBorder)}::ng-deep .p-button{color:#fff;background:var(--primaryColor);border:1px solid var(--primaryColor);padding:.495rem 1rem;font-size:1rem;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s;border-radius:7px}::ng-deep .p-togglebutton.p-button.p-highlight{background:var(--primaryColor);border:1px solid var(--primaryColor);color:var(--background)}::ng-deep .p-togglebutton.p-button.p-highlight:hover{background:var(--primaryColor);border:1px solid var(--primaryColor);color:var(--background)}app-zac-wrapper{z-index:999999}\n"] }]
|
|
10573
|
+
args: [{ selector: 'lib-identities', template: "<div class=\"ziti-page-container ziti-identities-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n <ng-content select=\"[slot=list-page-subheader]\"></ng-content>\n <lib-data-table [tableId]=\"'identities'\"\n [rowData]=\"rowData\"\n [isLoading]=\"isLoading\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [currentPage]=\"currentPage\"\n [emptyMsg]=\"'No Identities defined, Click the plus to add an Identity.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n [headerActions]=\"svc.tableHeaderActions\"\n [noItemsImage]=\"'No_Clients'\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n<lib-side-modal [(open)]=\"svc.sideModalOpen\" [showClose]=\"false\">\n <lib-overrides\n *ngIf=\"svc.modalType === 'overrides' && svc.sideModalOpen\"\n [identity]=\"svc.selectedIdentity\"\n (close)=\"closeModal($event)\"\n ></lib-overrides>\n</lib-side-modal>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n", styles: [".ziti-page-container .action{line-height:60px;top:25px;right:25px;z-index:999}.ziti-identities-container ::ng-deep .zac-wrapper-container{height:0px;left:-999999px;position:fixed}.ziti-identities-container ::ng-deep .zac-wrapper-container .action{display:none}.ziti-ag-grid{height:100%;position:relative;width:100%}.ziti-ag-grid .ziti-ag-grid-table{height:100%;width:100%}.ziti-ag-grid .ziti-ag-grid-table .ag-root-wrapper{border-bottom-style:none}.ziti-ag-grid .ziti-ag-grid-table .ag-cell{align-items:center;display:flex}.system-policies-toggle,.hidden-results-container{position:relative;right:0;display:flex;flex-direction:row;justify-content:center;align-items:flex-start;margin-top:10px;padding:0 0 0 20px;border-radius:7px;flex-wrap:nowrap;flex:1 0 auto}.system-policies-toggle .toggle-text,.hidden-results-container .toggle-text{font-weight:600;font-size:12px}.system-policies-toggle .toggle-text a,.hidden-results-container .toggle-text a{cursor:pointer}.system-policies-toggle .toggle,.hidden-results-container .toggle{width:75px;margin-left:10px}.system-policies-toggle .toggle.on .switch,.hidden-results-container .toggle.on .switch{left:52px}.system-policies-toggle .spinner,.hidden-results-container .spinner{display:inline-block;width:10px;height:10px;border-radius:50%;background:transparent;border-top:2px solid var(--tableText);border-right:2px solid var(--tableText);border-bottom:2px solid transparent;border-left:2px solid transparent;animation:loading .5s infinite linear;margin-left:5px}.hidden-results-container.loading-results{opacity:.7}.nf-cell-vert-align,.ag-row .ag-cell{align-items:center;display:flex}.hidden-columns-list{align-items:center;display:flex;flex-direction:row;margin-left:7px;min-height:30px;flex-wrap:wrap;flex:0 1 auto}.hidden-columns-list.hidden-results{flex-wrap:nowrap;overflow:auto}.hidden-columns-list.hidden-results .hidden-column-item{flex:1 0 auto}.hidden-columns-list::-webkit-scrollbar{height:14px}.hidden-columns-list .hidden-column-item{align-items:center;background-color:var(--background);border:2px solid var(--background);border-radius:12px;cursor:pointer;color:var(----stroke);font-weight:600;font-family:Open Sans,sans-serif;display:flex;flex:0 1 auto;height:25px!important;margin-left:10px;margin-top:5px;padding:2px 10px 2px 5px;position:relative;text-align:center;box-shadow:unset;transform:translateY(0)}.hidden-columns-list .ag-dnd-ghost:hover{border:2px solid var(--primaryColor)!important}.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-label,.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-eye-slash{color:var(--ag-alpine-active-color, var(--primaryColor))}.hidden-columns-list .ag-dnd-ghost:hover .ag-dnd-ghost-icon .ag-icon-eye-slash:before{content:\"\\f113\"}.hidden-columns-list .ag-dnd-ghost-label{line-height:initial}::ng-deep .darkmode .ag-dnd-ghost-icon .ag-icon-eye-slash{color:#fff!important}.tMenu{transition-property:opacity;z-index:99999999999;height:-moz-fit-content;height:fit-content}.tMenu.action-menu{position:fixed;width:175px}.tMenu .tActionRow{transition-property:opacity}.tMenu .tActionRow.has-icon{display:flex;flex-direction:row;align-items:center}.tMenu .tActionRow .v7Offline{background-color:var(--placeholder)}.tMenu .tActionRow .v7OnlineOffline{width:14px;height:14px;border-color:var(--placeholder)}.tMenu .tActionRow .v7OnlineOffline:hover{border-color:var(--placeholder)}.hidden-items-container{display:flex;flex-direction:row;width:100%;flex-wrap:nowrap;justify-content:space-between}.os-icon{width:23px;height:23px;background-size:23px 23px;display:inline-flex;margin-right:8px;margin-top:5px;margin-bottom:5px}::ng-deep .date-time-container{position:fixed}::ng-deep .date-time-container .p-calendar .p-inputtext{height:1px;width:1px;padding:0}::ng-deep .date-time-container .filter-button-container{height:50px;display:flex;flex-direction:row;justify-content:center;align-items:center}::ng-deep .date-time-container .filter-button-container .toggleButton{padding-left:5px;padding-right:5px;width:unset}::ng-deep .date-time-container .p-calendar{height:30px}::ng-deep .date-time-container .p-calendar .p-inputtext{height:30px;border-top-left-radius:20px;border-bottom-left-radius:20px;text-indent:5px}::ng-deep .date-time-container .p-calendar .p-button-icon-only{border-top-right-radius:20px;border-bottom-right-radius:20px}#TimeSearch{position:relative;float:left;display:inline-block;margin-left:10px;width:50px;height:40px;background-color:var(--primary)}#TimeSearch #TimeSearchList{width:44px;height:0;position:absolute;top:0;left:-2px;overflow:hidden;transition:var(--transition);background-color:var(--menu);border-radius:8px;z-index:30}#TimeSearch #TimeSearchList .time{width:40px;background-color:var(--background);padding-left:8px;padding-right:8px;border-radius:8px;line-height:26px;font-size:12px;font-weight:700;text-align:center;margin-top:2px;margin-left:2px;left:-2px;top:-51px;cursor:pointer;transition:var(--transition)}#TimeSearch #TimeSearchList.open{top:-51px;width:44px;height:226px}#TimeSearch #TimeSelectButton{width:40px;background-color:var(--background);padding-left:8px;padding-right:8px;border-radius:8px;line-height:26px;text-align:center;font-size:12px;font-weight:700;margin-top:7px;cursor:pointer;transition:var(--transition)}#TimeSearch #TimeSelectButton:hover,#TimeSearch #TimeSearchList .time:hover{background-color:var(--primaryColor);color:var(--white)}::ng-deep p-togglebutton .p-togglebutton.p-button{border-radius:7px!important;box-shadow:0 5px 20px #0000000d!important;margin-top:-2px!important}::ng-deep p-togglebutton .p-togglebutton.p-button:hover{filter:brightness(99%)!important;box-shadow:0 5px 20px #0000000d!important;transition:all .3s ease}::ng-deep p-togglebutton .p-togglebutton.p-button:active{filter:brightness(95%)!important;box-shadow:none!important;transform:translateY(1px)!important;transition:all .3s ease}#TimeSearch #TimeSelectButton{margin-top:4px!important}::ng-deep .p-calendar .p-inputtext{height:37px}::ng-deep .p-inputtext{border-radius:7px}.calendar{display:inline-block;padding-left:5px;float:left;padding-right:10px;margin-top:-2px}::ng-deep .p-datepicker:not(.p-datepicker-inline){background:var(--table);border:0 none;box-shadow:#091e4226 0 20px 32px -8px;border-radius:12px}::ng-deep .p-button.p-button-text{background-color:transparent;color:var(--primaryColor);border-color:transparent}::ng-deep .p-button.p-button-text:enabled:hover{background:var(--primaryColorShadowLight);color:var(--primaryColor);border-color:transparent}::ng-deep .p-datepicker table td>span.p-highlight{color:var(--tableText);background:var(--primaryColorShadowLight)}::ng-deep .p-inputtext:enabled:hover{border-color:var(--primaryColor)}::ng-deep .p-datepicker{padding:.5rem;padding-bottom:0;background:var(--table);color:var(--tableText);border:1px solid var(--inputBorder);border-radius:3px}::ng-deep .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 1 var(--primaryColorShadowLight);border-color:var(--primaryColor)}::ng-deep .p-inputtext{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;font-size:1rem;color:var(--tableText);background:var(--table);padding:.5rem;border:1px solid var(--inputBorder);transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s;appearance:none;border-radius:7px}::ng-deep .p-datepicker:not(.p-datepicker-inline) .p-datepicker-header{background:var(--table)}::ng-deep .p-datepicker .p-datepicker-header{padding:.5rem;color:var(--tableText);background:var(--table);font-weight:600;margin:0;border-bottom:1px solid var(--inputBorder);border-top-right-radius:12px;border-top-left-radius:12px}::ng-deep .p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover{background:#e9ecef;color:var(--table)}::ng-deep .p-datepicker .p-timepicker{border-top:1px solid var(--background);padding:.5rem}::ng-deep .p-togglebutton.p-button{background:var(--background);border:1px solid var(--inputBorder);color:var(--tableText);transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s}::ng-deep .p-datepicker .p-datepicker-buttonbar{padding:1rem 0;border-top:1px solid var(--inputBorder)}::ng-deep .p-button{color:#fff;background:var(--primaryColor);border:1px solid var(--primaryColor);padding:.495rem 1rem;font-size:1rem;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s;border-radius:7px}::ng-deep .p-togglebutton.p-button.p-highlight{background:var(--primaryColor);border:1px solid var(--primaryColor);color:var(--background)}::ng-deep .p-togglebutton.p-button.p-highlight:hover{background:var(--primaryColor);border:1px solid var(--primaryColor);color:var(--background)}app-zac-wrapper{z-index:999999}\n"] }]
|
|
10555
10574
|
}], ctorParameters: function () { return [{ type: IdentitiesPageService }, { type: DataTableFilterService }, { type: i3$2.MatDialog }, { type: TabNameService }, { type: ZacWrapperServiceClass, decorators: [{
|
|
10556
10575
|
type: Inject,
|
|
10557
10576
|
args: [ZAC_WRAPPER_SERVICE]
|
|
@@ -11705,6 +11724,13 @@ class Service {
|
|
|
11705
11724
|
this.contextMenu = 'Yes';
|
|
11706
11725
|
}
|
|
11707
11726
|
}
|
|
11727
|
+
class Config {
|
|
11728
|
+
constructor() {
|
|
11729
|
+
this.rootNode = 'No';
|
|
11730
|
+
this.children = [];
|
|
11731
|
+
this.contextMenu = 'Yes';
|
|
11732
|
+
}
|
|
11733
|
+
}
|
|
11708
11734
|
class Group {
|
|
11709
11735
|
constructor(idv, s, g) {
|
|
11710
11736
|
this.id = idv;
|
|
@@ -11749,16 +11775,118 @@ class ERouter {
|
|
|
11749
11775
|
}
|
|
11750
11776
|
class Children {
|
|
11751
11777
|
constructor() {
|
|
11778
|
+
this.rootNode = 'No';
|
|
11779
|
+
this.firstChild = 'No';
|
|
11752
11780
|
this.type = 'Children';
|
|
11753
11781
|
this.children = [];
|
|
11754
11782
|
}
|
|
11755
11783
|
}
|
|
11756
11784
|
class NetworkVisualizerHelper {
|
|
11757
|
-
|
|
11785
|
+
constructor() {
|
|
11786
|
+
this.uniqIId = 0;
|
|
11787
|
+
}
|
|
11788
|
+
createUniqId() {
|
|
11789
|
+
return ++this.uniqIId;
|
|
11790
|
+
}
|
|
11791
|
+
createEdgeRouterNode(er, isRootNode = 'Yes') {
|
|
11792
|
+
const erOb = new ERouter();
|
|
11793
|
+
// erOb.id = createId();
|
|
11794
|
+
erOb.uuid = er.id;
|
|
11795
|
+
erOb.name = er.name;
|
|
11796
|
+
erOb.verified = er.isVerified ? 'Yes' : 'No';
|
|
11797
|
+
//erOb.version = er.productVersion;
|
|
11798
|
+
erOb.online = er.isOnline ? 'Yes' : 'No';
|
|
11799
|
+
erOb.disabled = er.disabled ? 'Yes' : 'No';
|
|
11800
|
+
erOb.type = 'Edge Router';
|
|
11801
|
+
erOb.rootNode = isRootNode;
|
|
11802
|
+
erOb.tunnelerEnabled = er.tunnelerEnabled ? er.tunnelerEnabled : 'No';
|
|
11803
|
+
erOb.syncStatus = er.syncStatus ? er.syncStatus : 'No';
|
|
11804
|
+
erOb.createdAt = er.createdAt;
|
|
11805
|
+
erOb.updatedAt = er.updatedAt;
|
|
11806
|
+
return erOb;
|
|
11807
|
+
}
|
|
11808
|
+
createServiceEdgeRouterPolicyNode(rawObj, isRootNode = 'Yes') {
|
|
11809
|
+
const serviceerpolicy = new ServiceERPolicy();
|
|
11810
|
+
// serviceerpolicy.id = createId();
|
|
11811
|
+
serviceerpolicy.uuid = rawObj.id;
|
|
11812
|
+
serviceerpolicy.name = rawObj.name;
|
|
11813
|
+
serviceerpolicy.type = 'Service Router Policy';
|
|
11814
|
+
serviceerpolicy.rootNode = isRootNode;
|
|
11815
|
+
return serviceerpolicy;
|
|
11816
|
+
}
|
|
11817
|
+
createEdgeRouterPolicyNode(rawObj, isRootNode = 'Yes') {
|
|
11818
|
+
const erpolicy = new ERPolicy();
|
|
11819
|
+
// erpolicy.id = createId();
|
|
11820
|
+
erpolicy.uuid = rawObj.id;
|
|
11821
|
+
erpolicy.name = rawObj.name;
|
|
11822
|
+
erpolicy.type = 'Router Policy';
|
|
11823
|
+
erpolicy.rootNode = isRootNode;
|
|
11824
|
+
erpolicy.isSystem = rawObj.isSystem;
|
|
11825
|
+
erpolicy.semantic = rawObj.semantic;
|
|
11826
|
+
return erpolicy;
|
|
11827
|
+
}
|
|
11828
|
+
createServicePolicyNode(rawObj, isRootNode = 'Yes') {
|
|
11829
|
+
const bindGrp = new Group(43423, 'Bind-Policies', 'Bind Service Policy');
|
|
11830
|
+
const dialGrp = new Group(43545, 'Dial-Policies', 'Dial Service Policy');
|
|
11831
|
+
const spolicy = new ServicePolicy$1();
|
|
11832
|
+
// spolicy.id = createId();
|
|
11833
|
+
spolicy.id = 87956;
|
|
11834
|
+
spolicy.uuid = rawObj.id;
|
|
11835
|
+
spolicy.name = rawObj.name;
|
|
11836
|
+
spolicy.type = 'Service Policy';
|
|
11837
|
+
spolicy.rootNode = isRootNode;
|
|
11838
|
+
spolicy.clickProcess = "Not Yet";
|
|
11839
|
+
if (rawObj.type === 'Bind') {
|
|
11840
|
+
bindGrp.children.push(spolicy);
|
|
11841
|
+
return bindGrp;
|
|
11842
|
+
}
|
|
11843
|
+
else {
|
|
11844
|
+
dialGrp.children.push(spolicy);
|
|
11845
|
+
return dialGrp;
|
|
11846
|
+
}
|
|
11847
|
+
}
|
|
11848
|
+
createIdentityNode(rawObj, isRootNode = 'Yes') {
|
|
11849
|
+
const endpoint = new Identity();
|
|
11850
|
+
endpoint.rootNode = isRootNode;
|
|
11851
|
+
// endpoint.id = createId();
|
|
11852
|
+
endpoint.id = 5432;
|
|
11853
|
+
endpoint.uuid = rawObj.id;
|
|
11854
|
+
endpoint.name = rawObj.name;
|
|
11855
|
+
endpoint.online = rawObj.hasApiSession === true ? 'Yes' : 'No';
|
|
11856
|
+
endpoint.type = 'Identity';
|
|
11857
|
+
endpoint.createdAt = rawObj.createdAt;
|
|
11858
|
+
endpoint.updatedAt = rawObj.updatedAt;
|
|
11859
|
+
endpoint.status = rawObj.sdkInfo !== null ? 'Registered' : 'Not Registered';
|
|
11860
|
+
if (rawObj.sdkInfo) {
|
|
11861
|
+
endpoint.os = rawObj.sdkInfo.type ? rawObj.sdkInfo.type : rawObj.sdkInfo.appId;
|
|
11862
|
+
endpoint.osVersion = rawObj.sdkInfo.version;
|
|
11863
|
+
}
|
|
11864
|
+
if (rawObj.authPolicy && rawObj.authPolicy.name.includes("BrowZer")) {
|
|
11865
|
+
endpoint.type = 'BrowZer Identity';
|
|
11866
|
+
}
|
|
11867
|
+
return endpoint;
|
|
11868
|
+
}
|
|
11869
|
+
createServiceNode(rawObj, isRootNode = 'Yes') {
|
|
11870
|
+
const serviceobj = new Service();
|
|
11871
|
+
// serviceobj.id = createId();
|
|
11872
|
+
serviceobj.name = rawObj.name;
|
|
11873
|
+
serviceobj.uuid = rawObj.id;
|
|
11874
|
+
serviceobj.type = 'Service';
|
|
11875
|
+
serviceobj.rootNode = isRootNode;
|
|
11876
|
+
const attributeswithName = [];
|
|
11877
|
+
// attributeswithName.push('@' + rawObj.name);
|
|
11878
|
+
rawObj && rawObj.roleAttributes && rawObj.roleAttributes.find((srattr) => {
|
|
11879
|
+
attributeswithName.push(srattr);
|
|
11880
|
+
});
|
|
11881
|
+
return serviceobj;
|
|
11882
|
+
}
|
|
11883
|
+
getResourceTreeObj(networkName, networkStatus, services, identities, servicePolicies, edgerouters, edgeRouterPolicies, serviceEdgeRouterPolicies,
|
|
11758
11884
|
// networkProductVersion,
|
|
11759
|
-
uniqId, logger) {
|
|
11885
|
+
services_totalCount, identities_totalCount, edgerouters_totalCount, service_policies_totalCount, edge_router_policies_totalCount, service_router_policies_totalCount, uniqId, logger, ...args) {
|
|
11886
|
+
this.uniqIId = uniqId;
|
|
11760
11887
|
function createId() {
|
|
11761
11888
|
++uniqId;
|
|
11889
|
+
// ++this.uniqIId;
|
|
11762
11890
|
return uniqId;
|
|
11763
11891
|
}
|
|
11764
11892
|
class RootJson {
|
|
@@ -11768,13 +11896,16 @@ class NetworkVisualizerHelper {
|
|
|
11768
11896
|
this.children = [];
|
|
11769
11897
|
this.contextMenu = 'Yes';
|
|
11770
11898
|
this.type = 'Network';
|
|
11899
|
+
this.rootNode = 'No';
|
|
11771
11900
|
}
|
|
11772
11901
|
}
|
|
11773
11902
|
const rootJson = new RootJson();
|
|
11774
11903
|
rootJson.name = 'Network';
|
|
11775
11904
|
rootJson.status = 'Provisioned';
|
|
11776
|
-
function processIdentitiesForTree(identitiesChildren,
|
|
11777
|
-
|
|
11905
|
+
function processIdentitiesForTree(identitiesChildren, identities, nx, ny) {
|
|
11906
|
+
if (args[2] === false)
|
|
11907
|
+
return identitiesChildren;
|
|
11908
|
+
// identitiesChildren.name = identitiesChildren.name + ' (' + ny + ')';
|
|
11778
11909
|
const unregisteredGrp = new Group(createId(), 'Identities[Unregistered]', 'Identities that are not registered');
|
|
11779
11910
|
const abcdGrp = new Group(createId(), 'Identities [A-D]', 'Identity name starts with A to D');
|
|
11780
11911
|
const efghGrp = new Group(createId(), 'Identities [E-H]', 'Identity name starts with E to H');
|
|
@@ -11789,16 +11920,20 @@ class NetworkVisualizerHelper {
|
|
|
11789
11920
|
const endpoint = new Identity();
|
|
11790
11921
|
endpoint.rootNode = 'Yes';
|
|
11791
11922
|
endpoint.id = createId();
|
|
11792
|
-
endpoint.uuid =
|
|
11793
|
-
endpoint.name =
|
|
11794
|
-
endpoint.online =
|
|
11923
|
+
endpoint.uuid = identities[j].id;
|
|
11924
|
+
endpoint.name = identities[j].name;
|
|
11925
|
+
endpoint.online = identities[j].hasApiSession === true ? 'Yes' : 'No';
|
|
11795
11926
|
endpoint.type = 'Identity';
|
|
11796
|
-
endpoint.
|
|
11797
|
-
|
|
11798
|
-
|
|
11799
|
-
|
|
11927
|
+
endpoint.createdAt = identities[j].createdAt;
|
|
11928
|
+
endpoint.updatedAt = identities[j].updatedAt;
|
|
11929
|
+
endpoint.status = identities[j].sdkInfo !== null ? 'Registered' : 'Not Registered';
|
|
11930
|
+
if (identities[j].sdkInfo) {
|
|
11931
|
+
endpoint.os = identities[j].sdkInfo.type ? identities[j].sdkInfo.type : identities[j].sdkInfo.appId;
|
|
11932
|
+
endpoint.osVersion = identities[j].sdkInfo.version;
|
|
11933
|
+
}
|
|
11934
|
+
if (identities[j].authPolicy && identities[j].authPolicy.name.includes("BrowZer")) {
|
|
11935
|
+
endpoint.type = 'BrowZer Identity';
|
|
11800
11936
|
}
|
|
11801
|
-
endpoint.os = endpoints[j].os;
|
|
11802
11937
|
const cha = endpoint.name.charAt(0).toLowerCase();
|
|
11803
11938
|
if (endpoint.status === 'Not Registered') {
|
|
11804
11939
|
unregisteredGrp.children.push(endpoint);
|
|
@@ -11925,22 +12060,24 @@ class NetworkVisualizerHelper {
|
|
|
11925
12060
|
for (let j = i; j < lastElement; j++) {
|
|
11926
12061
|
chld.children.push(oneTo9Grp.children[j]);
|
|
11927
12062
|
}
|
|
11928
|
-
chld.name = chld.name + ' (' + chld.children.length + ')';
|
|
12063
|
+
// chld.name = chld.name + ' (' + chld.children.length + ')';
|
|
11929
12064
|
identitiesChildren.children.push(chld);
|
|
11930
12065
|
i = i + 80;
|
|
11931
12066
|
}
|
|
11932
12067
|
}
|
|
11933
12068
|
return identitiesChildren;
|
|
11934
12069
|
}
|
|
11935
|
-
function processServicePoliciesForTree(servicePolicyChildren,
|
|
11936
|
-
|
|
11937
|
-
|
|
12070
|
+
function processServicePoliciesForTree(servicePolicyChildren, servicePolicies, nx, ny) {
|
|
12071
|
+
if (args[0] === false)
|
|
12072
|
+
return servicePolicyChildren;
|
|
12073
|
+
const bindGrp = new Group(createId(), 'Bind-Policies', 'Bind Service Policy');
|
|
12074
|
+
const dialGrp = new Group(createId(), 'Dial-Policies', 'Dial Service Policy');
|
|
11938
12075
|
servicePolicies.forEach((sp) => {
|
|
11939
12076
|
const spolicy = new ServicePolicy$1();
|
|
11940
12077
|
spolicy.id = createId();
|
|
11941
12078
|
spolicy.uuid = sp.id;
|
|
11942
12079
|
spolicy.name = sp.name;
|
|
11943
|
-
spolicy.type = '
|
|
12080
|
+
spolicy.type = 'Service Policy';
|
|
11944
12081
|
spolicy.rootNode = 'Yes';
|
|
11945
12082
|
if (sp.type === 'Bind') {
|
|
11946
12083
|
bindGrp.children.push(spolicy);
|
|
@@ -11953,7 +12090,6 @@ class NetworkVisualizerHelper {
|
|
|
11953
12090
|
servicePolicyChildren.children.push(bindGrp);
|
|
11954
12091
|
dialGrp.name = dialGrp.name + '(' + dialGrp.children.length + ')';
|
|
11955
12092
|
servicePolicyChildren.children.push(dialGrp);
|
|
11956
|
-
servicePolicyChildren.name = servicePolicyChildren.name + ' (' + (bindGrp.children.length + dialGrp.children.length) + ')';
|
|
11957
12093
|
return servicePolicyChildren;
|
|
11958
12094
|
}
|
|
11959
12095
|
function serviceGrouping(servicesChildren, servicestree) {
|
|
@@ -12110,10 +12246,12 @@ class NetworkVisualizerHelper {
|
|
|
12110
12246
|
oneTo9Grp.name = oneTo9Grp.name + '(' + oneTo9Grp.children.length + ')';
|
|
12111
12247
|
servicesChildren.children.push(oneTo9Grp);
|
|
12112
12248
|
}
|
|
12113
|
-
servicesChildren.name = servicesChildren.name + '(' + servicestree.length + ')';
|
|
12249
|
+
// servicesChildren.name = servicesChildren.name + '(' + servicestree.length + ')';
|
|
12114
12250
|
return servicesChildren;
|
|
12115
12251
|
}
|
|
12116
|
-
function processServicesForTree(servicesChildren,
|
|
12252
|
+
function processServicesForTree(servicesChildren, services, nx, ny) {
|
|
12253
|
+
if (args[1] === false)
|
|
12254
|
+
return servicesChildren;
|
|
12117
12255
|
const servicestree = [];
|
|
12118
12256
|
for (let i = nx; i < ny; i++) {
|
|
12119
12257
|
const serviceobj = new Service();
|
|
@@ -12158,7 +12296,9 @@ class NetworkVisualizerHelper {
|
|
|
12158
12296
|
} // end for loop
|
|
12159
12297
|
return serviceGrouping(servicesChildren, servicestree);
|
|
12160
12298
|
} // end of processServicesForTree
|
|
12161
|
-
function processEdgeRouterPoliciesForTree(edgeRouterPoliciesChildren,
|
|
12299
|
+
function processEdgeRouterPoliciesForTree(edgeRouterPoliciesChildren, edgeRouterPolicies, nx, ny) {
|
|
12300
|
+
if (args[4] === false)
|
|
12301
|
+
return edgeRouterPoliciesChildren;
|
|
12162
12302
|
for (let i = nx; i < ny; i++) {
|
|
12163
12303
|
const erpolicy = new ERPolicy();
|
|
12164
12304
|
erpolicy.id = createId();
|
|
@@ -12166,11 +12306,15 @@ class NetworkVisualizerHelper {
|
|
|
12166
12306
|
erpolicy.name = edgeRouterPolicies[i].name;
|
|
12167
12307
|
erpolicy.type = 'Router Policy';
|
|
12168
12308
|
erpolicy.rootNode = 'Yes';
|
|
12309
|
+
erpolicy.isSystem = edgeRouterPolicies[i].isSystem;
|
|
12310
|
+
erpolicy.semantic = edgeRouterPolicies[i].semantic;
|
|
12169
12311
|
edgeRouterPoliciesChildren.children.push(erpolicy);
|
|
12170
12312
|
} // end of main for loop
|
|
12171
12313
|
return edgeRouterPoliciesChildren;
|
|
12172
12314
|
} // end
|
|
12173
|
-
function processServiceEdgeRouterPoliciesForTree(serviceEdgeRouterPoliciesChildren,
|
|
12315
|
+
function processServiceEdgeRouterPoliciesForTree(serviceEdgeRouterPoliciesChildren, serviceEdgeRouterPolicies, nx, ny) {
|
|
12316
|
+
if (args[5] === false)
|
|
12317
|
+
return serviceEdgeRouterPoliciesChildren;
|
|
12174
12318
|
for (let i = nx; i < ny; i++) {
|
|
12175
12319
|
const serviceerpolicy = new ServiceERPolicy();
|
|
12176
12320
|
serviceerpolicy.id = createId();
|
|
@@ -12182,7 +12326,9 @@ class NetworkVisualizerHelper {
|
|
|
12182
12326
|
} // end of main for loop
|
|
12183
12327
|
return serviceEdgeRouterPoliciesChildren;
|
|
12184
12328
|
} // end
|
|
12185
|
-
function processEdgeroutersForTree(edgerouterChildren, edgerouters,
|
|
12329
|
+
function processEdgeroutersForTree(edgerouterChildren, edgerouters, nx, ny) {
|
|
12330
|
+
if (args[3] === false)
|
|
12331
|
+
return edgerouterChildren;
|
|
12186
12332
|
for (let i = nx; i < ny; i++) {
|
|
12187
12333
|
const erOb = new ERouter();
|
|
12188
12334
|
erOb.id = createId();
|
|
@@ -12196,60 +12342,50 @@ class NetworkVisualizerHelper {
|
|
|
12196
12342
|
erOb.disabled = er.disabled ? 'Yes' : 'No';
|
|
12197
12343
|
erOb.type = 'Edge Router';
|
|
12198
12344
|
erOb.rootNode = 'Yes';
|
|
12199
|
-
|
|
12200
|
-
|
|
12201
|
-
|
|
12202
|
-
|
|
12203
|
-
erOb.provider = 'N/A';
|
|
12204
|
-
}
|
|
12205
|
-
else {
|
|
12206
|
-
erOb.provider = 'Private DC';
|
|
12207
|
-
}
|
|
12345
|
+
erOb.tunnelerEnabled = er.tunnelerEnabled ? er.tunnelerEnabled : 'No';
|
|
12346
|
+
erOb.syncStatus = er.syncStatus ? er.syncStatus : 'No';
|
|
12347
|
+
erOb.createdAt = er.createdAt;
|
|
12348
|
+
erOb.updatedAt = er.updatedAt;
|
|
12208
12349
|
edgerouterChildren.children.push(erOb);
|
|
12209
12350
|
}
|
|
12210
12351
|
} // end main for loop
|
|
12211
12352
|
return edgerouterChildren;
|
|
12212
12353
|
}
|
|
12213
12354
|
// createId() generates node Id 1,2,3,4,5 for the following five nodes. this id is used to search capability.
|
|
12214
|
-
let
|
|
12215
|
-
|
|
12216
|
-
|
|
12355
|
+
let servicPoliciesChildren = new Children();
|
|
12356
|
+
servicPoliciesChildren.id = createId();
|
|
12357
|
+
servicPoliciesChildren.firstChild = 'Yes';
|
|
12358
|
+
servicPoliciesChildren.name = 'Service Policies(' + service_policies_totalCount + ')';
|
|
12217
12359
|
let servicesChildren = new Children();
|
|
12218
12360
|
servicesChildren.id = createId();
|
|
12219
|
-
servicesChildren.
|
|
12220
|
-
|
|
12221
|
-
|
|
12222
|
-
|
|
12361
|
+
servicesChildren.firstChild = 'Yes';
|
|
12362
|
+
servicesChildren.name = 'Services(' + services_totalCount + ')';
|
|
12363
|
+
let identitiesChildren = new Children();
|
|
12364
|
+
identitiesChildren.id = createId();
|
|
12365
|
+
identitiesChildren.firstChild = 'Yes';
|
|
12366
|
+
identitiesChildren.name = 'Identities(' + identities_totalCount + ')';
|
|
12223
12367
|
let edgerouterChildren = new Children();
|
|
12224
12368
|
edgerouterChildren.id = createId();
|
|
12225
|
-
edgerouterChildren.
|
|
12369
|
+
edgerouterChildren.firstChild = 'Yes';
|
|
12370
|
+
edgerouterChildren.name = 'Edge Routers(' + edgerouters_totalCount + ')';
|
|
12226
12371
|
let edgeRouterPoliciesChildren = new Children();
|
|
12227
12372
|
edgeRouterPoliciesChildren.id = createId();
|
|
12228
|
-
edgeRouterPoliciesChildren.
|
|
12373
|
+
edgeRouterPoliciesChildren.firstChild = 'Yes';
|
|
12374
|
+
edgeRouterPoliciesChildren.name = 'Edge Router Policies(' + edge_router_policies_totalCount + ')';
|
|
12229
12375
|
let serviceEdgeRouterPolicesChildren = new Children();
|
|
12230
12376
|
serviceEdgeRouterPolicesChildren.id = createId();
|
|
12231
|
-
serviceEdgeRouterPolicesChildren.
|
|
12232
|
-
|
|
12233
|
-
|
|
12234
|
-
|
|
12235
|
-
|
|
12236
|
-
|
|
12237
|
-
|
|
12238
|
-
|
|
12239
|
-
|
|
12240
|
-
|
|
12241
|
-
'Edge Router Policies (' + edgeRouterPoliciesChildren.children.length + ')';
|
|
12242
|
-
}
|
|
12243
|
-
endpointsChildren = processIdentitiesForTree(endpointsChildren, edgerouters, endpoints, appwans, services, edgeRouterPolicies, 0, endpoints.length);
|
|
12244
|
-
//serviceEdgeRouterPolicies
|
|
12245
|
-
serviceEdgeRouterPolicesChildren = processServiceEdgeRouterPoliciesForTree(serviceEdgeRouterPolicesChildren, edgerouters, endpoints, appwans, services, edgeRouterPolicies, serviceEdgeRouterPolicies, 0, serviceEdgeRouterPolicies.length);
|
|
12246
|
-
if (edgeRouterPoliciesChildren) {
|
|
12247
|
-
serviceEdgeRouterPolicesChildren.name =
|
|
12248
|
-
'Service Edge Router Policies (' + serviceEdgeRouterPolicesChildren.children.length + ')';
|
|
12249
|
-
}
|
|
12250
|
-
rootJson.children.push(appwansChildren);
|
|
12377
|
+
serviceEdgeRouterPolicesChildren.firstChild = 'Yes';
|
|
12378
|
+
serviceEdgeRouterPolicesChildren.name = 'Service Edge Router Policies(' + service_router_policies_totalCount + ')';
|
|
12379
|
+
servicesChildren = processServicesForTree(servicesChildren, services, 0, services.length);
|
|
12380
|
+
edgerouterChildren = processEdgeroutersForTree(edgerouterChildren, edgerouters, 0, edgerouters.length);
|
|
12381
|
+
servicPoliciesChildren = processServicePoliciesForTree(servicPoliciesChildren, servicePolicies, 0, servicePolicies.length);
|
|
12382
|
+
edgeRouterPoliciesChildren = processEdgeRouterPoliciesForTree(edgeRouterPoliciesChildren, edgeRouterPolicies, 0, edgeRouterPolicies.length);
|
|
12383
|
+
identitiesChildren = processIdentitiesForTree(identitiesChildren, identities, 0, identities.length);
|
|
12384
|
+
//serviceRouterPolicies
|
|
12385
|
+
serviceEdgeRouterPolicesChildren = processServiceEdgeRouterPoliciesForTree(serviceEdgeRouterPolicesChildren, serviceEdgeRouterPolicies, 0, serviceEdgeRouterPolicies.length);
|
|
12386
|
+
rootJson.children.push(servicPoliciesChildren);
|
|
12251
12387
|
rootJson.children.push(servicesChildren);
|
|
12252
|
-
rootJson.children.push(
|
|
12388
|
+
rootJson.children.push(identitiesChildren);
|
|
12253
12389
|
rootJson.children.push(edgerouterChildren);
|
|
12254
12390
|
rootJson.children.push(edgeRouterPoliciesChildren);
|
|
12255
12391
|
rootJson.children.push(serviceEdgeRouterPolicesChildren);
|
|
@@ -12292,7 +12428,6 @@ class TreeNodeProcessor {
|
|
|
12292
12428
|
rawEpAttributes = rawEp.roleAttributes;
|
|
12293
12429
|
}
|
|
12294
12430
|
;
|
|
12295
|
-
rawEpAttributes.push('@' + rawEp.name);
|
|
12296
12431
|
for (let i = 0; i < rawEpAttributes.length; i++) {
|
|
12297
12432
|
const attribute = new Attribute();
|
|
12298
12433
|
attribute.id = this.createId();
|
|
@@ -12305,67 +12440,60 @@ class TreeNodeProcessor {
|
|
|
12305
12440
|
bindServices.id = this.createId();
|
|
12306
12441
|
dialServices.id = this.createId();
|
|
12307
12442
|
let identityServicePolicies = [];
|
|
12308
|
-
const services_url = this.getLinkForResource(rawEp, 'service-policies').replace('./', '');
|
|
12309
12443
|
const pagesize = 500;
|
|
12310
|
-
|
|
12444
|
+
// fetch associated routers
|
|
12445
|
+
const url = this.getLinkForResource(rawEp, 'edge-routers').replace('./', '');
|
|
12446
|
+
let associatedRouters = [];
|
|
12447
|
+
const paging = this.getPagingObject(pagesize);
|
|
12448
|
+
const erChailds = new Children();
|
|
12449
|
+
erChailds.id = this.createId();
|
|
12450
|
+
erChailds.name = 'Associated Routers';
|
|
12451
|
+
erChailds.type = 'Associated Routers';
|
|
12452
|
+
const associatedRoutersPromise = await zitiService.get(url, paging, [])
|
|
12453
|
+
.then((result) => {
|
|
12454
|
+
result.data.forEach((re) => {
|
|
12455
|
+
const tmp = new ERouter();
|
|
12456
|
+
tmp.id = this.createId();
|
|
12457
|
+
tmp.name = re.name;
|
|
12458
|
+
tmp.type = 'Router';
|
|
12459
|
+
erChailds.children.push(tmp);
|
|
12460
|
+
});
|
|
12461
|
+
});
|
|
12462
|
+
const policies_url = this.getLinkForResource(rawEp, 'service-policies').replace('./', '');
|
|
12463
|
+
const policies_paging = this.getPagingObject(pagesize);
|
|
12311
12464
|
const firstPromise = await zitiService
|
|
12312
|
-
.get(
|
|
12313
|
-
.then(
|
|
12465
|
+
.get(policies_url, policies_paging, [])
|
|
12466
|
+
.then((result) => {
|
|
12314
12467
|
identityServicePolicies = result.data;
|
|
12315
|
-
|
|
12316
|
-
|
|
12317
|
-
|
|
12318
|
-
|
|
12319
|
-
|
|
12320
|
-
|
|
12321
|
-
|
|
12322
|
-
|
|
12323
|
-
|
|
12324
|
-
|
|
12325
|
-
}
|
|
12326
|
-
|
|
12327
|
-
|
|
12328
|
-
|
|
12329
|
-
Promise.all(promises).then(() => {
|
|
12330
|
-
const sub_promises = [];
|
|
12331
|
-
identityServicePolicies.find(async (isp) => {
|
|
12332
|
-
const pagingOb = this.getPagingObject(pagesize);
|
|
12333
|
-
const ser_url = this.getLinkForResource(isp, 'services').replace('./', '');
|
|
12334
|
-
const tmpPromise = await zitiService
|
|
12335
|
-
.get(ser_url, pagingOb, [])
|
|
12336
|
-
.then((result) => {
|
|
12337
|
-
const tmp_services = [];
|
|
12338
|
-
result.data.find((re) => {
|
|
12339
|
-
const serv = new Service();
|
|
12340
|
-
serv.id = this.createId();
|
|
12341
|
-
serv.name = re.name;
|
|
12342
|
-
serv.type = 'Service';
|
|
12343
|
-
// tmp_services.push(serv);
|
|
12344
|
-
if (isp.type === 'Dial') {
|
|
12345
|
-
dialServices.children.push(serv);
|
|
12346
|
-
}
|
|
12347
|
-
else {
|
|
12348
|
-
bindServices.children.push(serv);
|
|
12349
|
-
}
|
|
12350
|
-
});
|
|
12351
|
-
});
|
|
12352
|
-
sub_promises.push(tmpPromise);
|
|
12353
|
-
wait_promises.push(tmpPromise);
|
|
12354
|
-
}); // loop
|
|
12355
|
-
Promise.all(sub_promises).then(() => {
|
|
12356
|
-
if (bindServices.children.length > 0) {
|
|
12357
|
-
bindServices.name = 'Bind-Services(' + bindServices.children.length + ')';
|
|
12358
|
-
identityNode.data.children.push(bindServices);
|
|
12359
|
-
}
|
|
12360
|
-
if (dialServices.children.length > 0) {
|
|
12361
|
-
dialServices.name = 'Dial-Services(' + dialServices.children.length + ')';
|
|
12362
|
-
identityNode.data.children.push(dialServices);
|
|
12363
|
-
}
|
|
12364
|
-
});
|
|
12468
|
+
});
|
|
12469
|
+
const promises = [];
|
|
12470
|
+
identityServicePolicies.forEach((sp) => {
|
|
12471
|
+
const nodeArray = this.getServicesForAServicePolicy(sp, zitiService, 500);
|
|
12472
|
+
promises.push(nodeArray);
|
|
12473
|
+
});
|
|
12474
|
+
await Promise.all(promises).then((nodeArray) => {
|
|
12475
|
+
nodeArray.forEach((arOb) => {
|
|
12476
|
+
if (arOb[0] === 'Bind') {
|
|
12477
|
+
bindServices.children = this.arrayObjectCopyRightToLeft(bindServices.children, arOb[1]);
|
|
12478
|
+
}
|
|
12479
|
+
else {
|
|
12480
|
+
dialServices.children = this.arrayObjectCopyRightToLeft(dialServices.children, arOb[1]);
|
|
12481
|
+
}
|
|
12365
12482
|
});
|
|
12366
12483
|
});
|
|
12367
|
-
wait_promises.push(firstPromise);
|
|
12368
12484
|
Promise.all(wait_promises).then(() => {
|
|
12485
|
+
if (erChailds.children.length > 0) {
|
|
12486
|
+
erChailds.name = erChailds.name + '(' + erChailds.children.length + ')';
|
|
12487
|
+
identityNode.data.children.push(erChailds);
|
|
12488
|
+
}
|
|
12489
|
+
if (bindServices.children.length > 0) {
|
|
12490
|
+
bindServices.name = 'Bind-Services(' + bindServices.children.length + ')';
|
|
12491
|
+
identityNode.data.children.push(bindServices);
|
|
12492
|
+
}
|
|
12493
|
+
if (dialServices.children.length > 0) {
|
|
12494
|
+
dialServices.name = 'Dial-Services(' + dialServices.children.length + ')';
|
|
12495
|
+
identityNode.data.children.push(dialServices);
|
|
12496
|
+
}
|
|
12369
12497
|
resolve('this is a promise');
|
|
12370
12498
|
});
|
|
12371
12499
|
});
|
|
@@ -12386,24 +12514,46 @@ class TreeNodeProcessor {
|
|
|
12386
12514
|
serviceOb.type = 'Service';
|
|
12387
12515
|
return serviceOb;
|
|
12388
12516
|
}
|
|
12389
|
-
|
|
12390
|
-
|
|
12391
|
-
|
|
12392
|
-
|
|
12393
|
-
|
|
12394
|
-
|
|
12395
|
-
|
|
12396
|
-
|
|
12397
|
-
|
|
12398
|
-
|
|
12399
|
-
|
|
12517
|
+
arrayObjectCopyRightToLeft(leftArr, rightArr) {
|
|
12518
|
+
const leftArrIds = [];
|
|
12519
|
+
leftArr.forEach((ob) => {
|
|
12520
|
+
leftArrIds.push(ob.id);
|
|
12521
|
+
});
|
|
12522
|
+
rightArr.forEach((ob) => {
|
|
12523
|
+
if (!leftArr.includes(ob.id)) {
|
|
12524
|
+
leftArr.push(ob);
|
|
12525
|
+
}
|
|
12526
|
+
});
|
|
12527
|
+
return leftArr;
|
|
12528
|
+
}
|
|
12529
|
+
addItemToArray(Idnetities, ob) {
|
|
12530
|
+
if (ob.name && !Idnetities.find((item) => item.uuid === ob.id)) {
|
|
12531
|
+
Idnetities.push(this.createIdentity(ob));
|
|
12400
12532
|
}
|
|
12401
|
-
return
|
|
12533
|
+
return Idnetities;
|
|
12534
|
+
}
|
|
12535
|
+
createIdentity(ob) {
|
|
12536
|
+
const endpoint = new Identity();
|
|
12537
|
+
endpoint.id = this.createId();
|
|
12538
|
+
endpoint.uuid = ob.id;
|
|
12539
|
+
endpoint.name = ob.name;
|
|
12540
|
+
endpoint.online = ob.hasApiSession === true ? 'Yes' : 'No';
|
|
12541
|
+
endpoint.type = 'Identity';
|
|
12542
|
+
endpoint.status = ob.sdkInfo !== null ? 'Registered' : 'Not Registered';
|
|
12543
|
+
if (ob.sdkInfo) {
|
|
12544
|
+
endpoint.os = ob.sdkInfo.type ? ob.sdkInfo.type : ob.sdkInfo.appId;
|
|
12545
|
+
endpoint.osVersion = ob.sdkInfo.version;
|
|
12546
|
+
}
|
|
12547
|
+
if (ob.authPolicy && ob.authPolicy.name.includes("BrowZer")) {
|
|
12548
|
+
endpoint.type = 'BrowZer Identity';
|
|
12549
|
+
}
|
|
12550
|
+
endpoint.createdAt = ob.createdAt;
|
|
12551
|
+
endpoint.updatedAt = ob.updatedAt;
|
|
12552
|
+
return endpoint;
|
|
12402
12553
|
}
|
|
12403
12554
|
getLinkForResource(ob, resource) {
|
|
12404
12555
|
return ob['_links'][resource]['href'];
|
|
12405
12556
|
}
|
|
12406
|
-
//Bind Dial Services
|
|
12407
12557
|
findServicesHostedOnEndpoint(rawEp, services, servicePolicies, zitiService) {
|
|
12408
12558
|
const servicesArr = [];
|
|
12409
12559
|
const childrenNoGroups = [];
|
|
@@ -12495,28 +12645,55 @@ class TreeNodeProcessor {
|
|
|
12495
12645
|
findRawEndpoint(epName, endpoints) {
|
|
12496
12646
|
return endpoints.find((ep) => ep.name === epName);
|
|
12497
12647
|
}
|
|
12648
|
+
serviceConfigAlias(configs) {
|
|
12649
|
+
let intercept = [];
|
|
12650
|
+
_.isArray(configs) && configs.forEach((conf) => {
|
|
12651
|
+
let addresses = '';
|
|
12652
|
+
let ports = '';
|
|
12653
|
+
if (conf.data.addresses) {
|
|
12654
|
+
addresses = conf.data.addresses.toString();
|
|
12655
|
+
}
|
|
12656
|
+
else {
|
|
12657
|
+
addresses = conf.data.address;
|
|
12658
|
+
}
|
|
12659
|
+
if (_.isArray(conf.data.portRanges)) {
|
|
12660
|
+
conf.data.portRanges.forEach((portsJson) => {
|
|
12661
|
+
for (const key in portsJson) {
|
|
12662
|
+
ports = ports + key + ':' + portsJson[key] + ' ';
|
|
12663
|
+
}
|
|
12664
|
+
ports = ports + ';';
|
|
12665
|
+
});
|
|
12666
|
+
}
|
|
12667
|
+
else {
|
|
12668
|
+
ports = conf.data.port;
|
|
12669
|
+
}
|
|
12670
|
+
intercept.push(addresses);
|
|
12671
|
+
intercept.push(ports);
|
|
12672
|
+
});
|
|
12673
|
+
return intercept;
|
|
12674
|
+
}
|
|
12498
12675
|
async processServicesForNodeClick(serviceNode, networkGraph, services, uniqId, zitiService) {
|
|
12499
12676
|
const myPromise = await new Promise(async (resolve, reject) => {
|
|
12500
12677
|
const wait_promises = [];
|
|
12501
12678
|
this.uniqId = uniqId;
|
|
12502
12679
|
const rawServiceObj = services.find((s) => s.name === serviceNode.data.name);
|
|
12503
12680
|
const attributeswithName = [];
|
|
12504
|
-
attributeswithName.push('@' + rawServiceObj.name);
|
|
12505
12681
|
rawServiceObj.roleAttributes && rawServiceObj.roleAttributes.find((srattr) => {
|
|
12506
12682
|
attributeswithName.push(srattr);
|
|
12507
12683
|
});
|
|
12508
12684
|
const serviceAttributes = new Children();
|
|
12509
|
-
serviceAttributes.
|
|
12685
|
+
serviceAttributes.name = 'Attributes';
|
|
12686
|
+
serviceAttributes.type = 'Attributes';
|
|
12510
12687
|
serviceAttributes.id = this.createId();
|
|
12511
12688
|
for (let k = 0; k < attributeswithName.length; k++) {
|
|
12512
12689
|
const attrOb = new Attribute();
|
|
12513
12690
|
attrOb.id = this.createId();
|
|
12514
12691
|
attrOb.name = attributeswithName[k];
|
|
12515
|
-
attrOb.type = '
|
|
12692
|
+
attrOb.type = 'Attribute';
|
|
12516
12693
|
serviceAttributes.children.push(attrOb);
|
|
12517
12694
|
} // end inner for loop
|
|
12518
12695
|
if (serviceAttributes.children.length > 0) {
|
|
12519
|
-
serviceAttributes.name = '
|
|
12696
|
+
serviceAttributes.name = serviceAttributes.name + '(' + serviceAttributes.children.length + ')';
|
|
12520
12697
|
serviceNode.data.children.push(serviceAttributes);
|
|
12521
12698
|
}
|
|
12522
12699
|
let service_configs = [];
|
|
@@ -12527,48 +12704,118 @@ class TreeNodeProcessor {
|
|
|
12527
12704
|
.get(configs_url, pagingOb, [])
|
|
12528
12705
|
.then((configs) => {
|
|
12529
12706
|
service_configs = configs && configs.data ? configs.data : [];
|
|
12707
|
+
const childs = new Children();
|
|
12708
|
+
childs.id = this.createId();
|
|
12709
|
+
childs.name = 'Service Configs';
|
|
12710
|
+
childs.type = 'Service Configs';
|
|
12711
|
+
const service_configs_Arr = [];
|
|
12712
|
+
service_configs.forEach((cfg) => {
|
|
12713
|
+
const obj = new Config();
|
|
12714
|
+
obj.id = this.createId();
|
|
12715
|
+
obj.name = cfg.name;
|
|
12716
|
+
obj.uuid = cfg.uuid;
|
|
12717
|
+
obj.data = JSON.stringify(cfg.data);
|
|
12718
|
+
service_configs_Arr.push(obj);
|
|
12719
|
+
});
|
|
12720
|
+
if (service_configs_Arr.length > 0) {
|
|
12721
|
+
childs.children = service_configs_Arr;
|
|
12722
|
+
childs.name = childs.name + '(' + childs.children.length + ')';
|
|
12723
|
+
serviceNode.data.children.push(childs);
|
|
12724
|
+
serviceNode.data.intercept = this.serviceConfigAlias(service_configs);
|
|
12725
|
+
}
|
|
12530
12726
|
});
|
|
12531
12727
|
wait_promises.push(configPromise);
|
|
12532
12728
|
const service_edge_router_policies_url = this.getLinkForResource(rawServiceObj, 'service-edge-router-policies');
|
|
12729
|
+
let service_routers_urls = [];
|
|
12730
|
+
const ser_promse = await zitiService
|
|
12731
|
+
.get(service_edge_router_policies_url.replace('./', ''), pagingOb, [])
|
|
12732
|
+
.then((result) => {
|
|
12733
|
+
result.data.forEach((serp) => {
|
|
12734
|
+
service_routers_urls.push(this.getLinkForResource(serp, 'edge-routers'));
|
|
12735
|
+
});
|
|
12736
|
+
;
|
|
12737
|
+
});
|
|
12738
|
+
wait_promises.push(ser_promse);
|
|
12739
|
+
let serp_page_Promises = [];
|
|
12740
|
+
service_routers_urls.forEach((er_url) => {
|
|
12741
|
+
const promse = zitiService
|
|
12742
|
+
.get(er_url.replace('./', ''), pagingOb, []);
|
|
12743
|
+
// .then(result => [policy.type, result]);
|
|
12744
|
+
serp_page_Promises.push(promse);
|
|
12745
|
+
});
|
|
12746
|
+
let associatedRouters = [];
|
|
12747
|
+
await Promise.all(serp_page_Promises).then((values) => {
|
|
12748
|
+
values && values.forEach((res) => {
|
|
12749
|
+
if (res && res.data.length > 0) {
|
|
12750
|
+
res.data.forEach((er) => {
|
|
12751
|
+
const erOb = new ERouter();
|
|
12752
|
+
erOb.id = this.createId();
|
|
12753
|
+
erOb.name = er.name;
|
|
12754
|
+
er.type = 'Router';
|
|
12755
|
+
associatedRouters.push(erOb);
|
|
12756
|
+
});
|
|
12757
|
+
}
|
|
12758
|
+
});
|
|
12759
|
+
const tmp = new Children();
|
|
12760
|
+
tmp.name = "Associated Routers(" + associatedRouters.length + ')';
|
|
12761
|
+
tmp.type = "Routers";
|
|
12762
|
+
tmp.children = associatedRouters;
|
|
12763
|
+
tmp.id = this.createId();
|
|
12764
|
+
serviceNode.data.children.push(tmp);
|
|
12765
|
+
});
|
|
12533
12766
|
const service_policies_url = this.getLinkForResource(rawServiceObj, 'service-policies').replace('./', ''); // dial, Bind info
|
|
12534
12767
|
let bindPolicies = [];
|
|
12535
12768
|
let bindIdnetities = [];
|
|
12769
|
+
let dialIdnetities = [];
|
|
12536
12770
|
const promise2 = await zitiService
|
|
12537
12771
|
.get(service_policies_url, pagingOb, [])
|
|
12538
12772
|
.then((policies) => {
|
|
12539
|
-
|
|
12540
|
-
|
|
12541
|
-
|
|
12542
|
-
|
|
12543
|
-
|
|
12544
|
-
|
|
12545
|
-
|
|
12546
|
-
|
|
12547
|
-
|
|
12548
|
-
|
|
12549
|
-
|
|
12773
|
+
bindPolicies = policies.data;
|
|
12774
|
+
});
|
|
12775
|
+
const pagePromises = [];
|
|
12776
|
+
bindPolicies.forEach((policy) => {
|
|
12777
|
+
const bindIdentitiesUrl = this.getLinkForResource(policy, 'identities');
|
|
12778
|
+
const promse = zitiService
|
|
12779
|
+
.get(bindIdentitiesUrl.replace('./', ''), pagingOb, [])
|
|
12780
|
+
.then(result => [policy.type, result]);
|
|
12781
|
+
pagePromises.push(promse);
|
|
12782
|
+
});
|
|
12783
|
+
await Promise.all(pagePromises).then((values) => {
|
|
12784
|
+
values && values.forEach((res) => {
|
|
12785
|
+
if (res && res[1].data.length > 0) {
|
|
12786
|
+
res[1].data.forEach((rs) => {
|
|
12787
|
+
if (res[0] === 'Bind') {
|
|
12788
|
+
bindIdnetities = this.addItemToArray(bindIdnetities, rs);
|
|
12550
12789
|
}
|
|
12551
|
-
else {
|
|
12552
|
-
this.addItemToArray(
|
|
12790
|
+
else if (res[0] === 'Dial') {
|
|
12791
|
+
dialIdnetities = this.addItemToArray(dialIdnetities, rs);
|
|
12553
12792
|
}
|
|
12554
12793
|
});
|
|
12555
|
-
|
|
12556
|
-
|
|
12794
|
+
}
|
|
12795
|
+
else {
|
|
12796
|
+
if (res[0] === 'Bind') {
|
|
12797
|
+
bindIdnetities = this.addItemToArray(bindIdnetities, res[1].data);
|
|
12798
|
+
}
|
|
12799
|
+
else if (res[0] === 'Dial') {
|
|
12800
|
+
dialIdnetities = this.addItemToArray(dialIdnetities, res[1].data);
|
|
12801
|
+
}
|
|
12557
12802
|
}
|
|
12558
12803
|
});
|
|
12559
|
-
|
|
12560
|
-
|
|
12561
|
-
|
|
12562
|
-
|
|
12563
|
-
|
|
12564
|
-
|
|
12565
|
-
|
|
12566
|
-
|
|
12567
|
-
|
|
12568
|
-
|
|
12569
|
-
|
|
12804
|
+
const tmp = new Children();
|
|
12805
|
+
tmp.name = "Bind Identities(" + bindIdnetities.length + ')';
|
|
12806
|
+
tmp.type = "Identities";
|
|
12807
|
+
tmp.children = bindIdnetities;
|
|
12808
|
+
tmp.id = this.createId();
|
|
12809
|
+
serviceNode.data.children.push(tmp);
|
|
12810
|
+
const tmpDial = new Children();
|
|
12811
|
+
tmpDial.name = "Dial Identities(" + dialIdnetities.length + ')';
|
|
12812
|
+
tmpDial.type = "Identities";
|
|
12813
|
+
tmpDial.children = dialIdnetities;
|
|
12814
|
+
tmpDial.id = this.createId();
|
|
12815
|
+
serviceNode.data.children.push(tmpDial);
|
|
12570
12816
|
resolve('this is a promise');
|
|
12571
12817
|
});
|
|
12818
|
+
Promise.all(wait_promises).then(() => { });
|
|
12572
12819
|
}); // end of mypromise
|
|
12573
12820
|
networkGraph = d3.hierarchy(networkGraph.data, function (nd) {
|
|
12574
12821
|
return nd.children;
|
|
@@ -12580,25 +12827,59 @@ class TreeNodeProcessor {
|
|
|
12580
12827
|
const wait_promises = [];
|
|
12581
12828
|
this.uniqId = uniqId;
|
|
12582
12829
|
const rawSPolicy = servicePolicies.find((s) => s.name === policyNode.data.name);
|
|
12830
|
+
const childs = new Children();
|
|
12831
|
+
childs.name = "Attributes";
|
|
12832
|
+
childs.id = this.createId();
|
|
12833
|
+
rawSPolicy.serviceRoles && rawSPolicy.serviceRoles.forEach((ob) => {
|
|
12834
|
+
const attr = new Attribute();
|
|
12835
|
+
attr.name = ob;
|
|
12836
|
+
attr.id = this.createId();
|
|
12837
|
+
attr.type = "Service Attribute";
|
|
12838
|
+
childs.children.push(attr);
|
|
12839
|
+
});
|
|
12840
|
+
rawSPolicy.identityRoles && rawSPolicy.identityRoles.forEach((ob) => {
|
|
12841
|
+
const attr = new Attribute();
|
|
12842
|
+
attr.name = ob;
|
|
12843
|
+
attr.id = this.createId();
|
|
12844
|
+
attr.type = "Identity Attribute";
|
|
12845
|
+
childs.children.push(attr);
|
|
12846
|
+
});
|
|
12847
|
+
childs.name = childs.name + '(' + childs.children.length + ')';
|
|
12848
|
+
policyNode.data.children.push(childs);
|
|
12583
12849
|
const pagesize = 500;
|
|
12584
|
-
const
|
|
12850
|
+
const identities_paging = this.getPagingObject(pagesize);
|
|
12585
12851
|
const bindIdentitiesUrl = this.getLinkForResource(rawSPolicy, 'identities');
|
|
12586
|
-
|
|
12852
|
+
// this.logger.info('bindIdentitiesUrl',bindIdentitiesUrl);
|
|
12853
|
+
const sp_promise = await zitiService.get(bindIdentitiesUrl, identities_paging, [])
|
|
12587
12854
|
.then((ids) => {
|
|
12588
12855
|
const childs = new Children();
|
|
12589
|
-
childs.name = rawSPolicy.type + 'Identities';
|
|
12856
|
+
childs.name = rawSPolicy.type + '-Identities';
|
|
12590
12857
|
childs.id = this.createId();
|
|
12591
12858
|
ids.data.forEach((idOb) => {
|
|
12592
|
-
|
|
12593
|
-
ep.id = idOb.id;
|
|
12594
|
-
ep.name = idOb.name;
|
|
12595
|
-
ep.type = 'Identity';
|
|
12596
|
-
childs.children.push(ep);
|
|
12859
|
+
childs.children.push(this.createIdentity(idOb));
|
|
12597
12860
|
});
|
|
12598
12861
|
childs.name = childs.name + '(' + childs.children.length + ')';
|
|
12599
12862
|
policyNode.data.children.push(childs);
|
|
12600
12863
|
});
|
|
12601
12864
|
wait_promises.push(sp_promise);
|
|
12865
|
+
const services_paging = this.getPagingObject(pagesize);
|
|
12866
|
+
const bindServicesUrl = this.getLinkForResource(rawSPolicy, 'services'); // pull services
|
|
12867
|
+
const _promise = await zitiService.get(bindServicesUrl, services_paging, [])
|
|
12868
|
+
.then((result) => {
|
|
12869
|
+
const childs = new Children();
|
|
12870
|
+
childs.name = rawSPolicy.type + '-Services';
|
|
12871
|
+
childs.id = this.createId();
|
|
12872
|
+
result.data.forEach((idOb) => {
|
|
12873
|
+
const sp = new Service();
|
|
12874
|
+
sp.id = idOb.id;
|
|
12875
|
+
sp.name = idOb.name;
|
|
12876
|
+
sp.type = 'Service';
|
|
12877
|
+
childs.children.push(sp);
|
|
12878
|
+
});
|
|
12879
|
+
childs.name = childs.name + '(' + childs.children.length + ')';
|
|
12880
|
+
policyNode.data.children.push(childs);
|
|
12881
|
+
});
|
|
12882
|
+
wait_promises.push(_promise);
|
|
12602
12883
|
Promise.all(wait_promises).then(() => {
|
|
12603
12884
|
resolve('resolve.');
|
|
12604
12885
|
});
|
|
@@ -12608,6 +12889,23 @@ class TreeNodeProcessor {
|
|
|
12608
12889
|
});
|
|
12609
12890
|
return [networkGraph, this.uniqId];
|
|
12610
12891
|
}
|
|
12892
|
+
async getServicesForAServicePolicy(policyObject, zitiService, pagesize = 500) {
|
|
12893
|
+
const childs = [];
|
|
12894
|
+
const services_paging = this.getPagingObject(pagesize);
|
|
12895
|
+
const bindServicesUrl = this.getLinkForResource(policyObject, 'services');
|
|
12896
|
+
const _promise = await zitiService.get(bindServicesUrl, services_paging, [])
|
|
12897
|
+
.then((result) => {
|
|
12898
|
+
result.data.forEach((idOb) => {
|
|
12899
|
+
const sp = new Service();
|
|
12900
|
+
sp.id = this.createId();
|
|
12901
|
+
sp.uuid = idOb.id;
|
|
12902
|
+
sp.name = idOb.name;
|
|
12903
|
+
sp.type = 'Service';
|
|
12904
|
+
childs.push(sp);
|
|
12905
|
+
});
|
|
12906
|
+
});
|
|
12907
|
+
return [policyObject.type, childs];
|
|
12908
|
+
}
|
|
12611
12909
|
async processEdgeroutersForNodeClick(edgerouterNode, networkGraph, edgerouters, uniqId, zitiService) {
|
|
12612
12910
|
const mainPromise = await new Promise(async (resolve, reject) => {
|
|
12613
12911
|
const wait_promises = [];
|
|
@@ -12649,6 +12947,9 @@ class TreeNodeProcessor {
|
|
|
12649
12947
|
policy.uuid = pol.id;
|
|
12650
12948
|
policy.name = pol.name;
|
|
12651
12949
|
policy.type = 'Router Policy';
|
|
12950
|
+
policy.isSystem = pol.isSystem;
|
|
12951
|
+
policy.semantic = pol.semantic;
|
|
12952
|
+
policy.rootNode = 'No';
|
|
12652
12953
|
erpolChilds.children.push(policy);
|
|
12653
12954
|
});
|
|
12654
12955
|
erpolChilds.name = "Edge Router Policies(" + erpolChilds.children.length + ')';
|
|
@@ -12815,11 +13116,39 @@ class TreeNodeProcessor {
|
|
|
12815
13116
|
return servicesChildren;
|
|
12816
13117
|
}
|
|
12817
13118
|
async processEdgeRouterPoliciesForNodeClick(erPolicyNode, networkGraph, edgeRouterPolicies, uniqId, zitiService) {
|
|
12818
|
-
const myPromise = await new Promise((resolve, reject) => {
|
|
13119
|
+
const myPromise = await new Promise(async (resolve, reject) => {
|
|
12819
13120
|
const wait_promises = [];
|
|
12820
13121
|
this.uniqId = uniqId;
|
|
12821
13122
|
const rawERPolicy = edgeRouterPolicies.find((s) => s.name === erPolicyNode.data.name);
|
|
12822
13123
|
const pagesize = 500;
|
|
13124
|
+
const er_url = this.getLinkForResource(rawERPolicy, 'edge-routers').replace('./', '');
|
|
13125
|
+
let associatedRouters = [];
|
|
13126
|
+
const paging = this.getPagingObject(pagesize);
|
|
13127
|
+
const erChailds = new Children();
|
|
13128
|
+
erChailds.name = 'Associated Routers';
|
|
13129
|
+
erChailds.type = 'Associated Routers';
|
|
13130
|
+
erChailds.id = this.createId();
|
|
13131
|
+
const associatedRoutersPromise = await zitiService.get(er_url, paging, [])
|
|
13132
|
+
.then((result) => {
|
|
13133
|
+
result.data.forEach((er) => {
|
|
13134
|
+
const tmp = new ERouter();
|
|
13135
|
+
tmp.id = this.createId();
|
|
13136
|
+
tmp.name = er.name;
|
|
13137
|
+
tmp.type = 'Router';
|
|
13138
|
+
tmp.verified = er.isVerified ? 'Yes' : 'No';
|
|
13139
|
+
tmp.online = er.isOnline ? 'Yes' : 'No';
|
|
13140
|
+
tmp.disabled = er.disabled ? 'Yes' : 'No';
|
|
13141
|
+
tmp.rootNode = 'Yes';
|
|
13142
|
+
tmp.tunnelerEnabled = er.tunnelerEnabled ? er.tunnelerEnabled : 'No';
|
|
13143
|
+
tmp.syncStatus = er.syncStatus ? er.syncStatus : 'No';
|
|
13144
|
+
tmp.createdAt = er.createdAt;
|
|
13145
|
+
tmp.updatedAt = er.updatedAt;
|
|
13146
|
+
erChailds.children.push(tmp);
|
|
13147
|
+
});
|
|
13148
|
+
erChailds.name = erChailds.name + '(' + erChailds.children.length + ')';
|
|
13149
|
+
erPolicyNode.data.children.push(erChailds);
|
|
13150
|
+
});
|
|
13151
|
+
wait_promises.push(associatedRoutersPromise);
|
|
12823
13152
|
const services_paging = this.getPagingObject(pagesize);
|
|
12824
13153
|
const url = this.getLinkForResource(rawERPolicy, 'identities');
|
|
12825
13154
|
let ids = [];
|
|
@@ -12841,13 +13170,8 @@ class TreeNodeProcessor {
|
|
|
12841
13170
|
Promise.all(promises).then(() => {
|
|
12842
13171
|
const idChilds = new Children();
|
|
12843
13172
|
idChilds.id = this.createId();
|
|
12844
|
-
ids.forEach((
|
|
12845
|
-
|
|
12846
|
-
idOb.id = this.createId();
|
|
12847
|
-
idOb.uuid = er.id;
|
|
12848
|
-
idOb.name = er.name;
|
|
12849
|
-
idOb.type = 'Identity';
|
|
12850
|
-
idChilds.children.push(idOb);
|
|
13173
|
+
ids.forEach((idOb) => {
|
|
13174
|
+
idChilds.children.push(this.createIdentity(idOb));
|
|
12851
13175
|
});
|
|
12852
13176
|
idChilds.name = "Accessible Identities(" + idChilds.children.length + ')';
|
|
12853
13177
|
erPolicyNode.data.children.push(idChilds);
|
|
@@ -12938,7 +13262,7 @@ class TreeNodeProcessor {
|
|
|
12938
13262
|
});
|
|
12939
13263
|
wait_promises.push(serpromise);
|
|
12940
13264
|
Promise.all(wait_promises).then(() => {
|
|
12941
|
-
resolve('
|
|
13265
|
+
resolve('Done');
|
|
12942
13266
|
});
|
|
12943
13267
|
});
|
|
12944
13268
|
networkGraph = d3.hierarchy(networkGraph.data, function (nd) {
|
|
@@ -12969,9 +13293,30 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
12969
13293
|
// export class NetworkVisualizerComponent implements OnInit {
|
|
12970
13294
|
this.title = 'Network Visualizer';
|
|
12971
13295
|
this.uniqId = 0;
|
|
13296
|
+
this.maxObjectsPerNode = 1001;
|
|
12972
13297
|
this.fullScreen = false;
|
|
12973
13298
|
this.isLoading = true;
|
|
12974
|
-
this.noSearchResults =
|
|
13299
|
+
this.noSearchResults = true;
|
|
13300
|
+
this.services = [];
|
|
13301
|
+
this.services_totalCount = 0;
|
|
13302
|
+
this.all_services_fetched = false;
|
|
13303
|
+
this.identities = [];
|
|
13304
|
+
this.identities_totalCount = 0;
|
|
13305
|
+
this.all_identities_fetched = false;
|
|
13306
|
+
this.edgerouters = [];
|
|
13307
|
+
this.edgerouters_totalCount = 0;
|
|
13308
|
+
this.all_edgerouters_fetched = false;
|
|
13309
|
+
this.service_policies = [];
|
|
13310
|
+
this.service_policies_totalCount = 0;
|
|
13311
|
+
this.all_service_policies_fetched = false;
|
|
13312
|
+
this.edge_router_policies = [];
|
|
13313
|
+
this.edge_router_policies_totalCount = 0;
|
|
13314
|
+
this.all_edge_router_policies_fetched = false;
|
|
13315
|
+
this.service_router_policies = [];
|
|
13316
|
+
this.service_router_policies_totalCount = 0;
|
|
13317
|
+
this.all_service_router_policies_fetched = false;
|
|
13318
|
+
this.configs = [];
|
|
13319
|
+
this.filerResponseMessage = 'search filter..';
|
|
12975
13320
|
this.servicePoliciesTreeNodes = [];
|
|
12976
13321
|
this.servicesTreeNodes = [];
|
|
12977
13322
|
this.identitiesTreeNodes = [];
|
|
@@ -12980,6 +13325,7 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
12980
13325
|
this.serviceEdgeRouterPolicyTreeNodes = [];
|
|
12981
13326
|
this.resourceTypeError = false;
|
|
12982
13327
|
this.filterText = '';
|
|
13328
|
+
this.searchWord = '';
|
|
12983
13329
|
this.resourceType = '';
|
|
12984
13330
|
this.openNodes = [];
|
|
12985
13331
|
this.contextmenuNodeType = [];
|
|
@@ -12989,16 +13335,15 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
12989
13335
|
this.getNetworkObjects();
|
|
12990
13336
|
}
|
|
12991
13337
|
getPagingObject(pagesize) {
|
|
12992
|
-
|
|
12993
|
-
|
|
12994
|
-
noSearch:
|
|
12995
|
-
|
|
12996
|
-
total: pagesize,
|
|
13338
|
+
return cloneDeep({
|
|
13339
|
+
filter: "",
|
|
13340
|
+
noSearch: true,
|
|
13341
|
+
order: "asc",
|
|
12997
13342
|
page: 1,
|
|
12998
|
-
|
|
12999
|
-
|
|
13000
|
-
|
|
13001
|
-
|
|
13343
|
+
searchOn: "name",
|
|
13344
|
+
sort: "name",
|
|
13345
|
+
total: pagesize
|
|
13346
|
+
});
|
|
13002
13347
|
}
|
|
13003
13348
|
async getNetworkObjects() {
|
|
13004
13349
|
this.isLoading = true;
|
|
@@ -13010,12 +13355,14 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13010
13355
|
return await this.zitiService
|
|
13011
13356
|
.get(`identities`, identities_paging, [])
|
|
13012
13357
|
.then(async (result) => {
|
|
13013
|
-
this.identities = result.data;
|
|
13358
|
+
this.identities = result.data ? result.data : [];
|
|
13359
|
+
this.identities_totalCount = result.meta && result.meta.pagination ? result.meta.pagination.totalCount : 0;
|
|
13014
13360
|
if (!this.identities || this.identities.length === 0) {
|
|
13015
13361
|
this.identities = [];
|
|
13016
13362
|
this.isLoading = false;
|
|
13017
13363
|
}
|
|
13018
|
-
else {
|
|
13364
|
+
else if (this.identities_totalCount < this.maxObjectsPerNode) {
|
|
13365
|
+
this.all_identities_fetched = true;
|
|
13019
13366
|
const pages = Math.ceil(result.meta.pagination.totalCount / pagesize);
|
|
13020
13367
|
const promises = [];
|
|
13021
13368
|
for (let page = 2; page <= pages; page++) {
|
|
@@ -13028,7 +13375,9 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13028
13375
|
});
|
|
13029
13376
|
promises.push(tmp_promise);
|
|
13030
13377
|
}
|
|
13031
|
-
Promise.all(promises).then(() => {
|
|
13378
|
+
Promise.all(promises).then(() => {
|
|
13379
|
+
// this.identities_totalCount = this.identities.length;
|
|
13380
|
+
});
|
|
13032
13381
|
}
|
|
13033
13382
|
}).catch(error => {
|
|
13034
13383
|
this.logger.error('Error in fetching Identities', error.message);
|
|
@@ -13039,12 +13388,14 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13039
13388
|
return await this.zitiService
|
|
13040
13389
|
.get(`services`, services_paging, [])
|
|
13041
13390
|
.then(async (result) => {
|
|
13042
|
-
this.services = result.data;
|
|
13391
|
+
this.services = result.data ? result.data : [];
|
|
13392
|
+
this.services_totalCount = result.meta && result.meta.pagination ? result.meta.pagination.totalCount : 0;
|
|
13043
13393
|
if (!this.services || this.services.length === 0) {
|
|
13044
13394
|
this.services = [];
|
|
13045
13395
|
this.isLoading = false;
|
|
13046
13396
|
}
|
|
13047
|
-
else {
|
|
13397
|
+
else if (this.services_totalCount < this.maxObjectsPerNode) {
|
|
13398
|
+
this.all_services_fetched = true;
|
|
13048
13399
|
const pages = Math.ceil(result.meta.pagination.totalCount / pagesize);
|
|
13049
13400
|
const s_promises = [];
|
|
13050
13401
|
for (let page = 2; page <= pages; page++) {
|
|
@@ -13058,7 +13409,9 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13058
13409
|
});
|
|
13059
13410
|
s_promises.push(tmp_promise);
|
|
13060
13411
|
}
|
|
13061
|
-
Promise.all(s_promises).then(() => {
|
|
13412
|
+
Promise.all(s_promises).then(() => {
|
|
13413
|
+
// this.services_totalCount = this.services.length;
|
|
13414
|
+
});
|
|
13062
13415
|
}
|
|
13063
13416
|
}).catch(error => {
|
|
13064
13417
|
this.logger.error('Error in fetching services', error.message);
|
|
@@ -13069,12 +13422,14 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13069
13422
|
return await this.zitiService
|
|
13070
13423
|
.get(`service-policies`, servicesPolicies_paging, [])
|
|
13071
13424
|
.then(async (result) => {
|
|
13072
|
-
this.service_policies = result.data;
|
|
13425
|
+
this.service_policies = result.data ? result.data : [];
|
|
13426
|
+
this.service_policies_totalCount = result.meta && result.meta.pagination ? result.meta.pagination.totalCount : 0;
|
|
13073
13427
|
if (!this.service_policies || this.service_policies.length === 0) {
|
|
13074
13428
|
this.service_policies = [];
|
|
13075
13429
|
this.isLoading = false;
|
|
13076
13430
|
}
|
|
13077
|
-
else {
|
|
13431
|
+
else if (this.service_policies_totalCount < this.maxObjectsPerNode) {
|
|
13432
|
+
this.all_service_policies_fetched = true;
|
|
13078
13433
|
const pages = Math.ceil(result.meta.pagination.totalCount / pagesize);
|
|
13079
13434
|
const sp_promises = [];
|
|
13080
13435
|
for (let page = 2; page <= pages; page++) {
|
|
@@ -13082,13 +13437,15 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13082
13437
|
const tmp_promise = await this.zitiService
|
|
13083
13438
|
.get(`service-policies`, servicesPolicies_paging, [])
|
|
13084
13439
|
.then((pageResult) => {
|
|
13085
|
-
pageResult.data.forEach((serv) => {
|
|
13440
|
+
pageResult.data && pageResult.data.forEach((serv) => {
|
|
13086
13441
|
this.service_policies.push(serv);
|
|
13087
13442
|
});
|
|
13088
13443
|
});
|
|
13089
13444
|
sp_promises.push(tmp_promise);
|
|
13090
13445
|
}
|
|
13091
|
-
Promise.all(sp_promises).then(() => {
|
|
13446
|
+
Promise.all(sp_promises).then(() => {
|
|
13447
|
+
// this.service_policies_totalCount = this.service_policies.length;
|
|
13448
|
+
});
|
|
13092
13449
|
}
|
|
13093
13450
|
}).catch(error => {
|
|
13094
13451
|
this.logger.error('Error in fetching service-policies', error.message);
|
|
@@ -13099,12 +13456,14 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13099
13456
|
return await this.zitiService
|
|
13100
13457
|
.get(`edge-routers`, routers_paging, [])
|
|
13101
13458
|
.then(async (result) => {
|
|
13102
|
-
this.edgerouters = result.data;
|
|
13459
|
+
this.edgerouters = result.data ? result.data : [];
|
|
13460
|
+
this.edgerouters_totalCount = result.meta && result.meta.pagination ? result.meta.pagination.totalCount : 0;
|
|
13103
13461
|
if (!this.edgerouters || this.edgerouters.length === 0) {
|
|
13104
13462
|
this.edgerouters = [];
|
|
13105
13463
|
this.isLoading = false;
|
|
13106
13464
|
}
|
|
13107
|
-
else {
|
|
13465
|
+
else if (this.edgerouters_totalCount < this.maxObjectsPerNode) {
|
|
13466
|
+
this.all_edgerouters_fetched = true;
|
|
13108
13467
|
const pages = Math.ceil(result.meta.pagination.totalCount / pagesize);
|
|
13109
13468
|
const r_promises = [];
|
|
13110
13469
|
for (let page = 2; page <= pages; page++) {
|
|
@@ -13118,23 +13477,27 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13118
13477
|
});
|
|
13119
13478
|
r_promises.push(tmp_promise);
|
|
13120
13479
|
}
|
|
13121
|
-
Promise.all(r_promises).then(() => {
|
|
13480
|
+
Promise.all(r_promises).then(() => {
|
|
13481
|
+
// this.edgerouters_totalCount = this.edgerouters.length;
|
|
13482
|
+
});
|
|
13122
13483
|
}
|
|
13123
13484
|
}).catch(error => {
|
|
13124
13485
|
this.logger.error('Error in fetching edge-routers', error.message);
|
|
13125
13486
|
});
|
|
13126
13487
|
}
|
|
13127
13488
|
async findEdgeRouterPolicies(pagesize) {
|
|
13128
|
-
this.
|
|
13489
|
+
this.edge_router_policies = [];
|
|
13129
13490
|
const erpolicies_paging = this.getPagingObject(pagesize);
|
|
13130
13491
|
return await this.zitiService
|
|
13131
13492
|
.get(`edge-router-policies`, erpolicies_paging, [])
|
|
13132
13493
|
.then(async (result) => {
|
|
13133
|
-
this.
|
|
13134
|
-
|
|
13494
|
+
this.edge_router_policies = result.data ? result.data : [];
|
|
13495
|
+
this.edge_router_policies_totalCount = result.meta && result.meta.pagination ? result.meta.pagination.totalCount : 0;
|
|
13496
|
+
if (!this.edge_router_policies || this.edge_router_policies.length === 0) {
|
|
13135
13497
|
this.isLoading = false;
|
|
13136
13498
|
}
|
|
13137
|
-
else {
|
|
13499
|
+
else if (this.edge_router_policies_totalCount < this.maxObjectsPerNode) {
|
|
13500
|
+
this.all_edge_router_policies_fetched = true;
|
|
13138
13501
|
const pages = Math.ceil(result.meta.pagination.totalCount / pagesize);
|
|
13139
13502
|
const r_promises = [];
|
|
13140
13503
|
for (let page = 2; page <= pages; page++) {
|
|
@@ -13143,12 +13506,14 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13143
13506
|
.get(`edge-router-policies`, erpolicies_paging, [])
|
|
13144
13507
|
.then((pageResult) => {
|
|
13145
13508
|
pageResult.data.forEach((serv) => {
|
|
13146
|
-
this.
|
|
13509
|
+
this.edge_router_policies.push(serv);
|
|
13147
13510
|
});
|
|
13148
13511
|
});
|
|
13149
13512
|
r_promises.push(tmp_promise);
|
|
13150
13513
|
}
|
|
13151
|
-
Promise.all(r_promises).then(() => {
|
|
13514
|
+
Promise.all(r_promises).then(() => {
|
|
13515
|
+
// this.edge_router_policies_totalCount = this.edge_router_policies.length;
|
|
13516
|
+
});
|
|
13152
13517
|
}
|
|
13153
13518
|
}).catch(error => {
|
|
13154
13519
|
this.logger.error('Error in fetching edge-router-policies', error);
|
|
@@ -13160,11 +13525,13 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13160
13525
|
return await this.zitiService
|
|
13161
13526
|
.get(`service-edge-router-policies`, serp_paging, [])
|
|
13162
13527
|
.then(async (result) => {
|
|
13163
|
-
this.service_router_policies = result.data;
|
|
13528
|
+
this.service_router_policies = result.data ? result.data : [];
|
|
13529
|
+
this.service_router_policies_totalCount = result.meta && result.meta.pagination ? result.meta.pagination.totalCount : 0;
|
|
13164
13530
|
if (!this.service_router_policies || this.service_router_policies.length === 0) {
|
|
13165
13531
|
this.isLoading = false;
|
|
13166
13532
|
}
|
|
13167
|
-
else {
|
|
13533
|
+
else if (this.service_router_policies_totalCount < this.maxObjectsPerNode) {
|
|
13534
|
+
this.all_service_router_policies_fetched = false;
|
|
13168
13535
|
const pages = Math.ceil(result.meta.pagination.totalCount / pagesize);
|
|
13169
13536
|
const r_promises = [];
|
|
13170
13537
|
for (let page = 2; page <= pages; page++) {
|
|
@@ -13178,7 +13545,9 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13178
13545
|
});
|
|
13179
13546
|
r_promises.push(tmp_promise);
|
|
13180
13547
|
}
|
|
13181
|
-
Promise.all(r_promises).then(() => {
|
|
13548
|
+
Promise.all(r_promises).then(() => {
|
|
13549
|
+
// this.service_router_policies_totalCount = this.service_router_policies.length;
|
|
13550
|
+
});
|
|
13182
13551
|
}
|
|
13183
13552
|
}).catch(error => {
|
|
13184
13553
|
this.logger.error('Error in fetching service-edge-router-policies', error);
|
|
@@ -13190,11 +13559,12 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13190
13559
|
return await this.zitiService
|
|
13191
13560
|
.get(`configs`, configs_paging, [])
|
|
13192
13561
|
.then(async (result) => {
|
|
13193
|
-
this.configs = result.data;
|
|
13562
|
+
this.configs = result.data ? result.data : [];
|
|
13563
|
+
const configs_totalCount = result.meta && result.meta.pagination ? result.meta.pagination.totalCount : 0;
|
|
13194
13564
|
if (!this.configs || this.configs.length === 0) {
|
|
13195
13565
|
this.configs = [];
|
|
13196
13566
|
}
|
|
13197
|
-
else {
|
|
13567
|
+
else if (configs_totalCount < this.maxObjectsPerNode) {
|
|
13198
13568
|
const pages = Math.ceil(result.meta.pagination.totalCount / pagesize);
|
|
13199
13569
|
const r_promises = [];
|
|
13200
13570
|
for (let page = 2; page <= pages; page++) {
|
|
@@ -13208,7 +13578,9 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13208
13578
|
});
|
|
13209
13579
|
r_promises.push(tmp_promise);
|
|
13210
13580
|
}
|
|
13211
|
-
Promise.all(r_promises).then(() => {
|
|
13581
|
+
Promise.all(r_promises).then(() => {
|
|
13582
|
+
const configs_totalCount = this.configs.length;
|
|
13583
|
+
});
|
|
13212
13584
|
}
|
|
13213
13585
|
}).catch(error => {
|
|
13214
13586
|
this.logger.error('Error in fetching configs', error);
|
|
@@ -13232,56 +13604,59 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13232
13604
|
}
|
|
13233
13605
|
processFirstNetworkGraph() {
|
|
13234
13606
|
try {
|
|
13235
|
-
const treeObj = this.topologyHelper.getResourceTreeObj('this.currentNetwork.name', 'this.currentNetwork.status', this.services, this.identities, this.service_policies, this.edgerouters, this.
|
|
13607
|
+
const treeObj = this.topologyHelper.getResourceTreeObj('this.currentNetwork.name', 'this.currentNetwork.status', this.services, this.identities, this.service_policies, this.edgerouters, this.edge_router_policies, this.service_router_policies, this.services_totalCount, this.identities_totalCount, this.edgerouters_totalCount, this.service_policies_totalCount, this.edge_router_policies_totalCount, this.service_router_policies_totalCount, this.uniqId, this.logger, this.all_service_policies_fetched, this.all_services_fetched, this.all_identities_fetched, this.all_edgerouters_fetched, this.all_edge_router_policies_fetched, this.all_service_router_policies_fetched);
|
|
13236
13608
|
this.uniqId = treeObj.lastId;
|
|
13237
13609
|
this.networkGraph = d3.hierarchy(treeObj, function (d) {
|
|
13238
13610
|
return d.children;
|
|
13239
13611
|
});
|
|
13240
|
-
this.baseNetworkGraph = this.networkGraph;
|
|
13612
|
+
// this.baseNetworkGraph = _.cloneDeep(this.networkGraph);
|
|
13241
13613
|
this.servicePoliciesTreeNodes = [];
|
|
13242
13614
|
this.servicesTreeNodes = [];
|
|
13243
13615
|
this.identitiesTreeNodes = [];
|
|
13244
13616
|
this.edgeroutersTreeNodes = [];
|
|
13245
13617
|
this.erPoliciesTreeNodes = [];
|
|
13246
13618
|
this.serviceEdgeRouterPolicyTreeNodes = [];
|
|
13247
|
-
this.servicePoliciesTreeNodes = this.fillAutoCompleteTreeNodes(this.
|
|
13248
|
-
this.servicesTreeNodes = this.fillAutoCompleteTreeNodes(this.
|
|
13249
|
-
this.identitiesTreeNodes = this.fillAutoCompleteTreeNodes(this.
|
|
13250
|
-
this.edgeroutersTreeNodes = this.fillAutoCompleteTreeNodes(this.
|
|
13251
|
-
this.erPoliciesTreeNodes = this.fillAutoCompleteTreeNodes(this.
|
|
13252
|
-
this.serviceEdgeRouterPolicyTreeNodes = this.fillAutoCompleteTreeNodes(this.
|
|
13619
|
+
this.servicePoliciesTreeNodes = this.fillAutoCompleteTreeNodes(this.service_policies, this.servicePoliciesTreeNodes, 'ServicePolicy');
|
|
13620
|
+
this.servicesTreeNodes = this.fillAutoCompleteTreeNodes(this.services, this.servicesTreeNodes, 'Service');
|
|
13621
|
+
this.identitiesTreeNodes = this.fillAutoCompleteTreeNodes(this.identities, this.identitiesTreeNodes, 'Identity');
|
|
13622
|
+
this.edgeroutersTreeNodes = this.fillAutoCompleteTreeNodes(this.edgerouters, this.edgeroutersTreeNodes, 'Router');
|
|
13623
|
+
this.erPoliciesTreeNodes = this.fillAutoCompleteTreeNodes(this.edge_router_policies, this.erPoliciesTreeNodes, 'Router Policy');
|
|
13624
|
+
this.serviceEdgeRouterPolicyTreeNodes = this.fillAutoCompleteTreeNodes(this.service_router_policies, this.serviceEdgeRouterPolicyTreeNodes, 'Service Router Policy');
|
|
13253
13625
|
this.initTopoView();
|
|
13626
|
+
this.baseNetworkGraph = _.cloneDeep(this.networkGraph);
|
|
13254
13627
|
}
|
|
13255
13628
|
catch (err) {
|
|
13256
13629
|
this.logger.error(err.message);
|
|
13257
13630
|
}
|
|
13258
13631
|
this.isLoading = false;
|
|
13259
13632
|
}
|
|
13260
|
-
fillAutoCompleteTreeNodes(
|
|
13261
|
-
|
|
13262
|
-
|
|
13263
|
-
|
|
13264
|
-
return;
|
|
13265
|
-
}
|
|
13266
|
-
if (typeof nodeObj.data.type === 'undefined') {
|
|
13267
|
-
// //
|
|
13268
|
-
}
|
|
13269
|
-
else {
|
|
13270
|
-
if (arr.indexOf(name) < 0 && nodeObj.data.type === typeName) {
|
|
13271
|
-
arr.push(name);
|
|
13272
|
-
}
|
|
13273
|
-
}
|
|
13274
|
-
const childNodes = nodeObj.children ? nodeObj.children : nodeObj._children;
|
|
13275
|
-
for (let i = 0; childNodes && i < childNodes.length; i++) {
|
|
13276
|
-
this.fillAutoCompleteTreeNodes(childNodes[i], arr, typeName);
|
|
13277
|
-
}
|
|
13633
|
+
fillAutoCompleteTreeNodes(resourcesArray, arr, typeName) {
|
|
13634
|
+
resourcesArray && resourcesArray.forEach((ob) => {
|
|
13635
|
+
arr.push(ob.name);
|
|
13636
|
+
});
|
|
13278
13637
|
return arr;
|
|
13279
13638
|
}
|
|
13639
|
+
debounce(func, timeout = 150) {
|
|
13640
|
+
let timer;
|
|
13641
|
+
return (...args) => {
|
|
13642
|
+
this.autocompleteOptions = [];
|
|
13643
|
+
clearTimeout(timer);
|
|
13644
|
+
timer = setTimeout(() => { func.apply(this, args); }, timeout);
|
|
13645
|
+
};
|
|
13646
|
+
}
|
|
13647
|
+
nwSearchChange(event) {
|
|
13648
|
+
if (this.filterText.length > 1 && event.key !== 'Escape' && event.key !== 'ArrowRight' && event.key !== 'ArrowLeft' && event.key !== 'Enter') {
|
|
13649
|
+
this.filerResponseMessage = 'search filter..';
|
|
13650
|
+
this.debounce(this.filterSearchArray());
|
|
13651
|
+
}
|
|
13652
|
+
}
|
|
13280
13653
|
autocompleteSearch(event) {
|
|
13281
13654
|
const str = event ? event.option.value : '';
|
|
13282
13655
|
this.searchResourceConditionCheck(str);
|
|
13283
13656
|
}
|
|
13284
13657
|
resourceTypeChanged() {
|
|
13658
|
+
this.filerResponseMessage = 'search filter..';
|
|
13659
|
+
this.searchCache = [];
|
|
13285
13660
|
this.resetSearchNode();
|
|
13286
13661
|
this.clearSearchLinkColors();
|
|
13287
13662
|
if (_.isEmpty(this.resourceType)) {
|
|
@@ -13292,22 +13667,23 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13292
13667
|
}
|
|
13293
13668
|
this.filterText = '';
|
|
13294
13669
|
this.resourceTypeError = false;
|
|
13295
|
-
|
|
13670
|
+
this.autocompleteOptions = [];
|
|
13671
|
+
if (this.resourceType === 'service-policies' && this.all_service_policies_fetched) {
|
|
13296
13672
|
this.autocompleteOptions = this.servicePoliciesTreeNodes;
|
|
13297
13673
|
}
|
|
13298
|
-
else if (this.resourceType === 'services') {
|
|
13674
|
+
else if (this.resourceType === 'services' && this.all_services_fetched) {
|
|
13299
13675
|
this.autocompleteOptions = this.servicesTreeNodes;
|
|
13300
13676
|
}
|
|
13301
|
-
else if (this.resourceType === 'identities') {
|
|
13677
|
+
else if (this.resourceType === 'identities' && this.all_identities_fetched) {
|
|
13302
13678
|
this.autocompleteOptions = this.identitiesTreeNodes;
|
|
13303
13679
|
}
|
|
13304
|
-
else if (this.resourceType === 'edge-routers') {
|
|
13680
|
+
else if (this.resourceType === 'edge-routers' && this.all_edgerouters_fetched) {
|
|
13305
13681
|
this.autocompleteOptions = this.edgeroutersTreeNodes;
|
|
13306
13682
|
}
|
|
13307
|
-
else if (this.resourceType === 'edge-router-policies') {
|
|
13683
|
+
else if (this.resourceType === 'edge-router-policies' && this.all_edge_router_policies_fetched) {
|
|
13308
13684
|
this.autocompleteOptions = this.erPoliciesTreeNodes;
|
|
13309
13685
|
}
|
|
13310
|
-
else if (this.resourceType === 'service-edge-router-policies') {
|
|
13686
|
+
else if (this.resourceType === 'service-edge-router-policies' && this.all_service_router_policies_fetched) {
|
|
13311
13687
|
this.autocompleteOptions = this.serviceEdgeRouterPolicyTreeNodes;
|
|
13312
13688
|
}
|
|
13313
13689
|
if (!_.isEmpty(this.filterText)) {
|
|
@@ -13316,7 +13692,6 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13316
13692
|
}
|
|
13317
13693
|
searchResourceConditionCheck(searchTxt) {
|
|
13318
13694
|
if (this.resourceType === '' && searchTxt !== '') {
|
|
13319
|
-
// if (searchTxt !== '') {
|
|
13320
13695
|
this.resourceTypeError = true;
|
|
13321
13696
|
return;
|
|
13322
13697
|
}
|
|
@@ -13325,7 +13700,6 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13325
13700
|
}
|
|
13326
13701
|
}
|
|
13327
13702
|
searchResourceInTree(searchTxt) {
|
|
13328
|
-
// this.closeTable();
|
|
13329
13703
|
this.noSearchResults = false;
|
|
13330
13704
|
this.resourceTypeError = false;
|
|
13331
13705
|
this.resetTree(null);
|
|
@@ -13338,32 +13712,152 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13338
13712
|
let paths = [];
|
|
13339
13713
|
let targetNodes = [];
|
|
13340
13714
|
const nodeIds = [];
|
|
13341
|
-
if (this.resourceType === 'service-policies') {
|
|
13342
|
-
|
|
13715
|
+
if (this.resourceType === 'service-policies' && !this.all_service_policies_fetched) {
|
|
13716
|
+
const rawOb = this.searchCache.find((item) => item.name === searchTxt);
|
|
13717
|
+
const id = this.topologyHelper.createServicePolicyNode(rawOb);
|
|
13718
|
+
// id.clickProcess = "Not Yet";
|
|
13719
|
+
if (!this.isNodeExists(this.nodes[1], id)) {
|
|
13720
|
+
this.nodes[1].data.children.push(id);
|
|
13721
|
+
}
|
|
13722
|
+
this.networkGraph = d3.hierarchy(this.networkGraph.data, function (nd) {
|
|
13723
|
+
return nd.children;
|
|
13724
|
+
});
|
|
13725
|
+
this.networkGraph.children.forEach((nd, i) => {
|
|
13726
|
+
if (i !== 0) {
|
|
13727
|
+
this.graphCollapse(nd);
|
|
13728
|
+
}
|
|
13729
|
+
});
|
|
13730
|
+
this.service_policies = [];
|
|
13731
|
+
this.service_policies[0] = rawOb;
|
|
13732
|
+
this.updateTree(this.nodes[1]);
|
|
13733
|
+
targetNodes = this.processSearchInPreorder(this.nodes[1], searchTxt, targetNodes);
|
|
13734
|
+
}
|
|
13735
|
+
else if (this.resourceType === 'service-policies' && this.all_service_policies_fetched) {
|
|
13736
|
+
targetNodes = this.processSearchInPreorder(this.nodes[1], searchTxt, targetNodes);
|
|
13737
|
+
}
|
|
13738
|
+
else if (this.resourceType === 'edge-routers' && !this.all_edgerouters_fetched) {
|
|
13739
|
+
const rawOb = this.searchCache.find((item) => item.name === searchTxt);
|
|
13740
|
+
const id = this.topologyHelper.createEdgeRouterNode(rawOb);
|
|
13741
|
+
// id.clickProcess = "Not Yet";
|
|
13742
|
+
if (!this.isNodeExists(this.nodes[4], id)) {
|
|
13743
|
+
this.nodes[4].data.children.push(id);
|
|
13744
|
+
}
|
|
13745
|
+
this.networkGraph = d3.hierarchy(this.networkGraph.data, function (nd) {
|
|
13746
|
+
return nd.children;
|
|
13747
|
+
});
|
|
13748
|
+
this.networkGraph.children.forEach((nd, i) => {
|
|
13749
|
+
if (i !== 3) {
|
|
13750
|
+
this.graphCollapse(nd);
|
|
13751
|
+
}
|
|
13752
|
+
});
|
|
13753
|
+
this.edgerouters = [];
|
|
13754
|
+
this.edgerouters[0] = rawOb;
|
|
13755
|
+
this.updateTree(this.nodes[4]);
|
|
13756
|
+
targetNodes = this.processSearchInPreorder(this.nodes[4], searchTxt, targetNodes);
|
|
13757
|
+
}
|
|
13758
|
+
else if (this.resourceType === 'edge-routers' && this.all_edgerouters_fetched) {
|
|
13759
|
+
targetNodes = this.processSearchInPreorder(this.nodes[4], searchTxt, targetNodes);
|
|
13760
|
+
}
|
|
13761
|
+
else if (this.resourceType === 'services' && !this.all_services_fetched) {
|
|
13762
|
+
const rawOb = this.searchCache.find((item) => item.name === searchTxt);
|
|
13763
|
+
const id = this.topologyHelper.createServiceNode(rawOb);
|
|
13764
|
+
id.clickProcess = "Not Yet";
|
|
13765
|
+
if (!this.isNodeExists(this.nodes[2], id)) {
|
|
13766
|
+
this.nodes[2].data.children.push(id);
|
|
13767
|
+
}
|
|
13768
|
+
this.networkGraph = d3.hierarchy(this.networkGraph.data, function (nd) {
|
|
13769
|
+
return nd.children;
|
|
13770
|
+
});
|
|
13771
|
+
this.services = [];
|
|
13772
|
+
this.services[0] = rawOb;
|
|
13773
|
+
this.updateTree(this.nodes[2]);
|
|
13774
|
+
targetNodes = this.processSearchInPreorder(this.nodes[2], searchTxt, targetNodes);
|
|
13775
|
+
this.networkGraph.children.forEach((nd, i) => {
|
|
13776
|
+
if (i !== 1) {
|
|
13777
|
+
this.graphCollapse(nd);
|
|
13778
|
+
}
|
|
13779
|
+
});
|
|
13343
13780
|
}
|
|
13344
|
-
else if (this.resourceType === '
|
|
13345
|
-
targetNodes = this.processSearchInPreorder(this.nodes[
|
|
13781
|
+
else if (this.resourceType === 'services' && this.all_services_fetched) {
|
|
13782
|
+
targetNodes = this.processSearchInPreorder(this.nodes[2], searchTxt, targetNodes);
|
|
13346
13783
|
}
|
|
13347
|
-
else if (this.resourceType === '
|
|
13348
|
-
|
|
13784
|
+
else if (this.resourceType === 'identities' && !this.all_identities_fetched) {
|
|
13785
|
+
const rawOb = this.searchCache.find((item) => item.name === searchTxt);
|
|
13786
|
+
const id = this.topologyHelper.createIdentityNode(rawOb);
|
|
13787
|
+
id.clickProcess = "Not Yet";
|
|
13788
|
+
if (!this.isNodeExists(this.nodes[3], id)) {
|
|
13789
|
+
this.nodes[3].data.children.push(id);
|
|
13790
|
+
}
|
|
13791
|
+
this.networkGraph = d3.hierarchy(this.networkGraph.data, function (nd) {
|
|
13792
|
+
return nd.children;
|
|
13793
|
+
});
|
|
13794
|
+
this.identities[0] = [];
|
|
13795
|
+
this.identities[0] = rawOb;
|
|
13796
|
+
this.updateTree(this.nodes[3]);
|
|
13797
|
+
targetNodes = this.processSearchInPreorder(this.nodes[3], searchTxt, targetNodes);
|
|
13798
|
+
this.networkGraph.children.forEach((nd, i) => {
|
|
13799
|
+
if (i !== 2) {
|
|
13800
|
+
this.graphCollapse(nd);
|
|
13801
|
+
}
|
|
13802
|
+
});
|
|
13349
13803
|
}
|
|
13350
|
-
else if (this.resourceType === 'identities') {
|
|
13351
|
-
targetNodes = this.processSearchInPreorder(this.nodes[3], searchTxt,
|
|
13804
|
+
else if (this.resourceType === 'identities' && this.all_identities_fetched) {
|
|
13805
|
+
targetNodes = this.processSearchInPreorder(this.nodes[3], searchTxt, targetNodes);
|
|
13352
13806
|
}
|
|
13353
|
-
else if (this.resourceType === 'edge-router-policies') {
|
|
13354
|
-
|
|
13807
|
+
else if (this.resourceType === 'edge-router-policies' && !this.all_edge_router_policies_fetched) {
|
|
13808
|
+
const rawOb = this.searchCache.find((item) => item.name === searchTxt);
|
|
13809
|
+
const id = this.topologyHelper.createEdgeRouterPolicyNode(rawOb);
|
|
13810
|
+
id.clickProcess = "Not Yet";
|
|
13811
|
+
if (!this.isNodeExists(this.nodes[5], id)) {
|
|
13812
|
+
this.nodes[5].data.children.push(id);
|
|
13813
|
+
}
|
|
13814
|
+
this.networkGraph = d3.hierarchy(this.networkGraph.data, function (nd) {
|
|
13815
|
+
return nd.children;
|
|
13816
|
+
});
|
|
13817
|
+
this.networkGraph.children.forEach((nd, i) => {
|
|
13818
|
+
if (i !== 4) {
|
|
13819
|
+
this.graphCollapse(nd);
|
|
13820
|
+
}
|
|
13821
|
+
});
|
|
13822
|
+
this.networkGraph.children.forEach(nd => this.graphCollapse(nd));
|
|
13823
|
+
this.edge_router_policies = [];
|
|
13824
|
+
this.edge_router_policies[0] = rawOb;
|
|
13825
|
+
this.updateTree(this.nodes[5]);
|
|
13826
|
+
targetNodes = this.processSearchInPreorder(this.nodes[5], searchTxt, targetNodes);
|
|
13827
|
+
}
|
|
13828
|
+
else if (this.resourceType === 'edge-router-policies' && this.all_edge_router_policies_fetched) {
|
|
13829
|
+
targetNodes = this.processSearchInPreorder(this.nodes[5], searchTxt, targetNodes);
|
|
13830
|
+
}
|
|
13831
|
+
else if (this.resourceType === 'service-edge-router-policies' && !this.all_service_router_policies_fetched) {
|
|
13832
|
+
const rawOb = this.searchCache.find((item) => item.name === searchTxt);
|
|
13833
|
+
const id = this.topologyHelper.createServiceEdgeRouterPolicyNode(rawOb);
|
|
13834
|
+
id.clickProcess = "Not Yet";
|
|
13835
|
+
if (!this.isNodeExists(this.nodes[6], id)) {
|
|
13836
|
+
this.nodes[6].data.children.push(id);
|
|
13837
|
+
}
|
|
13838
|
+
this.networkGraph = d3.hierarchy(this.networkGraph.data, function (nd) {
|
|
13839
|
+
return nd.children;
|
|
13840
|
+
});
|
|
13841
|
+
this.networkGraph.children.forEach((nd, i) => {
|
|
13842
|
+
if (i !== 5) {
|
|
13843
|
+
this.graphCollapse(nd);
|
|
13844
|
+
}
|
|
13845
|
+
});
|
|
13846
|
+
this.service_router_policies = [];
|
|
13847
|
+
this.service_router_policies[0] = rawOb;
|
|
13848
|
+
this.updateTree(this.nodes[6]);
|
|
13849
|
+
targetNodes = this.processSearchInPreorder(this.nodes[6], searchTxt, targetNodes);
|
|
13355
13850
|
}
|
|
13356
|
-
else if (this.resourceType === 'service-edge-router-policies') {
|
|
13357
|
-
targetNodes = this.processSearchInPreorder(this.nodes[6], searchTxt,
|
|
13851
|
+
else if (this.resourceType === 'service-edge-router-policies' && this.all_service_router_policies_fetched) {
|
|
13852
|
+
targetNodes = this.processSearchInPreorder(this.nodes[6], searchTxt, targetNodes);
|
|
13358
13853
|
}
|
|
13854
|
+
// this.networkGraph.children.forEach(nd => this.graphCollapse(nd));
|
|
13359
13855
|
paths = this.explorePathsForSearchedNodes(targetNodes, paths, nodeIds);
|
|
13360
13856
|
if (targetNodes && targetNodes.length <= 0) {
|
|
13361
13857
|
this.noSearchResults = true;
|
|
13362
13858
|
this.clearSearchLinkColors();
|
|
13363
|
-
// return false;
|
|
13364
13859
|
}
|
|
13365
13860
|
else {
|
|
13366
|
-
//if (targetNodes) {
|
|
13367
13861
|
this.openPaths(paths, true);
|
|
13368
13862
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
13369
13863
|
// @ts-ignore
|
|
@@ -13372,16 +13866,15 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13372
13866
|
// const dataId = _.get(d, 'data.id', '');
|
|
13373
13867
|
const nodeName = _.get(targetNodes[0], 'data.name', '');
|
|
13374
13868
|
if (dataName.toLowerCase() === searchTxt.toLowerCase() && nodeName === dataName) {
|
|
13375
|
-
d3.select(this).style('fill', '
|
|
13869
|
+
d3.select(this).style('fill', '#a60303'); //#004447, 470000
|
|
13376
13870
|
}
|
|
13377
13871
|
});
|
|
13378
13872
|
}
|
|
13379
|
-
// else {
|
|
13380
|
-
// this.noSearchResults = true;
|
|
13381
|
-
// this.clearSearchLinkColors();
|
|
13382
|
-
// }
|
|
13383
13873
|
}
|
|
13384
13874
|
}
|
|
13875
|
+
isNodeExists(rootNode, id) {
|
|
13876
|
+
return rootNode.data.children.find((nd) => nd.uuid === id.uuid);
|
|
13877
|
+
}
|
|
13385
13878
|
explorePathsForSearchedNodes(targetNodes, paths, nodeIds) {
|
|
13386
13879
|
for (let i = 0; targetNodes && i < targetNodes.length; i++) {
|
|
13387
13880
|
let nd = targetNodes[i];
|
|
@@ -13397,7 +13890,7 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13397
13890
|
}
|
|
13398
13891
|
return paths;
|
|
13399
13892
|
}
|
|
13400
|
-
processSearchInPreorder(nodeObj, searchTxt,
|
|
13893
|
+
processSearchInPreorder(nodeObj, searchTxt, targetNodes) {
|
|
13401
13894
|
const name = _.get(nodeObj, 'data.name');
|
|
13402
13895
|
// const nodeId = _.get(nodeObj, 'data.id');
|
|
13403
13896
|
const isRootNode = _.get(nodeObj, 'data.rootNode');
|
|
@@ -13409,7 +13902,7 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13409
13902
|
}
|
|
13410
13903
|
const childNodes = nodeObj.children ? nodeObj.children : nodeObj._children;
|
|
13411
13904
|
for (let i = 0; childNodes && i < childNodes.length; i++) {
|
|
13412
|
-
this.processSearchInPreorder(childNodes[i], searchTxt,
|
|
13905
|
+
this.processSearchInPreorder(childNodes[i], searchTxt, targetNodes);
|
|
13413
13906
|
}
|
|
13414
13907
|
return targetNodes;
|
|
13415
13908
|
}
|
|
@@ -13547,7 +14040,7 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13547
14040
|
resetSearchNode() {
|
|
13548
14041
|
if (this.searchRootNode) {
|
|
13549
14042
|
this.networkGraph = _.cloneDeep(this.baseNetworkGraph);
|
|
13550
|
-
this.updateTree(this.networkGraph);
|
|
14043
|
+
this.updateTree(this.networkGraph, true);
|
|
13551
14044
|
}
|
|
13552
14045
|
}
|
|
13553
14046
|
resetTree(clearSearch) {
|
|
@@ -13593,6 +14086,35 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13593
14086
|
}
|
|
13594
14087
|
}
|
|
13595
14088
|
}
|
|
14089
|
+
findModelName() {
|
|
14090
|
+
return this.resourceType;
|
|
14091
|
+
}
|
|
14092
|
+
async searchObjectsUsingApi() {
|
|
14093
|
+
this.isLoading = true;
|
|
14094
|
+
const model_name = this.findModelName();
|
|
14095
|
+
this.searchWord = _.clone(this.filterText);
|
|
14096
|
+
const str = `${this.resourceType}?filter=%20name%20contains%20%22${this.searchWord}%22&limit=5&offset=0&sort=name%20%20asc`;
|
|
14097
|
+
return await this.zitiService
|
|
14098
|
+
.call(str)
|
|
14099
|
+
.then((result) => {
|
|
14100
|
+
this.isLoading = false;
|
|
14101
|
+
this.autocompleteOptions = [];
|
|
14102
|
+
this.searchCache = result.data;
|
|
14103
|
+
result.data.forEach((res) => {
|
|
14104
|
+
/* const obj: { [key: string]: string } = {
|
|
14105
|
+
id: res.id,
|
|
14106
|
+
name: res.name,
|
|
14107
|
+
}; */
|
|
14108
|
+
this.autocompleteOptions.push(res.name);
|
|
14109
|
+
});
|
|
14110
|
+
this.noSearchResults = true;
|
|
14111
|
+
const countA = result.data?.length > 0 ? result.data.length : 0;
|
|
14112
|
+
this.filerResponseMessage = "search word:'" + this.searchWord + "', result: top " + countA + " of " + result.meta.pagination.totalCount + " records";
|
|
14113
|
+
}).catch((error) => {
|
|
14114
|
+
this.isLoading = false;
|
|
14115
|
+
this.logger.error(error.message);
|
|
14116
|
+
});
|
|
14117
|
+
}
|
|
13596
14118
|
filterSearchArray() {
|
|
13597
14119
|
if (_.isEmpty(this.resourceType)) {
|
|
13598
14120
|
this.autocompleteOptions = [];
|
|
@@ -13600,37 +14122,96 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13600
14122
|
return;
|
|
13601
14123
|
}
|
|
13602
14124
|
this.autocompleteOptions = [];
|
|
13603
|
-
if (this.resourceType === 'service-policies') {
|
|
14125
|
+
if (this.resourceType === 'service-policies' && this.all_service_policies_fetched) {
|
|
13604
14126
|
this.autocompleteOptions = this.servicePoliciesTreeNodes.filter((option) => option.toLowerCase().includes(this.filterText.toLowerCase()));
|
|
13605
14127
|
}
|
|
13606
|
-
else if (this.resourceType === '
|
|
14128
|
+
else if (this.resourceType === 'service-policies' && !this.all_service_policies_fetched) {
|
|
14129
|
+
this.searchObjectsUsingApi();
|
|
14130
|
+
}
|
|
14131
|
+
else if (this.resourceType === 'services' && this.all_services_fetched) {
|
|
13607
14132
|
this.autocompleteOptions = this.servicesTreeNodes.filter((option) => option.toLowerCase().includes(this.filterText.toLowerCase()));
|
|
13608
14133
|
}
|
|
13609
|
-
else if (this.resourceType === '
|
|
14134
|
+
else if (this.resourceType === 'services' && !this.all_services_fetched) {
|
|
14135
|
+
this.searchObjectsUsingApi();
|
|
14136
|
+
}
|
|
14137
|
+
else if (this.resourceType === 'identities' && this.all_identities_fetched) {
|
|
13610
14138
|
this.autocompleteOptions = this.identitiesTreeNodes.filter((option) => option.toLowerCase().includes(this.filterText.toLowerCase()));
|
|
13611
14139
|
}
|
|
13612
|
-
else if (this.resourceType === '
|
|
14140
|
+
else if (this.resourceType === 'identities' && !this.all_identities_fetched) {
|
|
14141
|
+
this.searchObjectsUsingApi();
|
|
14142
|
+
}
|
|
14143
|
+
else if (this.resourceType === 'edge-routers' && this.all_edgerouters_fetched) {
|
|
13613
14144
|
this.autocompleteOptions = this.edgeroutersTreeNodes.filter((option) => option.toLowerCase().includes(this.filterText.toLowerCase()));
|
|
13614
14145
|
}
|
|
13615
|
-
else if (this.resourceType === 'edge-
|
|
14146
|
+
else if (this.resourceType === 'edge-routers' && !this.all_edgerouters_fetched) {
|
|
14147
|
+
this.searchObjectsUsingApi();
|
|
14148
|
+
}
|
|
14149
|
+
else if (this.resourceType === 'edge-router-policies' && this.all_edge_router_policies_fetched) {
|
|
13616
14150
|
this.autocompleteOptions = this.erPoliciesTreeNodes.filter((option) => option.toLowerCase().includes(this.filterText.toLowerCase()));
|
|
13617
14151
|
}
|
|
13618
|
-
else if (this.resourceType === '
|
|
14152
|
+
else if (this.resourceType === 'edge-router-policies' && !this.all_edge_router_policies_fetched) {
|
|
14153
|
+
this.searchObjectsUsingApi();
|
|
14154
|
+
}
|
|
14155
|
+
else if (this.resourceType === 'service-edge-router-policies' && this.all_service_router_policies_fetched) {
|
|
13619
14156
|
this.autocompleteOptions = this.serviceEdgeRouterPolicyTreeNodes.filter((option) => option.toLowerCase().includes(this.filterText.toLowerCase()));
|
|
13620
14157
|
}
|
|
14158
|
+
else if (this.resourceType === 'service-edge-router-policies' && !this.all_service_router_policies_fetched) {
|
|
14159
|
+
this.searchObjectsUsingApi();
|
|
14160
|
+
}
|
|
13621
14161
|
}
|
|
13622
14162
|
zoomIn() {
|
|
13623
14163
|
}
|
|
13624
14164
|
zoomOut() {
|
|
13625
14165
|
}
|
|
13626
14166
|
clearSearchFilter() {
|
|
13627
|
-
this.resourceTypeError = false;
|
|
13628
14167
|
this.filterText = '';
|
|
13629
|
-
this.
|
|
14168
|
+
this.resetAutoCompleteOptions();
|
|
14169
|
+
this.resourceTypeError = false;
|
|
14170
|
+
// this.filterSearchArray();
|
|
13630
14171
|
this.resetSearchNode();
|
|
13631
14172
|
this.collapse();
|
|
13632
14173
|
this.clearSearchLinkColors();
|
|
13633
14174
|
}
|
|
14175
|
+
resetAutoCompleteOptions() {
|
|
14176
|
+
this.searchCache = [];
|
|
14177
|
+
this.filerResponseMessage = 'search filter..';
|
|
14178
|
+
if (this.resourceType === 'service-policies' && this.all_service_policies_fetched) {
|
|
14179
|
+
this.autocompleteOptions = this.servicePoliciesTreeNodes.filter((option) => this.filterText === '' || option.toLowerCase().includes(this.filterText.toLowerCase()));
|
|
14180
|
+
}
|
|
14181
|
+
else if (this.resourceType === 'service-policies' && !this.all_service_policies_fetched) {
|
|
14182
|
+
this.autocompleteOptions = [];
|
|
14183
|
+
}
|
|
14184
|
+
else if (this.resourceType === 'services' && this.all_services_fetched) {
|
|
14185
|
+
this.autocompleteOptions = this.servicesTreeNodes.filter((option) => this.filterText === '' || option.toLowerCase().includes(this.filterText.toLowerCase()));
|
|
14186
|
+
}
|
|
14187
|
+
else if (this.resourceType === 'services' && !this.all_services_fetched) {
|
|
14188
|
+
this.autocompleteOptions = [];
|
|
14189
|
+
}
|
|
14190
|
+
else if (this.resourceType === 'identities' && this.all_identities_fetched) {
|
|
14191
|
+
this.autocompleteOptions = this.identitiesTreeNodes.filter((option) => this.filterText === '' || option.toLowerCase().includes(this.filterText.toLowerCase()));
|
|
14192
|
+
}
|
|
14193
|
+
else if (this.resourceType === 'identities' && !this.all_identities_fetched) {
|
|
14194
|
+
this.autocompleteOptions = [];
|
|
14195
|
+
}
|
|
14196
|
+
else if (this.resourceType === 'edge-routers' && this.all_edgerouters_fetched) {
|
|
14197
|
+
this.autocompleteOptions = this.edgeroutersTreeNodes.filter((option) => this.filterText === '' || option.toLowerCase().includes(this.filterText.toLowerCase()));
|
|
14198
|
+
}
|
|
14199
|
+
else if (this.resourceType === 'edge-routers' && !this.all_edgerouters_fetched) {
|
|
14200
|
+
this.autocompleteOptions = [];
|
|
14201
|
+
}
|
|
14202
|
+
else if (this.resourceType === 'edge-router-policies' && this.all_edge_router_policies_fetched) {
|
|
14203
|
+
this.autocompleteOptions = this.erPoliciesTreeNodes.filter((option) => this.filterText === '' || option.toLowerCase().includes(this.filterText.toLowerCase()));
|
|
14204
|
+
}
|
|
14205
|
+
else if (this.resourceType === 'edge-router-policies' && !this.all_edge_router_policies_fetched) {
|
|
14206
|
+
this.autocompleteOptions = [];
|
|
14207
|
+
}
|
|
14208
|
+
else if (this.resourceType === 'service-edge-router-policies' && this.all_service_router_policies_fetched) {
|
|
14209
|
+
this.autocompleteOptions = this.serviceEdgeRouterPolicyTreeNodes.filter((option) => this.filterText === '' || option.toLowerCase().includes(this.filterText.toLowerCase()));
|
|
14210
|
+
}
|
|
14211
|
+
else if (this.resourceType === 'service-edge-router-policies' && !this.all_service_router_policies_fetched) {
|
|
14212
|
+
this.autocompleteOptions = [];
|
|
14213
|
+
}
|
|
14214
|
+
}
|
|
13634
14215
|
clearSearchType() {
|
|
13635
14216
|
this.resourceType = '';
|
|
13636
14217
|
this.autocompleteOptions = [];
|
|
@@ -13641,12 +14222,21 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13641
14222
|
transform.k = 1;
|
|
13642
14223
|
this.svg.attr('transform', transform);
|
|
13643
14224
|
}
|
|
14225
|
+
graphCollapse(d) {
|
|
14226
|
+
if (d.data.rootNode === 'Yes') {
|
|
14227
|
+
d.data.clickProcess = 'Not Yet';
|
|
14228
|
+
d._children = null;
|
|
14229
|
+
}
|
|
14230
|
+
if (d.children) {
|
|
14231
|
+
d._children = d.children;
|
|
14232
|
+
d._children && d._children?.find(nd => this.graphCollapse);
|
|
14233
|
+
d.children = null;
|
|
14234
|
+
}
|
|
14235
|
+
}
|
|
13644
14236
|
initTopoView() {
|
|
13645
14237
|
this.autocompleteOptions = [];
|
|
13646
14238
|
const margin = { top: 20, right: 190, bottom: 30, left: 0 };
|
|
13647
|
-
// const width = 1600 - margin.left - margin.right;
|
|
13648
14239
|
const width = window.innerWidth - margin.right;
|
|
13649
|
-
// const height = 1600 - margin.top - margin.bottom;
|
|
13650
14240
|
const height = window.innerHeight - margin.bottom;
|
|
13651
14241
|
this.treetooltip = d3.select('#tooltip');
|
|
13652
14242
|
this.resourceTypeError = false;
|
|
@@ -13668,10 +14258,11 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13668
14258
|
d3.select('#topocontextmenu').style('display', 'none');
|
|
13669
14259
|
});
|
|
13670
14260
|
d3.selectAll('g > *').remove();
|
|
13671
|
-
this.treemap = d3.tree().nodeSize([
|
|
14261
|
+
this.treemap = d3.tree().nodeSize([85, 5]);
|
|
13672
14262
|
this.networkGraph.x = 100; // height / 4;
|
|
13673
14263
|
this.networkGraph.y = 100;
|
|
13674
14264
|
this.networkGraph.children.forEach(collapse);
|
|
14265
|
+
// this.networkGraph.children.forEach( (nd:any) => this.graphCollapse(nd) );
|
|
13675
14266
|
this.updateTree(this.networkGraph);
|
|
13676
14267
|
_.delay(() => {
|
|
13677
14268
|
this.transform = d3.zoomIdentity;
|
|
@@ -13728,7 +14319,7 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13728
14319
|
if (_.startsWith(d.data.name, 'Edge Routers') || _.includes(d.data.type, 'Edge Router')) {
|
|
13729
14320
|
className = 'edge-router';
|
|
13730
14321
|
}
|
|
13731
|
-
if (_.includes(d.data.name, 'Identities') || _.includes(d.data.type, 'Identity')) {
|
|
14322
|
+
if (_.includes(d.data.name, 'Identities') || _.includes(d.data.name, 'Associated Identities') || _.includes(d.data.type, 'Identity') || _.includes(d.data.type, 'BrowZer Identity')) {
|
|
13732
14323
|
className = 'endpoint';
|
|
13733
14324
|
}
|
|
13734
14325
|
if (_.startsWith(d.data.name, 'Services') || _.startsWith(d.data.type, 'Service')) {
|
|
@@ -13737,10 +14328,10 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13737
14328
|
if (_.startsWith(d.data.name, 'Bind-Services') || _.startsWith(d.data.name, 'Dial-Services')) {
|
|
13738
14329
|
className = 'service';
|
|
13739
14330
|
}
|
|
13740
|
-
if (_.startsWith(d.data.name, '
|
|
14331
|
+
if (_.startsWith(d.data.name, 'Bind-Policies') || _.startsWith(d.data.name, 'Dial-Policies') || _.startsWith(d.data.name, 'Bind Policy')) {
|
|
13741
14332
|
className = 'service-policy';
|
|
13742
14333
|
}
|
|
13743
|
-
if (_.includes(d.data.name, 'Service Policies') || _.includes(d.data.type, '
|
|
14334
|
+
if (_.includes(d.data.name, 'Service Policies') || _.includes(d.data.type, 'Service Policy')) {
|
|
13744
14335
|
className = 'service-policy';
|
|
13745
14336
|
}
|
|
13746
14337
|
if (_.startsWith(d.data.name, 'Edge Router Policies') || _.startsWith(d.data.type, 'Router Policy')) {
|
|
@@ -13768,7 +14359,7 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13768
14359
|
const rawEdgerouters = this.edgerouters;
|
|
13769
14360
|
const rawEndpoints = this.identities;
|
|
13770
14361
|
const rawAppwans = this.service_policies;
|
|
13771
|
-
const edgeRouterPolicies = this.
|
|
14362
|
+
const edgeRouterPolicies = this.edge_router_policies;
|
|
13772
14363
|
if (d && d.data && d.data.contextMenu === 'Yes') {
|
|
13773
14364
|
d3.select('#topocontextmenu')
|
|
13774
14365
|
.style('position', 'absolute')
|
|
@@ -13780,7 +14371,7 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13780
14371
|
return;
|
|
13781
14372
|
}
|
|
13782
14373
|
let obj = null;
|
|
13783
|
-
if (d && d.data && d.data.type === 'Identity') {
|
|
14374
|
+
if (d && d.data && (d.data.type === 'Identity' || d.data.type === 'BrowZer Identity')) {
|
|
13784
14375
|
if (d.data.status === "Registered") {
|
|
13785
14376
|
enableLi('#liSingleUT');
|
|
13786
14377
|
enableLi('#liFLSingleRouter');
|
|
@@ -13802,14 +14393,6 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13802
14393
|
disableLi('#liSingleLT');
|
|
13803
14394
|
disableLi('#liCL');
|
|
13804
14395
|
disableLi('#liLT');
|
|
13805
|
-
/*
|
|
13806
|
-
obj = new Identity();
|
|
13807
|
-
for (let i = 0; i < rawEndpoints.length; i++) {
|
|
13808
|
-
if (rawEndpoints[i].id === d.data.uuid) {
|
|
13809
|
-
obj = rawEndpoints[i];
|
|
13810
|
-
}
|
|
13811
|
-
}
|
|
13812
|
-
*/
|
|
13813
14396
|
this.contextmenuNodeType = 'identity';
|
|
13814
14397
|
}
|
|
13815
14398
|
else if (d && d.data && d.data.type === 'Edge Router') {
|
|
@@ -13833,14 +14416,6 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13833
14416
|
disableLi('#liCL');
|
|
13834
14417
|
disableLi('#liLT');
|
|
13835
14418
|
this.contextmenuNodeType = 'edge-router';
|
|
13836
|
-
/*
|
|
13837
|
-
obj = new EdgeRouterV2();
|
|
13838
|
-
for (let i = 0; i < rawEdgerouters.length; i++) {
|
|
13839
|
-
if (rawEdgerouters[i].id === d.data.uuid) {
|
|
13840
|
-
obj = rawEdgerouters[i];
|
|
13841
|
-
}
|
|
13842
|
-
}
|
|
13843
|
-
*/
|
|
13844
14419
|
}
|
|
13845
14420
|
else if (d && d.data && d.data.type === 'Service') {
|
|
13846
14421
|
enableLi('#liMet');
|
|
@@ -13856,16 +14431,8 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13856
14431
|
disableLi('#liLT');
|
|
13857
14432
|
enableLi('#liSingleUT');
|
|
13858
14433
|
this.contextmenuNodeType = 'service';
|
|
13859
|
-
/*
|
|
13860
|
-
obj = new PlatformService();
|
|
13861
|
-
for (let i = 0; i < this.services.length; i++) {
|
|
13862
|
-
if (this.services[i].id === d.data.uuid) {
|
|
13863
|
-
obj = this.services[i];
|
|
13864
|
-
}
|
|
13865
|
-
}
|
|
13866
|
-
*/
|
|
13867
14434
|
}
|
|
13868
|
-
else if (d && d.data && d.data.type === '
|
|
14435
|
+
else if (d && d.data && d.data.type === 'Service Policy') {
|
|
13869
14436
|
disableLi('#liMet');
|
|
13870
14437
|
enableLi('#liVC');
|
|
13871
14438
|
disableLi('#liIns');
|
|
@@ -13878,15 +14445,7 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13878
14445
|
disableLi('#liCL');
|
|
13879
14446
|
disableLi('#liLT');
|
|
13880
14447
|
disableLi('#liSingleUT');
|
|
13881
|
-
|
|
13882
|
-
obj = new ServicePolicy();
|
|
13883
|
-
for (let i = 0; i < rawAppwans.length; i++) {
|
|
13884
|
-
if (rawAppwans[i].id === d.data.uuid) {
|
|
13885
|
-
obj = rawAppwans[i];
|
|
13886
|
-
}
|
|
13887
|
-
}
|
|
13888
|
-
*/
|
|
13889
|
-
this.contextmenuNodeType = 'appwan';
|
|
14448
|
+
this.contextmenuNodeType = 'service-policy';
|
|
13890
14449
|
}
|
|
13891
14450
|
else if (d && d.data && d.data.type === 'Router Policy') {
|
|
13892
14451
|
disableLi('#liMet');
|
|
@@ -13902,14 +14461,6 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13902
14461
|
disableLi('#liLT');
|
|
13903
14462
|
disableLi('#liSingleUT');
|
|
13904
14463
|
this.contextmenuNodeType = 'router-policy';
|
|
13905
|
-
/*
|
|
13906
|
-
obj = new EdgeRouterPolicyV2();
|
|
13907
|
-
for (let i = 0; i < edgeRouterPolicies.length; i++) {
|
|
13908
|
-
if (edgeRouterPolicies[i].id === d.data.uuid) {
|
|
13909
|
-
obj = edgeRouterPolicies[i];
|
|
13910
|
-
}
|
|
13911
|
-
}
|
|
13912
|
-
*/
|
|
13913
14464
|
}
|
|
13914
14465
|
else if (d && d.data && d.data.type === 'Network') {
|
|
13915
14466
|
enableLi('#liMet');
|
|
@@ -13941,14 +14492,6 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13941
14492
|
disableLi('#liLT');
|
|
13942
14493
|
disableLi('#liSingleUT');
|
|
13943
14494
|
this.contextmenuNodeType = 'service-router-policy';
|
|
13944
|
-
/*
|
|
13945
|
-
obj = new ServiceEdgeRouterPolicy();
|
|
13946
|
-
for (let i = 0; i < this.service_router_policies.length; i++) {
|
|
13947
|
-
if (this.service_router_policies[i].id === d.data.uuid) {
|
|
13948
|
-
obj = this.service_router_policies[i];
|
|
13949
|
-
}
|
|
13950
|
-
}
|
|
13951
|
-
*/
|
|
13952
14495
|
}
|
|
13953
14496
|
this.contextmenuNode = obj;
|
|
13954
14497
|
d3.select('#tooltip').style('display', 'none');
|
|
@@ -13960,14 +14503,31 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13960
14503
|
.style('fill', function (d) {
|
|
13961
14504
|
return d._children ? 'var(--tableText)' : '#fff';
|
|
13962
14505
|
})
|
|
13963
|
-
.on('mousemove', (event,
|
|
13964
|
-
this.drawTreeTooltip(event,
|
|
14506
|
+
.on('mousemove', (event, d) => {
|
|
14507
|
+
this.drawTreeTooltip(event, d);
|
|
13965
14508
|
})
|
|
13966
14509
|
.on('mouseout', this.removeTreeTooltip)
|
|
13967
14510
|
.on('contextmenu', (event) => {
|
|
13968
14511
|
event.preventDefault();
|
|
13969
14512
|
})
|
|
13970
14513
|
.on('click', async (event, d) => {
|
|
14514
|
+
if (d.data.rootNode && d.data.rootNode === 'Yes' && d.data.clickProcess === 'Not Yet') {
|
|
14515
|
+
d3.select(event.currentTarget).transition()
|
|
14516
|
+
.duration(600)
|
|
14517
|
+
.style("stroke-width", "10")
|
|
14518
|
+
.transition()
|
|
14519
|
+
.duration(600)
|
|
14520
|
+
.style("stroke-width", "6")
|
|
14521
|
+
.transition()
|
|
14522
|
+
.duration(600)
|
|
14523
|
+
.style("stroke-width", "3")
|
|
14524
|
+
.transition()
|
|
14525
|
+
.duration(600)
|
|
14526
|
+
.style("stroke-width", "9")
|
|
14527
|
+
.transition()
|
|
14528
|
+
.duration(600)
|
|
14529
|
+
.style("stroke-width", "12");
|
|
14530
|
+
}
|
|
13971
14531
|
if (d && d.data && d.data.contextMenu === 'Yes') {
|
|
13972
14532
|
d3.select('#topocontextmenu').style('display', 'none');
|
|
13973
14533
|
}
|
|
@@ -13989,13 +14549,14 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
13989
14549
|
if (d.data &&
|
|
13990
14550
|
d.data.rootNode &&
|
|
13991
14551
|
d.data.rootNode === 'Yes' &&
|
|
13992
|
-
d.data.type === 'Identity'
|
|
14552
|
+
(d.data.type === 'Identity' ||
|
|
14553
|
+
d.data.type === 'BrowZer Identity') &&
|
|
13993
14554
|
!d.children &&
|
|
13994
14555
|
!d._children) {
|
|
14556
|
+
d.data.clickProcess = 'Completed';
|
|
13995
14557
|
const arr = await this.treeNodeProcessor.processIdentitiesForNodeClick(d, this.networkGraph, this.identities, this.uniqId, this.zitiService, this.configs);
|
|
13996
14558
|
this.uniqId = arr[1];
|
|
13997
14559
|
this.networkGraph = arr[0];
|
|
13998
|
-
d.data.clickProcess = 'Completed';
|
|
13999
14560
|
this.networkGraph.children.find((nd) => {
|
|
14000
14561
|
collapseFew(nd, this.openNodes);
|
|
14001
14562
|
});
|
|
@@ -14007,10 +14568,10 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
14007
14568
|
d.data.type === 'Service' &&
|
|
14008
14569
|
!d.children &&
|
|
14009
14570
|
!d._children) {
|
|
14571
|
+
d.data.clickProcess = 'Completed';
|
|
14010
14572
|
const arr = await this.treeNodeProcessor.processServicesForNodeClick(d, this.networkGraph, this.services, this.uniqId, this.zitiService);
|
|
14011
14573
|
this.uniqId = arr[1];
|
|
14012
14574
|
this.networkGraph = arr[0];
|
|
14013
|
-
d.data.clickProcess = 'Completed';
|
|
14014
14575
|
this.networkGraph.children.find((nd) => {
|
|
14015
14576
|
collapseFew(nd, this.openNodes);
|
|
14016
14577
|
});
|
|
@@ -14019,13 +14580,13 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
14019
14580
|
else if (d.data &&
|
|
14020
14581
|
d.data.rootNode &&
|
|
14021
14582
|
d.data.rootNode === 'Yes' &&
|
|
14022
|
-
d.data.type === '
|
|
14583
|
+
d.data.type === 'Service Policy' &&
|
|
14023
14584
|
!d.children &&
|
|
14024
14585
|
!d._children) {
|
|
14586
|
+
d.data.clickProcess = 'Completed';
|
|
14025
14587
|
const arr = await this.treeNodeProcessor.processServicePoliciesForNodeClick(d, this.networkGraph, this.service_policies, this.uniqId, this.zitiService);
|
|
14026
14588
|
this.uniqId = arr[1];
|
|
14027
14589
|
this.networkGraph = arr[0];
|
|
14028
|
-
d.data.clickProcess = 'Completed';
|
|
14029
14590
|
this.networkGraph.children.find((nd) => {
|
|
14030
14591
|
collapseFew(nd, this.openNodes);
|
|
14031
14592
|
});
|
|
@@ -14037,10 +14598,10 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
14037
14598
|
d.data.type === 'Edge Router' &&
|
|
14038
14599
|
!d.children &&
|
|
14039
14600
|
!d._children) {
|
|
14601
|
+
d.data.clickProcess = 'Completed';
|
|
14040
14602
|
const arr = await this.treeNodeProcessor.processEdgeroutersForNodeClick(d, this.networkGraph, this.edgerouters, this.uniqId, this.zitiService);
|
|
14041
14603
|
this.uniqId = arr[1];
|
|
14042
14604
|
this.networkGraph = arr[0];
|
|
14043
|
-
d.data.clickProcess = 'Completed';
|
|
14044
14605
|
this.networkGraph.children.find((nd) => {
|
|
14045
14606
|
collapseFew(nd, this.openNodes);
|
|
14046
14607
|
});
|
|
@@ -14052,10 +14613,10 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
14052
14613
|
d.data.type === 'Router Policy' &&
|
|
14053
14614
|
!d.children &&
|
|
14054
14615
|
!d._children) {
|
|
14055
|
-
|
|
14616
|
+
d.data.clickProcess = 'Completed';
|
|
14617
|
+
const arr = await this.treeNodeProcessor.processEdgeRouterPoliciesForNodeClick(d, this.networkGraph, this.edge_router_policies, this.uniqId, this.zitiService);
|
|
14056
14618
|
this.uniqId = arr[1];
|
|
14057
14619
|
this.networkGraph = arr[0];
|
|
14058
|
-
d.data.clickProcess = 'Completed';
|
|
14059
14620
|
this.networkGraph.children.find((nd) => {
|
|
14060
14621
|
collapseFew(nd, this.openNodes);
|
|
14061
14622
|
});
|
|
@@ -14067,10 +14628,10 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
14067
14628
|
d.data.type === 'Service Router Policy' &&
|
|
14068
14629
|
!d.children &&
|
|
14069
14630
|
!d._children) {
|
|
14631
|
+
d.data.clickProcess = 'Completed';
|
|
14070
14632
|
const arr = await this.treeNodeProcessor.processServiceEdgeRouterPoliciesForNodeClick(d, this.networkGraph, this.service_router_policies, this.uniqId, this.zitiService);
|
|
14071
14633
|
this.uniqId = arr[1];
|
|
14072
14634
|
this.networkGraph = arr[0];
|
|
14073
|
-
d.data.clickProcess = 'Completed';
|
|
14074
14635
|
this.networkGraph.children.find((nd) => {
|
|
14075
14636
|
collapseFew(nd, this.openNodes);
|
|
14076
14637
|
});
|
|
@@ -14099,13 +14660,17 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
14099
14660
|
this.nodeEnter
|
|
14100
14661
|
.append('foreignObject')
|
|
14101
14662
|
.attr('height', '50')
|
|
14102
|
-
.attr('width',
|
|
14103
|
-
.
|
|
14104
|
-
|
|
14663
|
+
.attr('width', function (d) {
|
|
14664
|
+
return d && d.data && d.data.name.length >= 20 ? '550' : '330';
|
|
14665
|
+
})
|
|
14666
|
+
.attr('x', '20')
|
|
14667
|
+
.attr('y', function (d) {
|
|
14668
|
+
return d && d.data && d.data.rootNode === 'Yes' ? '-5' : '-40';
|
|
14669
|
+
})
|
|
14105
14670
|
.append('xhtml:body')
|
|
14106
14671
|
.style('background', 'transparent')
|
|
14107
14672
|
.html(function (d) {
|
|
14108
|
-
return `<div class="text-container"
|
|
14673
|
+
return `<div class="node-text-container"><span>${d.data.name}</span></div>`;
|
|
14109
14674
|
});
|
|
14110
14675
|
this.nodeUpdate = this.nodeEnter.merge(this.node);
|
|
14111
14676
|
this.nodeUpdate
|
|
@@ -14199,19 +14764,6 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
14199
14764
|
}
|
|
14200
14765
|
});
|
|
14201
14766
|
}
|
|
14202
|
-
function collapseDepth(d, id) {
|
|
14203
|
-
// unused
|
|
14204
|
-
if (d.children) {
|
|
14205
|
-
if (d.data.id !== id) {
|
|
14206
|
-
d._children = d.children;
|
|
14207
|
-
d._children.forEach(collapseDepth);
|
|
14208
|
-
d.children = null;
|
|
14209
|
-
}
|
|
14210
|
-
else {
|
|
14211
|
-
d.children.forEach(collapseDepth);
|
|
14212
|
-
}
|
|
14213
|
-
}
|
|
14214
|
-
}
|
|
14215
14767
|
function collapseFew(_nd, openNodes) {
|
|
14216
14768
|
if (_nd.data.id === '#all') {
|
|
14217
14769
|
return;
|
|
@@ -14250,54 +14802,6 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
14250
14802
|
this.svg.transition().duration(750).attr('transform', trans);
|
|
14251
14803
|
}
|
|
14252
14804
|
}
|
|
14253
|
-
removeGraphTooltip() {
|
|
14254
|
-
if (this.graphtooltip) {
|
|
14255
|
-
this.graphtooltip.style('display', 'none');
|
|
14256
|
-
}
|
|
14257
|
-
}
|
|
14258
|
-
drawGraphTooltip(event, d) {
|
|
14259
|
-
document.getElementById('tooltip').innerHTML = this.readGraphKeyValues(d);
|
|
14260
|
-
this.graphtooltip.style('display', 'block');
|
|
14261
|
-
const x = event.pageX - 400 + 'px';
|
|
14262
|
-
const y = event.pageY + 10 + 'px';
|
|
14263
|
-
this.graphtooltip.style('left', x);
|
|
14264
|
-
this.graphtooltip.style('top', y);
|
|
14265
|
-
}
|
|
14266
|
-
readGraphKeyValues(d) {
|
|
14267
|
-
let info = '<span style="font-size:14px;font-family:Open Sans; font-weight: 600; font-color: var(--tableText);">';
|
|
14268
|
-
const keys = Object.keys(d.data);
|
|
14269
|
-
keys.forEach((k) => {
|
|
14270
|
-
if (k === 'value' ||
|
|
14271
|
-
k === 'group' ||
|
|
14272
|
-
k === 'index' ||
|
|
14273
|
-
k === 'parent' ||
|
|
14274
|
-
k === 'depth' ||
|
|
14275
|
-
k === 'x' ||
|
|
14276
|
-
k === 'y' ||
|
|
14277
|
-
k === 'id' ||
|
|
14278
|
-
k === 'x0' ||
|
|
14279
|
-
k === 'y0' ||
|
|
14280
|
-
k === 'vy' ||
|
|
14281
|
-
k === 'vx') {
|
|
14282
|
-
// continue;
|
|
14283
|
-
}
|
|
14284
|
-
else if (k === 'children') {
|
|
14285
|
-
const kVal = d.data[k];
|
|
14286
|
-
info = info + ' ' + k + ' : ' + kVal.length + '<br>';
|
|
14287
|
-
}
|
|
14288
|
-
else {
|
|
14289
|
-
if (this.isAnObject(d.data[k])) {
|
|
14290
|
-
const kVal = d.data[k];
|
|
14291
|
-
info = info + ' ' + k + ' : ' + kVal.name + '<br>';
|
|
14292
|
-
}
|
|
14293
|
-
else {
|
|
14294
|
-
const vo = d.data[k];
|
|
14295
|
-
info = info + ' ' + k + ' : ' + (vo !== null || vo !== '' ? d.data[k] : 'N/A') + '<br>';
|
|
14296
|
-
}
|
|
14297
|
-
}
|
|
14298
|
-
});
|
|
14299
|
-
return info + '</span>';
|
|
14300
|
-
}
|
|
14301
14805
|
setColor(d) {
|
|
14302
14806
|
if (d.status === 'Error' && d.group === 3) {
|
|
14303
14807
|
return 'red';
|
|
@@ -14352,22 +14856,6 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
14352
14856
|
return 'blue';
|
|
14353
14857
|
}
|
|
14354
14858
|
}
|
|
14355
|
-
nodeshape(d) {
|
|
14356
|
-
if (d.group === '3') {
|
|
14357
|
-
return 'rect';
|
|
14358
|
-
}
|
|
14359
|
-
else {
|
|
14360
|
-
return 'circle';
|
|
14361
|
-
}
|
|
14362
|
-
}
|
|
14363
|
-
linkWidth(d) {
|
|
14364
|
-
if (d.group === 1) {
|
|
14365
|
-
return 10;
|
|
14366
|
-
}
|
|
14367
|
-
else {
|
|
14368
|
-
return 2;
|
|
14369
|
-
}
|
|
14370
|
-
}
|
|
14371
14859
|
dragstarted(event, d) {
|
|
14372
14860
|
if (!event.active) {
|
|
14373
14861
|
this.simulation.alphaTarget(0.3).restart();
|
|
@@ -14402,10 +14890,14 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
14402
14890
|
document.getElementById('tooltip').innerHTML = this.readTreeKeyValues(event, s);
|
|
14403
14891
|
}
|
|
14404
14892
|
readTreeKeyValues(event, d) {
|
|
14405
|
-
|
|
14893
|
+
const startIndex = d.data.name.indexOf('(');
|
|
14894
|
+
const finIndex = d.data.name.indexOf(')');
|
|
14895
|
+
const countStr = startIndex > 0 ? d.data.name.substring(startIndex + 1, finIndex) : 0;
|
|
14896
|
+
let info = `<div class='tool-tip-container'>`;
|
|
14406
14897
|
const keys = Object.keys(d.data); // mp.keys();
|
|
14407
14898
|
keys.forEach(function (k) {
|
|
14408
|
-
if (k === '
|
|
14899
|
+
if (k === 'firstChild' ||
|
|
14900
|
+
k === 'protocol' ||
|
|
14409
14901
|
k === 'contextMenu' ||
|
|
14410
14902
|
k === 'uuid' ||
|
|
14411
14903
|
k === 'lastId' ||
|
|
@@ -14422,21 +14914,34 @@ class NetworkVisualizerComponent extends VisualizerServiceClass {
|
|
|
14422
14914
|
k === 'y0') {
|
|
14423
14915
|
// continue;
|
|
14424
14916
|
}
|
|
14917
|
+
else if (d[k] instanceof Array) {
|
|
14918
|
+
info =
|
|
14919
|
+
info +
|
|
14920
|
+
'<div class="prop-row"><div class="prop-name">' +
|
|
14921
|
+
k +
|
|
14922
|
+
':</div><div class="prop-val">' +
|
|
14923
|
+
d[k].join('<br> ') +
|
|
14924
|
+
'</div></div>';
|
|
14925
|
+
}
|
|
14425
14926
|
else {
|
|
14426
|
-
|
|
14927
|
+
const propVal = d.data[k] || '';
|
|
14928
|
+
info = info + '<div class="prop-row"><div class="prop-name">' + k + ':</div><div class="prop-val">' + propVal + '</div></div>';
|
|
14427
14929
|
}
|
|
14428
14930
|
});
|
|
14429
|
-
|
|
14931
|
+
if (d.data.firstChild && d.data.firstChild === 'Yes' && countStr > this.maxObjectsPerNode - 1) {
|
|
14932
|
+
info = info + '<span class="tooltip-help-text">Note: expand node disabled. Use search filter.</span>';
|
|
14933
|
+
}
|
|
14934
|
+
else if (d.data.firstChild && d.data.firstChild === 'Yes' && countStr < this.maxObjectsPerNode) {
|
|
14935
|
+
info = info + '<span class="tooltip-help-text">Note: click to expand child nodes </span>';
|
|
14936
|
+
}
|
|
14937
|
+
return info + '</div>';
|
|
14430
14938
|
}
|
|
14431
|
-
hide() { }
|
|
14432
|
-
toggleModalSize() { }
|
|
14433
|
-
;
|
|
14434
14939
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NetworkVisualizerComponent, deps: [{ token: SETTINGS_SERVICE }, { token: ZITI_DATA_SERVICE }, { token: i1$1.HttpClient }, { token: LoggerService }, { token: TreeNodeProcessor }, { token: NetworkVisualizerHelper }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14435
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NetworkVisualizerComponent, selector: "app-network-visualizer", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-identities-container\">\n\n <div class=\"nf-network-topology-container\" >\n\n <div class=\"css-header\">{{title}} </div><br>\n\n <div class=\"nf-net-vis-controls-header\">\n <div class=\"nf-topology-zoom-container\">\n <!--button (click)=\"zoomOut()\" class=\"nf-topology-zoom-button minus\"></button>\n <button (click)=\"zoomIn()\" class=\"nf-topology-zoom-button plus\"></button-->\n <div (click)=\"resetTree('Yes')\" class=\"reset-button\" title=\"Reset\"></div>\n </div>\n <select\n (change)=\"resourceTypeChanged()\"\n [(ngModel)]=\"resourceType\"\n [ngClass]=\"{ 'resource-type-error': resourceTypeError }\"\n class=\"resource-type-select\"\n id=\"ResourceTypeSelect\"\n >\n <option value=\"\">Select Resource Type</option>\n <option value=\"service-policies\">Service Policies</option>\n <option value=\"services\">Services</option>\n <option value=\"identities\">Identities</option>\n <option value=\"edge-routers\">Edge Routers</option>\n <option value=\"edge-router-policies\">Edge Router Policies</option>\n <option value=\"service-edge-router-policies\">Service Edge Router Policies</option>\n </select>\n <div class=\"nf-net-vis-filter-container listBox row\">\n <input\n (keyup)=\"filterSearchArray()\"\n [(ngModel)]=\"filterText\"\n [matAutocomplete]=\"auto\"\n class=\"nf-topology-filter-input\"\n id=\"filterText\"\n matInput\n placeholder=\"Type to Filter\"\n />\n\n <div\n (click)=\"clearSearchFilter()\"\n *ngIf=\"filterText !== ''\"\n class=\"buttonBall close\"\n id=\"ClearSearchFilter\"\n ></div>\n <div [hidden]=\"!noSearchResults\" class=\"no-results-warning\">No Results Found</div>\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"autocompleteSearch($event)\">\n <mat-option *ngFor=\"let option of autocompleteOptions\" [value]=\"option\">\n {{ option }}\n </mat-option>\n </mat-autocomplete>\n </div>\n </div>\n\n <div class=\"nf-topology-legend\">\n <div class=\"legend-item\">\n <div class=\"legend-circle servicepolicies\"></div>\n <div class=\"legend-text\">Service Policies</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle services\"></div>\n <div class=\"legend-text\">Services</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle endpoints\"></div>\n <div class=\"legend-text\">Identities</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle edgerouters\"></div>\n <div class=\"legend-text\">Edge Routers</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle erpolicies\"></div>\n <div class=\"legend-text\">Edge Router Policies</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle serviceerpolicies\"></div>\n <div class=\"legend-text\">Service Router Policies</div>\n </div>\n </div>\n\n <div class=\"topotip\" id=\"tooltip\"></div>\n <svg style='pointer-events:all' id=\"NetworkVisualizerSVG\"></svg>\n <lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n </div>\n\n</div>\n", styles: [".ziti-page-container{height:100%;width:100%;left:0;display:flex;flex-direction:column;position:absolute;padding-top:1px;padding-left:3px;padding-right:3px;top:0}.nf-network-topology-container{overflow:hidden;width:100%;height:100%;background-color:var(--background);z-index:1001;margin:auto;inset:0;padding-top:1px;padding-left:3px;padding-right:3px;background:#f5e9f2;background-image:linear-gradient(#ecd3e6 2px,transparent 0),linear-gradient(90deg,#ecd3e6 2px,transparent 0),linear-gradient(#ecd3e6 1px,transparent 0),linear-gradient(90deg,#ecd3e6 1px,transparent 0);background-size:40px 40px,40px 40px,10px 10px,10px 10px}.css-header{height:50px;font-size:25px;font-weight:600;margin:8px 0 0 2px;font-family:Russo One;color:#0027ab;font-size:30px;text-transform:uppercase;font-weight:400;background-color:transparent}.resource-type-select{width:230px;flex-shrink:0;border-radius:27px;height:51px;margin-top:20px;margin-left:20px;-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px);background-color:#ffffff80!important;border-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);color:var(--tableText);padding-left:20px}select{background-image:url(/assets/svgs/ArrowDown.svg);background-position:center right 18px;background-repeat:no-repeat;background-size:18px;padding-right:38px}.no-results-warning{bottom:-20px;left:20px;font-size:15px;color:var(--tableText);padding-left:20px;padding-top:5px}.resource-type-error{border-width:3px;border-color:var(--red)!important}.nf-links{stroke:#fff;stroke-opacity:1.6}.nf-net-vis-controls-header{display:flex;flex-direction:row;position:absolute;z-index:99999;flex:1 0 auto;top:50px}.nf-net-vis-filter-container{max-width:300px;margin-top:20px;margin-left:10px;flex:1 0 auto}.table-filter-container{max-width:300px;margin-top:0;margin-left:1px;flex:1 0 auto}#ClearSearchFilter{position:absolute;right:2px;top:2px;width:20px;height:20px;font-size:25px;color:var(--tableText);z-index:99999999}#popupTableTitle{width:100%;font-weight:900;display:inline-block;background-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);border:2px #d3d3d3!important;text-align:center;border:2px;border-color:#d3d3d3;height:25px;top:2px;color:#fff;padding-right:5px;background:#000;cursor:move}#tra:hover{text-decoration:underline}#CloseDataTable{position:absolute;right:5px;top:-33px;width:25px;height:25px;font-size:15px;color:#fff;z-index:99999999}.copydatatable{width:135px;height:17px;font-size:10pt;font-family:tahoma;top:95%;right:0%;border-radius:5px;background:#fff;border:0px solid gray!important;position:absolute!important;text-transform:uppercase;cursor:pointer;z-index:999}.copydatatable:hover{text-decoration:underline}.nf-topology-filter-input{height:50px;border-radius:25px;border-color:var(--navigation);background-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);padding-left:20px;padding-right:35px}.nf-topology-select-container{max-width:400px;margin-top:20px;margin-left:20px;flex:1 0 auto}.nf-topology-select-input{height:45px;border-radius:25px;border-color:var(--navigation);background-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);padding-left:20px}input:focus,textarea:focus,select:focus{box-shadow:0 20px 23px 0 var(--shadow)}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.nf-topology-filter-input{background:var(--glass)!important;-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.nf-topology-zoom-container{display:flex;margin-left:20px;margin-top:20px;flex:1 0 auto}.nf-topology-zoom-button.minus{height:50px;width:50px;margin-right:10px;border-radius:55px;border:unset;font-size:40px;font-family:icomoon!important;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:var(--primaryColor);line-height:49px;background-color:var(--navigation);cursor:pointer;overflow:hidden;z-index:24;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .5s;background-image:url(/assets/images/Icon_Minus.png);background-size:40%;background-color:var(--red);box-shadow:0 6px 10px 0 var(--redShadow)}.nf-topology-zoom-label{padding-right:10px}.nf-topology-zoom-button{height:50px;width:50px;margin-right:10px;border-radius:55px;border:unset;font-size:40px;font-family:icomoon!important;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:var(--primaryColor);line-height:49px;background-color:var(--navigation);cursor:pointer;overflow:hidden;z-index:24;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .5s}.nf-topology-zoom-button.plus:before{content:\"\\e937\"}.nf-topology-zoom-button.minus:before{content:\"\\e943\"}.nf-topology-zoom-button:hover{color:var(--white);background-color:var(--primaryColor);filter:brightness(90%);transition:background-color 1s;transition:.3s}.nf-topology-zoom-button:active{background-color:var(--icon);transform:scale(.97);transition:background-color 1s;transition:.3s}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.nf-topology-zoom-button{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.placeholder{display:flex;align-items:center;justify-content:center;height:800px}.topotip{display:none;position:fixed;background:var(--navigation);border:0px;border-radius:12px;pointer-events:none;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .3s;padding:10px;font-size:17px;font-weight:700;color:var(--tableText);z-index:2000;opacity:1;max-width:400px}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.topotip{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.nodes{cursor:pointer;box-shadow:0 30px 43px 0 var(--shadow)}.nf-links{cursor:pointer}.linkWidth{color:#fff}.nf-network-topology-container .loader{margin-left:-150px}.loader .bar1{background-color:var(--inputBorder)!important}.loader .bar2{background-color:var(--inputBorder)!important;animation-delay:-.7s}.loader .bar3{background-color:var(--inputBorder)!important;animation-delay:-.6s}.loader .bar4{background-color:var(--inputBorder)!important;animation-delay:-.5s}.loader .bar5{background-color:var(--inputBorder)!important;animation-delay:-.4s}.loader .bar6{background-color:var(--inputBorder)!important;animation-delay:-.3s}.changeView{display:flex;margin-top:32px;margin-left:10px;flex:1 0 auto}.changeView .changeViewLabel{margin-top:3px;margin-left:5px}.node circle{fill:#fff;stroke:#07397d;stroke-width:14px;box-shadow:0 20px 23px 0 var(--shadow)}.node text{font:27px sans-serif;cursor:pointer}.text-container{cursor:pointer}.link{fill:none;stroke:var(--table);stroke-width:5px;color:#fff}.nf-topology-legend{width:210px;border-radius:12px;margin-top:10px;margin-right:20px;position:fixed;top:0;right:0;background:var(--navigation);display:inline-block;box-shadow:0 20px 23px 0 var(--shadow);padding:5px 12px 7px}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.nf-topology-legend{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.legend-item{width:100%;height:100%;display:inline-block}.legend-circle{height:12px;width:12px;border-radius:15px;display:inline-block;margin-top:7px}.legend-circle.servicepolicies{background-color:#ff0d49}.legend-circle.services{background-color:#08dc5a}.legend-circle.endpoints{background-color:#0273fb}.legend-circle.edgerouters{background-color:#ffc000}.legend-circle.erpolicies{background-color:#ff8400}.legend-circle.serviceerpolicies{background-color:#ff5900}.legend-text{display:inline-block;font-size:15px;font-weight:600;color:var(--tableText);padding-left:7px;padding-bottom:4px}.reset-button{height:50px;width:50px;border-radius:50px;margin-right:10px;background-size:contain;background-image:url(/assets/svgs/refresh.svg);cursor:pointer;overflow:hidden;z-index:24;box-shadow:0 20px 23px 0 var(--shadow);transition:.3s}.reset-button:hover{filter:brightness(90%);transform:scale(.97);transition:.3s}.reset-button:active{transform:scale(.9);transition:.3s}.sign_out_button{background-color:#2fa4e7;padding:16px 10px;color:#fff;float:left;text-decoration:none}.sign_out_button:hover{background-color:#1892d7}.sign_out_button a{color:#fff;text-decoration:none}.contextmenu_mouseout{fill:#f4f4f4;stroke:#fff;stroke-width:1px}.contextmenu_mouseover{fill:#c8c8c8}.menu2{position:fixed;background:#fff;color:#000;cursor:pointer;border:1px black solid}.contextmenu_text{position:fixed;background:var(--navigation);border:1px;border-radius:5px;pointer-events:none;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .3s;padding:5px;font-size:10px;font-weight:700;color:var(--tableText);z-index:2000;opacity:1;max-width:400px}.contextmenu{z-index:2000;opacity:1;position:fixed;background:#fff;color:#000;font-family:sans-serif;font-size:11px;box-shadow:2px 2px 2px #90908d;padding:2px;border-radius:12px;border:1px solid #c6c6c6;max-width:400px}.menuItems{display:block;color:#555;text-decoration:none;padding:6px 8px 6px 30px;position:relative}.context-menu{display:none;position:absolute;z-index:10}.context-menu__items{list-style:none;margin:0;padding:0}.context-menu__item{display:block;margin-bottom:4px}.container{margin:0 auto;padding:0 24px;max-width:960px}.context-menu__link{display:block;padding:4px 12px;color:#06a;text-decoration:none}.contextmenu_text:hover .divItemsHover{color:#fff;background-color:#06a}.context-menu--active{display:block}#topoDataTableHeader{float:left;min-width:250px;width:auto;height:360px;top:100px;border-bottom-left-radius:13px;border-bottom-right-radius:13px;display:none;background:#fff;border:2px solid gray!important;position:absolute!important}.table-filter-input{height:30px;width:100%;top:40px;border-radius:1px;border-color:#d3d3d3;background-color:#d3d3d3;box-shadow:0 20px 23px 0 var(--shadow);padding-top:3px;padding-left:2px;padding-right:2px}#topoDataTable{float:down;min-width:250px;width:auto;height:300px;top:55px;border-radius:10px;position:absolute!important;overflow:auto;background:#fff;font-family:sans-serif;font-size:16px;color:#06a;overflow-x:scroll}table{width:auto;height:auto;max-height:300px}tr{width:auto;padding:5px}th{width:auto;font-family:sans-serif;font-size:16px;color:#06a;font-weight:700;background-color:#06a}td{width:auto}th{width:auto;font-weight:700;padding:2px;border:1px solid #ccc;text-align:center}.context-menu{border-radius:12px;background:var(--navigation);width:200px;box-shadow:0 20px 23px 0 var(--shadow);position:relative;display:none}.context-menu .menu-options{list-style:none;padding:0}.context-menu .menu-options .menu-option{font-weight:700;font-size:16px;line-height:36px;color:var(--tableText);padding:1px 4px 1px 20px;cursor:pointer}.context-menu .menu-options .menu-option:hover{background:var(--primaryColor);color:var(--navigation)}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.context-menu{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.spinner{position:absolute;right:1em;top:1em;display:inline-block;width:32px;height:32px;border-radius:50%;background:transparent;border-top:5px solid var(--placeholder);border-right:5px solid var(--placeholder);border-bottom:5px solid transparent;border-left:5px solid transparent;animation:loading .5s infinite linear}.disabled{-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;pointer-events:none;cursor:pointer;opacity:.6}path:not(.loader path,.highcharts-root path){fill:none;stroke:var(--navigation);stroke-width:5px;color:#fff}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.rotating{animation:rotating 2s linear infinite}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__outer-circle{background-color:var(--icon);border-width:4px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--icon)}.mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-width:4px}#mat-radio-2>div>div>div.mdc-radio__background>div.mdc-radio__inner-circle .node.edge-router circle{stroke:#ffc000!important;stroke-width:12px}.node.endpoint circle{stroke:#0273fb!important;stroke-width:12px}.node.service circle{stroke:#08dc5a!important;stroke-width:12px}.node.service-policy circle{stroke:#ff0d49!important;stroke-width:12px}.node.edge-router-policy circle{stroke:#ff8400!important;stroke-width:12px}.node.service-edge-router-policy circle{stroke:#ff5900!important;stroke-width:12px}.text-container{color:var(--tableText);font-size:24px;font-weight:700;margin-left:20px;margin-top:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}svg>g>g.node:first-of-type.terminate{cursor:pointer}svg>g>g.node:first-of-type.terminate .text-container{cursor:pointer}svg>g>g.node:first-of-type.terminate circle{cursor:pointer}svg>g>g.node:first-of-type.terminate:hover>rect{fill:url(#NodeHoverGradient)}.node>rect{fill:url(#NodeGradient)}.node.terminate{cursor:default;stroke-width:14px}.node.terminate .text-container{cursor:default}.node.terminate circle{cursor:default;stroke-width:14px}.node.terminate:hover>rect{fill:url(#NodeGradient)}.node:hover>rect{fill:url(#NodeHoverGradient)}p-chips.error .p-chips.p-component .p-chips-multiple-container{border-color:var(--red);border-width:2px}.checkboxes.error .mat-checkbox-frame{border-color:var(--red)}.checkboxes.error .mat-checkbox-label{color:var(--red)}.stop1{stop-color:var(--table);stop-opacity:.9}.stop2{stop-color:var(--table);stop-opacity:.65}.stop3{stop-color:var(--table);stop-opacity:0}.stop1a{stop-color:var(--background);stop-opacity:1}.stop2a{stop-color:var(--background);stop-opacity:.7}.stop3a{stop-color:var(--background);stop-opacity:0}\n"], dependencies: [{ kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i7$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
14940
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NetworkVisualizerComponent, selector: "app-network-visualizer", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-identities-container\">\n\n <div class=\"nf-network-topology-container\" >\n\n <div class=\"css-header\">{{title}} </div><br>\n\n <div class=\"nf-net-vis-controls-header\">\n <div class=\"nf-topology-zoom-container\">\n <!--button (click)=\"zoomOut()\" class=\"nf-topology-zoom-button minus\"></button>\n <button (click)=\"zoomIn()\" class=\"nf-topology-zoom-button plus\"></button-->\n <div (click)=\"resetTree('Yes')\" class=\"reset-button\" title=\"Reset\"></div>\n </div>\n <select\n (change)=\"resourceTypeChanged()\"\n [(ngModel)]=\"resourceType\"\n [ngClass]=\"{ 'resource-type-error': resourceTypeError }\"\n class=\"resource-type-select\"\n id=\"ResourceTypeSelect\"\n >\n <option value=\"\">Select Resource Type</option>\n <option value=\"service-policies\">Service Policies</option>\n <option value=\"services\">Services</option>\n <option value=\"identities\">Identities</option>\n <option value=\"edge-routers\">Edge Routers</option>\n <option value=\"edge-router-policies\">Edge Router Policies</option>\n <option value=\"service-edge-router-policies\">Service Edge Router Policies</option>\n </select>\n\n <div class=\"nf-net-vis-filter-container listBox row\">\n <input\n (keyup)=\"nwSearchChange($event)\"\n [(ngModel)]=\"filterText\"\n [matAutocomplete]=\"auto\"\n class=\"nf-topology-filter-input\"\n id=\"filterText\"\n matInput\n placeholder=\"Type to Filter\"\n />\n\n <div\n (click)=\"clearSearchFilter()\"\n *ngIf=\"filterText !== ''\"\n class=\"buttonBall close icon-close\"\n id=\"ClearSearchFilter\"\n ></div>\n\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"autocompleteSearch($event)\">\n <mat-option *ngFor=\"let option of autocompleteOptions\" [value]=\"option\">\n {{ option }}\n </mat-option>\n </mat-autocomplete>\n </div>\n </div>\n\n <div class=\"nf-topology-legend\">\n <div class=\"legend-item\">\n <div class=\"legend-circle servicepolicies\"></div>\n <div class=\"legend-text\">Service Policies</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle services\"></div>\n <div class=\"legend-text\">Services</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle endpoints\"></div>\n <div class=\"legend-text\">Identities</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle edgerouters\"></div>\n <div class=\"legend-text\">Edge Routers</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle erpolicies\"></div>\n <div class=\"legend-text\">Edge Router Policies</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle serviceerpolicies\"></div>\n <div class=\"legend-text\">Service Router Policies</div>\n </div>\n\n <div class=\"legend-item\">\n <div class=\"node-expand-help\"></div>\n <div class=\"legend-icon-text legend-associated-nodes\">View Associated Nodes</div>\n <div class=\"legend-icon-pointer\"></div>\n </div>\n </div>\n\n <div class=\"topotip\" id=\"tooltip\"></div>\n <svg style='pointer-events:all' id=\"NetworkVisualizerSVG\"></svg>\n <lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n </div>\n\n</div>\n", styles: [".ziti-page-container{height:100%;width:100%;left:0;display:flex;flex-direction:column;position:absolute;padding-top:1px;padding-left:3px;padding-right:3px;top:0}.nf-network-topology-container{overflow:hidden;width:100%;height:100%;background-color:var(--background);z-index:1001;margin:auto;inset:0;padding-top:1px;padding-left:3px;padding-right:3px;background:#ebefff;background-image:linear-gradient(#d1dcff 2px,transparent 0),linear-gradient(90deg,#d1dcff 2px,transparent 0),linear-gradient(#d1dcff 1px,transparent 0),linear-gradient(90deg,#d1dcff 1px,transparent 0);background-size:40px 40px,40px 40px,10px 10px,10px 10px}.css-header{height:50px;font-size:25px;font-weight:600;margin:8px 0 0 10px;font-family:Russo One;color:#0027ab;font-size:30px;text-transform:uppercase;font-weight:400;background-color:transparent}.resource-type-select{width:270px;flex-shrink:0;border-radius:27px;height:51px;margin-left:5px;-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px);background-color:#ffffff80!important;border-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);color:var(--tableText);padding-left:20px}select{background-image:url(/assets/svgs/ArrowDown.svg);background-position:center right 18px;background-repeat:no-repeat;background-size:18px;padding-right:38px}.no-results-warning{left:440px;font-size:15px;color:var(--tableText);padding-left:20px;padding-top:0;height:-moz-fit-content;height:fit-content;top:1px}.resource-type-error{border-width:3px;border-color:var(--red)!important}.nf-links{stroke:#fff;stroke-opacity:1.6}.nf-net-vis-controls-header{display:flex;flex-direction:row;position:absolute;z-index:99999;flex:1 0 auto;top:60px}.nf-net-vis-filter-container{max-width:490px;margin-top:0;margin-left:10px;flex:1 0 auto}.table-filter-container{max-width:300px;margin-top:0;margin-left:1px;flex:1 0 auto}#ClearSearchFilter{position:absolute;right:15px;top:5px;width:20px;height:20px;font-size:18px;font-weight:600;color:var(--formBase);z-index:99999999}#ClearSearchFilter:hover{filter:brightness(90%)}#ClearSearchFilter:active{transform:translateY(1px);filter:brightness(80%)}#popupTableTitle{width:100%;font-weight:900;display:inline-block;background-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);border:2px #d3d3d3!important;text-align:center;border:2px;border-color:#d3d3d3;height:25px;top:2px;color:#fff;padding-right:5px;background:#000;cursor:move}#tra:hover{text-decoration:underline}#CloseDataTable{position:absolute;right:5px;top:-33px;width:25px;height:25px;font-size:15px;color:#fff;z-index:99999999}.copydatatable{width:135px;height:17px;font-size:10pt;font-family:tahoma;top:95%;right:0%;border-radius:5px;background:#fff;border:0px solid gray!important;position:absolute!important;text-transform:uppercase;cursor:pointer;z-index:999}.copydatatable:hover{text-decoration:underline}.nf-topology-filter-input{height:50px;width:485px;border-radius:25px;border-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);padding-left:10px;padding-right:15px}.nf-topology-select-container{max-width:400px;margin-top:20px;margin-left:20px;flex:1 0 auto}.nf-topology-select-input{height:45px;border-radius:25px;border-color:var(--navigation);background-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);padding-left:20px}input:focus,textarea:focus,select:focus{box-shadow:0 20px 23px 0 var(--shadow)}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.nf-topology-filter-input{background:var(--visualizerBackground)!important;-webkit-backdrop-filter:saturate(110%) blur(5px);backdrop-filter:saturate(110%) blur(15px)}}.nf-topology-zoom-container{display:flex;margin-left:10px;flex:1 0 auto}.nf-topology-zoom-button.minus{height:50px;width:50px;margin-right:10px;border-radius:55px;border:unset;font-size:40px;font-family:icomoon!important;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:var(--primaryColor);line-height:49px;background-color:var(--navigation);cursor:pointer;overflow:hidden;z-index:24;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .5s;background-image:url(/assets/images/Icon_Minus.png);background-size:40%;background-color:var(--red);box-shadow:0 6px 10px 0 var(--redShadow)}.nf-topology-zoom-label{padding-right:10px}.nf-topology-zoom-button{height:50px;width:50px;margin-right:10px;border-radius:55px;border:unset;font-size:40px;font-family:icomoon!important;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:var(--primaryColor);line-height:49px;background-color:var(--navigation);cursor:pointer;overflow:hidden;z-index:24;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .5s}.nf-topology-zoom-button.plus:before{content:\"\\e937\"}.nf-topology-zoom-button.minus:before{content:\"\\e943\"}.nf-topology-zoom-button:hover{color:var(--white);background-color:var(--primaryColor);filter:brightness(90%);transition:background-color 1s;transition:.3s}.nf-topology-zoom-button:active{background-color:var(--icon);transform:scale(.97);transition:background-color 1s;transition:.3s}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.nf-topology-zoom-button{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.placeholder{display:flex;align-items:center;justify-content:center;height:800px}.topotip{display:none;position:fixed;background:var(--navigation);border:0px;border-radius:12px;pointer-events:none;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .3s;font-size:15px;font-weight:600;color:var(--tableText);z-index:2000;opacity:1;max-width:400px;overflow:hidden}.nodes{cursor:pointer;box-shadow:0 30px 43px 0 var(--shadow)}.nf-links{cursor:pointer}.linkWidth{color:#fff}.nf-network-topology-container .loader{margin-left:-150px}.loader .bar1{background-color:var(--inputBorder)!important}.loader .bar2{background-color:var(--inputBorder)!important;animation-delay:-.7s}.loader .bar3{background-color:var(--inputBorder)!important;animation-delay:-.6s}.loader .bar4{background-color:var(--inputBorder)!important;animation-delay:-.5s}.loader .bar5{background-color:var(--inputBorder)!important;animation-delay:-.4s}.loader .bar6{background-color:var(--inputBorder)!important;animation-delay:-.3s}.changeView{display:flex;margin-top:32px;margin-left:10px;flex:1 0 auto}.changeView .changeViewLabel{margin-top:3px;margin-left:5px}.node circle{fill:#fff;stroke:#07397d;stroke-width:14px;box-shadow:0 20px 23px 0 var(--shadow)}.node text{font:27px sans-serif;cursor:pointer}.node-text-container{color:var(--tableText);font-size:24px;font-weight:600;margin-left:2px;margin-top:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.link{fill:none;stroke:var(--table);stroke-width:5px;color:#fff}.nf-topology-legend{width:230px;border-radius:12px;margin-top:10px;margin-right:10px;position:absolute;top:0;right:0;background:#ffffff80!important;-webkit-backdrop-filter:saturate(110%) blur(5px);backdrop-filter:saturate(110%) blur(15px);border-color:var(--navigation);border-style:solid;border-width:2px;display:inline-block;box-shadow:0 20px 23px 0 var(--shadow);padding:5px 5px 7px}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.nf-topology-legend{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.legend-item{width:100%;height:100%;display:inline-block;position:relative}.legend-itemA{width:100%;height:100%;margin-left:-3px;display:inline-block}.legend-circle{height:12px;width:12px;border-radius:15px;display:inline-block;margin-top:7px}.legend-circle.servicepolicies{background-color:#ff0d49}.legend-circle.services{background-color:#08dc5a}.legend-circle.endpoints{background-color:#0273fb}.legend-circle.edgerouters{background-color:#ffc000}.legend-circle.erpolicies{background-color:#ff8400}.legend-circle.serviceerpolicies{background-color:#ff5900}.legend-text{display:inline-block;font-size:15px;font-weight:600;color:var(--tableText);padding-left:7px;padding-bottom:4px}.legend-icon-text{display:inline-block;font-size:14px;font-weight:600;color:var(--tableText);padding-left:22px;padding-bottom:4px}.legend-icon-text.legend-associated-nodes{padding-left:20px}.legend-icon-pointer{background-size:16px 16px;background-image:url(/assets/svgs/cursor-pointer.svg);position:absolute;z-index:999999;width:20px;height:20px;top:10px;left:2px}.reset-button{height:50px;width:50px;border-radius:50px;margin-right:10px;background-size:contain;background-image:url(/assets/svgs/refresh.svg);cursor:pointer;overflow:hidden;z-index:24;box-shadow:0 20px 23px 0 var(--shadow);transition:.3s}.node-expand-help{border-radius:20px;border-width:4px;border-color:#08dc5a!important;border-style:solid;box-shadow:0 20px 23px 0 var(--shadow);width:16px;height:16px;position:absolute;background-color:brown;margin-left:-2px;top:2px}.reset-button:hover{filter:brightness(90%);transform:scale(.97);transition:.3s}.reset-button:active{transform:scale(.9);transition:.3s}.sign_out_button{background-color:#2fa4e7;padding:16px 10px;color:#fff;float:left;text-decoration:none}.sign_out_button:hover{background-color:#1892d7}.sign_out_button a{color:#fff;text-decoration:none}.contextmenu_mouseout{fill:#f4f4f4;stroke:#fff;stroke-width:1px}.contextmenu_mouseover{fill:#c8c8c8}.menu2{position:fixed;background:#fff;color:#000;cursor:pointer;border:1px black solid}.contextmenu_text{position:fixed;background:var(--navigation);border:1px;border-radius:5px;pointer-events:none;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .3s;padding:5px;font-size:10px;font-weight:700;color:var(--tableText);z-index:2000;opacity:1;max-width:400px}.contextmenu{z-index:2000;opacity:1;position:fixed;background:#fff;color:#000;font-family:sans-serif;font-size:11px;box-shadow:2px 2px 2px #90908d;padding:2px;border-radius:12px;border:1px solid #c6c6c6;max-width:400px}.menuItems{display:block;color:#555;text-decoration:none;padding:6px 8px 6px 30px;position:relative}.context-menu{display:none;position:absolute;z-index:10}.context-menu__items{list-style:none;margin:0;padding:0}.context-menu__item{display:block;margin-bottom:4px}.container{margin:0 auto;padding:0 24px;max-width:960px}.context-menu__link{display:block;padding:4px 12px;color:#06a;text-decoration:none}.contextmenu_text:hover .divItemsHover{color:#fff;background-color:#06a}.context-menu--active{display:block}#topoDataTableHeader{float:left;min-width:250px;width:auto;height:360px;top:100px;border-bottom-left-radius:13px;border-bottom-right-radius:13px;display:none;background:#fff;border:2px solid gray!important;position:absolute!important}.table-filter-input{height:30px;width:100%;top:40px;border-radius:1px;border-color:#d3d3d3;background-color:#d3d3d3;box-shadow:0 20px 23px 0 var(--shadow);padding-top:3px;padding-left:2px;padding-right:2px}#topoDataTable{float:down;min-width:250px;width:auto;height:300px;top:55px;border-radius:10px;position:absolute!important;overflow:auto;background:#fff;font-family:sans-serif;font-size:16px;color:#06a;overflow-x:scroll}table{width:auto;height:auto;max-height:300px}tr{width:auto;padding:5px}th{width:auto;font-family:sans-serif;font-size:16px;color:#06a;font-weight:700;background-color:#06a}td{width:auto}th{width:auto;font-weight:700;padding:2px;border:1px solid #ccc;text-align:center}.context-menu{border-radius:12px;background:var(--navigation);width:200px;box-shadow:0 20px 23px 0 var(--shadow);position:relative;display:none}.context-menu .menu-options{list-style:none;padding:0}.context-menu .menu-options .menu-option{font-weight:700;font-size:16px;line-height:36px;color:var(--tableText);padding:1px 4px 1px 20px;cursor:pointer}.context-menu .menu-options .menu-option:hover{background:var(--primaryColor);color:var(--navigation)}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.context-menu{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.spinner{position:absolute;right:1em;top:1em;display:inline-block;width:32px;height:32px;border-radius:50%;background:transparent;border-top:5px solid var(--placeholder);border-right:5px solid var(--placeholder);border-bottom:5px solid transparent;border-left:5px solid transparent;animation:loading .5s infinite linear}.disabled{-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;pointer-events:none;cursor:pointer;opacity:.6}path:not(.loader path,.highcharts-root path){fill:none;stroke:var(--navigation);stroke-width:5px;color:#fff}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.rotating{animation:rotating 2s linear infinite}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__outer-circle{background-color:var(--icon);border-width:4px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--icon)}.mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-width:4px}#mat-radio-2>div>div>div.mdc-radio__background>div.mdc-radio__inner-circle .node.edge-router circle{stroke:#ffc000!important;stroke-width:12px}.node.endpoint circle{stroke:#0273fb!important;stroke-width:12px}.node.service circle{stroke:#08dc5a!important;stroke-width:12px}.node.service-policy circle{stroke:#ff0d49!important;stroke-width:12px}.node.edge-router circle{stroke:#ffc000!important;stroke-width:12px}.node.edge-router-policy circle{stroke:#ff8400!important;stroke-width:12px}.node.service-edge-router-policy circle{stroke:#ff5900!important;stroke-width:12px}.text-container{color:var(--tableText);font-size:24px;font-weight:700;margin-left:20px;margin-top:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}svg>g>g.node:first-of-type.terminate{cursor:pointer}svg>g>g.node:first-of-type.terminate .text-container{cursor:pointer}svg>g>g.node:first-of-type.terminate circle{cursor:pointer}svg>g>g.node:first-of-type.terminate:hover>rect{fill:url(#NodeHoverGradient)}.node>rect{fill:url(#NodeGradient)}.node.terminate{cursor:default;stroke-width:14px}.node.terminate .text-container{cursor:default}.node.terminate circle{cursor:default;stroke-width:14px}.node.terminate:hover>rect{fill:url(#NodeGradient)}.node:hover>rect{fill:url(#NodeHoverGradient)}p-chips.error .p-chips.p-component .p-chips-multiple-container{border-color:var(--red);border-width:2px}.checkboxes.error .mat-checkbox-frame{border-color:var(--red)}.checkboxes.error .mat-checkbox-label{color:var(--red)}.stop1{stop-color:var(--table);stop-opacity:.9}.stop2{stop-color:var(--table);stop-opacity:.65}.stop3{stop-color:var(--table);stop-opacity:0}.stop1a{stop-color:var(--background);stop-opacity:1}.stop2a{stop-color:var(--background);stop-opacity:.7}.stop3a{stop-color:var(--background);stop-opacity:0}.tool-tip-container{font-size:14px;font-family:Open Sans;font-weight:600;font-color:var(--tableText)}.tool-tip-container .prop-row{display:grid;grid-template-columns:1fr 3fr;grid-gap:10px;grid-template-areas:\"propName propVal\";height:-moz-fit-content;height:fit-content;min-height:25px;align-items:center;padding:0 10px}.tool-tip-container .prop-row:nth-child(2n){background-color:var(--formBackground)}.tool-tip-container .prop-row .prop-name{grid-area:propName;font-weight:700}.tool-tip-container .prop-row .prop-val{grid-area:propVal;font-weight:400}.tool-tip-container .tooltip-help-text{font-size:12px;padding-left:10px;padding-right:10px;display:flex;height:22px;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i7$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
14436
14941
|
}
|
|
14437
14942
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NetworkVisualizerComponent, decorators: [{
|
|
14438
14943
|
type: Component,
|
|
14439
|
-
args: [{ selector: 'app-network-visualizer', encapsulation: ViewEncapsulation.None, template: "<div class=\"ziti-page-container ziti-identities-container\">\n\n <div class=\"nf-network-topology-container\" >\n\n <div class=\"css-header\">{{title}} </div><br>\n\n <div class=\"nf-net-vis-controls-header\">\n <div class=\"nf-topology-zoom-container\">\n <!--button (click)=\"zoomOut()\" class=\"nf-topology-zoom-button minus\"></button>\n <button (click)=\"zoomIn()\" class=\"nf-topology-zoom-button plus\"></button-->\n <div (click)=\"resetTree('Yes')\" class=\"reset-button\" title=\"Reset\"></div>\n </div>\n <select\n (change)=\"resourceTypeChanged()\"\n [(ngModel)]=\"resourceType\"\n [ngClass]=\"{ 'resource-type-error': resourceTypeError }\"\n class=\"resource-type-select\"\n id=\"ResourceTypeSelect\"\n >\n <option value=\"\">Select Resource Type</option>\n <option value=\"service-policies\">Service Policies</option>\n <option value=\"services\">Services</option>\n <option value=\"identities\">Identities</option>\n <option value=\"edge-routers\">Edge Routers</option>\n <option value=\"edge-router-policies\">Edge Router Policies</option>\n <option value=\"service-edge-router-policies\">Service Edge Router Policies</option>\n </select>\n <div class=\"nf-net-vis-filter-container listBox row\">\n <input\n (keyup)=\"filterSearchArray()\"\n [(ngModel)]=\"filterText\"\n [matAutocomplete]=\"auto\"\n class=\"nf-topology-filter-input\"\n id=\"filterText\"\n matInput\n placeholder=\"Type to Filter\"\n />\n\n <div\n (click)=\"clearSearchFilter()\"\n *ngIf=\"filterText !== ''\"\n class=\"buttonBall close\"\n id=\"ClearSearchFilter\"\n ></div>\n <div [hidden]=\"!noSearchResults\" class=\"no-results-warning\">No Results Found</div>\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"autocompleteSearch($event)\">\n <mat-option *ngFor=\"let option of autocompleteOptions\" [value]=\"option\">\n {{ option }}\n </mat-option>\n </mat-autocomplete>\n </div>\n </div>\n\n <div class=\"nf-topology-legend\">\n <div class=\"legend-item\">\n <div class=\"legend-circle servicepolicies\"></div>\n <div class=\"legend-text\">Service Policies</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle services\"></div>\n <div class=\"legend-text\">Services</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle endpoints\"></div>\n <div class=\"legend-text\">Identities</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle edgerouters\"></div>\n <div class=\"legend-text\">Edge Routers</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle erpolicies\"></div>\n <div class=\"legend-text\">Edge Router Policies</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle serviceerpolicies\"></div>\n <div class=\"legend-text\">Service Router Policies</div>\n </div>\n </div>\n\n <div class=\"topotip\" id=\"tooltip\"></div>\n <svg style='pointer-events:all' id=\"NetworkVisualizerSVG\"></svg>\n <lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n </div>\n\n</div>\n", styles: [".ziti-page-container{height:100%;width:100%;left:0;display:flex;flex-direction:column;position:absolute;padding-top:1px;padding-left:3px;padding-right:3px;top:0}.nf-network-topology-container{overflow:hidden;width:100%;height:100%;background-color:var(--background);z-index:1001;margin:auto;inset:0;padding-top:1px;padding-left:3px;padding-right:3px;background:#f5e9f2;background-image:linear-gradient(#ecd3e6 2px,transparent 0),linear-gradient(90deg,#ecd3e6 2px,transparent 0),linear-gradient(#ecd3e6 1px,transparent 0),linear-gradient(90deg,#ecd3e6 1px,transparent 0);background-size:40px 40px,40px 40px,10px 10px,10px 10px}.css-header{height:50px;font-size:25px;font-weight:600;margin:8px 0 0 2px;font-family:Russo One;color:#0027ab;font-size:30px;text-transform:uppercase;font-weight:400;background-color:transparent}.resource-type-select{width:230px;flex-shrink:0;border-radius:27px;height:51px;margin-top:20px;margin-left:20px;-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px);background-color:#ffffff80!important;border-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);color:var(--tableText);padding-left:20px}select{background-image:url(/assets/svgs/ArrowDown.svg);background-position:center right 18px;background-repeat:no-repeat;background-size:18px;padding-right:38px}.no-results-warning{bottom:-20px;left:20px;font-size:15px;color:var(--tableText);padding-left:20px;padding-top:5px}.resource-type-error{border-width:3px;border-color:var(--red)!important}.nf-links{stroke:#fff;stroke-opacity:1.6}.nf-net-vis-controls-header{display:flex;flex-direction:row;position:absolute;z-index:99999;flex:1 0 auto;top:50px}.nf-net-vis-filter-container{max-width:300px;margin-top:20px;margin-left:10px;flex:1 0 auto}.table-filter-container{max-width:300px;margin-top:0;margin-left:1px;flex:1 0 auto}#ClearSearchFilter{position:absolute;right:2px;top:2px;width:20px;height:20px;font-size:25px;color:var(--tableText);z-index:99999999}#popupTableTitle{width:100%;font-weight:900;display:inline-block;background-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);border:2px #d3d3d3!important;text-align:center;border:2px;border-color:#d3d3d3;height:25px;top:2px;color:#fff;padding-right:5px;background:#000;cursor:move}#tra:hover{text-decoration:underline}#CloseDataTable{position:absolute;right:5px;top:-33px;width:25px;height:25px;font-size:15px;color:#fff;z-index:99999999}.copydatatable{width:135px;height:17px;font-size:10pt;font-family:tahoma;top:95%;right:0%;border-radius:5px;background:#fff;border:0px solid gray!important;position:absolute!important;text-transform:uppercase;cursor:pointer;z-index:999}.copydatatable:hover{text-decoration:underline}.nf-topology-filter-input{height:50px;border-radius:25px;border-color:var(--navigation);background-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);padding-left:20px;padding-right:35px}.nf-topology-select-container{max-width:400px;margin-top:20px;margin-left:20px;flex:1 0 auto}.nf-topology-select-input{height:45px;border-radius:25px;border-color:var(--navigation);background-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);padding-left:20px}input:focus,textarea:focus,select:focus{box-shadow:0 20px 23px 0 var(--shadow)}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.nf-topology-filter-input{background:var(--glass)!important;-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.nf-topology-zoom-container{display:flex;margin-left:20px;margin-top:20px;flex:1 0 auto}.nf-topology-zoom-button.minus{height:50px;width:50px;margin-right:10px;border-radius:55px;border:unset;font-size:40px;font-family:icomoon!important;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:var(--primaryColor);line-height:49px;background-color:var(--navigation);cursor:pointer;overflow:hidden;z-index:24;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .5s;background-image:url(/assets/images/Icon_Minus.png);background-size:40%;background-color:var(--red);box-shadow:0 6px 10px 0 var(--redShadow)}.nf-topology-zoom-label{padding-right:10px}.nf-topology-zoom-button{height:50px;width:50px;margin-right:10px;border-radius:55px;border:unset;font-size:40px;font-family:icomoon!important;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:var(--primaryColor);line-height:49px;background-color:var(--navigation);cursor:pointer;overflow:hidden;z-index:24;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .5s}.nf-topology-zoom-button.plus:before{content:\"\\e937\"}.nf-topology-zoom-button.minus:before{content:\"\\e943\"}.nf-topology-zoom-button:hover{color:var(--white);background-color:var(--primaryColor);filter:brightness(90%);transition:background-color 1s;transition:.3s}.nf-topology-zoom-button:active{background-color:var(--icon);transform:scale(.97);transition:background-color 1s;transition:.3s}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.nf-topology-zoom-button{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.placeholder{display:flex;align-items:center;justify-content:center;height:800px}.topotip{display:none;position:fixed;background:var(--navigation);border:0px;border-radius:12px;pointer-events:none;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .3s;padding:10px;font-size:17px;font-weight:700;color:var(--tableText);z-index:2000;opacity:1;max-width:400px}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.topotip{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.nodes{cursor:pointer;box-shadow:0 30px 43px 0 var(--shadow)}.nf-links{cursor:pointer}.linkWidth{color:#fff}.nf-network-topology-container .loader{margin-left:-150px}.loader .bar1{background-color:var(--inputBorder)!important}.loader .bar2{background-color:var(--inputBorder)!important;animation-delay:-.7s}.loader .bar3{background-color:var(--inputBorder)!important;animation-delay:-.6s}.loader .bar4{background-color:var(--inputBorder)!important;animation-delay:-.5s}.loader .bar5{background-color:var(--inputBorder)!important;animation-delay:-.4s}.loader .bar6{background-color:var(--inputBorder)!important;animation-delay:-.3s}.changeView{display:flex;margin-top:32px;margin-left:10px;flex:1 0 auto}.changeView .changeViewLabel{margin-top:3px;margin-left:5px}.node circle{fill:#fff;stroke:#07397d;stroke-width:14px;box-shadow:0 20px 23px 0 var(--shadow)}.node text{font:27px sans-serif;cursor:pointer}.text-container{cursor:pointer}.link{fill:none;stroke:var(--table);stroke-width:5px;color:#fff}.nf-topology-legend{width:210px;border-radius:12px;margin-top:10px;margin-right:20px;position:fixed;top:0;right:0;background:var(--navigation);display:inline-block;box-shadow:0 20px 23px 0 var(--shadow);padding:5px 12px 7px}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.nf-topology-legend{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.legend-item{width:100%;height:100%;display:inline-block}.legend-circle{height:12px;width:12px;border-radius:15px;display:inline-block;margin-top:7px}.legend-circle.servicepolicies{background-color:#ff0d49}.legend-circle.services{background-color:#08dc5a}.legend-circle.endpoints{background-color:#0273fb}.legend-circle.edgerouters{background-color:#ffc000}.legend-circle.erpolicies{background-color:#ff8400}.legend-circle.serviceerpolicies{background-color:#ff5900}.legend-text{display:inline-block;font-size:15px;font-weight:600;color:var(--tableText);padding-left:7px;padding-bottom:4px}.reset-button{height:50px;width:50px;border-radius:50px;margin-right:10px;background-size:contain;background-image:url(/assets/svgs/refresh.svg);cursor:pointer;overflow:hidden;z-index:24;box-shadow:0 20px 23px 0 var(--shadow);transition:.3s}.reset-button:hover{filter:brightness(90%);transform:scale(.97);transition:.3s}.reset-button:active{transform:scale(.9);transition:.3s}.sign_out_button{background-color:#2fa4e7;padding:16px 10px;color:#fff;float:left;text-decoration:none}.sign_out_button:hover{background-color:#1892d7}.sign_out_button a{color:#fff;text-decoration:none}.contextmenu_mouseout{fill:#f4f4f4;stroke:#fff;stroke-width:1px}.contextmenu_mouseover{fill:#c8c8c8}.menu2{position:fixed;background:#fff;color:#000;cursor:pointer;border:1px black solid}.contextmenu_text{position:fixed;background:var(--navigation);border:1px;border-radius:5px;pointer-events:none;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .3s;padding:5px;font-size:10px;font-weight:700;color:var(--tableText);z-index:2000;opacity:1;max-width:400px}.contextmenu{z-index:2000;opacity:1;position:fixed;background:#fff;color:#000;font-family:sans-serif;font-size:11px;box-shadow:2px 2px 2px #90908d;padding:2px;border-radius:12px;border:1px solid #c6c6c6;max-width:400px}.menuItems{display:block;color:#555;text-decoration:none;padding:6px 8px 6px 30px;position:relative}.context-menu{display:none;position:absolute;z-index:10}.context-menu__items{list-style:none;margin:0;padding:0}.context-menu__item{display:block;margin-bottom:4px}.container{margin:0 auto;padding:0 24px;max-width:960px}.context-menu__link{display:block;padding:4px 12px;color:#06a;text-decoration:none}.contextmenu_text:hover .divItemsHover{color:#fff;background-color:#06a}.context-menu--active{display:block}#topoDataTableHeader{float:left;min-width:250px;width:auto;height:360px;top:100px;border-bottom-left-radius:13px;border-bottom-right-radius:13px;display:none;background:#fff;border:2px solid gray!important;position:absolute!important}.table-filter-input{height:30px;width:100%;top:40px;border-radius:1px;border-color:#d3d3d3;background-color:#d3d3d3;box-shadow:0 20px 23px 0 var(--shadow);padding-top:3px;padding-left:2px;padding-right:2px}#topoDataTable{float:down;min-width:250px;width:auto;height:300px;top:55px;border-radius:10px;position:absolute!important;overflow:auto;background:#fff;font-family:sans-serif;font-size:16px;color:#06a;overflow-x:scroll}table{width:auto;height:auto;max-height:300px}tr{width:auto;padding:5px}th{width:auto;font-family:sans-serif;font-size:16px;color:#06a;font-weight:700;background-color:#06a}td{width:auto}th{width:auto;font-weight:700;padding:2px;border:1px solid #ccc;text-align:center}.context-menu{border-radius:12px;background:var(--navigation);width:200px;box-shadow:0 20px 23px 0 var(--shadow);position:relative;display:none}.context-menu .menu-options{list-style:none;padding:0}.context-menu .menu-options .menu-option{font-weight:700;font-size:16px;line-height:36px;color:var(--tableText);padding:1px 4px 1px 20px;cursor:pointer}.context-menu .menu-options .menu-option:hover{background:var(--primaryColor);color:var(--navigation)}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.context-menu{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.spinner{position:absolute;right:1em;top:1em;display:inline-block;width:32px;height:32px;border-radius:50%;background:transparent;border-top:5px solid var(--placeholder);border-right:5px solid var(--placeholder);border-bottom:5px solid transparent;border-left:5px solid transparent;animation:loading .5s infinite linear}.disabled{-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;pointer-events:none;cursor:pointer;opacity:.6}path:not(.loader path,.highcharts-root path){fill:none;stroke:var(--navigation);stroke-width:5px;color:#fff}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.rotating{animation:rotating 2s linear infinite}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__outer-circle{background-color:var(--icon);border-width:4px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--icon)}.mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-width:4px}#mat-radio-2>div>div>div.mdc-radio__background>div.mdc-radio__inner-circle .node.edge-router circle{stroke:#ffc000!important;stroke-width:12px}.node.endpoint circle{stroke:#0273fb!important;stroke-width:12px}.node.service circle{stroke:#08dc5a!important;stroke-width:12px}.node.service-policy circle{stroke:#ff0d49!important;stroke-width:12px}.node.edge-router-policy circle{stroke:#ff8400!important;stroke-width:12px}.node.service-edge-router-policy circle{stroke:#ff5900!important;stroke-width:12px}.text-container{color:var(--tableText);font-size:24px;font-weight:700;margin-left:20px;margin-top:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}svg>g>g.node:first-of-type.terminate{cursor:pointer}svg>g>g.node:first-of-type.terminate .text-container{cursor:pointer}svg>g>g.node:first-of-type.terminate circle{cursor:pointer}svg>g>g.node:first-of-type.terminate:hover>rect{fill:url(#NodeHoverGradient)}.node>rect{fill:url(#NodeGradient)}.node.terminate{cursor:default;stroke-width:14px}.node.terminate .text-container{cursor:default}.node.terminate circle{cursor:default;stroke-width:14px}.node.terminate:hover>rect{fill:url(#NodeGradient)}.node:hover>rect{fill:url(#NodeHoverGradient)}p-chips.error .p-chips.p-component .p-chips-multiple-container{border-color:var(--red);border-width:2px}.checkboxes.error .mat-checkbox-frame{border-color:var(--red)}.checkboxes.error .mat-checkbox-label{color:var(--red)}.stop1{stop-color:var(--table);stop-opacity:.9}.stop2{stop-color:var(--table);stop-opacity:.65}.stop3{stop-color:var(--table);stop-opacity:0}.stop1a{stop-color:var(--background);stop-opacity:1}.stop2a{stop-color:var(--background);stop-opacity:.7}.stop3a{stop-color:var(--background);stop-opacity:0}\n"] }]
|
|
14944
|
+
args: [{ selector: 'app-network-visualizer', encapsulation: ViewEncapsulation.None, template: "<div class=\"ziti-page-container ziti-identities-container\">\n\n <div class=\"nf-network-topology-container\" >\n\n <div class=\"css-header\">{{title}} </div><br>\n\n <div class=\"nf-net-vis-controls-header\">\n <div class=\"nf-topology-zoom-container\">\n <!--button (click)=\"zoomOut()\" class=\"nf-topology-zoom-button minus\"></button>\n <button (click)=\"zoomIn()\" class=\"nf-topology-zoom-button plus\"></button-->\n <div (click)=\"resetTree('Yes')\" class=\"reset-button\" title=\"Reset\"></div>\n </div>\n <select\n (change)=\"resourceTypeChanged()\"\n [(ngModel)]=\"resourceType\"\n [ngClass]=\"{ 'resource-type-error': resourceTypeError }\"\n class=\"resource-type-select\"\n id=\"ResourceTypeSelect\"\n >\n <option value=\"\">Select Resource Type</option>\n <option value=\"service-policies\">Service Policies</option>\n <option value=\"services\">Services</option>\n <option value=\"identities\">Identities</option>\n <option value=\"edge-routers\">Edge Routers</option>\n <option value=\"edge-router-policies\">Edge Router Policies</option>\n <option value=\"service-edge-router-policies\">Service Edge Router Policies</option>\n </select>\n\n <div class=\"nf-net-vis-filter-container listBox row\">\n <input\n (keyup)=\"nwSearchChange($event)\"\n [(ngModel)]=\"filterText\"\n [matAutocomplete]=\"auto\"\n class=\"nf-topology-filter-input\"\n id=\"filterText\"\n matInput\n placeholder=\"Type to Filter\"\n />\n\n <div\n (click)=\"clearSearchFilter()\"\n *ngIf=\"filterText !== ''\"\n class=\"buttonBall close icon-close\"\n id=\"ClearSearchFilter\"\n ></div>\n\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"autocompleteSearch($event)\">\n <mat-option *ngFor=\"let option of autocompleteOptions\" [value]=\"option\">\n {{ option }}\n </mat-option>\n </mat-autocomplete>\n </div>\n </div>\n\n <div class=\"nf-topology-legend\">\n <div class=\"legend-item\">\n <div class=\"legend-circle servicepolicies\"></div>\n <div class=\"legend-text\">Service Policies</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle services\"></div>\n <div class=\"legend-text\">Services</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle endpoints\"></div>\n <div class=\"legend-text\">Identities</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle edgerouters\"></div>\n <div class=\"legend-text\">Edge Routers</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle erpolicies\"></div>\n <div class=\"legend-text\">Edge Router Policies</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle serviceerpolicies\"></div>\n <div class=\"legend-text\">Service Router Policies</div>\n </div>\n\n <div class=\"legend-item\">\n <div class=\"node-expand-help\"></div>\n <div class=\"legend-icon-text legend-associated-nodes\">View Associated Nodes</div>\n <div class=\"legend-icon-pointer\"></div>\n </div>\n </div>\n\n <div class=\"topotip\" id=\"tooltip\"></div>\n <svg style='pointer-events:all' id=\"NetworkVisualizerSVG\"></svg>\n <lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n </div>\n\n</div>\n", styles: [".ziti-page-container{height:100%;width:100%;left:0;display:flex;flex-direction:column;position:absolute;padding-top:1px;padding-left:3px;padding-right:3px;top:0}.nf-network-topology-container{overflow:hidden;width:100%;height:100%;background-color:var(--background);z-index:1001;margin:auto;inset:0;padding-top:1px;padding-left:3px;padding-right:3px;background:#ebefff;background-image:linear-gradient(#d1dcff 2px,transparent 0),linear-gradient(90deg,#d1dcff 2px,transparent 0),linear-gradient(#d1dcff 1px,transparent 0),linear-gradient(90deg,#d1dcff 1px,transparent 0);background-size:40px 40px,40px 40px,10px 10px,10px 10px}.css-header{height:50px;font-size:25px;font-weight:600;margin:8px 0 0 10px;font-family:Russo One;color:#0027ab;font-size:30px;text-transform:uppercase;font-weight:400;background-color:transparent}.resource-type-select{width:270px;flex-shrink:0;border-radius:27px;height:51px;margin-left:5px;-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px);background-color:#ffffff80!important;border-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);color:var(--tableText);padding-left:20px}select{background-image:url(/assets/svgs/ArrowDown.svg);background-position:center right 18px;background-repeat:no-repeat;background-size:18px;padding-right:38px}.no-results-warning{left:440px;font-size:15px;color:var(--tableText);padding-left:20px;padding-top:0;height:-moz-fit-content;height:fit-content;top:1px}.resource-type-error{border-width:3px;border-color:var(--red)!important}.nf-links{stroke:#fff;stroke-opacity:1.6}.nf-net-vis-controls-header{display:flex;flex-direction:row;position:absolute;z-index:99999;flex:1 0 auto;top:60px}.nf-net-vis-filter-container{max-width:490px;margin-top:0;margin-left:10px;flex:1 0 auto}.table-filter-container{max-width:300px;margin-top:0;margin-left:1px;flex:1 0 auto}#ClearSearchFilter{position:absolute;right:15px;top:5px;width:20px;height:20px;font-size:18px;font-weight:600;color:var(--formBase);z-index:99999999}#ClearSearchFilter:hover{filter:brightness(90%)}#ClearSearchFilter:active{transform:translateY(1px);filter:brightness(80%)}#popupTableTitle{width:100%;font-weight:900;display:inline-block;background-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);border:2px #d3d3d3!important;text-align:center;border:2px;border-color:#d3d3d3;height:25px;top:2px;color:#fff;padding-right:5px;background:#000;cursor:move}#tra:hover{text-decoration:underline}#CloseDataTable{position:absolute;right:5px;top:-33px;width:25px;height:25px;font-size:15px;color:#fff;z-index:99999999}.copydatatable{width:135px;height:17px;font-size:10pt;font-family:tahoma;top:95%;right:0%;border-radius:5px;background:#fff;border:0px solid gray!important;position:absolute!important;text-transform:uppercase;cursor:pointer;z-index:999}.copydatatable:hover{text-decoration:underline}.nf-topology-filter-input{height:50px;width:485px;border-radius:25px;border-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);padding-left:10px;padding-right:15px}.nf-topology-select-container{max-width:400px;margin-top:20px;margin-left:20px;flex:1 0 auto}.nf-topology-select-input{height:45px;border-radius:25px;border-color:var(--navigation);background-color:var(--navigation);box-shadow:0 20px 23px 0 var(--shadow);padding-left:20px}input:focus,textarea:focus,select:focus{box-shadow:0 20px 23px 0 var(--shadow)}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.nf-topology-filter-input{background:var(--visualizerBackground)!important;-webkit-backdrop-filter:saturate(110%) blur(5px);backdrop-filter:saturate(110%) blur(15px)}}.nf-topology-zoom-container{display:flex;margin-left:10px;flex:1 0 auto}.nf-topology-zoom-button.minus{height:50px;width:50px;margin-right:10px;border-radius:55px;border:unset;font-size:40px;font-family:icomoon!important;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:var(--primaryColor);line-height:49px;background-color:var(--navigation);cursor:pointer;overflow:hidden;z-index:24;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .5s;background-image:url(/assets/images/Icon_Minus.png);background-size:40%;background-color:var(--red);box-shadow:0 6px 10px 0 var(--redShadow)}.nf-topology-zoom-label{padding-right:10px}.nf-topology-zoom-button{height:50px;width:50px;margin-right:10px;border-radius:55px;border:unset;font-size:40px;font-family:icomoon!important;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:var(--primaryColor);line-height:49px;background-color:var(--navigation);cursor:pointer;overflow:hidden;z-index:24;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .5s}.nf-topology-zoom-button.plus:before{content:\"\\e937\"}.nf-topology-zoom-button.minus:before{content:\"\\e943\"}.nf-topology-zoom-button:hover{color:var(--white);background-color:var(--primaryColor);filter:brightness(90%);transition:background-color 1s;transition:.3s}.nf-topology-zoom-button:active{background-color:var(--icon);transform:scale(.97);transition:background-color 1s;transition:.3s}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.nf-topology-zoom-button{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.placeholder{display:flex;align-items:center;justify-content:center;height:800px}.topotip{display:none;position:fixed;background:var(--navigation);border:0px;border-radius:12px;pointer-events:none;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .3s;font-size:15px;font-weight:600;color:var(--tableText);z-index:2000;opacity:1;max-width:400px;overflow:hidden}.nodes{cursor:pointer;box-shadow:0 30px 43px 0 var(--shadow)}.nf-links{cursor:pointer}.linkWidth{color:#fff}.nf-network-topology-container .loader{margin-left:-150px}.loader .bar1{background-color:var(--inputBorder)!important}.loader .bar2{background-color:var(--inputBorder)!important;animation-delay:-.7s}.loader .bar3{background-color:var(--inputBorder)!important;animation-delay:-.6s}.loader .bar4{background-color:var(--inputBorder)!important;animation-delay:-.5s}.loader .bar5{background-color:var(--inputBorder)!important;animation-delay:-.4s}.loader .bar6{background-color:var(--inputBorder)!important;animation-delay:-.3s}.changeView{display:flex;margin-top:32px;margin-left:10px;flex:1 0 auto}.changeView .changeViewLabel{margin-top:3px;margin-left:5px}.node circle{fill:#fff;stroke:#07397d;stroke-width:14px;box-shadow:0 20px 23px 0 var(--shadow)}.node text{font:27px sans-serif;cursor:pointer}.node-text-container{color:var(--tableText);font-size:24px;font-weight:600;margin-left:2px;margin-top:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.link{fill:none;stroke:var(--table);stroke-width:5px;color:#fff}.nf-topology-legend{width:230px;border-radius:12px;margin-top:10px;margin-right:10px;position:absolute;top:0;right:0;background:#ffffff80!important;-webkit-backdrop-filter:saturate(110%) blur(5px);backdrop-filter:saturate(110%) blur(15px);border-color:var(--navigation);border-style:solid;border-width:2px;display:inline-block;box-shadow:0 20px 23px 0 var(--shadow);padding:5px 5px 7px}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.nf-topology-legend{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.legend-item{width:100%;height:100%;display:inline-block;position:relative}.legend-itemA{width:100%;height:100%;margin-left:-3px;display:inline-block}.legend-circle{height:12px;width:12px;border-radius:15px;display:inline-block;margin-top:7px}.legend-circle.servicepolicies{background-color:#ff0d49}.legend-circle.services{background-color:#08dc5a}.legend-circle.endpoints{background-color:#0273fb}.legend-circle.edgerouters{background-color:#ffc000}.legend-circle.erpolicies{background-color:#ff8400}.legend-circle.serviceerpolicies{background-color:#ff5900}.legend-text{display:inline-block;font-size:15px;font-weight:600;color:var(--tableText);padding-left:7px;padding-bottom:4px}.legend-icon-text{display:inline-block;font-size:14px;font-weight:600;color:var(--tableText);padding-left:22px;padding-bottom:4px}.legend-icon-text.legend-associated-nodes{padding-left:20px}.legend-icon-pointer{background-size:16px 16px;background-image:url(/assets/svgs/cursor-pointer.svg);position:absolute;z-index:999999;width:20px;height:20px;top:10px;left:2px}.reset-button{height:50px;width:50px;border-radius:50px;margin-right:10px;background-size:contain;background-image:url(/assets/svgs/refresh.svg);cursor:pointer;overflow:hidden;z-index:24;box-shadow:0 20px 23px 0 var(--shadow);transition:.3s}.node-expand-help{border-radius:20px;border-width:4px;border-color:#08dc5a!important;border-style:solid;box-shadow:0 20px 23px 0 var(--shadow);width:16px;height:16px;position:absolute;background-color:brown;margin-left:-2px;top:2px}.reset-button:hover{filter:brightness(90%);transform:scale(.97);transition:.3s}.reset-button:active{transform:scale(.9);transition:.3s}.sign_out_button{background-color:#2fa4e7;padding:16px 10px;color:#fff;float:left;text-decoration:none}.sign_out_button:hover{background-color:#1892d7}.sign_out_button a{color:#fff;text-decoration:none}.contextmenu_mouseout{fill:#f4f4f4;stroke:#fff;stroke-width:1px}.contextmenu_mouseover{fill:#c8c8c8}.menu2{position:fixed;background:#fff;color:#000;cursor:pointer;border:1px black solid}.contextmenu_text{position:fixed;background:var(--navigation);border:1px;border-radius:5px;pointer-events:none;box-shadow:0 20px 23px 0 var(--shadow);transition:background-color .3s;padding:5px;font-size:10px;font-weight:700;color:var(--tableText);z-index:2000;opacity:1;max-width:400px}.contextmenu{z-index:2000;opacity:1;position:fixed;background:#fff;color:#000;font-family:sans-serif;font-size:11px;box-shadow:2px 2px 2px #90908d;padding:2px;border-radius:12px;border:1px solid #c6c6c6;max-width:400px}.menuItems{display:block;color:#555;text-decoration:none;padding:6px 8px 6px 30px;position:relative}.context-menu{display:none;position:absolute;z-index:10}.context-menu__items{list-style:none;margin:0;padding:0}.context-menu__item{display:block;margin-bottom:4px}.container{margin:0 auto;padding:0 24px;max-width:960px}.context-menu__link{display:block;padding:4px 12px;color:#06a;text-decoration:none}.contextmenu_text:hover .divItemsHover{color:#fff;background-color:#06a}.context-menu--active{display:block}#topoDataTableHeader{float:left;min-width:250px;width:auto;height:360px;top:100px;border-bottom-left-radius:13px;border-bottom-right-radius:13px;display:none;background:#fff;border:2px solid gray!important;position:absolute!important}.table-filter-input{height:30px;width:100%;top:40px;border-radius:1px;border-color:#d3d3d3;background-color:#d3d3d3;box-shadow:0 20px 23px 0 var(--shadow);padding-top:3px;padding-left:2px;padding-right:2px}#topoDataTable{float:down;min-width:250px;width:auto;height:300px;top:55px;border-radius:10px;position:absolute!important;overflow:auto;background:#fff;font-family:sans-serif;font-size:16px;color:#06a;overflow-x:scroll}table{width:auto;height:auto;max-height:300px}tr{width:auto;padding:5px}th{width:auto;font-family:sans-serif;font-size:16px;color:#06a;font-weight:700;background-color:#06a}td{width:auto}th{width:auto;font-weight:700;padding:2px;border:1px solid #ccc;text-align:center}.context-menu{border-radius:12px;background:var(--navigation);width:200px;box-shadow:0 20px 23px 0 var(--shadow);position:relative;display:none}.context-menu .menu-options{list-style:none;padding:0}.context-menu .menu-options .menu-option{font-weight:700;font-size:16px;line-height:36px;color:var(--tableText);padding:1px 4px 1px 20px;cursor:pointer}.context-menu .menu-options .menu-option:hover{background:var(--primaryColor);color:var(--navigation)}@supports ((-webkit-backdrop-filter: saturate(110%) blur(15px)) or (backdrop-filter: saturate(110%) blur(15px))){.context-menu{background:var(--glass);-webkit-backdrop-filter:saturate(110%) blur(15px);backdrop-filter:saturate(110%) blur(15px)}}.spinner{position:absolute;right:1em;top:1em;display:inline-block;width:32px;height:32px;border-radius:50%;background:transparent;border-top:5px solid var(--placeholder);border-right:5px solid var(--placeholder);border-bottom:5px solid transparent;border-left:5px solid transparent;animation:loading .5s infinite linear}.disabled{-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;pointer-events:none;cursor:pointer;opacity:.6}path:not(.loader path,.highcharts-root path){fill:none;stroke:var(--navigation);stroke-width:5px;color:#fff}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.rotating{animation:rotating 2s linear infinite}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__outer-circle{background-color:var(--icon);border-width:4px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--icon)}.mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-width:4px}#mat-radio-2>div>div>div.mdc-radio__background>div.mdc-radio__inner-circle .node.edge-router circle{stroke:#ffc000!important;stroke-width:12px}.node.endpoint circle{stroke:#0273fb!important;stroke-width:12px}.node.service circle{stroke:#08dc5a!important;stroke-width:12px}.node.service-policy circle{stroke:#ff0d49!important;stroke-width:12px}.node.edge-router circle{stroke:#ffc000!important;stroke-width:12px}.node.edge-router-policy circle{stroke:#ff8400!important;stroke-width:12px}.node.service-edge-router-policy circle{stroke:#ff5900!important;stroke-width:12px}.text-container{color:var(--tableText);font-size:24px;font-weight:700;margin-left:20px;margin-top:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}svg>g>g.node:first-of-type.terminate{cursor:pointer}svg>g>g.node:first-of-type.terminate .text-container{cursor:pointer}svg>g>g.node:first-of-type.terminate circle{cursor:pointer}svg>g>g.node:first-of-type.terminate:hover>rect{fill:url(#NodeHoverGradient)}.node>rect{fill:url(#NodeGradient)}.node.terminate{cursor:default;stroke-width:14px}.node.terminate .text-container{cursor:default}.node.terminate circle{cursor:default;stroke-width:14px}.node.terminate:hover>rect{fill:url(#NodeGradient)}.node:hover>rect{fill:url(#NodeHoverGradient)}p-chips.error .p-chips.p-component .p-chips-multiple-container{border-color:var(--red);border-width:2px}.checkboxes.error .mat-checkbox-frame{border-color:var(--red)}.checkboxes.error .mat-checkbox-label{color:var(--red)}.stop1{stop-color:var(--table);stop-opacity:.9}.stop2{stop-color:var(--table);stop-opacity:.65}.stop3{stop-color:var(--table);stop-opacity:0}.stop1a{stop-color:var(--background);stop-opacity:1}.stop2a{stop-color:var(--background);stop-opacity:.7}.stop3a{stop-color:var(--background);stop-opacity:0}.tool-tip-container{font-size:14px;font-family:Open Sans;font-weight:600;font-color:var(--tableText)}.tool-tip-container .prop-row{display:grid;grid-template-columns:1fr 3fr;grid-gap:10px;grid-template-areas:\"propName propVal\";height:-moz-fit-content;height:fit-content;min-height:25px;align-items:center;padding:0 10px}.tool-tip-container .prop-row:nth-child(2n){background-color:var(--formBackground)}.tool-tip-container .prop-row .prop-name{grid-area:propName;font-weight:700}.tool-tip-container .prop-row .prop-val{grid-area:propVal;font-weight:400}.tool-tip-container .tooltip-help-text{font-size:12px;padding-left:10px;padding-right:10px;display:flex;height:22px;align-items:center}\n"] }]
|
|
14440
14945
|
}], ctorParameters: function () { return [{ type: SettingsService, decorators: [{
|
|
14441
14946
|
type: Inject,
|
|
14442
14947
|
args: [SETTINGS_SERVICE]
|
|
@@ -18933,10 +19438,6 @@ class ServiceEdgeRouterPolicyFormComponent extends ProjectableForm {
|
|
|
18933
19438
|
this.isLoading = true;
|
|
18934
19439
|
this.applySelectedAttributes();
|
|
18935
19440
|
this.svc.save(this.formData).then((result) => {
|
|
18936
|
-
if (result?.close) {
|
|
18937
|
-
this.closeModal(true, true);
|
|
18938
|
-
this.returnToListPage();
|
|
18939
|
-
}
|
|
18940
19441
|
const data = result?.data?.id ? result.data : result;
|
|
18941
19442
|
if (!isEmpty(data.id)) {
|
|
18942
19443
|
this.formData = data || this.formData;
|
|
@@ -18945,6 +19446,10 @@ class ServiceEdgeRouterPolicyFormComponent extends ProjectableForm {
|
|
|
18945
19446
|
else {
|
|
18946
19447
|
this.initData = this.formData;
|
|
18947
19448
|
}
|
|
19449
|
+
if (result?.close) {
|
|
19450
|
+
this.closeModal(true, true);
|
|
19451
|
+
this.returnToListPage();
|
|
19452
|
+
}
|
|
18948
19453
|
}).finally(() => {
|
|
18949
19454
|
this.isLoading = false;
|
|
18950
19455
|
});
|
|
@@ -19019,7 +19524,7 @@ ${this.formData.id ? '--request PATCH \\' : ''}
|
|
|
19019
19524
|
provide: MatDialogRef,
|
|
19020
19525
|
useValue: {}
|
|
19021
19526
|
}
|
|
19022
|
-
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Service Edge Router Policy: ' : 'Create New Service Edge Router Policy'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"service-edge-router-policy-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Service Edge Router Policy Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this service edge edge router policy\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select
|
|
19527
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Service Edge Router Policy: ' : 'Create New Service Edge Router Policy'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"service-edge-router-policy-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Service Edge Router Policy Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this service edge edge router policy\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Edge Router Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100003'\"\n [helpText]=\"'Choose which edge router to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedEdgeRouterRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedEdgeRouterNamedAttributes\"\n [availableRoleAttributes]=\"svc.edgeRouterRoleAttributes\"\n [availableNamedAttributes]=\"svc.edgeRouterNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedEdgeRoutersByAttribute(selectedEdgeRouterRoleAttributes, selectedEdgeRouterNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedEdgeRoutersByAttribute(selectedEdgeRouterRoleAttributes, selectedEdgeRouterNamedAttributes)\"\n [placeholder]=\"'Select edge router attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Service Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100002'\"\n [helpText]=\"'Choose which services to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedServiceRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedServiceNamedAttributes\"\n [availableRoleAttributes]=\"svc.serviceRoleAttributes\"\n [availableNamedAttributes]=\"svc.serviceNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedServicesByAttribute(selectedServiceRoleAttributes, selectedServiceNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedServicesByAttribute(selectedServiceRoleAttributes, selectedServiceNamedAttributes)\"\n [placeholder]=\"'Select service attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Semantic'\"\n [layout]=\"'row'\"\n >\n <select\n [(ngModel)]=\"formData.semantic\"\n id=\"PolicySemantic\"\n class=\"form-field-dropdown\"\n >\n <option value=\"AnyOf\">AnyOf</option>\n <option value=\"AllOf\">AllOf</option>\n </select>\n </lib-form-field-container>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n [title]=\"'Associated Edge Routers'\"\n [count]=\"svc.associatedEdgeRouterNames.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all Edge Routers that this Service Edge Router Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"edgeRoutersLoading\"\n [allNames]=\"svc.associatedEdgeRouterNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Associated Services'\"\n [count]=\"svc.associatedServiceNames.length\"\n [helpText]=\"'Preview list of all Services that this Service Edge Router Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"svc.associatedServiceNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [headerActions]=\"apiOptions\"\n (actionRequested)=\"apiActionRequested($event)\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText"], outputs: ["formViewChange", "actionRequested"] }, { kind: "component", type: FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }, { kind: "component", type: PreviewListComponent, selector: "lib-preview-list", inputs: ["hideOption", "label", "clickable", "isLoading", "allNames", "allowRemove", "tooltip"], outputs: ["itemSelected", "itemRemoved"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }, { kind: "component", type: TagSelectorComponent, selector: "lib-tag-selector", inputs: ["placeholder", "disableField", "disableCreate", "hideOption", "isLoading", "errorMessage", "focusOnInit", "selectedRoleAttributes", "selectedNamedAttributes", "hasError", "availableRoleAttributes", "availableNamedAttributes"], outputs: ["addRoleAttribute", "addNamedAttribute", "roleAttributeRemoved", "namedAttributeRemoved", "selectedRoleAttributesChange", "selectedNamedAttributesChange", "filterChange"] }] }); }
|
|
19023
19528
|
}
|
|
19024
19529
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ServiceEdgeRouterPolicyFormComponent, decorators: [{
|
|
19025
19530
|
type: Component,
|
|
@@ -19028,7 +19533,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
19028
19533
|
provide: MatDialogRef,
|
|
19029
19534
|
useValue: {}
|
|
19030
19535
|
}
|
|
19031
|
-
], template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Service Edge Router Policy: ' : 'Create New Service Edge Router Policy'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"service-edge-router-policy-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Service Edge Router Policy Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this service edge edge router policy\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select
|
|
19536
|
+
], template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Service Edge Router Policy: ' : 'Create New Service Edge Router Policy'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"service-edge-router-policy-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Service Edge Router Policy Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this service edge edge router policy\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Edge Router Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100003'\"\n [helpText]=\"'Choose which edge router to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedEdgeRouterRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedEdgeRouterNamedAttributes\"\n [availableRoleAttributes]=\"svc.edgeRouterRoleAttributes\"\n [availableNamedAttributes]=\"svc.edgeRouterNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedEdgeRoutersByAttribute(selectedEdgeRouterRoleAttributes, selectedEdgeRouterNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedEdgeRoutersByAttribute(selectedEdgeRouterRoleAttributes, selectedEdgeRouterNamedAttributes)\"\n [placeholder]=\"'Select edge router attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Service Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100002'\"\n [helpText]=\"'Choose which services to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedServiceRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedServiceNamedAttributes\"\n [availableRoleAttributes]=\"svc.serviceRoleAttributes\"\n [availableNamedAttributes]=\"svc.serviceNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedServicesByAttribute(selectedServiceRoleAttributes, selectedServiceNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedServicesByAttribute(selectedServiceRoleAttributes, selectedServiceNamedAttributes)\"\n [placeholder]=\"'Select service attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Semantic'\"\n [layout]=\"'row'\"\n >\n <select\n [(ngModel)]=\"formData.semantic\"\n id=\"PolicySemantic\"\n class=\"form-field-dropdown\"\n >\n <option value=\"AnyOf\">AnyOf</option>\n <option value=\"AllOf\">AllOf</option>\n </select>\n </lib-form-field-container>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n [title]=\"'Associated Edge Routers'\"\n [count]=\"svc.associatedEdgeRouterNames.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all Edge Routers that this Service Edge Router Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"edgeRoutersLoading\"\n [allNames]=\"svc.associatedEdgeRouterNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Associated Services'\"\n [count]=\"svc.associatedServiceNames.length\"\n [helpText]=\"'Preview list of all Services that this Service Edge Router Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"svc.associatedServiceNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [headerActions]=\"apiOptions\"\n (actionRequested)=\"apiActionRequested($event)\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>" }]
|
|
19032
19537
|
}], ctorParameters: function () { return [{ type: SettingsService, decorators: [{
|
|
19033
19538
|
type: Inject,
|
|
19034
19539
|
args: [SETTINGS_SERVICE]
|
|
@@ -20829,7 +21334,7 @@ class ZitiControllerDataService extends ZitiDataService {
|
|
|
20829
21334
|
break;
|
|
20830
21335
|
case 'SELECT':
|
|
20831
21336
|
case 'COMBO':
|
|
20832
|
-
const val = isNumber(filter.value) ? `${filter.value}` : `"${filter.value}"`;
|
|
21337
|
+
const val = (isNumber(filter.value) || isBoolean(filter.value)) ? `${filter.value}` : `"${filter.value}"`;
|
|
20833
21338
|
filterVal = `${filter.columnId} = ${val}`;
|
|
20834
21339
|
break;
|
|
20835
21340
|
case 'DATETIME':
|
|
@@ -20838,6 +21343,9 @@ class ZitiControllerDataService extends ZitiDataService {
|
|
|
20838
21343
|
case 'ATTRIBUTE':
|
|
20839
21344
|
filterVal = this.getAttributeFilter(filter.value, filter.columnId);
|
|
20840
21345
|
break;
|
|
21346
|
+
case 'BOOLEAN':
|
|
21347
|
+
filterVal = `${filter.columnId}=${filter.value}`;
|
|
21348
|
+
break;
|
|
20841
21349
|
default:
|
|
20842
21350
|
filterVal = `${filter.columnId} contains "${filter.value}"`;
|
|
20843
21351
|
break;
|
|
@@ -20917,5 +21425,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
20917
21425
|
* Generated bundle index. Do not edit.
|
|
20918
21426
|
*/
|
|
20919
21427
|
|
|
20920
|
-
export { BooleanToggleInputComponent, COMPONENTS, CardListComponent, CheckboxListInputComponent, ConfigurationFormComponent, ConfigurationsPageComponent, CsvDownloadService, DEACTIVATE_GUARD, DeactivateGuardService, EDGE_ROUTER_EXTENSION_SERVICE, EDGE_ROUTER_POLICY_EXTENSION_SERVICE, EdgeRouter, EdgeRouterFormComponent, EdgeRouterFormService, EdgeRouterPoliciesPageComponent, EdgeRouterPoliciesPageService, EdgeRouterPolicyFormComponent, EdgeRouterPolicyFormService, EdgeRoutersPageComponent, EdgeRoutersPageService, Entity, ExtendableComponent, ExtensionsNoopService, FormFieldContainerComponent, FormFieldToggleComponent, FormHeaderComponent, GrowlerComponent, GrowlerModel, GrowlerModule, GrowlerService, IDENTITY_EXTENSION_SERVICE, IdentitiesPageComponent, IdentitiesPageService, Identity$1 as Identity, IdentityFormComponent, IdentityFormService, IdentityServicePathComponent, ListPageComponent, ListPageServiceClass, LoadingIndicatorComponent, LoggerService, LoginServiceClass, NetworkVisualizerComponent, NodeDataService, NodeWrapperService, NoopLoginService, NoopTabInterceptorService, NumberInputComponent, ObjectComponent, OpenZitiConsoleLibModule, PasswordInputComponent, ProjectableForm, ProtocolAddressPortInputComponent, ResetEnrollmentService, SERVICE_EDGE_ROUTER_POLICY_EXTENSION_SERVICE, SERVICE_EXTENSION_SERVICE, SERVICE_POLICY_EXTENSION_SERVICE, SETTINGS_SERVICE, SHAREDZ_EXTENSION, SelectorInputComponent, ServiceEdgeRouterPoliciesPageComponent, ServiceEdgeRouterPoliciesPageService, ServiceEdgeRouterPolicyFormComponent, ServiceEdgeRouterPolicyFormService, ServiceFormComponent, ServiceFormService, ServicePoliciesPageComponent, ServicePoliciesPageService, ServicePolicyFormComponent, ServicePolicyFormService, ServicesPageComponent, ServicesPageService, SettingsService, SettingsServiceClass, SideBannerComponent, SideModalComponent, SideNavbarComponent, SideToolbarComponent, SimpleServiceComponent, StringInputComponent, TabNameService, TextListInputComponent, VERSION, VisualizerServiceClass, ZAC_LOGIN_SERVICE, ZAC_WRAPPER_SERVICE, ZITI_DATA_SERVICE, ZITI_DOMAIN_CONTROLLER, ZITI_NAVIGATOR, ZITI_TAB_OVERRIDES, ZITI_URLS, ZacRoutingModule, ZacWrapperComponent, ZacWrapperService, ZacWrapperServiceClass, ZitiControllerDataService, ZitiDataService, playerFactory };
|
|
21428
|
+
export { BooleanToggleInputComponent, COMPONENTS, CardListComponent, CheckboxListInputComponent, ConfigurationFormComponent, ConfigurationsPageComponent, CsvDownloadService, DEACTIVATE_GUARD, DataTableFilterService, DeactivateGuardService, EDGE_ROUTER_EXTENSION_SERVICE, EDGE_ROUTER_POLICY_EXTENSION_SERVICE, EdgeRouter, EdgeRouterFormComponent, EdgeRouterFormService, EdgeRouterPoliciesPageComponent, EdgeRouterPoliciesPageService, EdgeRouterPolicyFormComponent, EdgeRouterPolicyFormService, EdgeRoutersPageComponent, EdgeRoutersPageService, Entity, ExtendableComponent, ExtensionsNoopService, FormFieldContainerComponent, FormFieldToggleComponent, FormHeaderComponent, GrowlerComponent, GrowlerModel, GrowlerModule, GrowlerService, IDENTITY_EXTENSION_SERVICE, IdentitiesPageComponent, IdentitiesPageService, Identity$1 as Identity, IdentityFormComponent, IdentityFormService, IdentityServicePathComponent, ListPageComponent, ListPageServiceClass, LoadingIndicatorComponent, LoggerService, LoginServiceClass, NetworkVisualizerComponent, NodeDataService, NodeWrapperService, NoopLoginService, NoopTabInterceptorService, NumberInputComponent, ObjectComponent, OpenZitiConsoleLibModule, PasswordInputComponent, ProjectableForm, ProtocolAddressPortInputComponent, ResetEnrollmentService, SERVICE_EDGE_ROUTER_POLICY_EXTENSION_SERVICE, SERVICE_EXTENSION_SERVICE, SERVICE_POLICY_EXTENSION_SERVICE, SETTINGS_SERVICE, SHAREDZ_EXTENSION, SelectorInputComponent, ServiceEdgeRouterPoliciesPageComponent, ServiceEdgeRouterPoliciesPageService, ServiceEdgeRouterPolicyFormComponent, ServiceEdgeRouterPolicyFormService, ServiceFormComponent, ServiceFormService, ServicePoliciesPageComponent, ServicePoliciesPageService, ServicePolicyFormComponent, ServicePolicyFormService, ServicesPageComponent, ServicesPageService, SettingsService, SettingsServiceClass, SideBannerComponent, SideModalComponent, SideNavbarComponent, SideToolbarComponent, SimpleServiceComponent, StringInputComponent, TabNameService, TextListInputComponent, VERSION, VisualizerServiceClass, ZAC_LOGIN_SERVICE, ZAC_WRAPPER_SERVICE, ZITI_DATA_SERVICE, ZITI_DOMAIN_CONTROLLER, ZITI_NAVIGATOR, ZITI_TAB_OVERRIDES, ZITI_URLS, ZacRoutingModule, ZacWrapperComponent, ZacWrapperService, ZacWrapperServiceClass, ZitiControllerDataService, ZitiDataService, playerFactory };
|
|
20921
21429
|
//# sourceMappingURL=openziti-ziti-console-lib.mjs.map
|