@posiwise/admin-module 0.0.150 → 0.0.151
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/esm2022/index.mjs +1 -2
- package/esm2022/lib/admin.module.mjs +4 -1
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.mjs +3 -2
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.mjs +45 -10
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.mjs +7 -3
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.mjs +20 -5
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.mjs +20 -3
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.mjs +9 -5
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.mjs +7 -3
- package/esm2022/lib/components/domain-config/domain-config-list/domain-config-list.component.mjs +3 -3
- package/esm2022/lib/components/faqs/faqs-list/faqs-list.component.mjs +2 -2
- package/esm2022/lib/components/generic/generic-misc/generic-misc.component.mjs +1 -1
- package/esm2022/lib/components/products/product-details/product-details.component.mjs +3 -3
- package/esm2022/lib/components/products/products-list/products-list.component.mjs +1 -1
- package/esm2022/lib/components/resources/resources-admin-details/resources-admin-details.component.mjs +3 -3
- package/esm2022/lib/components/resources/resources-admin-tabs/resources-index/resources-index.component.mjs +3 -3
- package/esm2022/lib/components/resources/resources-lists-insight/resources-lists-insight.component.mjs +1 -1
- package/esm2022/lib/components/subscriptions/subscription-users/subscription-users.component.mjs +1 -1
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-tabs/subscription-insight-tabs.component.mjs +7 -6
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-user-session/subscription-insight-user-session.component.mjs +68 -0
- package/esm2022/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.mjs +32 -6
- package/esm2022/lib/components/tags/tags-list/tags-list.component.mjs +11 -7
- package/esm2022/lib/components/tracking/ahoy-visits/ahoy-visits.component.mjs +6 -5
- package/esm2022/lib/components/users/users-list/users-list.component.mjs +1 -1
- package/fesm2022/posiwise-admin-module.mjs +262 -98
- package/fesm2022/posiwise-admin-module.mjs.map +1 -1
- package/index.d.ts +0 -1
- package/lib/admin.module.d.ts +79 -78
- package/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.d.ts +1 -0
- package/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.d.ts +7 -0
- package/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.d.ts +1 -0
- package/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.d.ts +4 -0
- package/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.d.ts +2 -0
- package/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.d.ts +1 -0
- package/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.d.ts +1 -0
- package/lib/components/resources/resources-admin-tabs/resources-index/resources-index.component.d.ts +1 -2
- package/lib/components/resources/resources-lists-insight/resources-lists-insight.component.d.ts +1 -2
- package/lib/components/subscriptions/subscriptions-insight/subscription-insight-user-session/subscription-insight-user-session.component.d.ts +34 -0
- package/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.d.ts +5 -0
- package/package.json +1 -1
- package/esm2022/lib/shared/interface/resource.interface.mjs +0 -2
- package/lib/shared/interface/resource.interface.d.ts +0 -73
|
@@ -99,10 +99,10 @@ export class ResourcesIndexComponent extends AppBaseComponent {
|
|
|
99
99
|
super.ngOnDestroy();
|
|
100
100
|
}
|
|
101
101
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourcesIndexComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
102
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourcesIndexComponent, selector: "pw-resources-index", usesInheritance: true, ngImport: i0, template: "\n<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">Resources</h2>\n <button *rbacAllow=\"blogPermission\"\n class=\"btn btn-sm btn-outline-primary float-end\"\n [routerLink]=\"['/' + routers.createResource]\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Resource\n </button>\n </div>\n </div>\n <div class=\"col-12 mb-3\">\n <p>The <strong>Resources</strong> module allows you to create and publish content that will be publicly visible on your <strong>/resources</strong> page.<br/>\n You can use it to share a wide range of content types, including: <strong>Case Studies</strong>, <strong>Release Notes</strong>, <strong>White Papers</strong>, <strong>Integrations</strong>, etc.</p>\n </div>\n\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.posts\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchTextItems\"\n pInputText\n size=\"50\"\n placeholder=\"Search Resources...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n style=\"max-width: 90%\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Resource.Posts.Author' | transloco }}</th>\n <th scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Label.Title' | transloco }}\n <p-sortIcon field=\"title\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"published_at\">\n {{ 'Resource.Posts.PublishedAt' | transloco }}\n <p-sortIcon field=\"published_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"accepted_at\">\n {{ 'Resource.Posts.AcceptedAt' | transloco }}\n <p-sortIcon field=\"accepted_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"view\">\n {{ 'Resource.Posts.View' | transloco }}\n <p-sortIcon field=\"view\"></p-sortIcon>\n </th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"Title\">\n <a [routerLink]=\"['/members', item.author?.slug]\"\n class=\"d-flex align-items-center\">\n <img *ngIf=\"item.author?.avatar\"\n [src]=\"item.author?.avatar[0].url\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n <img *ngIf=\"!item.author?.avatar\"\n src=\"assets/img/icons/male.png\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n <span class=\"ms-2\">{{ item.author | ifNameNullShowEmail }}</span>\n </a>\n </td>\n <td data-head=\"Title\">\n <a [routerLink]=\"['/resources', item?.slug]\"\n target=\"_blank\">{{ item.title }}</a>\n </td>\n <td data-head=\"Published At\">{{ item.published_at | dateFormat }}</td>\n <td data-head=\"Accepted At\">{{ item.accepted_at | dateFormat }}</td>\n <td data-head=\"View\">{{ item.view }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n [routerLink]=\"['/' + routers.posts + item?.slug]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n (keydown.enter)=\"onDeletePost(item)\"\n (click)=\"onDeletePost(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Insight\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"isBlogAdmin\"\n [routerLink]=\"[\n '/' + routers.resourcesList + item.id + '/insight'\n ]\"\n [queryParams]=\"{ insight_name: item?.title }\">\n <i class=\"fa fa-fw fa-list fa-lg\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span *ngIf=\"data.object_count !== 0\" class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n <div *ngIf=\"data.object_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n</div>\n<div class=\"col-12 text-center\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.Posts.NoDataMessage' | transloco\"\n *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n </pw-no-data>\n</div>\n", dependencies: [{ kind: "component", type: i2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i2.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i8.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i9.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i10.LazyImgDirective, selector: "img" }, { kind: "directive", type: i10.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i11.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i13.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i13.IfNameNullShowEmailPipe, name: "ifNameNullShowEmail" }] }); }
|
|
102
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourcesIndexComponent, selector: "pw-resources-index", usesInheritance: true, ngImport: i0, template: "\n<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">{{'Resource.Posts.Title' | transloco}}</h2>\n <button *rbacAllow=\"blogPermission\"\n class=\"btn btn-sm btn-outline-primary float-end\"\n [routerLink]=\"['/' + routers.createResource]\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{'Resource.Add' | transloco}}\n </button>\n </div>\n </div>\n <div class=\"col-12 mb-3\">\n <p [innerHTML]=\"'Resource.Description' | transloco\"></p>\n </div>\n\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.posts\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchTextItems\"\n pInputText\n size=\"50\"\n placeholder=\"Search Resources...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n style=\"max-width: 90%\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Resource.Posts.Author' | transloco }}</th>\n <th scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Label.Title' | transloco }}\n <p-sortIcon field=\"title\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"published_at\">\n {{ 'Resource.Posts.PublishedAt' | transloco }}\n <p-sortIcon field=\"published_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"accepted_at\">\n {{ 'Resource.Posts.AcceptedAt' | transloco }}\n <p-sortIcon field=\"accepted_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"view\">\n {{ 'Resource.Posts.View' | transloco }}\n <p-sortIcon field=\"view\"></p-sortIcon>\n </th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"Title\">\n <a [routerLink]=\"['/members', item.author?.slug]\"\n class=\"d-flex align-items-center\">\n <img *ngIf=\"item.author?.avatar\"\n [src]=\"item.author?.avatar[0].url\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n <img *ngIf=\"!item.author?.avatar\"\n src=\"assets/img/icons/male.png\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n <span class=\"ms-2\">{{ item.author | ifNameNullShowEmail }}</span>\n </a>\n </td>\n <td data-head=\"Title\">\n <a [routerLink]=\"['/resources/view', item?.slug]\"\n target=\"_blank\">{{ item.title }}</a>\n </td>\n <td data-head=\"Published At\">{{ item.published_at | dateFormat }}</td>\n <td data-head=\"Accepted At\">{{ item.accepted_at | dateFormat }}</td>\n <td data-head=\"View\">{{ item.view }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n [routerLink]=\"['/' + routers.posts + item?.slug]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n (keydown.enter)=\"onDeletePost(item)\"\n (click)=\"onDeletePost(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Insight\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"isBlogAdmin\"\n [routerLink]=\"[\n '/' + routers.resourcesList + item.id + '/insight'\n ]\"\n [queryParams]=\"{ insight_name: item?.title }\">\n <i class=\"fa fa-fw fa-list fa-lg\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span *ngIf=\"data.object_count !== 0\" class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n <div *ngIf=\"data.object_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n</div>\n<div class=\"col-12 text-center\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.Posts.NoDataMessage' | transloco\"\n *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n </pw-no-data>\n</div>\n", dependencies: [{ kind: "component", type: i2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i2.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i8.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i9.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i10.LazyImgDirective, selector: "img" }, { kind: "directive", type: i10.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i11.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i13.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i13.IfNameNullShowEmailPipe, name: "ifNameNullShowEmail" }] }); }
|
|
103
103
|
}
|
|
104
104
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourcesIndexComponent, decorators: [{
|
|
105
105
|
type: Component,
|
|
106
|
-
args: [{ selector: 'pw-resources-index', template: "\n<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">
|
|
106
|
+
args: [{ selector: 'pw-resources-index', template: "\n<div class=\"row\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">{{'Resource.Posts.Title' | transloco}}</h2>\n <button *rbacAllow=\"blogPermission\"\n class=\"btn btn-sm btn-outline-primary float-end\"\n [routerLink]=\"['/' + routers.createResource]\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{'Resource.Add' | transloco}}\n </button>\n </div>\n </div>\n <div class=\"col-12 mb-3\">\n <p [innerHTML]=\"'Resource.Description' | transloco\"></p>\n </div>\n\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.posts\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchTextItems\"\n pInputText\n size=\"50\"\n placeholder=\"Search Resources...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n style=\"max-width: 90%\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Resource.Posts.Author' | transloco }}</th>\n <th scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Label.Title' | transloco }}\n <p-sortIcon field=\"title\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"published_at\">\n {{ 'Resource.Posts.PublishedAt' | transloco }}\n <p-sortIcon field=\"published_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"accepted_at\">\n {{ 'Resource.Posts.AcceptedAt' | transloco }}\n <p-sortIcon field=\"accepted_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"view\">\n {{ 'Resource.Posts.View' | transloco }}\n <p-sortIcon field=\"view\"></p-sortIcon>\n </th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"Title\">\n <a [routerLink]=\"['/members', item.author?.slug]\"\n class=\"d-flex align-items-center\">\n <img *ngIf=\"item.author?.avatar\"\n [src]=\"item.author?.avatar[0].url\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n <img *ngIf=\"!item.author?.avatar\"\n src=\"assets/img/icons/male.png\"\n alt=\"author\"\n width=\"25\"\n class=\"img-fluid\" />\n <span class=\"ms-2\">{{ item.author | ifNameNullShowEmail }}</span>\n </a>\n </td>\n <td data-head=\"Title\">\n <a [routerLink]=\"['/resources/view', item?.slug]\"\n target=\"_blank\">{{ item.title }}</a>\n </td>\n <td data-head=\"Published At\">{{ item.published_at | dateFormat }}</td>\n <td data-head=\"Accepted At\">{{ item.accepted_at | dateFormat }}</td>\n <td data-head=\"View\">{{ item.view }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n [routerLink]=\"['/' + routers.posts + item?.slug]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"blogPermission\"\n (keydown.enter)=\"onDeletePost(item)\"\n (click)=\"onDeletePost(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Insight\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"isBlogAdmin\"\n [routerLink]=\"[\n '/' + routers.resourcesList + item.id + '/insight'\n ]\"\n [queryParams]=\"{ insight_name: item?.title }\">\n <i class=\"fa fa-fw fa-list fa-lg\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span *ngIf=\"data.object_count !== 0\" class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n <div *ngIf=\"data.object_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n</div>\n<div class=\"col-12 text-center\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.Posts.NoDataMessage' | transloco\"\n *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n </pw-no-data>\n</div>\n" }]
|
|
107
107
|
}], ctorParameters: () => [{ type: i1.AdminService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }] });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLWluZGV4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9yZXNvdXJjZXMvcmVzb3VyY2VzLWFkbWluLXRhYnMvcmVzb3VyY2VzLWluZGV4L3Jlc291cmNlcy1pbmRleC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcmVzb3VyY2VzL3Jlc291cmNlcy1hZG1pbi10YWJzL3Jlc291cmNlcy1pbmRleC9yZXNvdXJjZXMtaW5kZXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUF3QixNQUFNLDRCQUE0QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd6RCxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFHL0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFNN0QsTUFBTSxPQUFPLHVCQUNULFNBQVEsZ0JBQWdCO0lBeUJ4QixZQUNxQixZQUEwQixFQUMzQyxRQUFrQixFQUNELEdBQXNCO1FBRXZDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUpDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRTFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBeEJuQyxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRWpCLFNBQUksR0FBRztZQUNILEtBQUssRUFBRSxFQUFFO1lBQ1QsWUFBWSxFQUFFLENBQUM7WUFDZixnQkFBZ0IsRUFBRSxDQUFDO1NBQ3RCLENBQUM7UUFFRixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUVyQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUd0QixZQUFPLEdBQUcsT0FBTyxDQUFDO0lBV2xCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsVUFBVSxJQUFJLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxXQUFXLE9BQU8sQ0FBQztZQUNoSSxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsZUFBZSxFQUFFLFVBQVUsSUFBSSxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsV0FBVyxhQUFhLENBQUM7UUFDdkksQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQW9CO1FBQzNCLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixTQUFTLEVBQUUsU0FBUztZQUNwQixRQUFRLEVBQUUsV0FBVyxDQUFDLFNBQVM7WUFDL0IsZUFBZSxFQUFFLFdBQVcsQ0FBQyxTQUFTO1lBQ3RDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZTtTQUMvQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sUUFBUSxDQUFDLE1BQWM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVk7aUJBQ1osYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDO2lCQUMxQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLENBQUMsQ0FBQztpQkFDRCxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQWtCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDTixLQUFLLEVBQUUsUUFBUTtZQUNmLElBQUksRUFBRSwyREFBMkQsSUFBSSxDQUFDLEtBQUssS0FBSztZQUNoRixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLElBQUksRUFBRSxTQUFTO1NBQ2xCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDVixJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQzt3QkFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ2YsU0FBUyxFQUFFLFNBQVM7d0JBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZTtxQkFDL0IsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQztnQkFDcEYsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVEsV0FBVztRQUNoQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0FuR1EsdUJBQXVCO21HQUF2Qix1QkFBdUIsaUZDekJwQyxnbExBdUlBOzs0RkQ5R2EsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNJLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgUEFHRV9TSVpFLCBQYWdpbmcsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuXG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuXG5pbXBvcnQgeyBSZXNvdXJjZVBvc3QgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlL3Jlc291cmNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBST1VURVJTIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3JvdXRlcnMvcm91dGVycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctcmVzb3VyY2VzLWluZGV4JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVzb3VyY2VzLWluZGV4LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZXNJbmRleENvbXBvbmVudFxuICAgIGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWRcbntcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvc3RzVG90YWw6IG51bWJlcjtcbiAgICBwcml2YXRlIHBhZ2UgPSAxO1xuXG4gICAgZGF0YSA9IHtcbiAgICAgICAgcG9zdHM6IFtdLFxuICAgICAgICBvYmplY3RfY291bnQ6IDAsXG4gICAgICAgIHVuZmlsdGVyZWRfY291bnQ6IDBcbiAgICB9O1xuXG4gICAgbG9hZGluZyA9IHRydWU7XG4gICAgaXNMb2FkZWQgPSBmYWxzZTtcblxuICAgIHNlYXJjaFRleHRJdGVtcyA9ICcnO1xuXG4gICAgc3Vic2NyaXB0aW9uSWQgPSBudWxsO1xuICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcm91dGVycyA9IFJPVVRFUlM7XG5cbiAgICBibG9nUGVybWlzc2lvbjogc3RyaW5nO1xuICAgIGlzQmxvZ0FkbWluOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmdldFVzZXJTdWJzY3JpcHRpb25JZCgpLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgICAgIHRoaXMuYmxvZ1Blcm1pc3Npb24gPSBgJHtQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFByb2R1Y3Q/LnBlcm1pc3Npb259LiR7UGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRQcm9kdWN0Py5mZWF0dXJlX2tleX0uQmxvZ2A7XG4gICAgICAgICAgICB0aGlzLmlzQmxvZ0FkbWluID0gYCR7UGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRQcm9kdWN0Py5wZXJtaXNzaW9ufS4ke1Blcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkUHJvZHVjdD8uZmVhdHVyZV9rZXl9LkJsb2cuQWRtaW5gO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5nZXRVc2VyU3Vic2NyaXB0aW9uKCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gcmVzcG9uc2U7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRTdWJzY3JpcHRpb24/LmlkO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uTGF6eUxvYWQoZXZlbnQ6IExhenlMb2FkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcGFnZURldGFpbHMgPSBIZWxwZXJTZXJ2aWNlLm9uVGFibGVMYXp5TG9hZChldmVudCk7XG4gICAgICAgIHRoaXMucGFnZSA9IHBhZ2VEZXRhaWxzLnBhZ2U7XG4gICAgICAgIHRoaXMuZ2V0UG9zdHMoe1xuICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgcGFnZV9zaXplOiBQQUdFX1NJWkUsXG4gICAgICAgICAgICBvcmRlcl9ieTogcGFnZURldGFpbHMuc29ydEZpZWxkLFxuICAgICAgICAgICAgb3JkZXJfZGlyZWN0aW9uOiBwYWdlRGV0YWlscy5zb3J0T3JkZXIsXG4gICAgICAgICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoVGV4dEl0ZW1zXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9zdHMocGFnaW5nOiBQYWdpbmcpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25JZCkge1xuICAgICAgICAgICAgdGhpcy5hZG1pblNlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0QWRtaW5Qb3N0cyh0aGlzLnN1YnNjcmlwdGlvbklkLCBwYWdpbmcpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRGVsZXRlUG9zdChpdGVtOiBSZXNvdXJjZVBvc3QpIHtcbiAgICAgICAgc3dhbC5maXJlKHtcbiAgICAgICAgICAgIHRpdGxlOiAnRGVsZXRlJyxcbiAgICAgICAgICAgIHRleHQ6IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgcmVzb3VyY2UgZW50aXRsZWQgXCIke2l0ZW0udGl0bGV9XCIgP2AsXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXG4gICAgICAgICAgICBpY29uOiAnd2FybmluZydcbiAgICAgICAgfSkudGhlbihyZXAgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlLmRlbGV0ZVBvc3QoaXRlbS5pZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRQb3N0cyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hUZXh0SXRlbXNcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2Vzcyh0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnUmVzb3VyY2UuUG9zdHMuRGVsZXRlZE1lc3NhZ2UnKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIlxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGgyIGNsYXNzPVwiY2FyZC10aXRsZSBwLTAgZmxvYXQtc3RhcnRcIj5SZXNvdXJjZXM8L2gyPlxuICAgIDxidXR0b24gKnJiYWNBbGxvdz1cImJsb2dQZXJtaXNzaW9uXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5IGZsb2F0LWVuZFwiXG4gICAgICBbcm91dGVyTGlua109XCJbJy8nICsgcm91dGVycy5jcmVhdGVSZXNvdXJjZV1cIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cy1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IEFkZCBSZXNvdXJjZVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItM1wiPlxuICAgIDxwPlRoZSA8c3Ryb25nPlJlc291cmNlczwvc3Ryb25nPiBtb2R1bGUgYWxsb3dzIHlvdSB0byBjcmVhdGUgYW5kIHB1Ymxpc2ggY29udGVudCB0aGF0IHdpbGwgYmUgcHVibGljbHkgdmlzaWJsZSBvbiB5b3VyIDxzdHJvbmc+L3Jlc291cmNlczwvc3Ryb25nPiBwYWdlLjxici8+XG4gICAgICBZb3UgY2FuIHVzZSBpdCB0byBzaGFyZSBhIHdpZGUgcmFuZ2Ugb2YgY29udGVudCB0eXBlcywgaW5jbHVkaW5nOiA8c3Ryb25nPkNhc2UgU3R1ZGllczwvc3Ryb25nPiwgPHN0cm9uZz5SZWxlYXNlIE5vdGVzPC9zdHJvbmc+LCA8c3Ryb25nPldoaXRlIFBhcGVyczwvc3Ryb25nPiwgPHN0cm9uZz5JbnRlZ3JhdGlvbnM8L3N0cm9uZz4sIGV0Yy48L3A+XG4gIDwvZGl2PlxuXG48ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgbXQtM1wiXG4gICpuZ0lmPVwiIWlzTG9hZGVkXCI+XG4gIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInByaW1lbmctZGF0YXRhYmxlLWNvbnRhaW5lciB0YWJsZS1yZXNwb25zaXZlXCJcbiAgW2NsYXNzLmhpZGVUYWJsZV09XCJkYXRhLnVuZmlsdGVyZWRfY291bnQgPT09IDBcIj5cbiAgPHAtdGFibGUgI2R0XG4gICAgW3ZhbHVlXT1cImRhdGEucG9zdHNcIlxuICAgIFtwYWdpbmF0b3JdPVwiZGF0YS5vYmplY3RfY291bnQgIT09IDBcIlxuICAgIFtsYXp5XT1cInRydWVcIlxuICAgIFtyb3dzXT1cIlBBR0VfU0laRVwiXG4gICAgW3RvdGFsUmVjb3Jkc109XCJkYXRhLm9iamVjdF9jb3VudFwiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgW2ZpbHRlckRlbGF5XT1cIjEwMDBcIlxuICAgIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWQoJGV2ZW50KVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmRcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggbXQtMiBtZS0yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dEl0ZW1zXCJcbiAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgc2l6ZT1cIjUwXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBSZXNvdXJjZXMuLi5cIlxuICAgICAgICAgIChpbnB1dCk9XCJkdC5maWx0ZXJHbG9iYWwoJGV2ZW50LnRhcmdldC52YWx1ZSwgJ2NvbnRhaW5zJylcIlxuICAgICAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiA5MCVcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIj57eyAnUmVzb3VyY2UuUG9zdHMuQXV0aG9yJyB8IHRyYW5zbG9jbyB9fTwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInRpdGxlXCI+XG4gICAgICAgICAge3sgJ0xhYmVsLlRpdGxlJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwidGl0bGVcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInB1Ymxpc2hlZF9hdFwiPlxuICAgICAgICAgIHt7ICdSZXNvdXJjZS5Qb3N0cy5QdWJsaXNoZWRBdCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInB1Ymxpc2hlZF9hdFwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiYWNjZXB0ZWRfYXRcIj5cbiAgICAgICAgICB7eyAnUmVzb3VyY2UuUG9zdHMuQWNjZXB0ZWRBdCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImFjY2VwdGVkX2F0XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJ2aWV3XCI+XG4gICAgICAgICAge3sgJ1Jlc291cmNlLlBvc3RzLlZpZXcnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJ2aWV3XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCI+e3sgJ0xhYmVsLkFjdGlvbnMnIHwgdHJhbnNsb2NvIH19PC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiXG4gICAgICBsZXQtaXRlbT5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlRpdGxlXCI+XG4gICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIGl0ZW0uYXV0aG9yPy5zbHVnXVwiXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpdGVtLmF1dGhvcj8uYXZhdGFyXCJcbiAgICAgICAgICAgICAgW3NyY109XCJpdGVtLmF1dGhvcj8uYXZhdGFyWzBdLnVybFwiXG4gICAgICAgICAgICAgIGFsdD1cImF1dGhvclwiXG4gICAgICAgICAgICAgIHdpZHRoPVwiMjVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImltZy1mbHVpZFwiIC8+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiIWl0ZW0uYXV0aG9yPy5hdmF0YXJcIlxuICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaW1nL2ljb25zL21hbGUucG5nXCJcbiAgICAgICAgICAgICAgYWx0PVwiYXV0aG9yXCJcbiAgICAgICAgICAgICAgd2lkdGg9XCIyNVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaW1nLWZsdWlkXCIgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGl0ZW0uYXV0aG9yIHwgaWZOYW1lTnVsbFNob3dFbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJUaXRsZVwiPlxuICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL3Jlc291cmNlcycsIGl0ZW0/LnNsdWddXCJcbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiPnt7IGl0ZW0udGl0bGUgfX08L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJQdWJsaXNoZWQgQXRcIj57eyBpdGVtLnB1Ymxpc2hlZF9hdCB8IGRhdGVGb3JtYXQgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiQWNjZXB0ZWQgQXRcIj57eyBpdGVtLmFjY2VwdGVkX2F0IHwgZGF0ZUZvcm1hdCB9fTwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJWaWV3XCI+e3sgaXRlbS52aWV3IH19PC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkFjdGlvblwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbGlzdC1pbmxpbmUgbGlzdC1hY3Rpb25cIj5cbiAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiRWRpdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgKnJiYWNBbGxvdz1cImJsb2dQZXJtaXNzaW9uXCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvJyArIHJvdXRlcnMucG9zdHMgKyBpdGVtPy5zbHVnXVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVkaXQgZWRpdC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiRGVsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIlxuICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiYmxvZ1Blcm1pc3Npb25cIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkRlbGV0ZVBvc3QoaXRlbSlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVQb3N0KGl0ZW0pXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2ggZGVsZXRlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJJbnNpZ2h0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIlxuICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiaXNCbG9nQWRtaW5cIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJyArIHJvdXRlcnMucmVzb3VyY2VzTGlzdCArIGl0ZW0uaWQgKyAnL2luc2lnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7IGluc2lnaHRfbmFtZTogaXRlbT8udGl0bGUgfVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWZ3IGZhLWxpc3QgZmEtbGdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvcC10YWJsZT5cbiAgPHNwYW4gKm5nSWY9XCJkYXRhLm9iamVjdF9jb3VudCAhPT0gMFwiIGNsYXNzPVwidG90YWwtcmVjb3Jkcy1jb3VudFwiPnt7ICdMYWJlbC5Ub3RhbCcgfCB0cmFuc2xvY28gfX06IHt7ICBkYXRhLm9iamVjdF9jb3VudCB9fTwvc3Bhbj5cbiAgPGRpdiAqbmdJZj1cImRhdGEub2JqZWN0X2NvdW50ID09PSAwICYmIGlzTG9hZGVkXCI+XG4gICAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ1NlYXJjaC5Ob0RhdGFNZXNzYWdlJ3wgdHJhbnNsb2NvXCIgW2Rlc2NyaXB0aW9uXT1cIidTZWFyY2guTm9EYXRhRGVzY3JpcHRpb24nIHwgdHJhbnNsb2NvXCIgID5cbiAgICA8L3B3LW5vLWRhdGE+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtY2VudGVyXCI+XG4gIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIFttZXNzYWdlXT1cIidSZXNvdXJjZS5Qb3N0cy5Ob0RhdGFNZXNzYWdlJyB8IHRyYW5zbG9jb1wiXG4gICAgKm5nSWY9XCJkYXRhLnVuZmlsdGVyZWRfY291bnQgPT09IDAgJiYgaXNMb2FkZWRcIj5cbiAgPC9wdy1uby1kYXRhPlxuPC9kaXY+XG4iXX0=
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLWluZGV4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9yZXNvdXJjZXMvcmVzb3VyY2VzLWFkbWluLXRhYnMvcmVzb3VyY2VzLWluZGV4L3Jlc291cmNlcy1pbmRleC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcmVzb3VyY2VzL3Jlc291cmNlcy1hZG1pbi10YWJzL3Jlc291cmNlcy1pbmRleC9yZXNvdXJjZXMtaW5kZXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFzQyxNQUFNLDRCQUE0QixDQUFDO0FBQzNGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd6RCxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFFL0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFNN0QsTUFBTSxPQUFPLHVCQUNULFNBQVEsZ0JBQWdCO0lBeUJ4QixZQUNxQixZQUEwQixFQUMzQyxRQUFrQixFQUNELEdBQXNCO1FBRXZDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUpDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRTFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBeEJuQyxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRWpCLFNBQUksR0FBRztZQUNILEtBQUssRUFBRSxFQUFFO1lBQ1QsWUFBWSxFQUFFLENBQUM7WUFDZixnQkFBZ0IsRUFBRSxDQUFDO1NBQ3RCLENBQUM7UUFFRixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUVyQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUd0QixZQUFPLEdBQUcsT0FBTyxDQUFDO0lBV2xCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsVUFBVSxJQUFJLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxXQUFXLE9BQU8sQ0FBQztZQUNoSSxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsZUFBZSxFQUFFLFVBQVUsSUFBSSxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsV0FBVyxhQUFhLENBQUM7UUFDdkksQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQW9CO1FBQzNCLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixTQUFTLEVBQUUsU0FBUztZQUNwQixRQUFRLEVBQUUsV0FBVyxDQUFDLFNBQVM7WUFDL0IsZUFBZSxFQUFFLFdBQVcsQ0FBQyxTQUFTO1lBQ3RDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZTtTQUMvQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sUUFBUSxDQUFDLE1BQWM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVk7aUJBQ1osYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDO2lCQUMxQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLENBQUMsQ0FBQztpQkFDRCxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQWtCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDTixLQUFLLEVBQUUsUUFBUTtZQUNmLElBQUksRUFBRSwyREFBMkQsSUFBSSxDQUFDLEtBQUssS0FBSztZQUNoRixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLElBQUksRUFBRSxTQUFTO1NBQ2xCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDVixJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQzt3QkFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ2YsU0FBUyxFQUFFLFNBQVM7d0JBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZTtxQkFDL0IsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQztnQkFDcEYsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVEsV0FBVztRQUNoQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0FuR1EsdUJBQXVCO21HQUF2Qix1QkFBdUIsaUZDeEJwQyxpMUtBc0lBOzs0RkQ5R2EsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNJLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgUEFHRV9TSVpFLCBQYWdpbmcsIFJlc291cmNlUG9zdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5cbmltcG9ydCB7IExhenlMb2FkRXZlbnQgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgc3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5cbmltcG9ydCB7IFJPVVRFUlMgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvcm91dGVycy9yb3V0ZXJzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1yZXNvdXJjZXMtaW5kZXgnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZXNvdXJjZXMtaW5kZXguY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFJlc291cmNlc0luZGV4Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZFxue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9zdHNUb3RhbDogbnVtYmVyO1xuICAgIHByaXZhdGUgcGFnZSA9IDE7XG5cbiAgICBkYXRhID0ge1xuICAgICAgICBwb3N0czogW10sXG4gICAgICAgIG9iamVjdF9jb3VudDogMCxcbiAgICAgICAgdW5maWx0ZXJlZF9jb3VudDogMFxuICAgIH07XG5cbiAgICBsb2FkaW5nID0gdHJ1ZTtcbiAgICBpc0xvYWRlZCA9IGZhbHNlO1xuXG4gICAgc2VhcmNoVGV4dEl0ZW1zID0gJyc7XG5cbiAgICBzdWJzY3JpcHRpb25JZCA9IG51bGw7XG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICByb3V0ZXJzID0gUk9VVEVSUztcblxuICAgIGJsb2dQZXJtaXNzaW9uOiBzdHJpbmc7XG4gICAgaXNCbG9nQWRtaW46IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZ2V0VXNlclN1YnNjcmlwdGlvbklkKCkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICAgICAgdGhpcy5ibG9nUGVybWlzc2lvbiA9IGAke1Blcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkUHJvZHVjdD8ucGVybWlzc2lvbn0uJHtQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFByb2R1Y3Q/LmZlYXR1cmVfa2V5fS5CbG9nYDtcbiAgICAgICAgICAgIHRoaXMuaXNCbG9nQWRtaW4gPSBgJHtQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFByb2R1Y3Q/LnBlcm1pc3Npb259LiR7UGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRQcm9kdWN0Py5mZWF0dXJlX2tleX0uQmxvZy5BZG1pbmA7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdldFVzZXJTdWJzY3JpcHRpb24oKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSByZXNwb25zZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbj8uaWQ7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgb25MYXp5TG9hZChldmVudDogTGF6eUxvYWRFdmVudCkge1xuICAgICAgICBjb25zdCBwYWdlRGV0YWlscyA9IEhlbHBlclNlcnZpY2Uub25UYWJsZUxhenlMb2FkKGV2ZW50KTtcbiAgICAgICAgdGhpcy5wYWdlID0gcGFnZURldGFpbHMucGFnZTtcbiAgICAgICAgdGhpcy5nZXRQb3N0cyh7XG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRSxcbiAgICAgICAgICAgIG9yZGVyX2J5OiBwYWdlRGV0YWlscy5zb3J0RmllbGQsXG4gICAgICAgICAgICBvcmRlcl9kaXJlY3Rpb246IHBhZ2VEZXRhaWxzLnNvcnRPcmRlcixcbiAgICAgICAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hUZXh0SXRlbXNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQb3N0cyhwYWdpbmc6IFBhZ2luZykge1xuICAgICAgICB0aGlzLmlzTG9hZGVkID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbklkKSB7XG4gICAgICAgICAgICB0aGlzLmFkbWluU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRBZG1pblBvc3RzKHRoaXMuc3Vic2NyaXB0aW9uSWQsIHBhZ2luZylcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EZWxldGVQb3N0KGl0ZW06IFJlc291cmNlUG9zdCkge1xuICAgICAgICBzd2FsLmZpcmUoe1xuICAgICAgICAgICAgdGl0bGU6ICdEZWxldGUnLFxuICAgICAgICAgICAgdGV4dDogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyByZXNvdXJjZSBlbnRpdGxlZCBcIiR7aXRlbS50aXRsZX1cIiA/YCxcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcbiAgICAgICAgICAgIGljb246ICd3YXJuaW5nJ1xuICAgICAgICB9KS50aGVuKHJlcCA9PiB7XG4gICAgICAgICAgICBpZiAocmVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZG1pblNlcnZpY2UuZGVsZXRlUG9zdChpdGVtLmlkKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFBvc3RzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2Vfc2l6ZTogUEFHRV9TSVpFLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaFRleHRJdGVtc1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdSZXNvdXJjZS5Qb3N0cy5EZWxldGVkTWVzc2FnZScpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiXG48ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8aDIgY2xhc3M9XCJjYXJkLXRpdGxlIHAtMCBmbG9hdC1zdGFydFwiPnt7J1Jlc291cmNlLlBvc3RzLlRpdGxlJyB8IHRyYW5zbG9jb319PC9oMj5cbiAgICA8YnV0dG9uICpyYmFjQWxsb3c9XCJibG9nUGVybWlzc2lvblwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBmbG9hdC1lbmRcIlxuICAgICAgW3JvdXRlckxpbmtdPVwiWycvJyArIHJvdXRlcnMuY3JlYXRlUmVzb3VyY2VdXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMtY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eydSZXNvdXJjZS5BZGQnIHwgdHJhbnNsb2NvfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTNcIj5cbiAgICA8cCBbaW5uZXJIVE1MXT1cIidSZXNvdXJjZS5EZXNjcmlwdGlvbicgfCB0cmFuc2xvY29cIj48L3A+XG4gIDwvZGl2PlxuXG48ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgbXQtM1wiXG4gICpuZ0lmPVwiIWlzTG9hZGVkXCI+XG4gIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInByaW1lbmctZGF0YXRhYmxlLWNvbnRhaW5lciB0YWJsZS1yZXNwb25zaXZlXCJcbiAgW2NsYXNzLmhpZGVUYWJsZV09XCJkYXRhLnVuZmlsdGVyZWRfY291bnQgPT09IDBcIj5cbiAgPHAtdGFibGUgI2R0XG4gICAgW3ZhbHVlXT1cImRhdGEucG9zdHNcIlxuICAgIFtwYWdpbmF0b3JdPVwiZGF0YS5vYmplY3RfY291bnQgIT09IDBcIlxuICAgIFtsYXp5XT1cInRydWVcIlxuICAgIFtyb3dzXT1cIlBBR0VfU0laRVwiXG4gICAgW3RvdGFsUmVjb3Jkc109XCJkYXRhLm9iamVjdF9jb3VudFwiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgW2ZpbHRlckRlbGF5XT1cIjEwMDBcIlxuICAgIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWQoJGV2ZW50KVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmRcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggbXQtMiBtZS0yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dEl0ZW1zXCJcbiAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgc2l6ZT1cIjUwXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBSZXNvdXJjZXMuLi5cIlxuICAgICAgICAgIChpbnB1dCk9XCJkdC5maWx0ZXJHbG9iYWwoJGV2ZW50LnRhcmdldC52YWx1ZSwgJ2NvbnRhaW5zJylcIlxuICAgICAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiA5MCVcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIj57eyAnUmVzb3VyY2UuUG9zdHMuQXV0aG9yJyB8IHRyYW5zbG9jbyB9fTwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInRpdGxlXCI+XG4gICAgICAgICAge3sgJ0xhYmVsLlRpdGxlJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwidGl0bGVcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInB1Ymxpc2hlZF9hdFwiPlxuICAgICAgICAgIHt7ICdSZXNvdXJjZS5Qb3N0cy5QdWJsaXNoZWRBdCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInB1Ymxpc2hlZF9hdFwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiYWNjZXB0ZWRfYXRcIj5cbiAgICAgICAgICB7eyAnUmVzb3VyY2UuUG9zdHMuQWNjZXB0ZWRBdCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImFjY2VwdGVkX2F0XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJ2aWV3XCI+XG4gICAgICAgICAge3sgJ1Jlc291cmNlLlBvc3RzLlZpZXcnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJ2aWV3XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCI+e3sgJ0xhYmVsLkFjdGlvbnMnIHwgdHJhbnNsb2NvIH19PC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiXG4gICAgICBsZXQtaXRlbT5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlRpdGxlXCI+XG4gICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIGl0ZW0uYXV0aG9yPy5zbHVnXVwiXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpdGVtLmF1dGhvcj8uYXZhdGFyXCJcbiAgICAgICAgICAgICAgW3NyY109XCJpdGVtLmF1dGhvcj8uYXZhdGFyWzBdLnVybFwiXG4gICAgICAgICAgICAgIGFsdD1cImF1dGhvclwiXG4gICAgICAgICAgICAgIHdpZHRoPVwiMjVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImltZy1mbHVpZFwiIC8+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiIWl0ZW0uYXV0aG9yPy5hdmF0YXJcIlxuICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaW1nL2ljb25zL21hbGUucG5nXCJcbiAgICAgICAgICAgICAgYWx0PVwiYXV0aG9yXCJcbiAgICAgICAgICAgICAgd2lkdGg9XCIyNVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaW1nLWZsdWlkXCIgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGl0ZW0uYXV0aG9yIHwgaWZOYW1lTnVsbFNob3dFbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJUaXRsZVwiPlxuICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL3Jlc291cmNlcy92aWV3JywgaXRlbT8uc2x1Z11cIlxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+e3sgaXRlbS50aXRsZSB9fTwvYT5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlB1Ymxpc2hlZCBBdFwiPnt7IGl0ZW0ucHVibGlzaGVkX2F0IHwgZGF0ZUZvcm1hdCB9fTwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJBY2NlcHRlZCBBdFwiPnt7IGl0ZW0uYWNjZXB0ZWRfYXQgfCBkYXRlRm9ybWF0IH19PC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlZpZXdcIj57eyBpdGVtLnZpZXcgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiQWN0aW9uXCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBsaXN0LWlubGluZSBsaXN0LWFjdGlvblwiPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJFZGl0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIlxuICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiYmxvZ1Blcm1pc3Npb25cIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy8nICsgcm91dGVycy5wb3N0cyArIGl0ZW0/LnNsdWddXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdCBlZGl0LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJEZWxldGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgICpyYmFjQWxsb3c9XCJibG9nUGVybWlzc2lvblwiXG4gICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRGVsZXRlUG9zdChpdGVtKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZVBvc3QoaXRlbSlcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaCBkZWxldGUtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIkluc2lnaHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgICpyYmFjQWxsb3c9XCJpc0Jsb2dBZG1pblwiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8nICsgcm91dGVycy5yZXNvdXJjZXNMaXN0ICsgaXRlbS5pZCArICcvaW5zaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cInsgaW5zaWdodF9uYW1lOiBpdGVtPy50aXRsZSB9XCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZncgZmEtbGlzdCBmYS1sZ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLXRhYmxlPlxuICA8c3BhbiAqbmdJZj1cImRhdGEub2JqZWN0X2NvdW50ICE9PSAwXCIgY2xhc3M9XCJ0b3RhbC1yZWNvcmRzLWNvdW50XCI+e3sgJ0xhYmVsLlRvdGFsJyB8IHRyYW5zbG9jbyB9fToge3sgIGRhdGEub2JqZWN0X2NvdW50IH19PC9zcGFuPlxuICA8ZGl2ICpuZ0lmPVwiZGF0YS5vYmplY3RfY291bnQgPT09IDAgJiYgaXNMb2FkZWRcIj5cbiAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInU2VhcmNoLk5vRGF0YU1lc3NhZ2UnfCB0cmFuc2xvY29cIiBbZGVzY3JpcHRpb25dPVwiJ1NlYXJjaC5Ob0RhdGFEZXNjcmlwdGlvbicgfCB0cmFuc2xvY29cIiAgPlxuICAgIDwvcHctbm8tZGF0YT5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJjb2wtMTIgdGV4dC1jZW50ZXJcIj5cbiAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ1Jlc291cmNlLlBvc3RzLk5vRGF0YU1lc3NhZ2UnIHwgdHJhbnNsb2NvXCJcbiAgICAqbmdJZj1cImRhdGEudW5maWx0ZXJlZF9jb3VudCA9PT0gMCAmJiBpc0xvYWRlZFwiPlxuICA8L3B3LW5vLWRhdGE+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
58
58
|
type: Component,
|
|
59
59
|
args: [{ selector: 'resources-posts-lists-insight', template: "<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n Insights for {{ insightName }}\n </h3>\n <p>\n This page will show, if any, the users that were sent a newsletter digest\n introducing this blog post.\n </p>\n </div>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.post_users\"\n [paginator]=\"data.object_count !== 0\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n [globalFilterFields]=\"['name', 'email', 'joined_at']\"\n [loading]=\"loading\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Users...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n style=\"max-width: 90%\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Resource.Posts.JoinedAt' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"Name\">\n <a [routerLink]=\"['/members', item.slug]\">{{ item.first_name }} {{ item.last_name }}</a>\n </td>\n <td data-head=\"Email\">{{ item.email }}</td>\n <td data-head=\"Joined At\">{{ item.joined_at }}</td>\n </tr>\n </ng-template>\n </p-table>\n <span *ngIf=\"data.object_count !== 0\" class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n</div>\n<div class=\"col-12 text-center\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Resource.Posts.NoDataMessage' | transloco\"\n *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n </pw-no-data>\n</div>\n" }]
|
|
60
60
|
}], ctorParameters: () => [{ type: i1.AdminService }, { type: i0.Injector }] });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLWxpc3RzLWluc2lnaHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3Jlc291cmNlcy9yZXNvdXJjZXMtbGlzdHMtaW5zaWdodC9yZXNvdXJjZXMtbGlzdHMtaW5zaWdodC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcmVzb3VyY2VzL3Jlc291cmNlcy1saXN0cy1pbnNpZ2h0L3Jlc291cmNlcy1saXN0cy1pbnNpZ2h0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7OztBQU9oRSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsZ0JBQWdCO0lBZ0JoRSxZQUNxQixZQUEwQixFQUMzQyxRQUFrQjtRQUVsQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFIQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQWhCL0MsU0FBSSxHQUE0QjtZQUM1QixVQUFVLEVBQUUsRUFBRTtZQUNkLFlBQVksRUFBRSxDQUFDO1lBQ2YsZ0JBQWdCLEVBQUUsQ0FBQztTQUN0QixDQUFDO1FBRUYsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsYUFBUSxHQUFHLEtBQUssQ0FBQztJQVdqQixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM1QyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksQ0FBQyxZQUFZO2FBQ1osbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzthQUM1QixTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDekIsQ0FBQyxDQUFDO2FBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBbERRLDhCQUE4QjttR0FBOUIsOEJBQThCLDRGQ1YzQywyaUZBbUVBOzs0RkR6RGEsOEJBQThCO2tCQUoxQyxTQUFTOytCQUNJLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFkbWluU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9hZG1pbi1tb2R1bGUtdXRpbHMnO1xuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzb3VyY2VJbnNpZ2h0UmVzcG9uc2UsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdyZXNvdXJjZXMtcG9zdHMtbGlzdHMtaW5zaWdodCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Jlc291cmNlcy1saXN0cy1pbnNpZ2h0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZXNMaXN0c0luc2lnaHRDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGRhdGE6IFJlc291cmNlSW5zaWdodFJlc3BvbnNlID0ge1xuICAgICAgICBwb3N0X3VzZXJzOiBbXSxcbiAgICAgICAgb2JqZWN0X2NvdW50OiAwLFxuICAgICAgICB1bmZpbHRlcmVkX2NvdW50OiAwXG4gICAgfTtcblxuICAgIHNlYXJjaFRleHQgPSAnJztcblxuICAgIGxvYWRpbmcgPSB0cnVlO1xuICAgIGlzTG9hZGVkID0gZmFsc2U7XG5cbiAgICBpZDogbnVtYmVyO1xuICAgIGluc2lnaHROYW1lOiBzdHJpbmc7XG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbnNpZ2h0TmFtZSA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ2luc2lnaHRfbmFtZScpO1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgIHRoaXMuaWQgPSBwYXJhbXNbJ2lkJ107XG4gICAgICAgICAgICBpZiAodGhpcy5pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0UG9zdHNJbnNpZ2h0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdldFVzZXJTdWJzY3JpcHRpb24oKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSByZXNwb25zZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQb3N0c0luc2lnaHQoKSB7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0QmxvZ1Bvc3RzSW5zaWdodCh0aGlzLmlkKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtZS1hdXRvIGNvbC14cy02IG10LTRcIj5cbiAgICAgIDxhIGFyaWEtbGFiZWw9XCJOYXZpZ2F0ZSB0byBUYXJnZXRcIlxuICAgICAgICAoY2xpY2spPVwiYmFjaygpXCJcbiAgICAgICAgY2xhc3M9XCJwcmV2aW91c1wiPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctYWx0LWNpcmNsZS1sZWZ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgICAgIDxoMyBjbGFzcz1cIm0tc3ViaGVhZGVyX190aXRsZSBtLXN1YmhlYWRlcl9fdGl0bGUtLXNlcGFyYXRvclwiPlxuICAgICAgICBJbnNpZ2h0cyBmb3Ige3sgaW5zaWdodE5hbWUgfX1cbiAgICAgIDwvaDM+XG4gICAgICA8cD5cbiAgICAgICAgVGhpcyBwYWdlIHdpbGwgc2hvdywgaWYgYW55LCB0aGUgdXNlcnMgdGhhdCB3ZXJlIHNlbnQgYSBuZXdzbGV0dGVyIGRpZ2VzdFxuICAgICAgICBpbnRyb2R1Y2luZyB0aGlzIGJsb2cgcG9zdC5cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgKm5nSWY9XCIhaXNMb2FkZWRcIj5cbiAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicHJpbWVuZy1kYXRhdGFibGUtY29udGFpbmVyIHRhYmxlLXJlc3BvbnNpdmVcIlxuICBbY2xhc3MuaGlkZVRhYmxlXT1cImRhdGEudW5maWx0ZXJlZF9jb3VudCA9PT0gMFwiPlxuICA8cC10YWJsZSAjZHRcbiAgICBbdmFsdWVdPVwiZGF0YS5wb3N0X3VzZXJzXCJcbiAgICBbcGFnaW5hdG9yXT1cImRhdGEub2JqZWN0X2NvdW50ICE9PSAwXCJcbiAgICBbcm93c109XCJQQUdFX1NJWkVcIlxuICAgIFt0b3RhbFJlY29yZHNdPVwiZGF0YS5vYmplY3RfY291bnRcIlxuICAgIChpbnB1dCk9XCJkdC5maWx0ZXJHbG9iYWwoJGV2ZW50LnRhcmdldC52YWx1ZSwgJ2NvbnRhaW5zJylcIlxuICAgIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwiWyduYW1lJywgJ2VtYWlsJywgJ2pvaW5lZF9hdCddXCJcbiAgICBbbG9hZGluZ109XCJsb2FkaW5nXCI+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaCBtdC0yIG1lLTJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgc2l6ZT1cIjUwXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBVc2Vycy4uLlwiXG4gICAgICAgICAgKGlucHV0KT1cImR0LmZpbHRlckdsb2JhbCgkZXZlbnQudGFyZ2V0LnZhbHVlLCAnY29udGFpbnMnKVwiXG4gICAgICAgICAgc3R5bGU9XCJtYXgtd2lkdGg6IDkwJVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiPnt7ICdMYWJlbC5OYW1lJyB8IHRyYW5zbG9jbyB9fTwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIj57eyAnTGFiZWwuRW1haWwnIHwgdHJhbnNsb2NvIH19PC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiPnt7ICdSZXNvdXJjZS5Qb3N0cy5Kb2luZWRBdCcgfCB0cmFuc2xvY28gfX08L3RoPlxuICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCJcbiAgICAgIGxldC1pdGVtPlxuICAgICAgPHRyPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiTmFtZVwiPlxuICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL21lbWJlcnMnLCBpdGVtLnNsdWddXCI+e3sgaXRlbS5maXJzdF9uYW1lIH19IHt7IGl0ZW0ubGFzdF9uYW1lIH19PC9hPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiRW1haWxcIj57eyBpdGVtLmVtYWlsIH19PC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkpvaW5lZCBBdFwiPnt7IGl0ZW0uam9pbmVkX2F0IH19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLXRhYmxlPlxuICA8c3BhbiAqbmdJZj1cImRhdGEub2JqZWN0X2NvdW50ICE9PSAwXCIgY2xhc3M9XCJ0b3RhbC1yZWNvcmRzLWNvdW50XCI+e3sgJ0xhYmVsLlRvdGFsJyB8IHRyYW5zbG9jbyB9fToge3sgIGRhdGEub2JqZWN0X2NvdW50IH19PC9zcGFuPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtY2VudGVyXCI+XG4gIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIFttZXNzYWdlXT1cIidSZXNvdXJjZS5Qb3N0cy5Ob0RhdGFNZXNzYWdlJyB8IHRyYW5zbG9jb1wiXG4gICAgKm5nSWY9XCJkYXRhLnVuZmlsdGVyZWRfY291bnQgPT09IDAgJiYgaXNMb2FkZWRcIj5cbiAgPC9wdy1uby1kYXRhPlxuPC9kaXY+XG4iXX0=
|
package/esm2022/lib/components/subscriptions/subscription-users/subscription-users.component.mjs
CHANGED
|
@@ -143,7 +143,7 @@ export class SubscriptionUsersComponent extends AppBaseComponent {
|
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
145
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SubscriptionUsersComponent, deps: [{ token: i1.SubscriptionService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.AuthService }, { token: i1.WindowService }, { token: i2.AdminService }, { token: i1.CustomToastService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
146
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SubscriptionUsersComponent, selector: "pw-subscription-users", viewQueries: [{ propertyName: "passwordValidationModalForImpersonate", first: true, predicate: ["passwordValidationModalForImpersonate"], descendants: true }, { propertyName: "passwordValidationModalForUserDelete", first: true, predicate: ["passwordValidationModalForUserDelete"], descendants: true }, { propertyName: "passwordValidationModalForRemove2fa", first: true, predicate: ["passwordValidationModalForRemove2fa"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"w-100 text-center mt-3\">\n\t<ng-template [ngIf]=\"!isLoaded\">\n\t\t<p-progressSpinner></p-progressSpinner>\n\t</ng-template>\n</div>\n<div [class.hideTable]=\"totalUnfilteredCount === 0\"\n\tclass=\"primeng-datatable-container table-responsive mt-0\">\n\t<p-table #dt\n\t\t[value]=\"subscriptionMembers\"\n\t\t[paginator]=\"totalRecords !== 0\"\n\t\t[rows]=\"PAGE_SIZE\"\n\t\t[lazy]=\"true\"\n\t\t[totalRecords]=\"totalRecords\"\n\t\t[loading]=\"loading\"\n\t\t[filterDelay]=\"1000\"\n\t\t[customSort]=\"true\"\n\t\t(onLazyLoad)=\"onLazyLoad($event)\">\n\t\t<ng-template pTemplate=\"caption\">\n\t\t\t<div class=\"text-end\">\n\t\t\t\t<i class=\"fa fa-search mt-2 me-2\"\n\t\t\t\t\taria-hidden=\"true\"></i>\n\t\t\t\t<input [(ngModel)]=\"searchText\"\n\t\t\t\t\t(input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tpInputText\n\t\t\t\t\tsize=\"50\"\n\t\t\t\t\tplaceholder=\"Search subscription users...\"\n\t\t\t\t\tclass=\"mw-90\">\n\t\t\t</div>\n\t\t</ng-template>\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t<tr>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"id\">\n\t\t\t\t\t{{ 'Admin.Users.Id' | transloco }}\n\t\t\t\t\t<p-sortIcon field=\"id\"></p-sortIcon>\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"first_name\">\n\t\t\t\t\t{{ 'Label.FirstName' | transloco }}\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"last_name\">\n\t\t\t\t\t{{ 'Label.LastName' | transloco }}\n\t\t\t\t\t<p-sortIcon field=\"last_name\"></p-sortIcon>\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"email\">\n\t\t\t\t\t{{ 'Label.Email' | transloco }}\n\t\t\t\t\t<p-sortIcon field=\"email\"></p-sortIcon>\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"slug\">\n\t\t\t\t\t{{ 'Admin.Subscriptions.NickName' | transloco }}\n\t\t\t\t\t<p-sortIcon field=\"slug\"></p-sortIcon>\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"has_password\">\n\t\t\t\t\t{{ 'Admin.Subscriptions.EmailConfirmed' | transloco }}\n\t\t\t\t\t<p-sortIcon field=\"has_password\"></p-sortIcon>\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"last_sign_in_at\">\n\t\t\t\t\t{{ 'Admin.Subscriptions.LastLogin' | transloco }}\n\t\t\t\t\t<p-sortIcon field=\"last_sign_in_at\"></p-sortIcon>\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\">\n\t\t\t\t\t{{ 'Label.Actions' | transloco }}\n\t\t\t\t</th>\n\t\t\t</tr>\n\t\t</ng-template>\n\t\t<ng-template pTemplate=\"body\"\n\t\t\tlet-user>\n\t\t\t<tr>\n\t\t\t\t<td data-head=\"Id\">{{ user.id }}</td>\n\t\t\t\t<td data-head=\"First Name\">\n\t\t\t\t\t<span class=\"first-name\">{{ user.first_name }}</span>\n\t\t\t\t\t<ng-template [ngIf]=\"subscriptionOwnerUserId === user.id\">\n\t\t\t\t\t\t<span *rbacAllow=\"'Pages.Alpha'\" ngbTooltip=\"Subscription Owner\">\n\t\t\t\t\t\t\t<i class=\"info-icon fas fa-user-tie success\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</td>\n\t\t\t\t<td data-head=\"Last Name\">\n\t\t\t\t\t{{ user.last_name }}\n\t\t\t\t\t<span *ngIf=\"user?.alpha\"\n\t\t\t\t\t\t[pTooltip]=\"'Admin.Users.Tooltip.AlphaIcon'|transloco\"\n\t\t\t\t\t\ttooltipPosition=\"top\">\n\t\t\t\t\t\t<i class=\"fa-regular fa-square-a alpha-beta text-warning\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span *ngIf=\"user?.beta\"\n\t\t\t\t\t\t[pTooltip]=\"'Admin.Users.Tooltip.BetaIcon'|transloco\"\n\t\t\t\t\t\tclass=\"ms-2\"\n\t\t\t\t\t\ttooltipPosition=\"top\">\n\t\t\t\t\t\t<i class=\"fa-regular fa-square-b alpha-beta text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td data-head=\"Email\">{{ user.email }}</td>\n\t\t\t\t<td data-head=\"Nick Name\">\n\t\t\t\t\t<a [routerLink]=\"['/members', user.slug]\">{{ user.slug }}</a>\n\t\t\t\t</td>\n\t\t\t\t<td data-head=\"Email Confirm\">\n\t\t\t\t\t<span [appDynamicBadge]=\"{ itemsArray: [true, false], item: user?.has_password }\"\n\t\t\t\t\t\tcolor=\"success-danger\"\n\t\t\t\t\t\tclass=\"badge\">\n\t\t\t\t\t\t{{ user?.has_password ? 'Yes' : 'No' }}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span *ngIf=\"user?.blocked\"\n\t\t\t\t\t\t[pTooltip]=\"'This user has been blocked'\"\n\t\t\t\t\t\tclass=\"ms-2\"\n\t\t\t\t\t\ttooltipPosition=\"top\">\n\t\t\t\t\t\t<i class=\"fa-solid fa-hexagon-exclamation text-danger hexa-warning\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td data-head=\"Last Login\">\n\t\t\t\t\t<span *ngIf=\"user?.current_sign_in_at; else lastSignin\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{{ user.current_sign_in_at | dateFormat }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span *ngIf=\"user.current_sign_in_at\">\n\t\t\t\t\t\t\t ({{ user.current_sign_in_at | sinceAgo }})\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template #lastSignin>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t{{ user.last_sign_in_at | dateFormat }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span *ngIf=\"user.last_sign_in_at\">\n\t\t\t\t\t\t\t\t ({{ user.last_sign_in_at | sinceAgo }})\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</td>\n\t\t\t\t<td data-head=\"Action\">\n\t\t\t\t\t<ul class=\"list-unstyled list-inline list-action\">\n\t\t\t\t\t\t<li *rbacAllow=\"'Pages.Alpha'\" ngbTooltip=\"Impersonate this user\" class=\"me-2 me-sm-3\">\n\t\t\t\t\t\t<i (click)=\"onImpersonate(user)\" (keydown.enter)=\"onImpersonate(user)\" class=\"fas fa-people-arrows fa-lg\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<ng-template [ngIf]=\"subscriptionOwnerUserId !== user.id\">\n\t\t\t\t\t\t\t<li *rbacAllow=\"'Pages.Alpha'\" ngbTooltip=\"Set this user as new owner\" class=\"me-2 me-sm-3\">\n\t\t\t\t\t\t\t\t<i (click)=\"onChangeOwner(user)\" (keydown.enter)=\"onChangeOwner(user)\" class=\"fa fa-user-crown warning fa-lg\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t<ng-template [ngIf]=\"user?.enable_two_factor_authenticator\">\n\t\t\t\t\t\t\t<li *rbacAllow=\"'Pages.Alpha'\"\n\t\t\t\t\t\t\t\t(click)=\"disable2fa(user?.id)\"\n\t\t\t\t\t\t\t\t(keydown.enter)=\"disable2fa(user?.id)\"\n\t\t\t\t\t\t\t\tngbTooltip=\"Disable 2FA\"\n\t\t\t\t\t\t\t\tclass=\"me-2 me-sm-3 success\">\n\t\t\t\t\t\t\t\t<i class=\"fa fa-lock\"\n\t\t\t\t\t\t\t\t\taria-hidden=\"true\"></i>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t<li [routerLink]=\"[routers.usersDetails + user.id]\"\n\t\t\t\t\t\t\tngbTooltip=\"Edit\"\n\t\t\t\t\t\t\tclass=\"me-2 me-sm-3\">\n\t\t\t\t\t\t\t<i class=\"fa fa-edit edit-icon\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"></i>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li *rbacAllow=\"'Pages.Admin.Users.Delete'\"\n\t\t\t\t\t\t\tngbTooltip=\"Delete\"\n\t\t\t\t\t\t\tclass=\"me-2 me-sm-3\">\n\t\t\t\t\t\t\t<i (click)=\"onDelete(user)\"\n\t\t\t\t\t\t\t\t(keydown.enter)=\"onDelete(user)\"\n\t\t\t\t\t\t\t\tclass=\"fa fa-trash delete-icon\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"></i>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</ng-template>\n\t</p-table>\n\t<div *ngIf=\"totalRecords === 0 && totalUnfilteredCount !== 0\">\n\t\t<pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n\t\t</pw-no-data>\n\t</div>\n\t<span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">\n\t\t{{ 'Label.Total' | transloco }}: {{ totalRecords }}\n\t</span>\n</div>\n<div *ngIf=\"totalUnfilteredCount === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Subscriptions.NoSubscriptionUsersMessage' | transloco\">\n </pw-no-data>\n</div>\n<!-- password validation modal for impersonate -->\n<pw-password-validation #passwordValidationModalForImpersonate\n\t(successEvent)=\"onUserImpersonation($event)\">\n</pw-password-validation>\n<!-- password validation modal for delete user -->\n<pw-password-validation #passwordValidationModalForUserDelete\n\t(successEvent)=\"deleteUser($event)\">\n\t<div class=\"row\">\n\t\t<div class=\"col-12\">\n\t\t\t<p>\n\t\t\t\t{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{{ 'User.Account.Message.ConfirmPassword' | transloco }}\n\t\t\t</p>\n\t\t</div>\n\t</div>\n</pw-password-validation>\n<!-- password validation modal for remove2fa -->\n<pw-password-validation #passwordValidationModalForRemove2fa\n\t(successEvent)=\"remove2fa($event)\">\n</pw-password-validation>\n", styles: [".hexa-warning{font-size:18px;vertical-align:middle}.alpha-beta{font-size:14px}.info-icon{vertical-align:middle;margin-left:5px}.first-name{margin-right:5px}\n"], dependencies: [{ kind: "component", type: i3.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i3.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i6.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.PasswordValidationComponent, selector: "pw-password-validation", outputs: ["successEvent"] }, { kind: "directive", type: i10.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i11.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i9.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i12.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i12.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i13.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i14.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i15.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i15.SinceAgoPipe, name: "sinceAgo" }] }); }
|
|
146
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SubscriptionUsersComponent, selector: "pw-subscription-users", viewQueries: [{ propertyName: "passwordValidationModalForImpersonate", first: true, predicate: ["passwordValidationModalForImpersonate"], descendants: true }, { propertyName: "passwordValidationModalForUserDelete", first: true, predicate: ["passwordValidationModalForUserDelete"], descendants: true }, { propertyName: "passwordValidationModalForRemove2fa", first: true, predicate: ["passwordValidationModalForRemove2fa"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"w-100 text-center mt-3\">\n\t<ng-template [ngIf]=\"!isLoaded\">\n\t\t<p-progressSpinner></p-progressSpinner>\n\t</ng-template>\n</div>\n<div [class.hideTable]=\"totalUnfilteredCount === 0\"\n\tclass=\"primeng-datatable-container table-responsive mt-0\">\n\t<p-table #dt\n\t\t[value]=\"subscriptionMembers\"\n\t\t[paginator]=\"totalRecords !== 0\"\n\t\t[rows]=\"PAGE_SIZE\"\n\t\t[lazy]=\"true\"\n\t\t[totalRecords]=\"totalRecords\"\n\t\t[loading]=\"loading\"\n\t\t[filterDelay]=\"1000\"\n\t\t[customSort]=\"true\"\n\t\t(onLazyLoad)=\"onLazyLoad($event)\">\n\t\t<ng-template pTemplate=\"caption\">\n\t\t\t<div class=\"text-end\">\n\t\t\t\t<i class=\"fa fa-search mt-2 me-2\"\n\t\t\t\t\taria-hidden=\"true\"></i>\n\t\t\t\t<input [(ngModel)]=\"searchText\"\n\t\t\t\t\t(input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tpInputText\n\t\t\t\t\tsize=\"50\"\n\t\t\t\t\tplaceholder=\"Search subscription users...\"\n\t\t\t\t\tclass=\"mw-90\">\n\t\t\t</div>\n\t\t</ng-template>\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t<tr>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"id\">\n\t\t\t\t\t{{ 'Admin.Users.Id' | transloco }}\n\t\t\t\t\t<p-sortIcon field=\"id\"></p-sortIcon>\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"first_name\">\n\t\t\t\t\t{{ 'Label.FirstName' | transloco }}\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"last_name\">\n\t\t\t\t\t{{ 'Label.LastName' | transloco }}\n\t\t\t\t\t<p-sortIcon field=\"last_name\"></p-sortIcon>\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"email\">\n\t\t\t\t\t{{ 'Label.Email' | transloco }}\n\t\t\t\t\t<p-sortIcon field=\"email\"></p-sortIcon>\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"slug\">\n\t\t\t\t\t{{ 'Admin.Subscriptions.NickName' | transloco }}\n\t\t\t\t\t<p-sortIcon field=\"slug\"></p-sortIcon>\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"has_password\">\n\t\t\t\t\t{{ 'Admin.Subscriptions.EmailConfirmed' | transloco }}\n\t\t\t\t\t<p-sortIcon field=\"has_password\"></p-sortIcon>\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\"\n\t\t\t\t\tpSortableColumn=\"last_sign_in_at\">\n\t\t\t\t\t{{ 'Admin.Subscriptions.LastLogin' | transloco }}\n\t\t\t\t\t<p-sortIcon field=\"last_sign_in_at\"></p-sortIcon>\n\t\t\t\t</th>\n\t\t\t\t<th scope=\"true\">\n\t\t\t\t\t{{ 'Label.Actions' | transloco }}\n\t\t\t\t</th>\n\t\t\t</tr>\n\t\t</ng-template>\n\t\t<ng-template pTemplate=\"body\"\n\t\t\tlet-user>\n\t\t\t<tr>\n\t\t\t\t<td data-head=\"Id\">{{ user.id }}</td>\n\t\t\t\t<td data-head=\"First Name\">\n\t\t\t\t\t<span class=\"first-name\">{{ user.first_name }}</span>\n\t\t\t\t\t<ng-template [ngIf]=\"subscriptionOwnerUserId === user.id\">\n\t\t\t\t\t\t<span *rbacAllow=\"'Pages.Alpha'\" ngbTooltip=\"Subscription Owner\">\n\t\t\t\t\t\t\t<i class=\"info-icon fas fa-user-tie success\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</td>\n\t\t\t\t<td data-head=\"Last Name\">\n\t\t\t\t\t{{ user.last_name }}\n\t\t\t\t\t<span *ngIf=\"user?.alpha\"\n\t\t\t\t\t\t[pTooltip]=\"'Admin.Users.Tooltip.AlphaIcon'|transloco\"\n\t\t\t\t\t\ttooltipPosition=\"top\">\n\t\t\t\t\t\t<i class=\"fa-regular fa-square-a alpha-beta text-warning\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span *ngIf=\"user?.beta\"\n\t\t\t\t\t\t[pTooltip]=\"'Admin.Users.Tooltip.BetaIcon'|transloco\"\n\t\t\t\t\t\tclass=\"ms-2\"\n\t\t\t\t\t\ttooltipPosition=\"top\">\n\t\t\t\t\t\t<i class=\"fa-regular fa-square-b alpha-beta text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td data-head=\"Email\">{{ user.email }}</td>\n\t\t\t\t<td data-head=\"Nick Name\">\n\t\t\t\t\t<a [routerLink]=\"['/members', user.slug]\">{{ user.slug }}</a>\n\t\t\t\t</td>\n\t\t\t\t<td data-head=\"Email Confirm\">\n\t\t\t\t\t<span [appDynamicBadge]=\"{ itemsArray: [true, false], item: user?.has_password }\"\n\t\t\t\t\t\tcolor=\"success-danger\"\n\t\t\t\t\t\tclass=\"badge\">\n\t\t\t\t\t\t{{ user?.has_password ? 'Yes' : 'No' }}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span *ngIf=\"user?.blocked\"\n\t\t\t\t\t\t[pTooltip]=\"'This user has been blocked'\"\n\t\t\t\t\t\tclass=\"ms-2\"\n\t\t\t\t\t\ttooltipPosition=\"top\">\n\t\t\t\t\t\t<i class=\"fa-solid fa-hexagon-exclamation text-danger hexa-warning\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td data-head=\"Last Login\">\n\t\t\t\t\t<span *ngIf=\"user?.current_sign_in_at; else lastSignin\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{{ user.current_sign_in_at | dateFormat }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span *ngIf=\"user.current_sign_in_at\">\n\t\t\t\t\t\t\t ({{ user.current_sign_in_at | sinceAgo }})\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template #lastSignin>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t{{ user.last_sign_in_at | dateFormat }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span *ngIf=\"user.last_sign_in_at\">\n\t\t\t\t\t\t\t\t ({{ user.last_sign_in_at | sinceAgo }})\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</td>\n\t\t\t\t<td data-head=\"Action\">\n\t\t\t\t\t<ul class=\"list-unstyled list-inline list-action\">\n\t\t\t\t\t\t<li *rbacAllow=\"'Pages.Alpha'\" ngbTooltip=\"Impersonate this user\" class=\"me-2 me-sm-3\">\n\t\t\t\t\t\t<i (click)=\"onImpersonate(user)\" (keydown.enter)=\"onImpersonate(user)\" class=\"fas fa-people-arrows fa-lg\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<ng-template [ngIf]=\"subscriptionOwnerUserId !== user.id\">\n\t\t\t\t\t\t\t<li *rbacAllow=\"'Pages.Alpha'\" ngbTooltip=\"Set this user as new owner\" class=\"me-2 me-sm-3\">\n\t\t\t\t\t\t\t\t<i (click)=\"onChangeOwner(user)\" (keydown.enter)=\"onChangeOwner(user)\" class=\"fa fa-user-crown warning fa-lg\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t<ng-template [ngIf]=\"user?.enable_two_factor_authenticator\">\n\t\t\t\t\t\t\t<li *rbacAllow=\"'Pages.Alpha'\"\n\t\t\t\t\t\t\t\t(click)=\"disable2fa(user?.id)\"\n\t\t\t\t\t\t\t\t(keydown.enter)=\"disable2fa(user?.id)\"\n\t\t\t\t\t\t\t\tngbTooltip=\"Disable 2FA\"\n\t\t\t\t\t\t\t\tclass=\"me-2 me-sm-3 success\">\n\t\t\t\t\t\t\t\t<i class=\"fa fa-lock\"\n\t\t\t\t\t\t\t\t\taria-hidden=\"true\"></i>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t<li [routerLink]=\"[routers.usersDetails + user.id]\"\n\t\t\t\t\t\t\tngbTooltip=\"Edit\"\n\t\t\t\t\t\t\tclass=\"me-2 me-sm-3\">\n\t\t\t\t\t\t\t<i class=\"fa fa-edit edit-icon\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"></i>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li *rbacAllow=\"'Pages.Admin.Users.Delete'\"\n\t\t\t\t\t\t\tngbTooltip=\"Delete\"\n\t\t\t\t\t\t\tclass=\"me-2 me-sm-3\">\n\t\t\t\t\t\t\t<i (click)=\"onDelete(user)\"\n\t\t\t\t\t\t\t\t(keydown.enter)=\"onDelete(user)\"\n\t\t\t\t\t\t\t\tclass=\"fa fa-trash delete-icon\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"></i>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</ng-template>\n\t</p-table>\n\t<div *ngIf=\"totalRecords === 0 && totalUnfilteredCount !== 0\">\n\t\t<pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n\t\t</pw-no-data>\n\t</div>\n\t<span class=\"total-records-count\" *ngIf=\"totalRecords !== 0\">\n\t\t{{ 'Label.Total' | transloco }}: {{ totalRecords }}\n\t</span>\n</div>\n<div *ngIf=\"totalUnfilteredCount === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Subscriptions.NoSubscriptionUsersMessage' | transloco\">\n </pw-no-data>\n</div>\n<!-- password validation modal for impersonate -->\n<pw-password-validation #passwordValidationModalForImpersonate\n\t(successEvent)=\"onUserImpersonation($event)\">\n</pw-password-validation>\n<!-- password validation modal for delete user -->\n<pw-password-validation #passwordValidationModalForUserDelete\n\t(successEvent)=\"deleteUser($event)\">\n\t<div class=\"row\">\n\t\t<div class=\"col-12\">\n\t\t\t<p>\n\t\t\t\t{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{{ 'User.Account.Message.ConfirmPassword' | transloco }}\n\t\t\t</p>\n\t\t</div>\n\t</div>\n</pw-password-validation>\n<!-- password validation modal for remove2fa -->\n<pw-password-validation #passwordValidationModalForRemove2fa\n\t(successEvent)=\"remove2fa($event)\">\n</pw-password-validation>\n", styles: [".hexa-warning{font-size:18px;vertical-align:middle}.alpha-beta{font-size:14px}.info-icon{vertical-align:middle;margin-left:5px}.first-name{margin-right:5px}\n"], dependencies: [{ kind: "component", type: i3.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i3.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i6.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.PasswordValidationComponent, selector: "pw-password-validation", inputs: ["confirmMessage"], outputs: ["successEvent"] }, { kind: "directive", type: i10.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i11.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i9.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i12.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i12.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i13.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i14.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i15.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i15.SinceAgoPipe, name: "sinceAgo" }] }); }
|
|
147
147
|
}
|
|
148
148
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SubscriptionUsersComponent, decorators: [{
|
|
149
149
|
type: Component,
|
|
@@ -5,18 +5,19 @@ import * as i2 from "../subscriptions-insight.component";
|
|
|
5
5
|
import * as i3 from "../subscription-insight-nps/subscription-insight-nps.component";
|
|
6
6
|
import * as i4 from "../subscription-insight-average-price/subscription-insight-average-price.component";
|
|
7
7
|
import * as i5 from "../subscription-insight-product-session/subscription-insight-product-session.component";
|
|
8
|
-
import * as i6 from "../subscription-insight-
|
|
9
|
-
import * as i7 from "../subscription-insight-
|
|
10
|
-
import * as i8 from "../subscription-insight-
|
|
8
|
+
import * as i6 from "../subscription-insight-user-session/subscription-insight-user-session.component";
|
|
9
|
+
import * as i7 from "../subscription-insight-average-user/subscription-insight-average-user.component";
|
|
10
|
+
import * as i8 from "../subscription-insight-revenue/subscription-insight-revenue.component";
|
|
11
|
+
import * as i9 from "../subscription-insight-churn/subscription-insight-churn.component";
|
|
11
12
|
export class SubscriptionInsightTabsComponent {
|
|
12
13
|
constructor() {
|
|
13
14
|
this.activeTab = 'growth';
|
|
14
15
|
}
|
|
15
16
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SubscriptionInsightTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SubscriptionInsightTabsComponent, selector: "pw-admin-subscription-insight-tabs", ngImport: i0, template: "<div class=\"mb-3 title\">\n <h2 class=\"card-title p-0\">Subscriptions Insight</h2>\n</div>\n\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n [destroyOnHide]=\"true\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'growth'\">\n <a ngbNavLink>Growth</a>\n <ng-template ngbNavContent>\n <pw-admin-subscription-insight></pw-admin-subscription-insight>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'revenues'\">\n <a ngbNavLink>Revenues</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-revenue></pw-subscription-insight-revenue>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'nps'\">\n <a ngbNavLink>Net Promoter Score</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-nps></pw-subscription-insight-nps>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'ap'\">\n <a ngbNavLink>Average Price</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-average-price />\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'ps'\">\n <a ngbNavLink>Product Sessions</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-product-session />\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'aups'\">\n <a ngbNavLink>Subscription Sessions</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-average-user />\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'churn'\">\n <a ngbNavLink>Churn</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-churn />\n </ng-template>\n </li>\n</ul>\n\n<div [ngbNavOutlet]=\"nav\"></div>\n", styles: [".title{height:30px}\n"], dependencies: [{ kind: "directive", type: i1.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i1.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i1.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i1.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i1.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i1.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i1.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i2.InsightComponent, selector: "pw-admin-subscription-insight" }, { kind: "component", type: i3.SubscriptionInsightNpsComponent, selector: "pw-subscription-insight-nps" }, { kind: "component", type: i4.SubscriptionInsightAveragePriceComponent, selector: "pw-subscription-insight-average-price" }, { kind: "component", type: i5.SubscriptionInsightProcuctSessionComponent, selector: "pw-subscription-insight-product-session" }, { kind: "component", type: i6.SubscriptionInsightAverageUserComponent, selector: "pw-subscription-insight-average-user" }, { kind: "component", type:
|
|
17
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SubscriptionInsightTabsComponent, selector: "pw-admin-subscription-insight-tabs", ngImport: i0, template: "<div class=\"mb-3 title\">\n <h2 class=\"card-title p-0\">Subscriptions Insight</h2>\n</div>\n\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n [destroyOnHide]=\"true\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'growth'\">\n <a ngbNavLink>Growth</a>\n <ng-template ngbNavContent>\n <pw-admin-subscription-insight></pw-admin-subscription-insight>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'revenues'\">\n <a ngbNavLink>Revenues</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-revenue></pw-subscription-insight-revenue>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'nps'\">\n <a ngbNavLink>Net Promoter Score</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-nps></pw-subscription-insight-nps>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'ap'\">\n <a ngbNavLink>Average Price</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-average-price />\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'ps'\">\n <a ngbNavLink>Product Sessions</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-product-session />\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'user_sessions'\">\n <a ngbNavLink>User Sessions</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-user-session />\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'aups'\">\n <a ngbNavLink>Subscription Sessions</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-average-user />\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'churn'\">\n <a ngbNavLink>Churn</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-churn />\n </ng-template>\n </li>\n</ul>\n\n<div [ngbNavOutlet]=\"nav\"></div>\n", styles: [".title{height:30px}\n"], dependencies: [{ kind: "directive", type: i1.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i1.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i1.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i1.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i1.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i1.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i1.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i2.InsightComponent, selector: "pw-admin-subscription-insight" }, { kind: "component", type: i3.SubscriptionInsightNpsComponent, selector: "pw-subscription-insight-nps" }, { kind: "component", type: i4.SubscriptionInsightAveragePriceComponent, selector: "pw-subscription-insight-average-price" }, { kind: "component", type: i5.SubscriptionInsightProcuctSessionComponent, selector: "pw-subscription-insight-product-session" }, { kind: "component", type: i6.SubscriptionInsightUserSessionComponent, selector: "pw-subscription-insight-user-session" }, { kind: "component", type: i7.SubscriptionInsightAverageUserComponent, selector: "pw-subscription-insight-average-user" }, { kind: "component", type: i8.SubscriptionInsightRevenueComponent, selector: "pw-subscription-insight-revenue" }, { kind: "component", type: i9.SubscriptionInsightChurnComponent, selector: "pw-subscription-insight-churn" }] }); }
|
|
17
18
|
}
|
|
18
19
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SubscriptionInsightTabsComponent, decorators: [{
|
|
19
20
|
type: Component,
|
|
20
|
-
args: [{ selector: 'pw-admin-subscription-insight-tabs', template: "<div class=\"mb-3 title\">\n <h2 class=\"card-title p-0\">Subscriptions Insight</h2>\n</div>\n\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n [destroyOnHide]=\"true\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'growth'\">\n <a ngbNavLink>Growth</a>\n <ng-template ngbNavContent>\n <pw-admin-subscription-insight></pw-admin-subscription-insight>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'revenues'\">\n <a ngbNavLink>Revenues</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-revenue></pw-subscription-insight-revenue>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'nps'\">\n <a ngbNavLink>Net Promoter Score</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-nps></pw-subscription-insight-nps>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'ap'\">\n <a ngbNavLink>Average Price</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-average-price />\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'ps'\">\n <a ngbNavLink>Product Sessions</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-product-session />\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'aups'\">\n <a ngbNavLink>Subscription Sessions</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-average-user />\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'churn'\">\n <a ngbNavLink>Churn</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-churn />\n </ng-template>\n </li>\n</ul>\n\n<div [ngbNavOutlet]=\"nav\"></div>\n", styles: [".title{height:30px}\n"] }]
|
|
21
|
+
args: [{ selector: 'pw-admin-subscription-insight-tabs', template: "<div class=\"mb-3 title\">\n <h2 class=\"card-title p-0\">Subscriptions Insight</h2>\n</div>\n\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n [destroyOnHide]=\"true\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'growth'\">\n <a ngbNavLink>Growth</a>\n <ng-template ngbNavContent>\n <pw-admin-subscription-insight></pw-admin-subscription-insight>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'revenues'\">\n <a ngbNavLink>Revenues</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-revenue></pw-subscription-insight-revenue>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'nps'\">\n <a ngbNavLink>Net Promoter Score</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-nps></pw-subscription-insight-nps>\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'ap'\">\n <a ngbNavLink>Average Price</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-average-price />\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'ps'\">\n <a ngbNavLink>Product Sessions</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-product-session />\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'user_sessions'\">\n <a ngbNavLink>User Sessions</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-user-session />\n </ng-template>\n </li>\n\n <li [ngbNavItem]=\"'aups'\">\n <a ngbNavLink>Subscription Sessions</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-average-user />\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'churn'\">\n <a ngbNavLink>Churn</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-churn />\n </ng-template>\n </li>\n</ul>\n\n<div [ngbNavOutlet]=\"nav\"></div>\n", styles: [".title{height:30px}\n"] }]
|
|
21
22
|
}] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLWluc2lnaHQtdGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvc3Vic2NyaXB0aW9ucy9zdWJzY3JpcHRpb25zLWluc2lnaHQvc3Vic2NyaXB0aW9uLWluc2lnaHQtdGFicy9zdWJzY3JpcHRpb24taW5zaWdodC10YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC10YWJzL3N1YnNjcmlwdGlvbi1pbnNpZ2h0LXRhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFPMUMsTUFBTSxPQUFPLGdDQUFnQztJQUw3QztRQU1JLGNBQVMsR0FBRyxRQUFRLENBQUM7S0FDeEI7K0dBRlksZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsMEVDUDdDLHl1REFnRUE7OzRGRHpEYSxnQ0FBZ0M7a0JBTDVDLFNBQVM7K0JBQ0ksb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctYWRtaW4tc3Vic2NyaXB0aW9uLWluc2lnaHQtdGFicycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N1YnNjcmlwdGlvbi1pbnNpZ2h0LXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuLi9zdWJzY3JpcHRpb25zLWluc2lnaHQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTdWJzY3JpcHRpb25JbnNpZ2h0VGFic0NvbXBvbmVudCB7XG4gICAgYWN0aXZlVGFiID0gJ2dyb3d0aCc7XG59XG4iLCI8ZGl2IGNsYXNzPVwibWItMyB0aXRsZVwiPlxuICA8aDIgY2xhc3M9XCJjYXJkLXRpdGxlIHAtMFwiPlN1YnNjcmlwdGlvbnMgSW5zaWdodDwvaDI+XG48L2Rpdj5cblxuPHVsIG5nYk5hdlxuICAjbmF2PVwibmdiTmF2XCJcbiAgWyhhY3RpdmVJZCldPVwiYWN0aXZlVGFiXCJcbiAgW2Rlc3Ryb3lPbkhpZGVdPVwidHJ1ZVwiXG4gIGNsYXNzPVwibmF2LXRhYnNcIj5cbiAgPGxpIFtuZ2JOYXZJdGVtXT1cIidncm93dGgnXCI+XG4gICAgPGEgbmdiTmF2TGluaz5Hcm93dGg8L2E+XG4gICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XG4gICAgICA8cHctYWRtaW4tc3Vic2NyaXB0aW9uLWluc2lnaHQ+PC9wdy1hZG1pbi1zdWJzY3JpcHRpb24taW5zaWdodD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2xpPlxuICA8bGkgW25nYk5hdkl0ZW1dPVwiJ3JldmVudWVzJ1wiPlxuICAgIDxhIG5nYk5hdkxpbms+UmV2ZW51ZXM8L2E+XG4gICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XG4gICAgICA8cHctc3Vic2NyaXB0aW9uLWluc2lnaHQtcmV2ZW51ZT48L3B3LXN1YnNjcmlwdGlvbi1pbnNpZ2h0LXJldmVudWU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9saT5cbiAgPGxpIFtuZ2JOYXZJdGVtXT1cIiducHMnXCI+XG4gICAgPGEgbmdiTmF2TGluaz5OZXQgUHJvbW90ZXIgU2NvcmU8L2E+XG4gICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XG4gICAgICA8cHctc3Vic2NyaXB0aW9uLWluc2lnaHQtbnBzPjwvcHctc3Vic2NyaXB0aW9uLWluc2lnaHQtbnBzPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbGk+XG5cbiAgPGxpIFtuZ2JOYXZJdGVtXT1cIidhcCdcIj5cbiAgICA8YSBuZ2JOYXZMaW5rPkF2ZXJhZ2UgUHJpY2U8L2E+XG4gICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XG4gICAgICA8cHctc3Vic2NyaXB0aW9uLWluc2lnaHQtYXZlcmFnZS1wcmljZSAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbGk+XG5cbiAgPGxpIFtuZ2JOYXZJdGVtXT1cIidwcydcIj5cbiAgICA8YSBuZ2JOYXZMaW5rPlByb2R1Y3QgU2Vzc2lvbnM8L2E+XG4gICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XG4gICAgICA8cHctc3Vic2NyaXB0aW9uLWluc2lnaHQtcHJvZHVjdC1zZXNzaW9uIC8+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9saT5cblxuICA8bGkgW25nYk5hdkl0ZW1dPVwiJ3VzZXJfc2Vzc2lvbnMnXCI+XG4gICAgPGEgbmdiTmF2TGluaz5Vc2VyIFNlc3Npb25zPC9hPlxuICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxuICAgICAgPHB3LXN1YnNjcmlwdGlvbi1pbnNpZ2h0LXVzZXItc2Vzc2lvbiAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbGk+XG5cbiAgPGxpIFtuZ2JOYXZJdGVtXT1cIidhdXBzJ1wiPlxuICAgIDxhIG5nYk5hdkxpbms+U3Vic2NyaXB0aW9uIFNlc3Npb25zPC9hPlxuICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxuICAgICAgPHB3LXN1YnNjcmlwdGlvbi1pbnNpZ2h0LWF2ZXJhZ2UtdXNlciAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbGk+XG4gIDxsaSBbbmdiTmF2SXRlbV09XCInY2h1cm4nXCI+XG4gICAgPGEgbmdiTmF2TGluaz5DaHVybjwvYT5cbiAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cbiAgICAgIDxwdy1zdWJzY3JpcHRpb24taW5zaWdodC1jaHVybiAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbGk+XG48L3VsPlxuXG48ZGl2IFtuZ2JOYXZPdXRsZXRdPVwibmF2XCI+PC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component, Injector, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
+
import { AdminService } from '@posiwise/admin-module-utils';
|
|
3
|
+
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
4
|
+
import { PermissionService } from '@posiwise/common-services';
|
|
5
|
+
import { SUBSCRIPTION_ANALYTICS_TYPES } from '@posiwise/common-utilities';
|
|
6
|
+
import { HelperService } from '@posiwise/helper-service';
|
|
7
|
+
import { handleDateRangeSelection } from '@posiwise/utils';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@posiwise/admin-module-utils";
|
|
10
|
+
import * as i2 from "angular-plotly.js";
|
|
11
|
+
import * as i3 from "@angular/common";
|
|
12
|
+
import * as i4 from "@posiwise/shared-components";
|
|
13
|
+
import * as i5 from "primeng/progressspinner";
|
|
14
|
+
export class SubscriptionInsightUserSessionComponent extends AppBaseComponent {
|
|
15
|
+
constructor(adminService, injector, cdr) {
|
|
16
|
+
super(injector);
|
|
17
|
+
this.adminService = adminService;
|
|
18
|
+
this.cdr = cdr;
|
|
19
|
+
this.feedbacks = [];
|
|
20
|
+
this.loading = true;
|
|
21
|
+
this.isLoaded = false;
|
|
22
|
+
this.page = 1;
|
|
23
|
+
}
|
|
24
|
+
ngAfterViewChecked() {
|
|
25
|
+
this.cdr.detectChanges();
|
|
26
|
+
}
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
this.subscriptionId = PermissionService.selectedSubscription?.id;
|
|
29
|
+
this.dateRanges = HelperService.initializeDateRanges();
|
|
30
|
+
this.selectedDateRange = '';
|
|
31
|
+
this.getChartData();
|
|
32
|
+
this.userStore().subscribe(response => {
|
|
33
|
+
this.currentUser = response;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
getChartData() {
|
|
37
|
+
this.graphLoading = true;
|
|
38
|
+
this.adminService
|
|
39
|
+
.getSubscriptionAnalytics(SUBSCRIPTION_ANALYTICS_TYPES.USER_SESSION_COUNT, this.subscriptionId, this.selectedDateRange?.startDate
|
|
40
|
+
? this.selectedDateRange.startDate.format('YYYY-MM-DD')
|
|
41
|
+
: '', this.selectedDateRange?.endDate
|
|
42
|
+
? this.selectedDateRange.endDate.format('YYYY-MM-DD')
|
|
43
|
+
: '')
|
|
44
|
+
.subscribe(response => {
|
|
45
|
+
this.graph = response;
|
|
46
|
+
})
|
|
47
|
+
.add(() => {
|
|
48
|
+
this.graphLoading = false;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
onDateRangeSelect(event) {
|
|
52
|
+
this.selectedDateRange = handleDateRangeSelection(event, this.selectedDateRange);
|
|
53
|
+
this.getChartData();
|
|
54
|
+
}
|
|
55
|
+
ngOnDestroy() {
|
|
56
|
+
super.ngOnDestroy();
|
|
57
|
+
}
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SubscriptionInsightUserSessionComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SubscriptionInsightUserSessionComponent, selector: "pw-subscription-insight-user-session", viewQueries: [{ propertyName: "content", first: true, predicate: ["showComment"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"graphLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"true\"></plotly-plot>\n</ng-template>\n", dependencies: [{ kind: "component", type: i2.PlotlyComponent, selector: "plotly-plot", inputs: ["data", "layout", "config", "frames", "style", "theme", "divId", "revision", "className", "debug", "useResizeHandler", "updateOnLayoutChange", "updateOnDataChange", "updateOnlyWithRevision"], outputs: ["initialized", "update", "purge", "error", "afterExport", "afterPlot", "animated", "animatingFrame", "animationInterrupted", "autoSize", "beforeExport", "beforeHover", "buttonClicked", "click", "plotlyClick", "clickAnnotation", "deselect", "doubleClick", "framework", "hover", "legendClick", "legendDoubleClick", "react", "relayout", "relayouting", "restyle", "redraw", "selected", "selecting", "sliderChange", "sliderEnd", "sliderStart", "sunburstclick", "transitioning", "transitionInterrupted", "unhover", "treemapclick", "webglcontextlost"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DateRangePickerComponent, selector: "app-date-picker", inputs: ["selectedDateRange", "dateRanges"], outputs: ["dateRangeChange"] }, { kind: "component", type: i5.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }] }); }
|
|
60
|
+
}
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SubscriptionInsightUserSessionComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{ selector: 'pw-subscription-insight-user-session', template: "<app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"graphLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"true\"></plotly-plot>\n</ng-template>\n" }]
|
|
64
|
+
}], ctorParameters: () => [{ type: i1.AdminService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { content: [{
|
|
65
|
+
type: ViewChild,
|
|
66
|
+
args: ['showComment', { static: true }]
|
|
67
|
+
}] } });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLWluc2lnaHQtdXNlci1zZXNzaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC11c2VyLXNlc3Npb24vc3Vic2NyaXB0aW9uLWluc2lnaHQtdXNlci1zZXNzaW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC11c2VyLXNlc3Npb24vc3Vic2NyaXB0aW9uLWluc2lnaHQtdXNlci1zZXNzaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFFBQVEsRUFHUixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQVUsNEJBQTRCLEVBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUFRM0QsTUFBTSxPQUFPLHVDQUNULFNBQVEsZ0JBQWdCO0lBNkJ4QixZQUNxQixZQUEwQixFQUMzQyxRQUFrQixFQUNELEdBQXNCO1FBRXZDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUpDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRTFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBdkIzQyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWYsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVmLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsU0FBSSxHQUFHLENBQUMsQ0FBQztJQW9CVCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxZQUFZO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZO2FBQ1osd0JBQXdCLENBQ3JCLDRCQUE0QixDQUFDLGtCQUFrQixFQUMvQyxJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsU0FBUztZQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxFQUFFLEVBQ1IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU87WUFDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUNyRCxDQUFDLENBQUMsRUFBRSxDQUNYO2FBQ0EsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQzFCLENBQUMsQ0FBQzthQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUEyRDtRQUN6RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRVEsV0FBVztRQUNoQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0FoRlEsdUNBQXVDO21HQUF2Qyx1Q0FBdUMseU5DeEJwRCxpZkFjQTs7NEZEVWEsdUNBQXVDO2tCQUpuRCxTQUFTOytCQUNJLHNDQUFzQzt3SUFPSixPQUFPO3NCQUFsRCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQbG90bHksIFNVQlNDUklQVElPTl9BTkFMWVRJQ1NfVFlQRVMsIFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7IGhhbmRsZURhdGVSYW5nZVNlbGVjdGlvbiB9IGZyb20gJ0Bwb3Npd2lzZS91dGlscyc7XG5cbmltcG9ydCB7IENvbW1lbnRDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZS9hZG1pbi1tb2R1bGUtc2hhcmVkLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctc3Vic2NyaXB0aW9uLWluc2lnaHQtdXNlci1zZXNzaW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3Vic2NyaXB0aW9uLWluc2lnaHQtdXNlci1zZXNzaW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTdWJzY3JpcHRpb25JbnNpZ2h0VXNlclNlc3Npb25Db21wb25lbnRcbiAgICBleHRlbmRzIEFwcEJhc2VDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkXG57XG4gICAgQFZpZXdDaGlsZCgnc2hvd0NvbW1lbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50OiBUZW1wbGF0ZVJlZjxDb21tZW50Q29udGV4dD47XG5cbiAgICBncmFwaDogUGxvdGx5LkZpZ3VyZTtcblxuICAgIHRvdGFsUmVjb3JkczogbnVtYmVyO1xuXG4gICAgZmVlZGJhY2tzID0gW107XG5cbiAgICBsb2FkaW5nID0gdHJ1ZTtcblxuICAgIGlzTG9hZGVkID0gZmFsc2U7XG5cbiAgICBwYWdlID0gMTtcblxuICAgIGdyYXBoTG9hZGluZzogYm9vbGVhbjtcblxuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG5cbiAgICBjdXJyZW50VXNlcjogVXNlcjtcblxuICAgIGNvbW1lbnRUb1Nob3c6IHN0cmluZztcblxuICAgIHNlbGVjdGVkRGF0ZVJhbmdlO1xuXG4gICAgZGF0ZVJhbmdlcztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbj8uaWQ7XG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlcyA9IEhlbHBlclNlcnZpY2UuaW5pdGlhbGl6ZURhdGVSYW5nZXMoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9ICcnO1xuICAgICAgICB0aGlzLmdldENoYXJ0RGF0YSgpO1xuICAgICAgICB0aGlzLnVzZXJTdG9yZSgpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRVc2VyID0gcmVzcG9uc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2hhcnREYXRhKCkge1xuICAgICAgICB0aGlzLmdyYXBoTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0U3Vic2NyaXB0aW9uQW5hbHl0aWNzKFxuICAgICAgICAgICAgICAgIFNVQlNDUklQVElPTl9BTkFMWVRJQ1NfVFlQRVMuVVNFUl9TRVNTSU9OX0NPVU5ULFxuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZT8uc3RhcnREYXRlXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5zdGFydERhdGUuZm9ybWF0KCdZWVlZLU1NLUREJylcbiAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlPy5lbmREYXRlXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZERhdGVSYW5nZS5lbmREYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpXG4gICAgICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JhcGggPSByZXNwb25zZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXBoTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25EYXRlUmFuZ2VTZWxlY3QoZXZlbnQ6IHsgc3RhcnREYXRlOiBtb21lbnQuTW9tZW50OyBlbmREYXRlOiBtb21lbnQuTW9tZW50IH0pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IGhhbmRsZURhdGVSYW5nZVNlbGVjdGlvbihldmVudCwgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSk7XG4gICAgICAgIHRoaXMuZ2V0Q2hhcnREYXRhKCk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPGFwcC1kYXRlLXBpY2tlclxuICBbc2VsZWN0ZWREYXRlUmFuZ2VdPVwic2VsZWN0ZWREYXRlUmFuZ2VcIlxuICBbZGF0ZVJhbmdlc109XCJkYXRlUmFuZ2VzXCJcbiAgKGRhdGVSYW5nZUNoYW5nZSk9XCJvbkRhdGVSYW5nZVNlbGVjdCgkZXZlbnQpXCI+XG48L2FwcC1kYXRlLXBpY2tlcj5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCIgKm5nSWY9XCJncmFwaExvYWRpbmdcIj5cbiAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSBbbmdJZl09XCJncmFwaFwiPlxuICA8cGxvdGx5LXBsb3QgW2RhdGFdPVwiZ3JhcGg/LmRhdGFcIlxuICAgIFtjb25maWddPVwiZ3JhcGg/LmNvbmZpZ1wiXG4gICAgW2xheW91dF09XCJncmFwaD8ubGF5b3V0XCIgW3VzZVJlc2l6ZUhhbmRsZXJdPVwidHJ1ZVwiPjwvcGxvdGx5LXBsb3Q+XG48L25nLXRlbXBsYXRlPlxuIl19
|