@skyux/data-manager 5.0.1 → 5.5.0-alpha.0
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/README.md +6 -4
- package/bundles/skyux-data-manager.umd.js +171 -126
- package/documentation.json +179 -121
- package/esm2015/index.js +22 -0
- package/esm2015/index.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-manager-column-picker/data-manager-column-picker-context.js +9 -0
- package/esm2015/lib/modules/data-manager/data-manager-column-picker/data-manager-column-picker-context.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-manager-column-picker/data-manager-column-picker-impl.service.js +14 -0
- package/esm2015/lib/modules/data-manager/data-manager-column-picker/data-manager-column-picker-impl.service.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-manager-column-picker/data-manager-column-picker.component.js +164 -0
- package/esm2015/lib/modules/data-manager/data-manager-column-picker/data-manager-column-picker.component.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-manager-column-picker/data-manager-column-picker.service.js +16 -0
- package/esm2015/lib/modules/data-manager/data-manager-column-picker/data-manager-column-picker.service.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-manager-filter-context.js +3 -0
- package/esm2015/lib/modules/data-manager/data-manager-filter-context.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar-left-item.component.js +20 -0
- package/esm2015/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar-left-item.component.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar-primary-item.component.js +20 -0
- package/esm2015/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar-primary-item.component.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar-right-item.component.js +20 -0
- package/esm2015/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar-right-item.component.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar-section.component.js +20 -0
- package/esm2015/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar-section.component.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar.component.js +185 -0
- package/esm2015/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar.component.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-manager.component.js +84 -0
- package/esm2015/lib/modules/data-manager/data-manager.component.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-manager.module.js +123 -0
- package/esm2015/lib/modules/data-manager/data-manager.module.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-manager.service.js +276 -0
- package/esm2015/lib/modules/data-manager/data-manager.service.js.map +1 -0
- package/esm2015/lib/modules/data-manager/data-view.component.js +52 -0
- package/esm2015/lib/modules/data-manager/data-view.component.js.map +1 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-column-picker-option.js +2 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-column-picker-option.js.map +1 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-column-picker-sort-strategy.js +6 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-column-picker-sort-strategy.js.map +1 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-config.js +2 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-config.js.map +1 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-filter-data.js +2 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-filter-data.js.map +1 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-init-args.js +2 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-init-args.js.map +1 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-sort-option.js +2 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-sort-option.js.map +1 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-state-change.js +11 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-state-change.js.map +1 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-state-options.js +2 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-state-options.js.map +1 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-state-update-filter-args.js +2 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-state-update-filter-args.js.map +1 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-state.js +49 -0
- package/esm2015/lib/modules/data-manager/models/data-manager-state.js.map +1 -0
- package/esm2015/lib/modules/data-manager/models/data-view-config.js +2 -0
- package/esm2015/lib/modules/data-manager/models/data-view-config.js.map +1 -0
- package/esm2015/lib/modules/data-manager/models/data-view-state-options.js +2 -0
- package/esm2015/lib/modules/data-manager/models/data-view-state-options.js.map +1 -0
- package/esm2015/lib/modules/data-manager/models/data-view-state.js +19 -0
- package/esm2015/lib/modules/data-manager/models/data-view-state.js.map +1 -0
- package/esm2015/lib/modules/shared/sky-data-manager-resources.module.js +57 -0
- package/esm2015/lib/modules/shared/sky-data-manager-resources.module.js.map +1 -0
- package/esm2015/skyux-data-manager.js +2 -2
- package/esm2015/skyux-data-manager.js.map +1 -0
- package/fesm2015/skyux-data-manager.js +191 -144
- package/fesm2015/skyux-data-manager.js.map +1 -1
- package/index.d.ts +19 -0
- package/{modules → lib/modules}/data-manager/data-manager-column-picker/data-manager-column-picker-context.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/data-manager-column-picker/data-manager-column-picker-impl.service.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/data-manager-column-picker/data-manager-column-picker.component.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/data-manager-column-picker/data-manager-column-picker.service.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/data-manager-filter-context.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/data-manager-toolbar/data-manager-toolbar-left-item.component.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/data-manager-toolbar/data-manager-toolbar-primary-item.component.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/data-manager-toolbar/data-manager-toolbar-right-item.component.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/data-manager-toolbar/data-manager-toolbar-section.component.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/data-manager-toolbar/data-manager-toolbar.component.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/data-manager.component.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/data-manager.module.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/data-manager.service.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/data-view.component.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/models/data-manager-column-picker-option.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/models/data-manager-column-picker-sort-strategy.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/models/data-manager-config.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/models/data-manager-filter-data.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/models/data-manager-init-args.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/models/data-manager-sort-option.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/models/data-manager-state-change.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/models/data-manager-state-options.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/models/data-manager-state-update-filter-args.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/models/data-manager-state.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/models/data-view-config.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/models/data-view-state-options.d.ts +0 -0
- package/{modules → lib/modules}/data-manager/models/data-view-state.d.ts +0 -0
- package/{modules → lib/modules}/shared/sky-data-manager-resources.module.d.ts +0 -0
- package/package.json +10 -10
- package/skyux-data-manager.d.ts +1 -1
- package/LICENSE +0 -21
- package/bundles/skyux-data-manager.umd.js.map +0 -1
- package/esm2015/modules/data-manager/data-manager-column-picker/data-manager-column-picker-context.js +0 -9
- package/esm2015/modules/data-manager/data-manager-column-picker/data-manager-column-picker-impl.service.js +0 -14
- package/esm2015/modules/data-manager/data-manager-column-picker/data-manager-column-picker.component.js +0 -155
- package/esm2015/modules/data-manager/data-manager-column-picker/data-manager-column-picker.service.js +0 -16
- package/esm2015/modules/data-manager/data-manager-filter-context.js +0 -3
- package/esm2015/modules/data-manager/data-manager-toolbar/data-manager-toolbar-left-item.component.js +0 -20
- package/esm2015/modules/data-manager/data-manager-toolbar/data-manager-toolbar-primary-item.component.js +0 -20
- package/esm2015/modules/data-manager/data-manager-toolbar/data-manager-toolbar-right-item.component.js +0 -20
- package/esm2015/modules/data-manager/data-manager-toolbar/data-manager-toolbar-section.component.js +0 -20
- package/esm2015/modules/data-manager/data-manager-toolbar/data-manager-toolbar.component.js +0 -173
- package/esm2015/modules/data-manager/data-manager.component.js +0 -80
- package/esm2015/modules/data-manager/data-manager.module.js +0 -125
- package/esm2015/modules/data-manager/data-manager.service.js +0 -261
- package/esm2015/modules/data-manager/data-view.component.js +0 -50
- package/esm2015/modules/data-manager/models/data-manager-column-picker-option.js +0 -2
- package/esm2015/modules/data-manager/models/data-manager-column-picker-sort-strategy.js +0 -6
- package/esm2015/modules/data-manager/models/data-manager-config.js +0 -2
- package/esm2015/modules/data-manager/models/data-manager-filter-data.js +0 -2
- package/esm2015/modules/data-manager/models/data-manager-init-args.js +0 -2
- package/esm2015/modules/data-manager/models/data-manager-sort-option.js +0 -2
- package/esm2015/modules/data-manager/models/data-manager-state-change.js +0 -11
- package/esm2015/modules/data-manager/models/data-manager-state-options.js +0 -2
- package/esm2015/modules/data-manager/models/data-manager-state-update-filter-args.js +0 -2
- package/esm2015/modules/data-manager/models/data-manager-state.js +0 -49
- package/esm2015/modules/data-manager/models/data-view-config.js +0 -2
- package/esm2015/modules/data-manager/models/data-view-state-options.js +0 -2
- package/esm2015/modules/data-manager/models/data-view-state.js +0 -19
- package/esm2015/modules/shared/sky-data-manager-resources.module.js +0 -41
- package/esm2015/public-api.js +0 -22
- package/public-api.d.ts +0 -19
package/esm2015/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar.component.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"data-manager-toolbar.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/components/data-manager/src/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar.component.ts","../../../../../../../../../libs/components/data-manager/src/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyCheckboxChange } from '@skyux/forms';\n\nimport { SkyModalCloseArgs, SkyModalService } from '@skyux/modals';\n\nimport { SkyDataManagerService } from '../data-manager.service';\n\nimport { SkyDataManagerColumnPickerContext } from '../data-manager-column-picker/data-manager-column-picker-context';\n\nimport { SkyDataManagerColumnPickerOption } from '../models/data-manager-column-picker-option';\n\nimport { SkyDataManagerColumnPickerService } from '../data-manager-column-picker/data-manager-column-picker.service';\n\nimport { SkyDataManagerConfig } from '../models/data-manager-config';\n\nimport { SkyDataManagerSortOption } from '../models/data-manager-sort-option';\n\nimport { SkyDataManagerState } from '../models/data-manager-state';\n\nimport { SkyDataViewConfig } from '../models/data-view-config';\n\nimport { SkyDataManagerFilterModalContext } from '../data-manager-filter-context';\n\n/**\n * Renders a `sky-toolbar` with the contents specified by the active view's `SkyDataViewConfig`\n * and the `SkyDataManagerToolbarLeftItemsComponent`, `SkyDataManagerToolbarRightItemsComponent`,\n * and `SkyDataManagerToolbarSectionComponent` wrappers.\n */\n@Component({\n selector: 'sky-data-manager-toolbar',\n templateUrl: './data-manager-toolbar.component.html',\n styleUrls: ['./data-manager-toolbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyDataManagerToolbarComponent implements OnDestroy, OnInit {\n public get activeSortOptionId(): string {\n const activeSortOption = this.dataState && this.dataState.activeSortOption;\n return activeSortOption && activeSortOption.id;\n }\n\n public get activeView(): SkyDataViewConfig {\n return this._activeView;\n }\n\n public set activeView(value: SkyDataViewConfig) {\n this._activeView = value;\n this.changeDetector.markForCheck();\n }\n\n public get dataManagerConfig(): SkyDataManagerConfig {\n return this._dataManagerConfig;\n }\n\n public set dataManagerConfig(value: SkyDataManagerConfig) {\n this._dataManagerConfig = value;\n this.changeDetector.markForCheck();\n }\n\n public get dataState(): SkyDataManagerState {\n return this._dataState;\n }\n\n public set dataState(value: SkyDataManagerState) {\n this._dataState = value;\n this.dataManagerService.updateDataState(value, this._source);\n }\n\n public get views(): SkyDataViewConfig[] {\n return this._views;\n }\n\n public set views(value: SkyDataViewConfig[]) {\n this._views = value;\n this.changeDetector.markForCheck();\n }\n\n public onlyShowSelected: boolean;\n\n // the source to provide for data state changes\n private _source = 'toolbar';\n private _activeView: SkyDataViewConfig;\n private _dataManagerConfig: SkyDataManagerConfig;\n private _dataState: SkyDataManagerState;\n private _ngUnsubscribe = new Subject();\n private _views: SkyDataViewConfig[] = [];\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private dataManagerService: SkyDataManagerService,\n private modalService: SkyModalService,\n private columnPickerService: SkyDataManagerColumnPickerService\n ) {}\n\n public ngOnInit(): void {\n this.dataManagerService\n .getActiveViewIdUpdates()\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((activeViewId) => {\n /* istanbul ignore else */\n if (activeViewId) {\n this.activeView = this.dataManagerService.getViewById(activeViewId);\n this.changeDetector.markForCheck();\n }\n });\n\n this.dataManagerService\n .getDataViewsUpdates()\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((views) => {\n this.views = views;\n });\n\n this.dataManagerService\n .getDataStateUpdates(this._source)\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((dataState) => {\n this._dataState = dataState;\n this.onlyShowSelected = dataState.onlyShowSelected;\n this.changeDetector.markForCheck();\n });\n\n this.dataManagerService\n .getDataManagerConfigUpdates()\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((config) => {\n this.dataManagerConfig = config;\n });\n }\n\n public ngOnDestroy(): void {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n\n public sortSelected(sortOption: SkyDataManagerSortOption): void {\n this.dataState.activeSortOption = sortOption;\n this.dataManagerService.updateDataState(this.dataState, this._source);\n }\n\n public onViewChange(viewId: string): void {\n this.dataManagerService.updateActiveViewId(viewId);\n }\n\n public searchApplied(text: string): void {\n this.dataState.searchText = text;\n this.dataManagerService.updateDataState(this.dataState, this._source);\n }\n\n public filterButtonClicked(): void {\n const context = new SkyDataManagerFilterModalContext();\n const filterModal =\n this.dataManagerConfig && this.dataManagerConfig.filterModalComponent;\n\n context.filterData = this.dataState && this.dataState.filterData;\n\n const options: any = {\n providers: [\n { provide: SkyDataManagerFilterModalContext, useValue: context },\n ],\n };\n\n if (filterModal) {\n const modalInstance = this.modalService.open(filterModal, options);\n\n modalInstance.closed.subscribe((result: SkyModalCloseArgs) => {\n if (result.reason === 'save') {\n this.dataState.filterData = result.data;\n this.dataManagerService.updateDataState(this.dataState, this._source);\n }\n });\n }\n }\n\n public openColumnPicker(): void {\n const columnOptions = this.activeView && this.activeView.columnOptions;\n const viewState = this.dataState.getViewStateById(this.activeView.id);\n const context = new SkyDataManagerColumnPickerContext(\n columnOptions,\n viewState.displayedColumnIds\n );\n\n if (this.activeView.columnPickerSortStrategy) {\n context.columnPickerSortStrategy =\n this.activeView.columnPickerSortStrategy;\n }\n\n const options: any = {\n providers: [\n { provide: SkyDataManagerColumnPickerContext, useValue: context },\n ],\n };\n\n const modalInstance = this.modalService.open(\n this.columnPickerService.getComponentType(),\n options\n );\n\n modalInstance.closed.subscribe((result: SkyModalCloseArgs) => {\n if (result.reason === 'save') {\n const displayedColumnIds = result.data.map(\n (col: SkyDataManagerColumnPickerOption) => col.id\n );\n\n viewState.displayedColumnIds = displayedColumnIds;\n this.dataState = this.dataState.addOrUpdateView(\n this.activeView.id,\n viewState\n );\n }\n });\n }\n\n public selectAll(): void {\n /* istanbul ignore else */\n if (this.activeView.onSelectAllClick) {\n this.activeView.onSelectAllClick();\n }\n }\n\n public clearAll(): void {\n /* istanbul ignore else */\n if (this.activeView.onClearAllClick) {\n this.activeView.onClearAllClick();\n }\n }\n\n public onOnlyShowSelected(event: SkyCheckboxChange): void {\n this.dataState.onlyShowSelected = event.checked;\n this.dataManagerService.updateDataState(this.dataState, this._source);\n }\n}\n","<div class=\"sky-data-manager-toolbar\">\n <sky-toolbar>\n <sky-toolbar-section>\n <ng-content select=\"sky-data-manager-toolbar-primary-item\"></ng-content>\n\n <sky-toolbar-item *ngIf=\"activeView?.filterButtonEnabled\">\n <sky-filter-button\n [showButtonText]=\"activeView?.showFilterButtonText\"\n (filterButtonClick)=\"filterButtonClicked()\"\n >\n </sky-filter-button>\n </sky-toolbar-item>\n\n <sky-toolbar-item *ngIf=\"activeView?.sortEnabled\">\n <sky-sort [showButtonText]=\"activeView?.showSortButtonText\">\n <sky-sort-item\n *ngFor=\"let item of dataManagerConfig?.sortOptions\"\n [active]=\"activeSortOptionId && activeSortOptionId === item.id\"\n (itemSelect)=\"sortSelected(item)\"\n >\n {{ item.label }}\n </sky-sort-item>\n </sky-sort>\n </sky-toolbar-item>\n\n <sky-toolbar-item *ngIf=\"activeView?.columnPickerEnabled\">\n <button\n class=\"sky-btn sky-btn-default sky-col-picker-btn\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_data_manager_columns_button_title' | skyLibResources\n \"\n [attr.title]=\"\n 'skyux_data_manager_columns_button_title' | skyLibResources\n \"\n (click)=\"openColumnPicker()\"\n >\n <sky-icon icon=\"columns\"></sky-icon>\n <span class=\"sky-column-selector-action-btn-text\">\n {{ 'skyux_data_manager_columns_button_title' | skyLibResources }}\n </span>\n </button>\n </sky-toolbar-item>\n\n <ng-content select=\"sky-data-manager-toolbar-left-item\"></ng-content>\n\n <sky-toolbar-item *ngIf=\"activeView?.searchEnabled\">\n <sky-search\n [expandMode]=\"activeView?.searchExpandMode\"\n [placeholderText]=\"activeView?.searchPlaceholderText\"\n [searchText]=\"dataState?.searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n\n <sky-toolbar-view-actions>\n <ng-content select=\"sky-data-manager-toolbar-right-item\"></ng-content>\n <sky-radio-group\n *ngIf=\"activeView && views && views.length > 1\"\n [ariaLabel]=\"'data view switcher'\"\n class=\"sky-switch-icon-group\"\n >\n <sky-radio\n *ngFor=\"let view of views\"\n [attr.name]=\"view.name\"\n [attr.aria-label]=\"view.name\"\n [icon]=\"view.icon\"\n [value]=\"view.id\"\n [label]=\"view.name\"\n [(ngModel)]=\"activeView.id\"\n (change)=\"onViewChange(view.id)\"\n >\n </sky-radio>\n </sky-radio-group>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n <ng-content select=\"sky-data-manager-toolbar-section\"></ng-content>\n </sky-toolbar>\n\n <sky-toolbar\n *ngIf=\"activeView?.multiselectToolbarEnabled\"\n class=\"sky-data-manager-multiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-data-manager-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{ 'skyux_data_manager_select_all_button_title' | skyLibResources }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-data-manager-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{ 'skyux_data_manager_clear_all_button_title' | skyLibResources }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [checked]=\"onlyShowSelected\"\n (change)=\"onOnlyShowSelected($event)\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_data_manager_show_selected_option_title' | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n</div>\n"]}
|
@@ -0,0 +1,84 @@
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, } from '@angular/core';
|
2
|
+
import { Subject } from 'rxjs';
|
3
|
+
import { takeUntil } from 'rxjs/operators';
|
4
|
+
import { SkyDataManagerService } from './data-manager.service';
|
5
|
+
import { SkyBackToTopMessageType } from '@skyux/layout';
|
6
|
+
import * as i0 from "@angular/core";
|
7
|
+
import * as i1 from "./data-manager.service";
|
8
|
+
import * as i2 from "@angular/common";
|
9
|
+
import * as i3 from "@skyux/layout";
|
10
|
+
import * as i4 from "@skyux/core";
|
11
|
+
/**
|
12
|
+
* The top-level data manager component. Provide `SkyDataManagerService` at this level.
|
13
|
+
*/
|
14
|
+
export class SkyDataManagerComponent {
|
15
|
+
constructor(changeDetection, dataManagerService) {
|
16
|
+
this.changeDetection = changeDetection;
|
17
|
+
this.dataManagerService = dataManagerService;
|
18
|
+
this.backToTopController = new Subject();
|
19
|
+
this.backToTopOptions = {
|
20
|
+
buttonHidden: true,
|
21
|
+
};
|
22
|
+
this._isInitialized = false;
|
23
|
+
this.allViewkeeperClasses = {};
|
24
|
+
this.ngUnsubscribe = new Subject();
|
25
|
+
this.sourceId = 'dataManagerComponent';
|
26
|
+
}
|
27
|
+
get currentViewkeeperClasses() {
|
28
|
+
const dataManagerClasses = ['.sky-data-manager-toolbar'];
|
29
|
+
let allClasses = dataManagerClasses;
|
30
|
+
if (this._currentViewkeeperClasses) {
|
31
|
+
allClasses = dataManagerClasses.concat(this._currentViewkeeperClasses);
|
32
|
+
}
|
33
|
+
return allClasses;
|
34
|
+
}
|
35
|
+
set currentViewkeeperClasses(value) {
|
36
|
+
this._currentViewkeeperClasses = value;
|
37
|
+
this.changeDetection.markForCheck();
|
38
|
+
}
|
39
|
+
get isInitialized() {
|
40
|
+
return this._isInitialized;
|
41
|
+
}
|
42
|
+
set isInitialized(value) {
|
43
|
+
this._isInitialized = value;
|
44
|
+
this.changeDetection.markForCheck();
|
45
|
+
}
|
46
|
+
ngOnInit() {
|
47
|
+
this.dataManagerService
|
48
|
+
.getDataStateUpdates(this.sourceId)
|
49
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
50
|
+
.subscribe(() => (this.isInitialized = true));
|
51
|
+
this.dataManagerService.viewkeeperClasses
|
52
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
53
|
+
.subscribe((classes) => {
|
54
|
+
this.allViewkeeperClasses = classes;
|
55
|
+
this.currentViewkeeperClasses = classes[this.activeViewId];
|
56
|
+
});
|
57
|
+
this.dataManagerService
|
58
|
+
.getActiveViewIdUpdates()
|
59
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
60
|
+
.subscribe((activeViewId) => {
|
61
|
+
this.activeViewId = activeViewId;
|
62
|
+
this.backToTopController.next({
|
63
|
+
type: SkyBackToTopMessageType.BackToTop,
|
64
|
+
});
|
65
|
+
this.currentViewkeeperClasses =
|
66
|
+
this.allViewkeeperClasses[this.activeViewId];
|
67
|
+
});
|
68
|
+
}
|
69
|
+
ngOnDestroy() {
|
70
|
+
this.ngUnsubscribe.next();
|
71
|
+
this.ngUnsubscribe.complete();
|
72
|
+
}
|
73
|
+
}
|
74
|
+
SkyDataManagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDataManagerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyDataManagerService }], target: i0.ɵɵFactoryTarget.Component });
|
75
|
+
SkyDataManagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyDataManagerComponent, selector: "sky-data-manager", ngImport: i0, template: "<div\n *ngIf=\"isInitialized\"\n class=\"sky-data-manager\"\n [skyBackToTop]=\"backToTopOptions\"\n [skyBackToTopMessageStream]=\"backToTopController\"\n [skyViewkeeper]=\"currentViewkeeperClasses\"\n #dataManager\n>\n <ng-content></ng-content>\n</div>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.λ7, selector: "[skyBackToTop]", inputs: ["skyBackToTop", "skyBackToTopMessageStream"] }, { type: i4.λ3, selector: "[skyViewkeeper]", inputs: ["skyViewkeeper"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDataManagerComponent, decorators: [{
|
77
|
+
type: Component,
|
78
|
+
args: [{
|
79
|
+
selector: 'sky-data-manager',
|
80
|
+
templateUrl: './data-manager.component.html',
|
81
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
82
|
+
}]
|
83
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyDataManagerService }]; } });
|
84
|
+
//# sourceMappingURL=data-manager.component.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"data-manager.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/data-manager/src/lib/modules/data-manager/data-manager.component.ts","../../../../../../../../libs/components/data-manager/src/lib/modules/data-manager/data-manager.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyDataManagerService } from './data-manager.service';\nimport { SkyBackToTopMessage, SkyBackToTopMessageType } from '@skyux/layout';\n\n/**\n * The top-level data manager component. Provide `SkyDataManagerService` at this level.\n */\n@Component({\n selector: 'sky-data-manager',\n templateUrl: './data-manager.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyDataManagerComponent implements OnDestroy, OnInit {\n public get currentViewkeeperClasses(): string[] {\n const dataManagerClasses = ['.sky-data-manager-toolbar'];\n let allClasses = dataManagerClasses;\n\n if (this._currentViewkeeperClasses) {\n allClasses = dataManagerClasses.concat(this._currentViewkeeperClasses);\n }\n\n return allClasses;\n }\n\n public set currentViewkeeperClasses(value: string[]) {\n this._currentViewkeeperClasses = value;\n this.changeDetection.markForCheck();\n }\n\n public get isInitialized(): boolean {\n return this._isInitialized;\n }\n\n public set isInitialized(value: boolean) {\n this._isInitialized = value;\n this.changeDetection.markForCheck();\n }\n\n public backToTopController = new Subject<SkyBackToTopMessage>();\n\n public backToTopOptions = {\n buttonHidden: true,\n };\n\n private _isInitialized = false;\n private _currentViewkeeperClasses: string[];\n private activeViewId: string;\n private allViewkeeperClasses: { [viewId: string]: string[] } = {};\n private ngUnsubscribe = new Subject();\n private sourceId = 'dataManagerComponent';\n\n constructor(\n private changeDetection: ChangeDetectorRef,\n private dataManagerService: SkyDataManagerService\n ) {}\n\n public ngOnInit(): void {\n this.dataManagerService\n .getDataStateUpdates(this.sourceId)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => (this.isInitialized = true));\n\n this.dataManagerService.viewkeeperClasses\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((classes) => {\n this.allViewkeeperClasses = classes;\n this.currentViewkeeperClasses = classes[this.activeViewId];\n });\n\n this.dataManagerService\n .getActiveViewIdUpdates()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((activeViewId) => {\n this.activeViewId = activeViewId;\n this.backToTopController.next({\n type: SkyBackToTopMessageType.BackToTop,\n });\n this.currentViewkeeperClasses =\n this.allViewkeeperClasses[this.activeViewId];\n });\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","<div\n *ngIf=\"isInitialized\"\n class=\"sky-data-manager\"\n [skyBackToTop]=\"backToTopOptions\"\n [skyBackToTopMessageStream]=\"backToTopController\"\n [skyViewkeeper]=\"currentViewkeeperClasses\"\n #dataManager\n>\n <ng-content></ng-content>\n</div>\n"]}
|
@@ -0,0 +1,123 @@
|
|
1
|
+
import { NgModule } from '@angular/core';
|
2
|
+
import { FormsModule } from '@angular/forms';
|
3
|
+
import { CommonModule } from '@angular/common';
|
4
|
+
import { SkyViewkeeperModule } from '@skyux/core';
|
5
|
+
import { SkyIconModule } from '@skyux/indicators';
|
6
|
+
import { SkyCheckboxModule, SkyRadioModule } from '@skyux/forms';
|
7
|
+
import { SkyBackToTopModule, SkyToolbarModule } from '@skyux/layout';
|
8
|
+
import { SkyFilterModule, SkyRepeaterModule, SkySortModule, } from '@skyux/lists';
|
9
|
+
import { SkySearchModule } from '@skyux/lookup';
|
10
|
+
import { SkyModalModule } from '@skyux/modals';
|
11
|
+
import { SkyDataManagerResourcesModule } from '../shared/sky-data-manager-resources.module';
|
12
|
+
import { SkyDataManagerColumnPickerComponent } from './data-manager-column-picker/data-manager-column-picker.component';
|
13
|
+
import { SkyDataManagerComponent } from './data-manager.component';
|
14
|
+
import { SkyDataManagerToolbarLeftItemComponent } from './data-manager-toolbar/data-manager-toolbar-left-item.component';
|
15
|
+
import { SkyDataManagerToolbarPrimaryItemComponent } from './data-manager-toolbar/data-manager-toolbar-primary-item.component';
|
16
|
+
import { SkyDataManagerToolbarRightItemComponent } from './data-manager-toolbar/data-manager-toolbar-right-item.component';
|
17
|
+
import { SkyDataManagerToolbarSectionComponent } from './data-manager-toolbar/data-manager-toolbar-section.component';
|
18
|
+
import { SkyDataManagerToolbarComponent } from './data-manager-toolbar/data-manager-toolbar.component';
|
19
|
+
import { SkyDataViewComponent } from './data-view.component';
|
20
|
+
import { SkyDataManagerColumnPickerService } from './data-manager-column-picker/data-manager-column-picker.service';
|
21
|
+
import { SkyDataManagerColumnPickerImplService } from './data-manager-column-picker/data-manager-column-picker-impl.service';
|
22
|
+
import * as i0 from "@angular/core";
|
23
|
+
export class SkyDataManagerModule {
|
24
|
+
}
|
25
|
+
SkyDataManagerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDataManagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
26
|
+
SkyDataManagerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDataManagerModule, declarations: [SkyDataManagerColumnPickerComponent,
|
27
|
+
SkyDataManagerComponent,
|
28
|
+
SkyDataManagerToolbarLeftItemComponent,
|
29
|
+
SkyDataManagerToolbarPrimaryItemComponent,
|
30
|
+
SkyDataManagerToolbarRightItemComponent,
|
31
|
+
SkyDataManagerToolbarSectionComponent,
|
32
|
+
SkyDataManagerToolbarComponent,
|
33
|
+
SkyDataViewComponent], imports: [CommonModule,
|
34
|
+
FormsModule,
|
35
|
+
SkyBackToTopModule,
|
36
|
+
SkyCheckboxModule,
|
37
|
+
SkyDataManagerResourcesModule,
|
38
|
+
SkyFilterModule,
|
39
|
+
SkyIconModule,
|
40
|
+
SkyModalModule,
|
41
|
+
SkyRadioModule,
|
42
|
+
SkyRepeaterModule,
|
43
|
+
SkySearchModule,
|
44
|
+
SkySortModule,
|
45
|
+
SkyToolbarModule,
|
46
|
+
SkyViewkeeperModule], exports: [SkyDataManagerColumnPickerComponent,
|
47
|
+
SkyDataManagerComponent,
|
48
|
+
SkyDataManagerToolbarLeftItemComponent,
|
49
|
+
SkyDataManagerToolbarPrimaryItemComponent,
|
50
|
+
SkyDataManagerToolbarRightItemComponent,
|
51
|
+
SkyDataManagerToolbarSectionComponent,
|
52
|
+
SkyDataManagerToolbarComponent,
|
53
|
+
SkyDataViewComponent] });
|
54
|
+
SkyDataManagerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDataManagerModule, providers: [
|
55
|
+
{
|
56
|
+
provide: SkyDataManagerColumnPickerService,
|
57
|
+
useClass: SkyDataManagerColumnPickerImplService,
|
58
|
+
},
|
59
|
+
], imports: [[
|
60
|
+
CommonModule,
|
61
|
+
FormsModule,
|
62
|
+
SkyBackToTopModule,
|
63
|
+
SkyCheckboxModule,
|
64
|
+
SkyDataManagerResourcesModule,
|
65
|
+
SkyFilterModule,
|
66
|
+
SkyIconModule,
|
67
|
+
SkyModalModule,
|
68
|
+
SkyRadioModule,
|
69
|
+
SkyRepeaterModule,
|
70
|
+
SkySearchModule,
|
71
|
+
SkySortModule,
|
72
|
+
SkyToolbarModule,
|
73
|
+
SkyViewkeeperModule,
|
74
|
+
]] });
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDataManagerModule, decorators: [{
|
76
|
+
type: NgModule,
|
77
|
+
args: [{
|
78
|
+
declarations: [
|
79
|
+
SkyDataManagerColumnPickerComponent,
|
80
|
+
SkyDataManagerComponent,
|
81
|
+
SkyDataManagerToolbarLeftItemComponent,
|
82
|
+
SkyDataManagerToolbarPrimaryItemComponent,
|
83
|
+
SkyDataManagerToolbarRightItemComponent,
|
84
|
+
SkyDataManagerToolbarSectionComponent,
|
85
|
+
SkyDataManagerToolbarComponent,
|
86
|
+
SkyDataViewComponent,
|
87
|
+
],
|
88
|
+
imports: [
|
89
|
+
CommonModule,
|
90
|
+
FormsModule,
|
91
|
+
SkyBackToTopModule,
|
92
|
+
SkyCheckboxModule,
|
93
|
+
SkyDataManagerResourcesModule,
|
94
|
+
SkyFilterModule,
|
95
|
+
SkyIconModule,
|
96
|
+
SkyModalModule,
|
97
|
+
SkyRadioModule,
|
98
|
+
SkyRepeaterModule,
|
99
|
+
SkySearchModule,
|
100
|
+
SkySortModule,
|
101
|
+
SkyToolbarModule,
|
102
|
+
SkyViewkeeperModule,
|
103
|
+
],
|
104
|
+
exports: [
|
105
|
+
SkyDataManagerColumnPickerComponent,
|
106
|
+
SkyDataManagerComponent,
|
107
|
+
SkyDataManagerToolbarLeftItemComponent,
|
108
|
+
SkyDataManagerToolbarPrimaryItemComponent,
|
109
|
+
SkyDataManagerToolbarRightItemComponent,
|
110
|
+
SkyDataManagerToolbarSectionComponent,
|
111
|
+
SkyDataManagerToolbarComponent,
|
112
|
+
SkyDataViewComponent,
|
113
|
+
],
|
114
|
+
entryComponents: [SkyDataManagerColumnPickerComponent],
|
115
|
+
providers: [
|
116
|
+
{
|
117
|
+
provide: SkyDataManagerColumnPickerService,
|
118
|
+
useClass: SkyDataManagerColumnPickerImplService,
|
119
|
+
},
|
120
|
+
],
|
121
|
+
}]
|
122
|
+
}] });
|
123
|
+
//# sourceMappingURL=data-manager.module.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"data-manager.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/data-manager/src/lib/modules/data-manager/data-manager.module.ts"],"names":[],"mappings":"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","sourcesContent":["import { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { CommonModule } from '@angular/common';\n\nimport { SkyViewkeeperModule } from '@skyux/core';\n\nimport { SkyIconModule } from '@skyux/indicators';\n\nimport { SkyCheckboxModule, SkyRadioModule } from '@skyux/forms';\n\nimport { SkyBackToTopModule, SkyToolbarModule } from '@skyux/layout';\n\nimport {\n SkyFilterModule,\n SkyRepeaterModule,\n SkySortModule,\n} from '@skyux/lists';\n\nimport { SkySearchModule } from '@skyux/lookup';\n\nimport { SkyModalModule } from '@skyux/modals';\n\nimport { SkyDataManagerResourcesModule } from '../shared/sky-data-manager-resources.module';\n\nimport { SkyDataManagerColumnPickerComponent } from './data-manager-column-picker/data-manager-column-picker.component';\n\nimport { SkyDataManagerComponent } from './data-manager.component';\n\nimport { SkyDataManagerToolbarLeftItemComponent } from './data-manager-toolbar/data-manager-toolbar-left-item.component';\n\nimport { SkyDataManagerToolbarPrimaryItemComponent } from './data-manager-toolbar/data-manager-toolbar-primary-item.component';\n\nimport { SkyDataManagerToolbarRightItemComponent } from './data-manager-toolbar/data-manager-toolbar-right-item.component';\n\nimport { SkyDataManagerToolbarSectionComponent } from './data-manager-toolbar/data-manager-toolbar-section.component';\n\nimport { SkyDataManagerToolbarComponent } from './data-manager-toolbar/data-manager-toolbar.component';\n\nimport { SkyDataViewComponent } from './data-view.component';\n\nimport { SkyDataManagerColumnPickerService } from './data-manager-column-picker/data-manager-column-picker.service';\n\nimport { SkyDataManagerColumnPickerImplService } from './data-manager-column-picker/data-manager-column-picker-impl.service';\n\n@NgModule({\n declarations: [\n SkyDataManagerColumnPickerComponent,\n SkyDataManagerComponent,\n SkyDataManagerToolbarLeftItemComponent,\n SkyDataManagerToolbarPrimaryItemComponent,\n SkyDataManagerToolbarRightItemComponent,\n SkyDataManagerToolbarSectionComponent,\n SkyDataManagerToolbarComponent,\n SkyDataViewComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyBackToTopModule,\n SkyCheckboxModule,\n SkyDataManagerResourcesModule,\n SkyFilterModule,\n SkyIconModule,\n SkyModalModule,\n SkyRadioModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkySortModule,\n SkyToolbarModule,\n SkyViewkeeperModule,\n ],\n exports: [\n SkyDataManagerColumnPickerComponent,\n SkyDataManagerComponent,\n SkyDataManagerToolbarLeftItemComponent,\n SkyDataManagerToolbarPrimaryItemComponent,\n SkyDataManagerToolbarRightItemComponent,\n SkyDataManagerToolbarSectionComponent,\n SkyDataManagerToolbarComponent,\n SkyDataViewComponent,\n ],\n entryComponents: [SkyDataManagerColumnPickerComponent],\n providers: [\n {\n provide: SkyDataManagerColumnPickerService,\n useClass: SkyDataManagerColumnPickerImplService,\n },\n ],\n})\nexport class SkyDataManagerModule {}\n"]}
|
@@ -0,0 +1,276 @@
|
|
1
|
+
import { Injectable } from '@angular/core';
|
2
|
+
import { SkyUIConfigService } from '@skyux/core';
|
3
|
+
import { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';
|
4
|
+
import { distinctUntilChanged, filter, map, take, takeUntil, } from 'rxjs/operators';
|
5
|
+
import { SkyDataManagerState } from './models/data-manager-state';
|
6
|
+
import { SkyDataManagerStateChange } from './models/data-manager-state-change';
|
7
|
+
import { SkyDataViewState } from './models/data-view-state';
|
8
|
+
import * as i0 from "@angular/core";
|
9
|
+
import * as i1 from "@skyux/core";
|
10
|
+
/**
|
11
|
+
* The data manager service provides ways for data views, toolbar items, and more to stay up to date
|
12
|
+
* with the active view ID, data manager config, registered views and their configs, and data state.
|
13
|
+
* There are methods to get current values, update values, and get subscriptions to the changing values.<br/> <br/>
|
14
|
+
* Provide this service at the component level for each instance of a data manager. Do not
|
15
|
+
* provide it at the module level or in `app-extras`. This allows multiple data
|
16
|
+
* managers to be used and self-contained.
|
17
|
+
*/
|
18
|
+
export class SkyDataManagerService {
|
19
|
+
constructor(uiConfigService) {
|
20
|
+
this.uiConfigService = uiConfigService;
|
21
|
+
this.viewkeeperClasses = new BehaviorSubject({});
|
22
|
+
this.activeViewId = new ReplaySubject(1);
|
23
|
+
this.dataManagerConfig = new BehaviorSubject(undefined);
|
24
|
+
this.views = new BehaviorSubject([]);
|
25
|
+
this.dataStateChange = new ReplaySubject(1);
|
26
|
+
this._ngUnsubscribe = new Subject();
|
27
|
+
this.initSource = 'dataManagerServiceInit';
|
28
|
+
this.isInitialized = false;
|
29
|
+
}
|
30
|
+
ngOnDestroy() {
|
31
|
+
this.activeViewId.complete();
|
32
|
+
this.dataManagerConfig.complete();
|
33
|
+
this.views.complete();
|
34
|
+
this.dataStateChange.complete();
|
35
|
+
this._ngUnsubscribe.next();
|
36
|
+
this._ngUnsubscribe.complete();
|
37
|
+
}
|
38
|
+
/**
|
39
|
+
* Initializes the data manager with the given settings and sets `isInitialized` to `true`.
|
40
|
+
* This must be called for the data manager to render.
|
41
|
+
* @param args The initial active view ID, data manager config, and state to use for the data manager.
|
42
|
+
* If a settings key is provided, it checks for a saved data state in the SKY UI config service before using the default data state
|
43
|
+
* and saves any state changes to the service.
|
44
|
+
*/
|
45
|
+
initDataManager(args) {
|
46
|
+
if (this.isInitialized) {
|
47
|
+
console.warn('This data manager instance has already been initialized.');
|
48
|
+
return;
|
49
|
+
}
|
50
|
+
const defaultDataState = args.defaultDataState;
|
51
|
+
const settingsKey = args.settingsKey;
|
52
|
+
this.updateActiveViewId(args.activeViewId);
|
53
|
+
this.updateDataManagerConfig(args.dataManagerConfig);
|
54
|
+
if (settingsKey) {
|
55
|
+
this.uiConfigService
|
56
|
+
.getConfig(settingsKey, defaultDataState.getStateOptions())
|
57
|
+
.pipe(take(1))
|
58
|
+
.subscribe((config) => {
|
59
|
+
this.updateDataState(new SkyDataManagerState(config), this.initSource);
|
60
|
+
});
|
61
|
+
}
|
62
|
+
else {
|
63
|
+
this.updateDataState(defaultDataState, this.initSource);
|
64
|
+
}
|
65
|
+
if (settingsKey) {
|
66
|
+
this.getDataStateUpdates(this.initSource)
|
67
|
+
.pipe(takeUntil(this._ngUnsubscribe))
|
68
|
+
.subscribe((state) => {
|
69
|
+
this.uiConfigService
|
70
|
+
.setConfig(settingsKey, state.getStateOptions())
|
71
|
+
.pipe(takeUntil(this._ngUnsubscribe))
|
72
|
+
.subscribe(() => { }, (err) => {
|
73
|
+
console.warn('Could not save data manager settings.');
|
74
|
+
console.warn(err);
|
75
|
+
});
|
76
|
+
});
|
77
|
+
}
|
78
|
+
}
|
79
|
+
/**
|
80
|
+
* Initializes a view within the data manager. This must be called for each view for the views to appear within the data manager.
|
81
|
+
* @param viewConfig The SkyDataViewConfig settings for the view being registered.
|
82
|
+
*/
|
83
|
+
initDataView(viewConfig) {
|
84
|
+
let currentViews = this.views.value;
|
85
|
+
if (this.getViewById(viewConfig.id)) {
|
86
|
+
console.warn(`A data manager view with the id ${viewConfig.id} has already been initialized.`);
|
87
|
+
return;
|
88
|
+
}
|
89
|
+
currentViews.push(viewConfig);
|
90
|
+
this.views.next(currentViews);
|
91
|
+
// When the initial activeViewId is set there are no views registered. We have to re-emit
|
92
|
+
// the activeId so the newly registered view is notified that it is active.
|
93
|
+
this.activeViewId.pipe(take(1)).subscribe((id) => {
|
94
|
+
this.activeViewId.next(id);
|
95
|
+
});
|
96
|
+
this.dataStateChange
|
97
|
+
.pipe(take(1))
|
98
|
+
.subscribe((change) => {
|
99
|
+
var _a;
|
100
|
+
const dataState = change.dataState;
|
101
|
+
const currentViewState = dataState.getViewStateById(viewConfig.id);
|
102
|
+
if (!currentViewState) {
|
103
|
+
let newViewState = new SkyDataViewState({ viewId: viewConfig.id });
|
104
|
+
// Ensure that the view state's available columns match with the view config. Also,
|
105
|
+
// add columns to the `displayedColumnIds` as long as they are not `initialHide`
|
106
|
+
if (viewConfig.columnOptions) {
|
107
|
+
const columnIds = viewConfig.columnOptions.map((columnOptions) => {
|
108
|
+
return columnOptions.id;
|
109
|
+
});
|
110
|
+
const displayedColumnIds = viewConfig.columnOptions
|
111
|
+
.filter((columnOption) => {
|
112
|
+
return !columnOption.initialHide;
|
113
|
+
})
|
114
|
+
.map((columnOption) => {
|
115
|
+
return columnOption.id;
|
116
|
+
});
|
117
|
+
newViewState.columnIds = columnIds;
|
118
|
+
newViewState.displayedColumnIds = displayedColumnIds;
|
119
|
+
}
|
120
|
+
const newDataState = dataState.addOrUpdateView(viewConfig.id, newViewState);
|
121
|
+
this.updateDataState(newDataState, this.initSource);
|
122
|
+
}
|
123
|
+
else {
|
124
|
+
const currentAvailableColumnIds = (_a = viewConfig.columnOptions) === null || _a === void 0 ? void 0 : _a.map((columnOptions) => {
|
125
|
+
return columnOptions.id;
|
126
|
+
});
|
127
|
+
// Ensure that the view state's available columns match with the view config. Also,
|
128
|
+
// add new columns to the `displayedColumnIds` as long as they are not `initialHide`.
|
129
|
+
// We only add columns to `displayedColumnsIds` if we had previously tracked
|
130
|
+
// `columnIds` to avoid breaking changes.
|
131
|
+
if (currentViewState.columnIds.length > 0) {
|
132
|
+
let newColumnIds = currentAvailableColumnIds.filter((id) => currentViewState.columnIds.indexOf(id) < 0);
|
133
|
+
newColumnIds = newColumnIds.filter((columnId) => {
|
134
|
+
return viewConfig.columnOptions.find((columnOption) => columnOption.id === columnId && !columnOption.initialHide);
|
135
|
+
});
|
136
|
+
// Add the column IDs that now exist to the data manager state both as available
|
137
|
+
// and as shown.
|
138
|
+
currentViewState.displayedColumnIds =
|
139
|
+
currentViewState.displayedColumnIds.concat(newColumnIds);
|
140
|
+
}
|
141
|
+
// Add the column IDs that now exist to the data manager state both as available
|
142
|
+
// and as shown.
|
143
|
+
currentViewState.columnIds = currentAvailableColumnIds;
|
144
|
+
const newDataState = dataState.addOrUpdateView(viewConfig.id, currentViewState);
|
145
|
+
this.updateDataState(newDataState, this.initSource);
|
146
|
+
}
|
147
|
+
})
|
148
|
+
.unsubscribe();
|
149
|
+
}
|
150
|
+
/**
|
151
|
+
* Returns an observable of data state changes that views and other data manager entities can subscribe to.
|
152
|
+
* It excludes updates originating from the provided source. This allows subscribers to only respond to
|
153
|
+
* changes they did not create and helps prevent infinite loops of updates and responses.
|
154
|
+
* @param sourceId The ID of the entity subscribing to data state updates. This can be any value you choose
|
155
|
+
* but should be unique within the data manager instance and should also be used when that entity updates the state.
|
156
|
+
*/
|
157
|
+
getDataStateUpdates(sourceId, updateFilter) {
|
158
|
+
// filter out events from the provided source and emit just the dataState
|
159
|
+
if (updateFilter) {
|
160
|
+
return this.dataStateChange.pipe(filter((stateChange) => sourceId !== stateChange.source), map((stateChange) => stateChange.dataState), updateFilter.comparator
|
161
|
+
? distinctUntilChanged(updateFilter.comparator)
|
162
|
+
: distinctUntilChanged(this.getDefaultStateComparator(updateFilter.properties)));
|
163
|
+
}
|
164
|
+
else {
|
165
|
+
return this.dataStateChange.pipe(filter((stateChange) => sourceId !== stateChange.source), map((stateChange) => stateChange.dataState));
|
166
|
+
}
|
167
|
+
}
|
168
|
+
/**
|
169
|
+
* Updates the data state and emits a new value to entities subscribed to data state changes.
|
170
|
+
* @param state The new `SkyDataManagerState` value.
|
171
|
+
* @param sourceId The ID of the entity updating the state. This can be any value you choose,
|
172
|
+
* but should be unique within the data manager instance and should also be used when that entity
|
173
|
+
* subscribes to state changes from `getDataStateUpdates`.
|
174
|
+
*/
|
175
|
+
updateDataState(state, sourceId) {
|
176
|
+
const newState = new SkyDataManagerState(state.getStateOptions());
|
177
|
+
const newStateChange = new SkyDataManagerStateChange(newState, sourceId);
|
178
|
+
this.dataStateChange.next(newStateChange);
|
179
|
+
}
|
180
|
+
/**
|
181
|
+
* Returns the current `SkyDataManagerConfig`.
|
182
|
+
*/
|
183
|
+
getCurrentDataManagerConfig() {
|
184
|
+
return this.dataManagerConfig.value;
|
185
|
+
}
|
186
|
+
/**
|
187
|
+
* Returns an observable of data manager config changes that views and other data manager entities can subscribe to.
|
188
|
+
*/
|
189
|
+
getDataManagerConfigUpdates() {
|
190
|
+
return this.dataManagerConfig;
|
191
|
+
}
|
192
|
+
/**
|
193
|
+
* Updates the data manager config and emits a new value to entities subscribed to data config changes.
|
194
|
+
* @param value The new `SkyDataManagerConfig` value.
|
195
|
+
*/
|
196
|
+
updateDataManagerConfig(value) {
|
197
|
+
this.dataManagerConfig.next(value);
|
198
|
+
}
|
199
|
+
/**
|
200
|
+
* Returns an observable of data view config changes that views and other data manager entities can subscribe to.
|
201
|
+
*/
|
202
|
+
getDataViewsUpdates() {
|
203
|
+
return this.views;
|
204
|
+
}
|
205
|
+
/**
|
206
|
+
* Returns an observable of the active view ID that views and other data manager entities can subscribe to.
|
207
|
+
*/
|
208
|
+
getActiveViewIdUpdates() {
|
209
|
+
return this.activeViewId;
|
210
|
+
}
|
211
|
+
/**
|
212
|
+
* Updates the active view ID. The data manager changes the displayed view.
|
213
|
+
* @param id The new active view ID.
|
214
|
+
*/
|
215
|
+
updateActiveViewId(id) {
|
216
|
+
this.activeViewId.next(id);
|
217
|
+
}
|
218
|
+
/**
|
219
|
+
* Returns the `SkyDataViewConfig` for the given view ID.
|
220
|
+
* @param viewId The ID of the view config to get.
|
221
|
+
*/
|
222
|
+
getViewById(viewId) {
|
223
|
+
const currentViews = this.views.value;
|
224
|
+
const viewConfig = currentViews.find((view) => view.id === viewId);
|
225
|
+
return viewConfig;
|
226
|
+
}
|
227
|
+
/**
|
228
|
+
* Updates the given view config. The registered view with the same ID is updated to the
|
229
|
+
* provided config, so include all properties regardless of whether they changed. If the
|
230
|
+
* view was not initialized already, no update happens.
|
231
|
+
* @param view The new `SkyDataViewConfig` containing all properties.
|
232
|
+
*/
|
233
|
+
updateViewConfig(view) {
|
234
|
+
let currentViews = this.views.value;
|
235
|
+
const existingViewIndex = currentViews.findIndex((currentView) => currentView.id === view.id);
|
236
|
+
if (existingViewIndex === -1) {
|
237
|
+
console.error('A view with the id {id} does not exist.', view.id);
|
238
|
+
}
|
239
|
+
else {
|
240
|
+
currentViews[existingViewIndex] = view;
|
241
|
+
this.views.next(currentViews);
|
242
|
+
}
|
243
|
+
}
|
244
|
+
/**
|
245
|
+
* @internal
|
246
|
+
*/
|
247
|
+
setViewkeeperClasses(viewId, classes) {
|
248
|
+
const viewkeeperClasses = this.viewkeeperClasses.value;
|
249
|
+
viewkeeperClasses[viewId] = classes;
|
250
|
+
this.viewkeeperClasses.next(viewkeeperClasses);
|
251
|
+
}
|
252
|
+
filterDataStateProperties(state, properties) {
|
253
|
+
const stateProperties = state.getStateOptions();
|
254
|
+
let filteredStateProperties = {};
|
255
|
+
for (let property of properties) {
|
256
|
+
/* istanbul ignore else */
|
257
|
+
if (stateProperties.hasOwnProperty(property)) {
|
258
|
+
filteredStateProperties[property] = stateProperties[property];
|
259
|
+
}
|
260
|
+
}
|
261
|
+
return filteredStateProperties;
|
262
|
+
}
|
263
|
+
getDefaultStateComparator(properties) {
|
264
|
+
return (state1, state2) => {
|
265
|
+
const filteredState1 = this.filterDataStateProperties(state1, properties);
|
266
|
+
const filteredState2 = this.filterDataStateProperties(state2, properties);
|
267
|
+
return JSON.stringify(filteredState1) === JSON.stringify(filteredState2);
|
268
|
+
};
|
269
|
+
}
|
270
|
+
}
|
271
|
+
SkyDataManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDataManagerService, deps: [{ token: i1.SkyUIConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
272
|
+
SkyDataManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDataManagerService });
|
273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyDataManagerService, decorators: [{
|
274
|
+
type: Injectable
|
275
|
+
}], ctorParameters: function () { return [{ type: i1.SkyUIConfigService }]; } });
|
276
|
+
//# sourceMappingURL=data-manager.service.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"data-manager.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/data-manager/src/lib/modules/data-manager/data-manager.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAc,aAAa,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE3E,OAAO,EACL,oBAAoB,EACpB,MAAM,EACN,GAAG,EACH,IAAI,EACJ,SAAS,GACV,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAQ/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;;;AAI5D;;;;;;;GAOG;AAEH,MAAM,OAAO,qBAAqB;IAmBhC,YAAoB,eAAmC;QAAnC,oBAAe,GAAf,eAAe,CAAoB;QAlBhD,sBAAiB,GAAG,IAAI,eAAe,CAE3C,EAAE,CAAC,CAAC;QAEU,iBAAY,GAAG,IAAI,aAAa,CAAS,CAAC,CAAC,CAAC;QAE5C,sBAAiB,GAChC,IAAI,eAAe,CAAuB,SAAS,CAAC,CAAC;QAEtC,UAAK,GAAG,IAAI,eAAe,CAAsB,EAAE,CAAC,CAAC;QAErD,oBAAe,GAC9B,IAAI,aAAa,CAA4B,CAAC,CAAC,CAAC;QAE1C,mBAAc,GAAG,IAAI,OAAO,EAAE,CAAC;QAC/B,eAAU,GAAG,wBAAwB,CAAC;QACtC,kBAAa,GAAG,KAAK,CAAC;IAE4B,CAAC;IAEpD,WAAW;QAChB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACI,eAAe,CAAC,IAA4B;QACjD,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YACzE,OAAO;SACR;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAErC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAErD,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,eAAe;iBACjB,SAAS,CAAC,WAAW,EAAE,gBAAgB,CAAC,eAAe,EAAE,CAAC;iBAC1D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACb,SAAS,CAAC,CAAC,MAAkC,EAAE,EAAE;gBAChD,IAAI,CAAC,eAAe,CAClB,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAC/B,IAAI,CAAC,UAAU,CAChB,CAAC;YACJ,CAAC,CAAC,CAAC;SACN;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACzD;QAED,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;iBACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iBACpC,SAAS,CAAC,CAAC,KAA0B,EAAE,EAAE;gBACxC,IAAI,CAAC,eAAe;qBACjB,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;qBAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;qBACpC,SAAS,CACR,GAAG,EAAE,GAAE,CAAC,EACR,CAAC,GAAG,EAAE,EAAE;oBACN,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;oBACtD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB,CAAC,CACF,CAAC;YACN,CAAC,CAAC,CAAC;SACN;IACH,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,UAA6B;QAC/C,IAAI,YAAY,GAAwB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAEzD,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;YACnC,OAAO,CAAC,IAAI,CACV,mCAAmC,UAAU,CAAC,EAAE,gCAAgC,CACjF,CAAC;YACF,OAAO;SACR;QAED,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE9B,yFAAyF;QACzF,2EAA2E;QAC3E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE;YAC/C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe;aACjB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;;YACpB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YACnC,MAAM,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAEnE,IAAI,CAAC,gBAAgB,EAAE;gBACrB,IAAI,YAAY,GAAG,IAAI,gBAAgB,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;gBAEnE,mFAAmF;gBACnF,gFAAgF;gBAChF,IAAI,UAAU,CAAC,aAAa,EAAE;oBAC5B,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;wBAC/D,OAAO,aAAa,CAAC,EAAE,CAAC;oBAC1B,CAAC,CAAC,CAAC;oBACH,MAAM,kBAAkB,GAAG,UAAU,CAAC,aAAa;yBAChD,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;wBACvB,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;oBACnC,CAAC,CAAC;yBACD,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;wBACpB,OAAO,YAAY,CAAC,EAAE,CAAC;oBACzB,CAAC,CAAC,CAAC;oBAEL,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;oBACnC,YAAY,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;iBACtD;gBACD,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAC5C,UAAU,CAAC,EAAE,EACb,YAAY,CACb,CAAC;gBAEF,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aACrD;iBAAM;gBACL,MAAM,yBAAyB,GAAG,MAAA,UAAU,CAAC,aAAa,0CAAE,GAAG,CAC7D,CAAC,aAAa,EAAE,EAAE;oBAChB,OAAO,aAAa,CAAC,EAAE,CAAC;gBAC1B,CAAC,CACF,CAAC;gBAEF,mFAAmF;gBACnF,qFAAqF;gBACrF,4EAA4E;gBAC5E,yCAAyC;gBACzC,IAAI,gBAAgB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;oBACzC,IAAI,YAAY,GAAG,yBAAyB,CAAC,MAAM,CACjD,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CACnD,CAAC;oBACF,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;wBAC9C,OAAO,UAAU,CAAC,aAAa,CAAC,IAAI,CAClC,CAAC,YAAY,EAAE,EAAE,CACf,YAAY,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,WAAW,CAC5D,CAAC;oBACJ,CAAC,CAAC,CAAC;oBAEH,gFAAgF;oBAChF,gBAAgB;oBAChB,gBAAgB,CAAC,kBAAkB;wBACjC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;iBAC5D;gBACD,gFAAgF;gBAChF,gBAAgB;gBAChB,gBAAgB,CAAC,SAAS,GAAG,yBAAyB,CAAC;gBAEvD,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAC5C,UAAU,CAAC,EAAE,EACb,gBAAgB,CACjB,CAAC;gBAEF,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aACrD;QACH,CAAC,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACI,mBAAmB,CACxB,QAAgB,EAChB,YAAkD;QAElD,yEAAyE;QACzE,IAAI,YAAY,EAAE;YAChB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,KAAK,WAAW,CAAC,MAAM,CAAC,EACxD,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,EAC3C,YAAY,CAAC,UAAU;gBACrB,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,UAAU,CAAC;gBAC/C,CAAC,CAAC,oBAAoB,CAClB,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,UAAU,CAAC,CACxD,CACN,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,KAAK,WAAW,CAAC,MAAM,CAAC,EACxD,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAC5C,CAAC;SACH;IACH,CAAC;IAED;;;;;;OAMG;IACI,eAAe,CAAC,KAA0B,EAAE,QAAgB;QACjE,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;QAClE,MAAM,cAAc,GAAG,IAAI,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEzE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,2BAA2B;QAChC,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,2BAA2B;QAChC,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED;;;OAGG;IACI,uBAAuB,CAAC,KAA2B;QACxD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,mBAAmB;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACI,sBAAsB;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACI,kBAAkB,CAAC,EAAU;QAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACI,WAAW,CAAC,MAAc;QAC/B,MAAM,YAAY,GAAwB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC3D,MAAM,UAAU,GAAsB,YAAY,CAAC,IAAI,CACrD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAC7B,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACI,gBAAgB,CAAC,IAAuB;QAC7C,IAAI,YAAY,GAAwB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACzD,MAAM,iBAAiB,GAAG,YAAY,CAAC,SAAS,CAC9C,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAC5C,CAAC;QAEF,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SACnE;aAAM;YACL,YAAY,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;IACH,CAAC;IAED;;OAEG;IACI,oBAAoB,CAAC,MAAc,EAAE,OAAiB;QAC3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACvD,iBAAiB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;QAEpC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC;IAEO,yBAAyB,CAC/B,KAA0B,EAC1B,UAAoB;QAEpB,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,EAA4B,CAAC;QAC1E,IAAI,uBAAuB,GAAQ,EAAE,CAAC;QACtC,KAAK,IAAI,QAAQ,IAAI,UAAU,EAAE;YAC/B,0BAA0B;YAC1B,IAAI,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;gBAC5C,uBAAuB,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;aAC/D;SACF;QAED,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAEO,yBAAyB,CAC/B,UAAoB;QAEpB,OAAO,CACL,MAA2B,EAC3B,MAA2B,EAClB,EAAE;YACX,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC1E,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC3E,CAAC,CAAC;IACJ,CAAC;;mHAhVU,qBAAqB;uHAArB,qBAAqB;4FAArB,qBAAqB;kBADjC,UAAU","sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\n\nimport { SkyUIConfigService } from '@skyux/core';\n\nimport { BehaviorSubject, Observable, ReplaySubject, Subject } from 'rxjs';\n\nimport {\n distinctUntilChanged,\n filter,\n map,\n take,\n takeUntil,\n} from 'rxjs/operators';\n\nimport { SkyDataManagerConfig } from './models/data-manager-config';\n\nimport { SkyDataManagerState } from './models/data-manager-state';\n\nimport { SkyDataManagerStateChange } from './models/data-manager-state-change';\n\nimport { SkyDataManagerStateOptions } from './models/data-manager-state-options';\n\nimport { SkyDataManagerStateUpdateFilterArgs } from './models/data-manager-state-update-filter-args';\n\nimport { SkyDataViewConfig } from './models/data-view-config';\n\nimport { SkyDataViewState } from './models/data-view-state';\n\nimport { SkyDataManagerInitArgs } from './models/data-manager-init-args';\n\n/**\n * The data manager service provides ways for data views, toolbar items, and more to stay up to date\n * with the active view ID, data manager config, registered views and their configs, and data state.\n * There are methods to get current values, update values, and get subscriptions to the changing values.<br/> <br/>\n * Provide this service at the component level for each instance of a data manager. Do not\n * provide it at the module level or in `app-extras`. This allows multiple data\n * managers to be used and self-contained.\n */\n@Injectable()\nexport class SkyDataManagerService implements OnDestroy {\n public viewkeeperClasses = new BehaviorSubject<{\n [viewId: string]: string[];\n }>({});\n\n private readonly activeViewId = new ReplaySubject<string>(1);\n\n private readonly dataManagerConfig =\n new BehaviorSubject<SkyDataManagerConfig>(undefined);\n\n private readonly views = new BehaviorSubject<SkyDataViewConfig[]>([]);\n\n private readonly dataStateChange =\n new ReplaySubject<SkyDataManagerStateChange>(1);\n\n private _ngUnsubscribe = new Subject();\n private initSource = 'dataManagerServiceInit';\n private isInitialized = false;\n\n constructor(private uiConfigService: SkyUIConfigService) {}\n\n public ngOnDestroy(): void {\n this.activeViewId.complete();\n this.dataManagerConfig.complete();\n this.views.complete();\n this.dataStateChange.complete();\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n\n /**\n * Initializes the data manager with the given settings and sets `isInitialized` to `true`.\n * This must be called for the data manager to render.\n * @param args The initial active view ID, data manager config, and state to use for the data manager.\n * If a settings key is provided, it checks for a saved data state in the SKY UI config service before using the default data state\n * and saves any state changes to the service.\n */\n public initDataManager(args: SkyDataManagerInitArgs): void {\n if (this.isInitialized) {\n console.warn('This data manager instance has already been initialized.');\n return;\n }\n\n const defaultDataState = args.defaultDataState;\n const settingsKey = args.settingsKey;\n\n this.updateActiveViewId(args.activeViewId);\n this.updateDataManagerConfig(args.dataManagerConfig);\n\n if (settingsKey) {\n this.uiConfigService\n .getConfig(settingsKey, defaultDataState.getStateOptions())\n .pipe(take(1))\n .subscribe((config: SkyDataManagerStateOptions) => {\n this.updateDataState(\n new SkyDataManagerState(config),\n this.initSource\n );\n });\n } else {\n this.updateDataState(defaultDataState, this.initSource);\n }\n\n if (settingsKey) {\n this.getDataStateUpdates(this.initSource)\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((state: SkyDataManagerState) => {\n this.uiConfigService\n .setConfig(settingsKey, state.getStateOptions())\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(\n () => {},\n (err) => {\n console.warn('Could not save data manager settings.');\n console.warn(err);\n }\n );\n });\n }\n }\n\n /**\n * Initializes a view within the data manager. This must be called for each view for the views to appear within the data manager.\n * @param viewConfig The SkyDataViewConfig settings for the view being registered.\n */\n public initDataView(viewConfig: SkyDataViewConfig): void {\n let currentViews: SkyDataViewConfig[] = this.views.value;\n\n if (this.getViewById(viewConfig.id)) {\n console.warn(\n `A data manager view with the id ${viewConfig.id} has already been initialized.`\n );\n return;\n }\n\n currentViews.push(viewConfig);\n this.views.next(currentViews);\n\n // When the initial activeViewId is set there are no views registered. We have to re-emit\n // the activeId so the newly registered view is notified that it is active.\n this.activeViewId.pipe(take(1)).subscribe((id) => {\n this.activeViewId.next(id);\n });\n\n this.dataStateChange\n .pipe(take(1))\n .subscribe((change) => {\n const dataState = change.dataState;\n const currentViewState = dataState.getViewStateById(viewConfig.id);\n\n if (!currentViewState) {\n let newViewState = new SkyDataViewState({ viewId: viewConfig.id });\n\n // Ensure that the view state's available columns match with the view config. Also,\n // add columns to the `displayedColumnIds` as long as they are not `initialHide`\n if (viewConfig.columnOptions) {\n const columnIds = viewConfig.columnOptions.map((columnOptions) => {\n return columnOptions.id;\n });\n const displayedColumnIds = viewConfig.columnOptions\n .filter((columnOption) => {\n return !columnOption.initialHide;\n })\n .map((columnOption) => {\n return columnOption.id;\n });\n\n newViewState.columnIds = columnIds;\n newViewState.displayedColumnIds = displayedColumnIds;\n }\n const newDataState = dataState.addOrUpdateView(\n viewConfig.id,\n newViewState\n );\n\n this.updateDataState(newDataState, this.initSource);\n } else {\n const currentAvailableColumnIds = viewConfig.columnOptions?.map(\n (columnOptions) => {\n return columnOptions.id;\n }\n );\n\n // Ensure that the view state's available columns match with the view config. Also,\n // add new columns to the `displayedColumnIds` as long as they are not `initialHide`.\n // We only add columns to `displayedColumnsIds` if we had previously tracked\n // `columnIds` to avoid breaking changes.\n if (currentViewState.columnIds.length > 0) {\n let newColumnIds = currentAvailableColumnIds.filter(\n (id) => currentViewState.columnIds.indexOf(id) < 0\n );\n newColumnIds = newColumnIds.filter((columnId) => {\n return viewConfig.columnOptions.find(\n (columnOption) =>\n columnOption.id === columnId && !columnOption.initialHide\n );\n });\n\n // Add the column IDs that now exist to the data manager state both as available\n // and as shown.\n currentViewState.displayedColumnIds =\n currentViewState.displayedColumnIds.concat(newColumnIds);\n }\n // Add the column IDs that now exist to the data manager state both as available\n // and as shown.\n currentViewState.columnIds = currentAvailableColumnIds;\n\n const newDataState = dataState.addOrUpdateView(\n viewConfig.id,\n currentViewState\n );\n\n this.updateDataState(newDataState, this.initSource);\n }\n })\n .unsubscribe();\n }\n\n /**\n * Returns an observable of data state changes that views and other data manager entities can subscribe to.\n * It excludes updates originating from the provided source. This allows subscribers to only respond to\n * changes they did not create and helps prevent infinite loops of updates and responses.\n * @param sourceId The ID of the entity subscribing to data state updates. This can be any value you choose\n * but should be unique within the data manager instance and should also be used when that entity updates the state.\n */\n public getDataStateUpdates(\n sourceId: string,\n updateFilter?: SkyDataManagerStateUpdateFilterArgs\n ): Observable<SkyDataManagerState> {\n // filter out events from the provided source and emit just the dataState\n if (updateFilter) {\n return this.dataStateChange.pipe(\n filter((stateChange) => sourceId !== stateChange.source),\n map((stateChange) => stateChange.dataState),\n updateFilter.comparator\n ? distinctUntilChanged(updateFilter.comparator)\n : distinctUntilChanged(\n this.getDefaultStateComparator(updateFilter.properties)\n )\n );\n } else {\n return this.dataStateChange.pipe(\n filter((stateChange) => sourceId !== stateChange.source),\n map((stateChange) => stateChange.dataState)\n );\n }\n }\n\n /**\n * Updates the data state and emits a new value to entities subscribed to data state changes.\n * @param state The new `SkyDataManagerState` value.\n * @param sourceId The ID of the entity updating the state. This can be any value you choose,\n * but should be unique within the data manager instance and should also be used when that entity\n * subscribes to state changes from `getDataStateUpdates`.\n */\n public updateDataState(state: SkyDataManagerState, sourceId: string): void {\n const newState = new SkyDataManagerState(state.getStateOptions());\n const newStateChange = new SkyDataManagerStateChange(newState, sourceId);\n\n this.dataStateChange.next(newStateChange);\n }\n\n /**\n * Returns the current `SkyDataManagerConfig`.\n */\n public getCurrentDataManagerConfig(): SkyDataManagerConfig {\n return this.dataManagerConfig.value;\n }\n\n /**\n * Returns an observable of data manager config changes that views and other data manager entities can subscribe to.\n */\n public getDataManagerConfigUpdates(): Observable<SkyDataManagerConfig> {\n return this.dataManagerConfig;\n }\n\n /**\n * Updates the data manager config and emits a new value to entities subscribed to data config changes.\n * @param value The new `SkyDataManagerConfig` value.\n */\n public updateDataManagerConfig(value: SkyDataManagerConfig): void {\n this.dataManagerConfig.next(value);\n }\n\n /**\n * Returns an observable of data view config changes that views and other data manager entities can subscribe to.\n */\n public getDataViewsUpdates(): Observable<SkyDataViewConfig[]> {\n return this.views;\n }\n\n /**\n * Returns an observable of the active view ID that views and other data manager entities can subscribe to.\n */\n public getActiveViewIdUpdates(): Observable<string> {\n return this.activeViewId;\n }\n\n /**\n * Updates the active view ID. The data manager changes the displayed view.\n * @param id The new active view ID.\n */\n public updateActiveViewId(id: string): void {\n this.activeViewId.next(id);\n }\n\n /**\n * Returns the `SkyDataViewConfig` for the given view ID.\n * @param viewId The ID of the view config to get.\n */\n public getViewById(viewId: string): SkyDataViewConfig {\n const currentViews: SkyDataViewConfig[] = this.views.value;\n const viewConfig: SkyDataViewConfig = currentViews.find(\n (view) => view.id === viewId\n );\n\n return viewConfig;\n }\n\n /**\n * Updates the given view config. The registered view with the same ID is updated to the\n * provided config, so include all properties regardless of whether they changed. If the\n * view was not initialized already, no update happens.\n * @param view The new `SkyDataViewConfig` containing all properties.\n */\n public updateViewConfig(view: SkyDataViewConfig): void {\n let currentViews: SkyDataViewConfig[] = this.views.value;\n const existingViewIndex = currentViews.findIndex(\n (currentView) => currentView.id === view.id\n );\n\n if (existingViewIndex === -1) {\n console.error('A view with the id {id} does not exist.', view.id);\n } else {\n currentViews[existingViewIndex] = view;\n this.views.next(currentViews);\n }\n }\n\n /**\n * @internal\n */\n public setViewkeeperClasses(viewId: string, classes: string[]): void {\n const viewkeeperClasses = this.viewkeeperClasses.value;\n viewkeeperClasses[viewId] = classes;\n\n this.viewkeeperClasses.next(viewkeeperClasses);\n }\n\n private filterDataStateProperties(\n state: SkyDataManagerState,\n properties: string[]\n ): SkyDataManagerStateOptions {\n const stateProperties = state.getStateOptions() as { [key: string]: any };\n let filteredStateProperties: any = {};\n for (let property of properties) {\n /* istanbul ignore else */\n if (stateProperties.hasOwnProperty(property)) {\n filteredStateProperties[property] = stateProperties[property];\n }\n }\n\n return filteredStateProperties;\n }\n\n private getDefaultStateComparator(\n properties: string[]\n ): (state1: SkyDataManagerState, state2: SkyDataManagerState) => boolean {\n return (\n state1: SkyDataManagerState,\n state2: SkyDataManagerState\n ): boolean => {\n const filteredState1 = this.filterDataStateProperties(state1, properties);\n const filteredState2 = this.filterDataStateProperties(state2, properties);\n return JSON.stringify(filteredState1) === JSON.stringify(filteredState2);\n };\n }\n}\n"]}
|