From 6d0c4093c2425aa9fcfee07b234b5cd588fcc022 Mon Sep 17 00:00:00 2001 From: AleksanderBodurri Date: Sat, 21 Mar 2020 23:07:48 -0400 Subject: [PATCH] feat(devtools): pass each datasource through to it's own material tree component --- .../directive-property-resolver.ts | 17 ++++-- .../property-resolver/property-data-source.ts | 26 +-------- .../property-view-body.component.html | 55 +++++++++---------- .../property-view-body.component.ts | 47 ++++------------ .../property-view-tree.component.html | 7 +-- .../property-view-tree.component.ts | 22 +++----- .../property-view-header.component.css | 4 -- .../property-view-header.component.html | 11 ---- .../property-view-header.component.ts | 9 --- .../property-view.component.html | 12 ++-- .../property-view/property-view.component.ts | 48 +++------------- 11 files changed, 70 insertions(+), 188 deletions(-) diff --git a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-resolver/directive-property-resolver.ts b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-resolver/directive-property-resolver.ts index 7a08eab128d..dab920157a0 100644 --- a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-resolver/directive-property-resolver.ts +++ b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-resolver/directive-property-resolver.ts @@ -12,6 +12,11 @@ export enum PropertyViewFilterOptions { STATE, } +export interface DirectiveTreeData { + dataSource: PropertyDataSource; + treeControl: FlatTreeControl; +} + const expandable = (prop: Descriptor) => { if (!prop) { return false; @@ -61,9 +66,9 @@ export class DirectivePropertyResolver { this._onReceivedNestedProperties ); - _inputsDataSource: PropertyDataSource; - _outputsDataSource: PropertyDataSource; - _stateDataSource: PropertyDataSource; + private _inputsDataSource: PropertyDataSource; + private _outputsDataSource: PropertyDataSource; + private _stateDataSource: PropertyDataSource; constructor( private _messageBus: MessageBus, @@ -82,15 +87,15 @@ export class DirectivePropertyResolver { }; } - get directiveInputControls(): { dataSource: PropertyDataSource; treeControl: FlatTreeControl } { + get directiveInputControls(): DirectiveTreeData { return getDirectiveControls(this._inputsDataSource); } - get directiveOutputControls(): { dataSource: PropertyDataSource; treeControl: FlatTreeControl } { + get directiveOutputControls(): DirectiveTreeData { return getDirectiveControls(this._outputsDataSource); } - get directiveStateControls(): { dataSource: PropertyDataSource; treeControl: FlatTreeControl } { + get directiveStateControls(): DirectiveTreeData { return getDirectiveControls(this._stateDataSource); } diff --git a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-resolver/property-data-source.ts b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-resolver/property-data-source.ts index a9658d4c03b..adce277434c 100644 --- a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-resolver/property-data-source.ts +++ b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-resolver/property-data-source.ts @@ -7,7 +7,6 @@ import { map } from 'rxjs/operators'; import { DefaultIterableDiffer } from '@angular/core'; import { diff } from '../../diffing'; import { FlatNode, Property } from './element-property-resolver'; -import { PropertyViewFilterOptions } from './directive-property-resolver'; const expandable = (prop: Descriptor, messageBus?: MessageBus) => { if (!prop) { @@ -32,8 +31,6 @@ export class PropertyDataSource extends DataSource { private _expandedData = new BehaviorSubject([]); private _differ = new DefaultIterableDiffer(trackBy); - private readonly _originalData: FlatNode[]; - constructor( props: { [prop: string]: Descriptor }, private _treeFlattener: MatTreeFlattener, @@ -44,8 +41,7 @@ export class PropertyDataSource extends DataSource { private _onReceivedNestedProperties: () => void ) { super(); - this._originalData = this._treeFlattener.flattenNodes(this._arrayify(props)); - this._data.next(this._originalData); + this._data.next(this._treeFlattener.flattenNodes(this._arrayify(props))); } get data(): FlatNode[] { @@ -130,24 +126,4 @@ export class PropertyDataSource extends DataSource { this._onReceivedNestedProperties(); }); } - - filterDataSource(filter: string[] | null): void { - if (filter === null) { - return; - } - let pushFlag = false; - const filteredData: FlatNode[] = []; - - // tslint:disable-next-line:prefer-for-of - for (let i = 0; i < this._originalData.length; i++) { - const node = this._originalData[i]; - if (node.level === 0) { - pushFlag = filter.includes(node.prop.name); - } - if (pushFlag) { - filteredData.push(node); - } - } - this._data.next(filteredData); - } } diff --git a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-body.component.html b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-body.component.html index a6e8f45dd52..1fa48d25b33 100644 --- a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-body.component.html +++ b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-body.component.html @@ -1,31 +1,26 @@ - - - {{ node.prop.name }} :  - - - {{ node.prop.descriptor.preview }} - - - - - - - +
+ Inputs + +
- -
- - {{ treeControl.isExpanded(node) ? '▼' : '►' }} - -   - {{ node.prop.name }} :  - - {{ treeControl.isExpanded(node) ? '' : node.prop.descriptor.preview }} - -
-
-
+
+ Outputs + +
+ +
+ State + +
diff --git a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-body.component.ts b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-body.component.ts index 040d3a7a460..f88e771ce92 100644 --- a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-body.component.ts +++ b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-body.component.ts @@ -1,47 +1,22 @@ -import { Component, Input, OnChanges, OnInit } from '@angular/core'; -import { FlatTreeControl } from '@angular/cdk/tree'; -import { PropertyDataSource } from '../../../../property-resolver/property-data-source'; +import { Component, Input } from '@angular/core'; +import { + DirectivePropertyResolver, + DirectiveTreeData, +} from '../../../../property-resolver/directive-property-resolver'; import { FlatNode } from '../../../../property-resolver/element-property-resolver'; -import { DirectivePropertyResolver } from '../../../../property-resolver/directive-property-resolver'; @Component({ selector: 'ng-property-view-body', templateUrl: './property-view-body.component.html', styleUrls: ['./property-view-body.component.css'], }) -export class PropertyViewBodyComponent implements OnChanges { - @Input() dataSource: PropertyDataSource; - @Input() treeControl: FlatTreeControl; +export class PropertyViewBodyComponent { @Input() controller: DirectivePropertyResolver; - @Input() filterList: string[] | null = null; + @Input() directiveInputControls: DirectiveTreeData; + @Input() directiveOutputControls: DirectiveTreeData; + @Input() directiveStateControls: DirectiveTreeData; - hasChild = (_: number, node: FlatNode): boolean => node.expandable; - - ngOnChanges(): void { - this.filterTreeNodes(); - } - - filterTreeNodes(): void { - this.dataSource.filterDataSource(this.filterList); - } - - toggle(node: FlatNode): void { - if (this.treeControl.isExpanded(node)) { - this.treeControl.collapse(node); - return; - } - this.expand(node); - } - - expand(node: FlatNode): void { - const { prop } = node; - if (!prop.descriptor.expandable) { - return; - } - this.treeControl.expand(node); - } - - updateValue(newValue: any, node: FlatNode): void { - this.controller.updateValue(newValue, node); + updateValue({ node, newValue }: { newValue: any; node: FlatNode }): void { + this.controller.updateValue(node, newValue); } } diff --git a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-tree/property-view-tree.component.html b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-tree/property-view-tree.component.html index a530ef1ac51..1cff750c1ff 100644 --- a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-tree/property-view-tree.component.html +++ b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-tree/property-view-tree.component.html @@ -1,4 +1,4 @@ - + {{ node.prop.name }} @@ -17,15 +17,14 @@ - LOL
- {{ _treeControl.isExpanded(node) ? '▼' : '►' }} + {{ treeControl.isExpanded(node) ? '▼' : '►' }}   {{ node.prop.name }} - {{ _treeControl.isExpanded(node) ? '' : node.prop.descriptor.preview }} + {{ treeControl.isExpanded(node) ? '' : node.prop.descriptor.preview }}
diff --git a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-tree/property-view-tree.component.ts b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-tree/property-view-tree.component.ts index 49af9b486e4..27109b551f2 100644 --- a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-tree/property-view-tree.component.ts +++ b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-body/property-view-tree/property-view-tree.component.ts @@ -9,21 +9,15 @@ import { FlatTreeControl } from '@angular/cdk/tree'; styleUrls: ['./property-view-tree.component.css'], }) export class PropertyViewTreeComponent { - @Input() set dataSource(dataSource: PropertyDataSource) { - this._dataSource = dataSource; - } + @Input() dataSource: PropertyDataSource; + @Input() treeControl: FlatTreeControl; @Output() updateValue = new EventEmitter(); - _dataSource: PropertyDataSource; - _treeControl: FlatTreeControl; - - hasChild = (_: number, node: FlatNode): boolean => { - return node.expandable; - }; + hasChild = (_: number, node: FlatNode): boolean => node.expandable; toggle(node: FlatNode): void { - if (this._treeControl.isExpanded(node)) { - this._treeControl.collapse(node); + if (this.treeControl.isExpanded(node)) { + this.treeControl.collapse(node); return; } this.expand(node); @@ -34,13 +28,13 @@ export class PropertyViewTreeComponent { if (!prop.descriptor.expandable) { return; } - this._treeControl.expand(node); + this.treeControl.expand(node); } - handleUpdate(node: FlatNode, updatedValue: any): void { + handleUpdate(node: FlatNode, newValue: any): void { this.updateValue.emit({ node, - updatedValue, + newValue, }); } } diff --git a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-header/property-view-header.component.css b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-header/property-view-header.component.css index 4434ea78467..a675802db72 100644 --- a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-header/property-view-header.component.css +++ b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-header/property-view-header.component.css @@ -22,7 +22,3 @@ header { line-height: 15px; margin-right: 7px; } - -:host /deep/ .mat-button-toggle-appearance-standard .mat-button-toggle-label-content { - line-height: 25px; -} diff --git a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-header/property-view-header.component.html b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-header/property-view-header.component.html index 01e6d991f0b..d7d9ec48d2e 100644 --- a/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-header/property-view-header.component.html +++ b/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-body/property-view/property-view-header/property-view-header.component.html @@ -1,16 +1,5 @@
Properties of {{ directive }} - - - Inputs - - - Outputs - - - State - -