Commit f8ac02da627a6fdbaa9351e848e89460bca6e580

Authored by Igor Kulikov
1 parent 77eb33df

Refactoring

Showing 68 changed files with 425 additions and 178 deletions
... ... @@ -104,7 +104,6 @@
104 104 <module>tools</module>
105 105 <module>application</module>
106 106 <module>msa</module>
107   - <module>ui</module>
108 107 </modules>
109 108
110 109 <profiles>
... ... @@ -307,6 +306,7 @@
307 306 <exclude>**/*.proto.js</exclude>
308 307 <exclude>docker/haproxy/**</exclude>
309 308 <exclude>docker/tb-node/**</exclude>
  309 + <exclude>ui/**</exclude>
310 310 </excludes>
311 311 <mapping>
312 312 <proto>JAVADOC_STYLE</proto>
... ...
ui-ngx/src/app/modules/home/components/contact.component.html renamed from ui-ngx/src/app/shared/components/contact.component.html
ui-ngx/src/app/modules/home/components/contact.component.ts renamed from ui-ngx/src/app/shared/components/contact.component.ts
... ... @@ -16,7 +16,7 @@
16 16
17 17 import { Component, Input } from '@angular/core';
18 18 import { FormGroup } from '@angular/forms';
19   -import { COUNTRIES } from '@shared/components/contact.models';
  19 +import { COUNTRIES } from '@home/models/contact.models';
20 20
21 21 @Component({
22 22 selector: 'tb-contact',
... ...
ui-ngx/src/app/modules/home/components/details-panel.component.html renamed from ui-ngx/src/app/shared/components/details-panel.component.html
ui-ngx/src/app/modules/home/components/details-panel.component.scss renamed from ui-ngx/src/app/shared/components/details-panel.component.scss
... ... @@ -13,7 +13,7 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -@import '../../../scss/constants';
  16 +@import '../../../../scss/constants';
17 17
18 18 :host {
19 19 width: 100%;
... ...
ui-ngx/src/app/modules/home/components/details-panel.component.ts renamed from ui-ngx/src/app/shared/components/details-panel.component.ts
ui-ngx/src/app/modules/home/components/entity/add-entity-dialog.component.html renamed from ui-ngx/src/app/shared/components/entity/add-entity-dialog.component.html
ui-ngx/src/app/modules/home/components/entity/add-entity-dialog.component.scss renamed from ui-ngx/src/app/shared/components/entity/add-entity-dialog.component.scss
ui-ngx/src/app/modules/home/components/entity/add-entity-dialog.component.ts renamed from ui-ngx/src/app/shared/components/entity/add-entity-dialog.component.ts
... ... @@ -14,26 +14,19 @@
14 14 /// limitations under the License.
15 15 ///
16 16
17   -import {
18   - Component,
19   - ComponentFactoryResolver,
20   - Inject,
21   - OnInit,
22   - SkipSelf,
23   - ViewChild
24   -} from '@angular/core';
25   -import { ErrorStateMatcher, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
26   -import { PageComponent } from '@shared/components/page.component';
27   -import { Store } from '@ngrx/store';
28   -import { AppState } from '@core/core.state';
29   -import { FormControl, FormGroupDirective, NgForm } from '@angular/forms';
30   -import { EntityTypeResource, EntityTypeTranslation } from '@shared/models/entity-type.models';
31   -import { EntityTableConfig } from '@shared/components/entity/entities-table-config.models';
32   -import { BaseData, HasId } from '@shared/models/base-data';
33   -import { EntityId } from '@shared/models/id/entity-id';
34   -import { AddEntityDialogData } from '@shared/components/entity/entity-component.models';
35   -import { TbAnchorComponent } from '@shared/components/tb-anchor.component';
36   -import { EntityComponent } from '@shared/components/entity/entity.component';
  17 +import {Component, ComponentFactoryResolver, Inject, OnInit, SkipSelf, ViewChild} from '@angular/core';
  18 +import {ErrorStateMatcher, MAT_DIALOG_DATA, MatDialogRef} from '@angular/material';
  19 +import {PageComponent} from '@shared/components/page.component';
  20 +import {Store} from '@ngrx/store';
  21 +import {AppState} from '@core/core.state';
  22 +import {FormControl, FormGroupDirective, NgForm} from '@angular/forms';
  23 +import {EntityTypeResource, EntityTypeTranslation} from '@shared/models/entity-type.models';
  24 +import {BaseData, HasId} from '@shared/models/base-data';
  25 +import {EntityId} from '@shared/models/id/entity-id';
  26 +import {TbAnchorComponent} from '@shared/components/tb-anchor.component';
  27 +import {EntityComponent} from './entity.component';
  28 +import {EntityTableConfig} from '@home/models/entity/entities-table-config.models';
  29 +import {AddEntityDialogData} from '@home/models/entity/entity-component.models';
37 30
38 31 @Component({
39 32 selector: 'tb-add-entity-dialog',
... ...
ui-ngx/src/app/modules/home/components/entity/contact-based.component.ts renamed from ui-ngx/src/app/shared/components/entity/contact-based.component.ts
... ... @@ -16,12 +16,12 @@
16 16
17 17 import { Store } from '@ngrx/store';
18 18 import { AppState } from '@core/core.state';
19   -import { EntityComponent } from '@shared/components/entity/entity.component';
20 19 import { FormBuilder, FormGroup, ValidatorFn, Validators } from '@angular/forms';
21 20 import { ContactBased } from '@shared/models/contact-based.model';
22 21 import { AfterViewInit } from '@angular/core';
23   -import { POSTAL_CODE_PATTERNS } from '@shared/components/contact.models';
  22 +import { POSTAL_CODE_PATTERNS } from '@home/models/contact.models';
24 23 import { HasId } from '@shared/models/base-data';
  24 +import {EntityComponent} from './entity.component';
25 25
26 26 export abstract class ContactBasedComponent<T extends ContactBased<HasId>> extends EntityComponent<T> implements AfterViewInit {
27 27
... ...
ui-ngx/src/app/modules/home/components/entity/entities-table.component.html renamed from ui-ngx/src/app/shared/components/entity/entities-table.component.html
ui-ngx/src/app/modules/home/components/entity/entities-table.component.scss renamed from ui-ngx/src/app/shared/components/entity/entities-table.component.scss
ui-ngx/src/app/modules/home/components/entity/entities-table.component.ts renamed from ui-ngx/src/app/shared/components/entity/entities-table.component.ts
... ... @@ -29,7 +29,7 @@ import { Store } from '@ngrx/store';
29 29 import { AppState } from '@core/core.state';
30 30 import { PageLink, TimePageLink } from '@shared/models/page/page-link';
31 31 import { MatDialog, MatPaginator, MatSort } from '@angular/material';
32   -import { EntitiesDataSource } from '@shared/models/datasource/entity-datasource';
  32 +import { EntitiesDataSource } from '@home/models/datasource/entity-datasource';
33 33 import { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';
34 34 import { Direction, SortOrder } from '@shared/models/page/sort-order';
35 35 import { forkJoin, fromEvent, merge, Observable } from 'rxjs';
... ... @@ -43,14 +43,14 @@ import {
43 43 EntityTableConfig,
44 44 GroupActionDescriptor,
45 45 HeaderActionDescriptor
46   -} from '@shared/components/entity/entities-table-config.models';
  46 +} from '@home/models/entity/entities-table-config.models';
47 47 import { EntityTypeTranslation } from '@shared/models/entity-type.models';
48 48 import { DialogService } from '@core/services/dialog.service';
49   -import { AddEntityDialogComponent } from '@shared/components/entity/add-entity-dialog.component';
  49 +import { AddEntityDialogComponent } from './add-entity-dialog.component';
50 50 import {
51 51 AddEntityDialogData,
52 52 EntityAction
53   -} from '@shared/components/entity/entity-component.models';
  53 +} from '@home/models/entity/entity-component.models';
54 54 import { Timewindow } from '@shared/models/time/time.models';
55 55 import {DomSanitizer, SafeHtml} from '@angular/platform-browser';
56 56 import { TbAnchorComponent } from '@shared/components/tb-anchor.component';
... ...
ui-ngx/src/app/modules/home/components/entity/entity-details-panel.component.html renamed from ui-ngx/src/app/shared/components/entity/entity-details-panel.component.html
... ... @@ -31,13 +31,6 @@
31 31 <mat-tab label="{{ 'details.details' | translate }}">
32 32 <tb-anchor #entityDetailsForm></tb-anchor>
33 33 </mat-tab>
34   - <!--mat-tab *ngIf="entity && entitiesTableConfig.entityType !== entityTypes.CUSTOMER"
35   - label="{{ 'audit-log.audit-logs' | translate }}">
36   - <tb-audit-log-table [active]="selectedTab === 1" [auditLogMode]="auditLogModes.ENTITY" [entityId]="entity.id" detailsMode="true"></tb-audit-log-table>
37   - </mat-tab>
38   - <mat-tab *ngIf="entity && entitiesTableConfig.entityType === entityTypes.CUSTOMER"
39   - label="{{ 'audit-log.audit-logs' | translate }}">
40   - <tb-audit-log-table [active]="selectedTab === 1" [auditLogMode]="auditLogModes.CUSTOMER" [customerId]="entity.id" detailsMode="true"></tb-audit-log-table>
41   - </mat-tab-->
  34 + <tb-anchor #entityTabs></tb-anchor>
42 35 </mat-tab-group>
43 36 </tb-details-panel>
... ...
ui-ngx/src/app/modules/home/components/entity/entity-details-panel.component.scss renamed from ui-ngx/src/app/shared/components/entity/entity-details-panel.component.scss
ui-ngx/src/app/modules/home/components/entity/entity-details-panel.component.ts renamed from ui-ngx/src/app/shared/components/entity/entity-details-panel.component.ts
... ... @@ -23,12 +23,15 @@ import {
23 23 OnDestroy,
24 24 OnInit,
25 25 Output,
26   - ViewChild
  26 + ViewChild,
  27 + ViewChildren,
  28 + QueryList,
  29 + ContentChildren, AfterViewInit
27 30 } from '@angular/core';
28 31 import { PageComponent } from '@shared/components/page.component';
29 32 import { Store } from '@ngrx/store';
30 33 import { AppState } from '@core/core.state';
31   -import { EntityTableConfig } from '@shared/components/entity/entities-table-config.models';
  34 +import { EntityTableConfig } from '@home/models/entity/entities-table-config.models';
32 35 import { BaseData, HasId } from '@shared/models/base-data';
33 36 import {
34 37 EntityType,
... ... @@ -36,11 +39,12 @@ import {
36 39 EntityTypeTranslation
37 40 } from '@shared/models/entity-type.models';
38 41 import { NgForm } from '@angular/forms';
39   -import { EntityComponent } from '@shared/components/entity/entity.component';
  42 +import { EntityComponent } from './entity.component';
40 43 import { TbAnchorComponent } from '@shared/components/tb-anchor.component';
41   -import { EntityAction } from '@shared/components/entity/entity-component.models';
  44 +import { EntityAction } from '@home/models/entity/entity-component.models';
42 45 import { Subscription } from 'rxjs';
43   -// import { AuditLogMode } from '@shared/models/audit-log.models';
  46 +import { MatTabGroup, MatTab } from '@angular/material';
  47 +import { EntityTabsComponent } from '@home/components/entity/entity-tabs.component';
44 48
45 49 @Component({
46 50 selector: 'tb-entity-details-panel',
... ... @@ -48,7 +52,7 @@ import { Subscription } from 'rxjs';
48 52 styleUrls: ['./entity-details-panel.component.scss'],
49 53 changeDetection: ChangeDetectionStrategy.OnPush
50 54 })
51   -export class EntityDetailsPanelComponent extends PageComponent implements OnInit, OnDestroy {
  55 +export class EntityDetailsPanelComponent extends PageComponent implements OnInit, AfterViewInit, OnDestroy {
52 56
53 57 @Input() entitiesTableConfig: EntityTableConfig<BaseData<HasId>>;
54 58
... ... @@ -62,6 +66,7 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit
62 66 entityAction = new EventEmitter<EntityAction<BaseData<HasId>>>();
63 67
64 68 entityComponent: EntityComponent<BaseData<HasId>>;
  69 + entityTabsComponent: EntityTabsComponent<BaseData<HasId>>;
65 70 detailsForm: NgForm;
66 71
67 72 isEditValue = false;
... ... @@ -71,6 +76,12 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit
71 76
72 77 @ViewChild('entityDetailsForm', {static: true}) entityDetailsFormAnchor: TbAnchorComponent;
73 78
  79 + @ViewChild('entityTabs', {static: true}) entityTabsAnchor: TbAnchorComponent;
  80 +
  81 + @ViewChild(MatTabGroup, {static: true}) matTabGroup: MatTabGroup;
  82 +
  83 + @ViewChildren(MatTab) inclusiveTabs: QueryList<MatTab>;
  84 +
74 85 translations: EntityTypeTranslation;
75 86 resources: EntityTypeResource;
76 87 entity: BaseData<HasId>;
... ... @@ -94,6 +105,9 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit
94 105 set isEdit(val: boolean) {
95 106 this.isEditValue = val;
96 107 this.entityComponent.isEdit = val;
  108 + if (this.entityTabsComponent) {
  109 + this.entityTabsComponent.isEdit = val;
  110 + }
97 111 }
98 112
99 113 get isEdit() {
... ... @@ -125,6 +139,19 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit
125 139 this.entityActionSubscription = this.entityComponent.entityAction.subscribe((action) => {
126 140 this.entityAction.emit(action);
127 141 });
  142 + this.buildEntityTabsComponent();
  143 + }
  144 +
  145 + buildEntityTabsComponent() {
  146 + if (this.entitiesTableConfig.entityTabsComponent) {
  147 + const componentTabsFactory = this.componentFactoryResolver.resolveComponentFactory(this.entitiesTableConfig.entityTabsComponent);
  148 + const viewContainerRef = this.entityTabsAnchor.viewContainerRef;
  149 + viewContainerRef.clear();
  150 + const componentTabsRef = viewContainerRef.createComponent(componentTabsFactory);
  151 + this.entityTabsComponent = componentTabsRef.instance;
  152 + this.entityTabsComponent.isEdit = this.isEdit;
  153 + this.entityTabsComponent.entitiesTableConfig = this.entitiesTableConfig;
  154 + }
128 155 }
129 156
130 157 reload(): void {
... ... @@ -133,6 +160,9 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit
133 160 (entity) => {
134 161 this.entity = entity;
135 162 this.entityComponent.entity = entity;
  163 + if (this.entityTabsComponent) {
  164 + this.entityTabsComponent.entity = entity;
  165 + }
136 166 }
137 167 );
138 168 }
... ... @@ -145,6 +175,9 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit
145 175 this.isEdit = isEdit;
146 176 if (!this.isEdit) {
147 177 this.entityComponent.entity = this.entity;
  178 + if (this.entityTabsComponent) {
  179 + this.entityTabsComponent.entity = this.entity;
  180 + }
148 181 } else {
149 182 this.selectedTab = 0;
150 183 }
... ... @@ -157,6 +190,9 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit
157 190 (entity) => {
158 191 this.entity = entity;
159 192 this.entityComponent.entity = entity;
  193 + if (this.entityTabsComponent) {
  194 + this.entityTabsComponent.entity = entity;
  195 + }
160 196 this.isEdit = false;
161 197 this.entityUpdated.emit(this.entity);
162 198 }
... ... @@ -164,4 +200,17 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit
164 200 }
165 201 }
166 202
  203 + ngAfterViewInit(): void {
  204 + if (this.entityTabsComponent) {
  205 + this.entityTabsComponent.entityTabsChanged.subscribe(
  206 + (entityTabs) => {
  207 + if (entityTabs) {
  208 + this.matTabGroup._tabs.reset([...this.inclusiveTabs.toArray(), ...entityTabs]);
  209 + this.matTabGroup._tabs.notifyOnChanges();
  210 + }
  211 + }
  212 + );
  213 + }
  214 + }
  215 +
167 216 }
... ...
ui-ngx/src/app/modules/home/components/entity/entity-table-header.component.ts renamed from ui-ngx/src/app/shared/components/entity/entity-table-header.component.ts
... ... @@ -19,7 +19,7 @@ import { PageComponent } from '@shared/components/page.component';
19 19 import { Input, OnInit } from '@angular/core';
20 20 import { Store } from '@ngrx/store';
21 21 import { AppState } from '@core/core.state';
22   -import { EntityTableConfig } from '@shared/components/entity/entities-table-config.models';
  22 +import { EntityTableConfig } from '@home/models/entity/entities-table-config.models';
23 23
24 24 export abstract class EntityTableHeaderComponent<T extends BaseData<HasId>> extends PageComponent implements OnInit {
25 25
... ...
  1 +///
  2 +/// Copyright © 2016-2019 The Thingsboard Authors
  3 +///
  4 +/// Licensed under the Apache License, Version 2.0 (the "License");
  5 +/// you may not use this file except in compliance with the License.
  6 +/// You may obtain a copy of the License at
  7 +///
  8 +/// http://www.apache.org/licenses/LICENSE-2.0
  9 +///
  10 +/// Unless required by applicable law or agreed to in writing, software
  11 +/// distributed under the License is distributed on an "AS IS" BASIS,
  12 +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 +/// See the License for the specific language governing permissions and
  14 +/// limitations under the License.
  15 +///
  16 +
  17 +import { BaseData, HasId } from '@shared/models/base-data';
  18 +import { PageComponent } from '@shared/components/page.component';
  19 +import {
  20 + AfterViewInit,
  21 + ContentChildren,
  22 + EventEmitter,
  23 + Input,
  24 + OnInit,
  25 + Output,
  26 + QueryList,
  27 + ViewChildren
  28 +} from '@angular/core';
  29 +import { Store } from '@ngrx/store';
  30 +import { AppState } from '@core/core.state';
  31 +import { EntityTableConfig } from '@home/models/entity/entities-table-config.models';
  32 +import { MatTab } from '@angular/material';
  33 +import { EntityAction } from '@home/models/entity/entity-component.models';
  34 +import { BehaviorSubject } from 'rxjs';
  35 +
  36 +export abstract class EntityTabsComponent<T extends BaseData<HasId>> extends PageComponent implements OnInit, AfterViewInit {
  37 +
  38 + entityValue: T;
  39 +
  40 + @ViewChildren(MatTab) entityTabs: QueryList<MatTab>;
  41 +
  42 + isEditValue: boolean;
  43 +
  44 + @Input()
  45 + set isEdit(isEdit: boolean) {
  46 + this.isEditValue = isEdit;
  47 + }
  48 +
  49 + get isEdit() {
  50 + return this.isEditValue;
  51 + }
  52 +
  53 + @Input()
  54 + set entity(entity: T) {
  55 + this.entityValue = entity;
  56 + }
  57 +
  58 + get entity(): T {
  59 + return this.entityValue;
  60 + }
  61 +
  62 + @Input()
  63 + entitiesTableConfig: EntityTableConfig<T>;
  64 +
  65 + private entityTabsSubject = new BehaviorSubject<Array<MatTab>>(null);
  66 +
  67 + entityTabsChanged = this.entityTabsSubject.asObservable();
  68 +
  69 + protected constructor(protected store: Store<AppState>) {
  70 + super(store);
  71 + }
  72 +
  73 + ngOnInit() {
  74 + }
  75 +
  76 + ngAfterViewInit(): void {
  77 + this.entityTabsSubject.next(this.entityTabs.toArray());
  78 + this.entityTabs.changes.subscribe(
  79 + () => {
  80 + this.entityTabsSubject.next(this.entityTabs.toArray());
  81 + }
  82 + );
  83 + }
  84 +
  85 +}
... ...
ui-ngx/src/app/modules/home/components/entity/entity.component.ts renamed from ui-ngx/src/app/shared/components/entity/entity.component.ts
... ... @@ -20,8 +20,8 @@ import { PageComponent } from '@shared/components/page.component';
20 20 import { EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
21 21 import { Store } from '@ngrx/store';
22 22 import { AppState } from '@core/core.state';
23   -import { EntityAction } from '@shared/components/entity/entity-component.models';
24   -import { EntityTableConfig } from '@shared/components/entity/entities-table-config.models';
  23 +import { EntityAction } from '@home/models/entity/entity-component.models';
  24 +import { EntityTableConfig } from '@home/models/entity/entities-table-config.models';
25 25
26 26 export abstract class EntityComponent<T extends BaseData<HasId>> extends PageComponent implements OnInit {
27 27
... ...
  1 +///
  2 +/// Copyright © 2016-2019 The Thingsboard Authors
  3 +///
  4 +/// Licensed under the Apache License, Version 2.0 (the "License");
  5 +/// you may not use this file except in compliance with the License.
  6 +/// You may obtain a copy of the License at
  7 +///
  8 +/// http://www.apache.org/licenses/LICENSE-2.0
  9 +///
  10 +/// Unless required by applicable law or agreed to in writing, software
  11 +/// distributed under the License is distributed on an "AS IS" BASIS,
  12 +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 +/// See the License for the specific language governing permissions and
  14 +/// limitations under the License.
  15 +///
  16 +
  17 +import {NgModule} from '@angular/core';
  18 +import {CommonModule} from '@angular/common';
  19 +import {SharedModule} from '@app/shared/shared.module';
  20 +import {AddEntityDialogComponent} from './entity/add-entity-dialog.component';
  21 +import {EntitiesTableComponent} from './entity/entities-table.component';
  22 +import {DetailsPanelComponent} from './details-panel.component';
  23 +import {EntityDetailsPanelComponent} from './entity/entity-details-panel.component';
  24 +import {ContactComponent} from './contact.component';
  25 +
  26 +@NgModule({
  27 + entryComponents: [
  28 + AddEntityDialogComponent
  29 + ],
  30 + declarations:
  31 + [
  32 + EntitiesTableComponent,
  33 + AddEntityDialogComponent,
  34 + DetailsPanelComponent,
  35 + EntityDetailsPanelComponent,
  36 + ContactComponent,
  37 + ],
  38 + imports: [
  39 + CommonModule,
  40 + SharedModule
  41 + ],
  42 + exports: [
  43 + EntitiesTableComponent,
  44 + AddEntityDialogComponent,
  45 + DetailsPanelComponent,
  46 + EntityDetailsPanelComponent,
  47 + ContactComponent
  48 + ]
  49 +})
  50 +export class HomeComponentsModule { }
... ...
ui-ngx/src/app/modules/home/models/contact.models.ts renamed from ui-ngx/src/app/shared/components/contact.models.ts
ui-ngx/src/app/modules/home/models/datasource/entity-datasource.ts renamed from ui-ngx/src/app/shared/models/datasource/entity-datasource.ts
... ... @@ -22,7 +22,7 @@ import { BaseData, HasId } from '@shared/models/base-data';
22 22 import { CollectionViewer, DataSource } from '@angular/cdk/typings/collections';
23 23 import { catchError, map, take, tap } from 'rxjs/operators';
24 24 import { SelectionModel } from '@angular/cdk/collections';
25   -import {EntityBooleanFunction} from '@shared/components/entity/entities-table-config.models';
  25 +import {EntityBooleanFunction} from '@home/models/entity/entities-table-config.models';
26 26
27 27 export type EntitiesFetchFunction<T extends BaseData<HasId>, P extends PageLink> = (pageLink: P) => Observable<PageData<T>>;
28 28
... ...
ui-ngx/src/app/modules/home/models/entity/entities-table-config.models.ts renamed from ui-ngx/src/app/shared/components/entity/entities-table-config.models.ts
... ... @@ -14,26 +14,22 @@
14 14 /// limitations under the License.
15 15 ///
16 16
17   -import { BaseData, HasId } from '@shared/models/base-data';
18   -import { EntityId } from '@shared/models/id/entity-id';
19   -import { EntitiesFetchFunction } from '@shared/models/datasource/entity-datasource';
20   -import { Observable, of } from 'rxjs';
21   -import { emptyPageData } from '@shared/models/page/page-data';
22   -import { DatePipe } from '@angular/common';
23   -import { Direction, SortOrder } from '@shared/models/page/sort-order';
24   -import {
25   - EntityType,
26   - EntityTypeResource,
27   - EntityTypeTranslation
28   -} from '@shared/models/entity-type.models';
29   -import { EntityComponent } from '@shared/components/entity/entity.component';
30   -import { Type } from '@angular/core';
31   -import { EntityAction } from '@shared/components/entity/entity-component.models';
32   -import { HasUUID } from '@shared/models/id/has-uuid';
33   -import { PageLink } from '@shared/models/page/page-link';
34   -import { EntitiesTableComponent } from '@shared/components/entity/entities-table.component';
35   -import { EntityTableHeaderComponent } from '@shared/components/entity/entity-table-header.component';
36   -import { ActivatedRoute } from '@angular/router';
  17 +import {BaseData, HasId} from '@shared/models/base-data';
  18 +import {EntitiesFetchFunction} from '@home/models/datasource/entity-datasource';
  19 +import {Observable, of} from 'rxjs';
  20 +import {emptyPageData} from '@shared/models/page/page-data';
  21 +import {DatePipe} from '@angular/common';
  22 +import {Direction, SortOrder} from '@shared/models/page/sort-order';
  23 +import {EntityType, EntityTypeResource, EntityTypeTranslation} from '@shared/models/entity-type.models';
  24 +import {EntityComponent} from '@home/components/entity/entity.component';
  25 +import {Type} from '@angular/core';
  26 +import {EntityAction} from './entity-component.models';
  27 +import {HasUUID} from '@shared/models/id/has-uuid';
  28 +import {PageLink} from '@shared/models/page/page-link';
  29 +import {EntitiesTableComponent} from '@home/components/entity/entities-table.component';
  30 +import {EntityTableHeaderComponent} from '@home/components/entity/entity-table-header.component';
  31 +import {ActivatedRoute} from '@angular/router';
  32 +import { EntityTabsComponent } from '../../components/entity/entity-tabs.component';
37 33
38 34 export type EntityBooleanFunction<T extends BaseData<HasId>> = (entity: T) => boolean;
39 35 export type EntityStringFunction<T extends BaseData<HasId>> = (entity: T) => string;
... ... @@ -117,6 +113,7 @@ export class EntityTableConfig<T extends BaseData<HasId>, P extends PageLink = P
117 113 entityTranslations: EntityTypeTranslation;
118 114 entityResources: EntityTypeResource;
119 115 entityComponent: Type<EntityComponent<T>>;
  116 + entityTabsComponent: Type<EntityTabsComponent<T>>;
120 117 addDialogStyle = {};
121 118 defaultSortOrder: SortOrder = {property: 'createdTime', direction: Direction.ASC};
122 119 columns: Array<EntityTableColumn<T>> = [];
... ...
ui-ngx/src/app/modules/home/models/entity/entity-component.models.ts renamed from ui-ngx/src/app/shared/components/entity/entity-component.models.ts
... ... @@ -14,8 +14,8 @@
14 14 /// limitations under the License.
15 15 ///
16 16
17   -import { BaseData, HasId } from '@shared/models/base-data';
18   -import { EntityTableConfig } from '@shared/components/entity/entities-table-config.models';
  17 +import {BaseData, HasId} from '@shared/models/base-data';
  18 +import {EntityTableConfig} from './entities-table-config.models';
19 19
20 20 export interface AddEntityDialogData<T extends BaseData<HasId>> {
21 21 entitiesTableConfig: EntityTableConfig<T>;
... ...
... ... @@ -20,8 +20,9 @@ import { CommonModule } from '@angular/common';
20 20 import { AdminRoutingModule } from './admin-routing.module';
21 21 import { SharedModule } from '@app/shared/shared.module';
22 22 import { MailServerComponent } from '@modules/home/pages/admin/mail-server.component';
23   -import {GeneralSettingsComponent} from "@modules/home/pages/admin/general-settings.component";
24   -import {SecuritySettingsComponent} from "@modules/home/pages/admin/security-settings.component";
  23 +import {GeneralSettingsComponent} from '@modules/home/pages/admin/general-settings.component';
  24 +import {SecuritySettingsComponent} from '@modules/home/pages/admin/security-settings.component';
  25 +import {HomeComponentsModule} from '@modules/home/components/home-components.module';
25 26
26 27 @NgModule({
27 28 declarations:
... ... @@ -33,6 +34,7 @@ import {SecuritySettingsComponent} from "@modules/home/pages/admin/security-sett
33 34 imports: [
34 35 CommonModule,
35 36 SharedModule,
  37 + HomeComponentsModule,
36 38 AdminRoutingModule
37 39 ]
38 40 })
... ...
... ... @@ -17,7 +17,7 @@
17 17 import {NgModule} from '@angular/core';
18 18 import {RouterModule, Routes} from '@angular/router';
19 19
20   -import {EntitiesTableComponent} from '@shared/components/entity/entities-table.component';
  20 +import {EntitiesTableComponent} from '../../components/entity/entities-table.component';
21 21 import {Authority} from '@shared/models/authority.enum';
22 22 import {AssetsTableConfigResolver} from './assets-table-config.resolver';
23 23
... ...
... ... @@ -17,7 +17,7 @@
17 17 import {Component} from '@angular/core';
18 18 import {Store} from '@ngrx/store';
19 19 import {AppState} from '@core/core.state';
20   -import {EntityTableHeaderComponent} from '@shared/components/entity/entity-table-header.component';
  20 +import {EntityTableHeaderComponent} from '../../components/entity/entity-table-header.component';
21 21 import {EntityType} from '@shared/models/entity-type.models';
22 22 import {AssetInfo} from '@shared/models/asset.models';
23 23
... ...
... ... @@ -17,7 +17,7 @@
17 17 import {Component} from '@angular/core';
18 18 import {Store} from '@ngrx/store';
19 19 import {AppState} from '@core/core.state';
20   -import {EntityComponent} from '@shared/components/entity/entity.component';
  20 +import {EntityComponent} from '../../components/entity/entity.component';
21 21 import {FormBuilder, FormGroup, Validators} from '@angular/forms';
22 22 import {EntityType} from '@shared/models/entity-type.models';
23 23 import {NULL_UUID} from '@shared/models/id/has-uuid';
... ...
... ... @@ -21,6 +21,7 @@ import {HomeDialogsModule} from '../../dialogs/home-dialogs.module';
21 21 import {AssetComponent} from './asset.component';
22 22 import {AssetTableHeaderComponent} from './asset-table-header.component';
23 23 import {AssetRoutingModule} from './asset-routing.module';
  24 +import {HomeComponentsModule} from '@modules/home/components/home-components.module';
24 25
25 26 @NgModule({
26 27 entryComponents: [
... ... @@ -34,6 +35,7 @@ import {AssetRoutingModule} from './asset-routing.module';
34 35 imports: [
35 36 CommonModule,
36 37 SharedModule,
  38 + HomeComponentsModule,
37 39 HomeDialogsModule,
38 40 AssetRoutingModule
39 41 ]
... ...
... ... @@ -25,11 +25,11 @@ import {
25 25 EntityTableConfig,
26 26 GroupActionDescriptor,
27 27 HeaderActionDescriptor
28   -} from '@shared/components/entity/entities-table-config.models';
  28 +} from '@home/models/entity/entities-table-config.models';
29 29 import {TranslateService} from '@ngx-translate/core';
30 30 import {DatePipe} from '@angular/common';
31 31 import {EntityType, entityTypeResources, entityTypeTranslations} from '@shared/models/entity-type.models';
32   -import {EntityAction} from '@shared/components/entity/entity-component.models';
  32 +import {EntityAction} from '@home/models/entity/entity-component.models';
33 33 import {forkJoin, Observable, of} from 'rxjs';
34 34 import {select, Store} from '@ngrx/store';
35 35 import {selectAuthUser} from '@core/auth/auth.selectors';
... ...
... ... @@ -17,7 +17,7 @@
17 17 import {NgModule} from '@angular/core';
18 18 import {RouterModule, Routes} from '@angular/router';
19 19
20   -import {EntitiesTableComponent} from '@shared/components/entity/entities-table.component';
  20 +import {EntitiesTableComponent} from '../../components/entity/entities-table.component';
21 21 import {Authority} from '@shared/models/authority.enum';
22 22 import {UsersTableConfigResolver} from '../user/users-table-config.resolver';
23 23 import {CustomersTableConfigResolver} from './customers-table-config.resolver';
... ...
... ... @@ -19,10 +19,10 @@ import { Store } from '@ngrx/store';
19 19 import { AppState } from '@core/core.state';
20 20 import { FormBuilder, FormGroup, Validators } from '@angular/forms';
21 21 import { Customer } from '@shared/models/customer.model';
22   -import { ContactBasedComponent } from '@shared/components/entity/contact-based.component';
23 22 import {Tenant} from '@app/shared/models/tenant.model';
24 23 import {ActionNotificationShow} from '@app/core/notification/notification.actions';
25 24 import {TranslateService} from '@ngx-translate/core';
  25 +import {ContactBasedComponent} from '../../components/entity/contact-based.component';
26 26
27 27 @Component({
28 28 selector: 'tb-customer',
... ...
... ... @@ -19,6 +19,7 @@ import { CommonModule } from '@angular/common';
19 19 import { SharedModule } from '@shared/shared.module';
20 20 import {CustomerComponent} from '@modules/home/pages/customer/customer.component';
21 21 import {CustomerRoutingModule} from './customer-routing.module';
  22 +import {HomeComponentsModule} from '@modules/home/components/home-components.module';
22 23
23 24 @NgModule({
24 25 entryComponents: [
... ... @@ -30,6 +31,7 @@ import {CustomerRoutingModule} from './customer-routing.module';
30 31 imports: [
31 32 CommonModule,
32 33 SharedModule,
  34 + HomeComponentsModule,
33 35 CustomerRoutingModule
34 36 ]
35 37 })
... ...
... ... @@ -23,7 +23,7 @@ import {
23 23 DateEntityTableColumn,
24 24 EntityTableColumn,
25 25 EntityTableConfig
26   -} from '@shared/components/entity/entities-table-config.models';
  26 +} from '@home/models/entity/entities-table-config.models';
27 27 import { TranslateService } from '@ngx-translate/core';
28 28 import { DatePipe } from '@angular/common';
29 29 import {
... ... @@ -31,7 +31,7 @@ import {
31 31 entityTypeResources,
32 32 entityTypeTranslations
33 33 } from '@shared/models/entity-type.models';
34   -import { EntityAction } from '@shared/components/entity/entity-component.models';
  34 +import { EntityAction } from '@home/models/entity/entity-component.models';
35 35 import {Customer} from '@app/shared/models/customer.model';
36 36 import {CustomerService} from '@app/core/http/customer.service';
37 37 import {CustomerComponent} from '@modules/home/pages/customer/customer.component';
... ...
... ... @@ -17,7 +17,7 @@
17 17 import {Component} from '@angular/core';
18 18 import {Store} from '@ngrx/store';
19 19 import {AppState} from '@core/core.state';
20   -import {EntityComponent} from '@shared/components/entity/entity.component';
  20 +import {EntityComponent} from '../../components/entity/entity.component';
21 21 import {FormBuilder, FormGroup, Validators} from '@angular/forms';
22 22 import {ActionNotificationShow} from '@core/notification/notification.actions';
23 23 import {TranslateService} from '@ngx-translate/core';
... ... @@ -35,7 +35,7 @@ import {DashboardService} from '@core/http/dashboard.service';
35 35 templateUrl: './dashboard-form.component.html',
36 36 styleUrls: ['./dashboard-form.component.scss']
37 37 })
38   -export class DashboardFormComponent extends EntityComponent<Dashboard | DashboardInfo> {
  38 +export class DashboardFormComponent extends EntityComponent<Dashboard> {
39 39
40 40 dashboardScope: 'tenant' | 'customer' | 'customer_user';
41 41 customerId: string;
... ...
... ... @@ -17,7 +17,7 @@
17 17 import {NgModule} from '@angular/core';
18 18 import {RouterModule, Routes} from '@angular/router';
19 19
20   -import {EntitiesTableComponent} from '@shared/components/entity/entities-table.component';
  20 +import {EntitiesTableComponent} from '../../components/entity/entities-table.component';
21 21 import {Authority} from '@shared/models/authority.enum';
22 22 import {DashboardsTableConfigResolver} from './dashboards-table-config.resolver';
23 23
... ...
... ... @@ -22,6 +22,7 @@ import {DashboardFormComponent} from '@modules/home/pages/dashboard/dashboard-fo
22 22 import {ManageDashboardCustomersDialogComponent} from '@modules/home/pages/dashboard/manage-dashboard-customers-dialog.component';
23 23 import {DashboardRoutingModule} from './dashboard-routing.module';
24 24 import {MakeDashboardPublicDialogComponent} from '@modules/home/pages/dashboard/make-dashboard-public-dialog.component';
  25 +import {HomeComponentsModule} from '@modules/home/components/home-components.module';
25 26
26 27 @NgModule({
27 28 entryComponents: [
... ... @@ -37,6 +38,7 @@ import {MakeDashboardPublicDialogComponent} from '@modules/home/pages/dashboard/
37 38 imports: [
38 39 CommonModule,
39 40 SharedModule,
  41 + HomeComponentsModule,
40 42 HomeDialogsModule,
41 43 DashboardRoutingModule
42 44 ]
... ...
... ... @@ -25,11 +25,11 @@ import {
25 25 EntityTableConfig,
26 26 GroupActionDescriptor,
27 27 HeaderActionDescriptor
28   -} from '@shared/components/entity/entities-table-config.models';
  28 +} from '@home/models/entity/entities-table-config.models';
29 29 import {TranslateService} from '@ngx-translate/core';
30 30 import {DatePipe} from '@angular/common';
31 31 import {EntityType, entityTypeResources, entityTypeTranslations} from '@shared/models/entity-type.models';
32   -import {EntityAction} from '@shared/components/entity/entity-component.models';
  32 +import {EntityAction} from '@home/models/entity/entity-component.models';
33 33 import {forkJoin, Observable, of} from 'rxjs';
34 34 import {select, Store} from '@ngrx/store';
35 35 import {selectAuthUser} from '@core/auth/auth.selectors';
... ...
... ... @@ -17,7 +17,7 @@
17 17 import {NgModule} from '@angular/core';
18 18 import {RouterModule, Routes} from '@angular/router';
19 19
20   -import {EntitiesTableComponent} from '@shared/components/entity/entities-table.component';
  20 +import {EntitiesTableComponent} from '../../components/entity/entities-table.component';
21 21 import {Authority} from '@shared/models/authority.enum';
22 22 import {DevicesTableConfigResolver} from '@modules/home/pages/device/devices-table-config.resolver';
23 23
... ...
... ... @@ -17,7 +17,7 @@
17 17 import { Component } from '@angular/core';
18 18 import { Store } from '@ngrx/store';
19 19 import { AppState } from '@core/core.state';
20   -import { EntityTableHeaderComponent } from '@shared/components/entity/entity-table-header.component';
  20 +import { EntityTableHeaderComponent } from '../../components/entity/entity-table-header.component';
21 21 import {DeviceInfo} from '@app/shared/models/device.models';
22 22 import {EntityType} from '@shared/models/entity-type.models';
23 23
... ...
  1 +<!--
  2 +
  3 + Copyright © 2016-2019 The Thingsboard Authors
  4 +
  5 + Licensed under the Apache License, Version 2.0 (the "License");
  6 + you may not use this file except in compliance with the License.
  7 + You may obtain a copy of the License at
  8 +
  9 + http://www.apache.org/licenses/LICENSE-2.0
  10 +
  11 + Unless required by applicable law or agreed to in writing, software
  12 + distributed under the License is distributed on an "AS IS" BASIS,
  13 + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14 + See the License for the specific language governing permissions and
  15 + limitations under the License.
  16 +
  17 +-->
  18 +<mat-tab label="{{entity?.name}}">
  19 + Hobotok<br/> {{ test }}
  20 + {{ entity | json }}
  21 +</mat-tab>
  22 +<mat-tab *ngIf="entity?.additionalInfo?.gateway" label="Gateway">
  23 + Hobotok 2<br/>
  24 + {{ entity | json }}
  25 +</mat-tab>
  26 +<mat-tab label="{{ 'extension.extensions' | translate }}">
  27 + Hobotok 2<br/>
  28 + {{ entity | json }}
  29 +</mat-tab>
... ...
  1 +///
  2 +/// Copyright © 2016-2019 The Thingsboard Authors
  3 +///
  4 +/// Licensed under the Apache License, Version 2.0 (the "License");
  5 +/// you may not use this file except in compliance with the License.
  6 +/// You may obtain a copy of the License at
  7 +///
  8 +/// http://www.apache.org/licenses/LICENSE-2.0
  9 +///
  10 +/// Unless required by applicable law or agreed to in writing, software
  11 +/// distributed under the License is distributed on an "AS IS" BASIS,
  12 +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 +/// See the License for the specific language governing permissions and
  14 +/// limitations under the License.
  15 +///
  16 +
  17 +import { Component } from '@angular/core';
  18 +import { Store } from '@ngrx/store';
  19 +import { AppState } from '@core/core.state';
  20 +import { DeviceInfo } from '@shared/models/device.models';
  21 +import { EntityType } from '@shared/models/entity-type.models';
  22 +import { EntityTabsComponent } from '../../components/entity/entity-tabs.component';
  23 +
  24 +@Component({
  25 + selector: 'tb-device-tabs',
  26 + templateUrl: './device-tabs.component.html',
  27 + styleUrls: []
  28 +})
  29 +export class DeviceTabsComponent extends EntityTabsComponent<DeviceInfo> {
  30 +
  31 + entityType = EntityType;
  32 +
  33 + constructor(protected store: Store<AppState>) {
  34 + super(store);
  35 + }
  36 +
  37 + ngOnInit() {
  38 + super.ngOnInit();
  39 + }
  40 +
  41 +}
... ...
... ... @@ -17,7 +17,7 @@
17 17 import { Component, OnInit } from '@angular/core';
18 18 import { select, Store } from '@ngrx/store';
19 19 import { AppState } from '@core/core.state';
20   -import { EntityComponent } from '@shared/components/entity/entity.component';
  20 +import { EntityComponent } from '../../components/entity/entity.component';
21 21 import { FormBuilder, FormGroup, Validators } from '@angular/forms';
22 22 import { User } from '@shared/models/user.model';
23 23 import { selectAuth, selectUserDetails } from '@core/auth/auth.selectors';
... ...
... ... @@ -22,21 +22,26 @@ import {DeviceRoutingModule} from './device-routing.module';
22 22 import {DeviceTableHeaderComponent} from '@modules/home/pages/device/device-table-header.component';
23 23 import {DeviceCredentialsDialogComponent} from '@modules/home/pages/device/device-credentials-dialog.component';
24 24 import {HomeDialogsModule} from '../../dialogs/home-dialogs.module';
  25 +import {HomeComponentsModule} from '@modules/home/components/home-components.module';
  26 +import { DeviceTabsComponent } from '@home/pages/device/device-tabs.component';
25 27
26 28 @NgModule({
27 29 entryComponents: [
28 30 DeviceComponent,
  31 + DeviceTabsComponent,
29 32 DeviceTableHeaderComponent,
30 33 DeviceCredentialsDialogComponent
31 34 ],
32 35 declarations: [
33 36 DeviceComponent,
  37 + DeviceTabsComponent,
34 38 DeviceTableHeaderComponent,
35 39 DeviceCredentialsDialogComponent
36 40 ],
37 41 imports: [
38 42 CommonModule,
39 43 SharedModule,
  44 + HomeComponentsModule,
40 45 HomeDialogsModule,
41 46 DeviceRoutingModule
42 47 ]
... ...
... ... @@ -24,11 +24,11 @@ import {
24 24 EntityTableColumn,
25 25 EntityTableConfig, GroupActionDescriptor,
26 26 HeaderActionDescriptor
27   -} from '@shared/components/entity/entities-table-config.models';
  27 +} from '@home/models/entity/entities-table-config.models';
28 28 import {TranslateService} from '@ngx-translate/core';
29 29 import {DatePipe} from '@angular/common';
30 30 import {EntityType, entityTypeResources, entityTypeTranslations} from '@shared/models/entity-type.models';
31   -import {EntityAction} from '@shared/components/entity/entity-component.models';
  31 +import {EntityAction} from '@home/models/entity/entity-component.models';
32 32 import {Device, DeviceCredentials, DeviceInfo} from '@app/shared/models/device.models';
33 33 import {DeviceComponent} from '@modules/home/pages/device/device.component';
34 34 import {forkJoin, Observable, of} from 'rxjs';
... ... @@ -58,6 +58,7 @@ import {
58 58 AddEntitiesToCustomerDialogComponent,
59 59 AddEntitiesToCustomerDialogData
60 60 } from '../../dialogs/add-entities-to-customer-dialog.component';
  61 +import { DeviceTabsComponent } from '@home/pages/device/device-tabs.component';
61 62
62 63 @Injectable()
63 64 export class DevicesTableConfigResolver implements Resolve<EntityTableConfig<DeviceInfo>> {
... ... @@ -78,6 +79,7 @@ export class DevicesTableConfigResolver implements Resolve<EntityTableConfig<Dev
78 79
79 80 this.config.entityType = EntityType.DEVICE;
80 81 this.config.entityComponent = DeviceComponent;
  82 + this.config.entityTabsComponent = DeviceTabsComponent;
81 83 this.config.entityTranslations = entityTypeTranslations.get(EntityType.DEVICE);
82 84 this.config.entityResources = entityTypeResources.get(EntityType.DEVICE);
83 85
... ...
... ... @@ -17,7 +17,7 @@
17 17 import {NgModule} from '@angular/core';
18 18 import {RouterModule, Routes} from '@angular/router';
19 19
20   -import {EntitiesTableComponent} from '@shared/components/entity/entities-table.component';
  20 +import {EntitiesTableComponent} from '../../components/entity/entities-table.component';
21 21 import {Authority} from '@shared/models/authority.enum';
22 22 import {EntityViewsTableConfigResolver} from '@modules/home/pages/entity-view/entity-views-table-config.resolver';
23 23
... ...
... ... @@ -17,7 +17,7 @@
17 17 import {Component} from '@angular/core';
18 18 import {Store} from '@ngrx/store';
19 19 import {AppState} from '@core/core.state';
20   -import {EntityTableHeaderComponent} from '@shared/components/entity/entity-table-header.component';
  20 +import {EntityTableHeaderComponent} from '../../components/entity/entity-table-header.component';
21 21 import {EntityType} from '@shared/models/entity-type.models';
22 22 import {EntityViewInfo} from '@app/shared/models/entity-view.models';
23 23
... ...
... ... @@ -17,7 +17,7 @@
17 17 import {Component} from '@angular/core';
18 18 import {Store} from '@ngrx/store';
19 19 import {AppState} from '@core/core.state';
20   -import {EntityComponent} from '@shared/components/entity/entity.component';
  20 +import {EntityComponent} from '../../components/entity/entity.component';
21 21 import {FormBuilder, FormGroup, Validators} from '@angular/forms';
22 22 import {EntityType} from '@shared/models/entity-type.models';
23 23 import {NULL_UUID} from '@shared/models/id/has-uuid';
... ...
... ... @@ -21,6 +21,7 @@ import {HomeDialogsModule} from '../../dialogs/home-dialogs.module';
21 21 import {EntityViewComponent} from '@modules/home/pages/entity-view/entity-view.component';
22 22 import {EntityViewTableHeaderComponent} from './entity-view-table-header.component';
23 23 import {EntityViewRoutingModule} from './entity-view-routing.module';
  24 +import {HomeComponentsModule} from '@modules/home/components/home-components.module';
24 25
25 26 @NgModule({
26 27 entryComponents: [
... ... @@ -34,6 +35,7 @@ import {EntityViewRoutingModule} from './entity-view-routing.module';
34 35 imports: [
35 36 CommonModule,
36 37 SharedModule,
  38 + HomeComponentsModule,
37 39 HomeDialogsModule,
38 40 EntityViewRoutingModule
39 41 ]
... ...
... ... @@ -25,11 +25,11 @@ import {
25 25 EntityTableConfig,
26 26 GroupActionDescriptor,
27 27 HeaderActionDescriptor
28   -} from '@shared/components/entity/entities-table-config.models';
  28 +} from '@home/models/entity/entities-table-config.models';
29 29 import {TranslateService} from '@ngx-translate/core';
30 30 import {DatePipe} from '@angular/common';
31 31 import {EntityType, entityTypeResources, entityTypeTranslations} from '@shared/models/entity-type.models';
32   -import {EntityAction} from '@shared/components/entity/entity-component.models';
  32 +import {EntityAction} from '@home/models/entity/entity-component.models';
33 33 import {forkJoin, Observable, of} from 'rxjs';
34 34 import {select, Store} from '@ngrx/store';
35 35 import {selectAuthUser} from '@core/auth/auth.selectors';
... ...
... ... @@ -17,7 +17,7 @@
17 17 import {NgModule} from '@angular/core';
18 18 import {RouterModule, Routes} from '@angular/router';
19 19
20   -import {EntitiesTableComponent} from '@shared/components/entity/entities-table.component';
  20 +import {EntitiesTableComponent} from '../../components/entity/entities-table.component';
21 21 import {Authority} from '@shared/models/authority.enum';
22 22 import {RuleChainsTableConfigResolver} from '@modules/home/pages/rulechain/rulechains-table-config.resolver';
23 23
... ...
... ... @@ -17,14 +17,14 @@
17 17 import {Component} from '@angular/core';
18 18 import {Store} from '@ngrx/store';
19 19 import {AppState} from '@core/core.state';
20   -import {EntityComponent} from '@shared/components/entity/entity.component';
  20 +import {EntityComponent} from '../../components/entity/entity.component';
21 21 import {FormBuilder, FormGroup, Validators} from '@angular/forms';
22 22 import {EntityType} from '@shared/models/entity-type.models';
23 23 import {NULL_UUID} from '@shared/models/id/has-uuid';
24 24 import {ActionNotificationShow} from '@core/notification/notification.actions';
25 25 import {TranslateService} from '@ngx-translate/core';
26 26 import {AssetInfo} from '@app/shared/models/asset.models';
27   -import {RuleChain} from "@shared/models/rule-chain.models";
  27 +import {RuleChain} from '@shared/models/rule-chain.models';
28 28
29 29 @Component({
30 30 selector: 'tb-rulechain',
... ...
... ... @@ -19,6 +19,7 @@ import {CommonModule} from '@angular/common';
19 19 import {SharedModule} from '@shared/shared.module';
20 20 import {RuleChainComponent} from '@modules/home/pages/rulechain/rulechain.component';
21 21 import {RuleChainRoutingModule} from '@modules/home/pages/rulechain/rulechain-routing.module';
  22 +import {HomeComponentsModule} from '@modules/home/components/home-components.module';
22 23
23 24 @NgModule({
24 25 entryComponents: [
... ... @@ -30,6 +31,7 @@ import {RuleChainRoutingModule} from '@modules/home/pages/rulechain/rulechain-ro
30 31 imports: [
31 32 CommonModule,
32 33 SharedModule,
  34 + HomeComponentsModule,
33 35 RuleChainRoutingModule
34 36 ]
35 37 })
... ...
... ... @@ -22,11 +22,11 @@ import {
22 22 DateEntityTableColumn,
23 23 EntityTableColumn,
24 24 EntityTableConfig
25   -} from '@shared/components/entity/entities-table-config.models';
  25 +} from '@home/models/entity/entities-table-config.models';
26 26 import {TranslateService} from '@ngx-translate/core';
27 27 import {DatePipe} from '@angular/common';
28 28 import {EntityType, entityTypeResources, entityTypeTranslations} from '@shared/models/entity-type.models';
29   -import {EntityAction} from '@shared/components/entity/entity-component.models';
  29 +import {EntityAction} from '@home/models/entity/entity-component.models';
30 30 import {RuleChain} from '@shared/models/rule-chain.models';
31 31 import {RuleChainService} from '@core/http/rule-chain.service';
32 32 import {RuleChainComponent} from '@modules/home/pages/rulechain/rulechain.component';
... ...
... ... @@ -17,7 +17,7 @@
17 17 import { Injectable, NgModule } from '@angular/core';
18 18 import { Resolve, RouterModule, Routes } from '@angular/router';
19 19
20   -import { EntitiesTableComponent } from '@shared/components/entity/entities-table.component';
  20 +import { EntitiesTableComponent } from '../../components/entity/entities-table.component';
21 21 import { Authority } from '@shared/models/authority.enum';
22 22 import { TenantsTableConfigResolver } from '@modules/home/pages/tenant/tenants-table-config.resolver';
23 23 import { ProfileComponent } from '@modules/home/pages/profile/profile.component';
... ...
... ... @@ -19,10 +19,10 @@ import { Store } from '@ngrx/store';
19 19 import { AppState } from '@core/core.state';
20 20 import { FormBuilder, FormGroup, Validators } from '@angular/forms';
21 21 import { Customer } from '@shared/models/customer.model';
22   -import { ContactBasedComponent } from '@shared/components/entity/contact-based.component';
23 22 import {Tenant} from '@app/shared/models/tenant.model';
24 23 import {ActionNotificationShow} from '@app/core/notification/notification.actions';
25 24 import {TranslateService} from '@ngx-translate/core';
  25 +import {ContactBasedComponent} from '../../components/entity/contact-based.component';
26 26
27 27 @Component({
28 28 selector: 'tb-tenant',
... ...
... ... @@ -19,6 +19,7 @@ import { CommonModule } from '@angular/common';
19 19 import { SharedModule } from '@shared/shared.module';
20 20 import {TenantComponent} from '@modules/home/pages/tenant/tenant.component';
21 21 import {TenantRoutingModule} from '@modules/home/pages/tenant/tenant-routing.module';
  22 +import {HomeComponentsModule} from '@modules/home/components/home-components.module';
22 23
23 24 @NgModule({
24 25 entryComponents: [
... ... @@ -30,6 +31,7 @@ import {TenantRoutingModule} from '@modules/home/pages/tenant/tenant-routing.mod
30 31 imports: [
31 32 CommonModule,
32 33 SharedModule,
  34 + HomeComponentsModule,
33 35 TenantRoutingModule
34 36 ]
35 37 })
... ...
... ... @@ -23,7 +23,7 @@ import {
23 23 DateEntityTableColumn,
24 24 EntityTableColumn,
25 25 EntityTableConfig
26   -} from '@shared/components/entity/entities-table-config.models';
  26 +} from '@home/models/entity/entities-table-config.models';
27 27 import { TenantService } from '@core/http/tenant.service';
28 28 import { TranslateService } from '@ngx-translate/core';
29 29 import { DatePipe } from '@angular/common';
... ... @@ -33,7 +33,7 @@ import {
33 33 entityTypeTranslations
34 34 } from '@shared/models/entity-type.models';
35 35 import { TenantComponent } from '@modules/home/pages/tenant/tenant.component';
36   -import { EntityAction } from '@shared/components/entity/entity-component.models';
  36 +import { EntityAction } from '@home/models/entity/entity-component.models';
37 37 import { User } from '@shared/models/user.model';
38 38
39 39 @Injectable()
... ...
... ... @@ -17,7 +17,7 @@
17 17 import { Component, OnInit } from '@angular/core';
18 18 import { select, Store } from '@ngrx/store';
19 19 import { AppState } from '@core/core.state';
20   -import { EntityComponent } from '@shared/components/entity/entity.component';
  20 +import { EntityComponent } from '../../components/entity/entity.component';
21 21 import { FormBuilder, FormGroup, Validators } from '@angular/forms';
22 22 import { User } from '@shared/models/user.model';
23 23 import { selectAuth, selectUserDetails } from '@core/auth/auth.selectors';
... ...
... ... @@ -21,6 +21,7 @@ import { UserComponent } from '@modules/home/pages/user/user.component';
21 21 import { UserRoutingModule } from '@modules/home/pages/user/user-routing.module';
22 22 import { AddUserDialogComponent } from '@modules/home/pages/user/add-user-dialog.component';
23 23 import { ActivationLinkDialogComponent } from '@modules/home/pages/user/activation-link-dialog.component';
  24 +import {HomeComponentsModule} from '@modules/home/components/home-components.module';
24 25
25 26 @NgModule({
26 27 entryComponents: [
... ... @@ -36,6 +37,7 @@ import { ActivationLinkDialogComponent } from '@modules/home/pages/user/activati
36 37 imports: [
37 38 CommonModule,
38 39 SharedModule,
  40 + HomeComponentsModule,
39 41 UserRoutingModule
40 42 ]
41 43 })
... ...
... ... @@ -21,7 +21,7 @@ import {
21 21 DateEntityTableColumn,
22 22 EntityTableColumn,
23 23 EntityTableConfig
24   -} from '@shared/components/entity/entities-table-config.models';
  24 +} from '@home/models/entity/entities-table-config.models';
25 25 import { TranslateService } from '@ngx-translate/core';
26 26 import { DatePipe } from '@angular/common';
27 27 import {
... ... @@ -38,7 +38,7 @@ import { forkJoin, noop, Observable, of } from 'rxjs';
38 38 import { Authority } from '@shared/models/authority.enum';
39 39 import { CustomerId } from '@shared/models/id/customer-id';
40 40 import { MatDialog } from '@angular/material';
41   -import { EntityAction } from '@shared/components/entity/entity-component.models';
  41 +import { EntityAction } from '@home/models/entity/entity-component.models';
42 42 import {
43 43 AddUserDialogComponent,
44 44 AddUserDialogData
... ...
... ... @@ -17,7 +17,7 @@
17 17 import {NgModule} from '@angular/core';
18 18 import {RouterModule, Routes} from '@angular/router';
19 19
20   -import {EntitiesTableComponent} from '@shared/components/entity/entities-table.component';
  20 +import {EntitiesTableComponent} from '../../components/entity/entities-table.component';
21 21 import {Authority} from '@shared/models/authority.enum';
22 22 import {RuleChainsTableConfigResolver} from '@modules/home/pages/rulechain/rulechains-table-config.resolver';
23 23 import {WidgetsBundlesTableConfigResolver} from '@modules/home/pages/widget/widgets-bundles-table-config.resolver';
... ...
... ... @@ -19,6 +19,7 @@ import {CommonModule} from '@angular/common';
19 19 import {SharedModule} from '@shared/shared.module';
20 20 import {WidgetsBundleComponent} from '@modules/home/pages/widget/widgets-bundle.component';
21 21 import {WidgetLibraryRoutingModule} from '@modules/home/pages/widget/widget-library-routing.module';
  22 +import {HomeComponentsModule} from '@modules/home/components/home-components.module';
22 23
23 24 @NgModule({
24 25 entryComponents: [
... ... @@ -30,6 +31,7 @@ import {WidgetLibraryRoutingModule} from '@modules/home/pages/widget/widget-libr
30 31 imports: [
31 32 CommonModule,
32 33 SharedModule,
  34 + HomeComponentsModule,
33 35 WidgetLibraryRoutingModule
34 36 ]
35 37 })
... ...
... ... @@ -17,7 +17,7 @@
17 17 import {Component} from '@angular/core';
18 18 import {Store} from '@ngrx/store';
19 19 import {AppState} from '@core/core.state';
20   -import {EntityComponent} from '@shared/components/entity/entity.component';
  20 +import {EntityComponent} from '../../components/entity/entity.component';
21 21 import {FormBuilder, FormGroup, Validators} from '@angular/forms';
22 22 import {WidgetsBundle} from '@shared/models/widgets-bundle.model';
23 23
... ...
... ... @@ -22,11 +22,11 @@ import {
22 22 DateEntityTableColumn,
23 23 EntityTableColumn,
24 24 EntityTableConfig
25   -} from '@shared/components/entity/entities-table-config.models';
  25 +} from '@home/models/entity/entities-table-config.models';
26 26 import {TranslateService} from '@ngx-translate/core';
27 27 import {DatePipe} from '@angular/common';
28 28 import {EntityType, entityTypeResources, entityTypeTranslations} from '@shared/models/entity-type.models';
29   -import {EntityAction} from '@shared/components/entity/entity-component.models';
  29 +import {EntityAction} from '@home/models/entity/entity-component.models';
30 30 import {WidgetsBundle} from '@shared/models/widgets-bundle.model';
31 31 import {WidgetService} from '@app/core/http/widget.service';
32 32 import {WidgetsBundleComponent} from '@modules/home/pages/widget/widgets-bundle.component';
... ...
... ... @@ -17,11 +17,11 @@
17 17 import {AfterViewInit, Component, forwardRef, Input, OnInit} from '@angular/core';
18 18 import {ControlValueAccessor, FormBuilder, FormGroup, NG_VALUE_ACCESSOR} from '@angular/forms';
19 19 import {Store} from '@ngrx/store';
20   -import {AppState} from '@app/core/core.state';
  20 +import {AppState} from '@core/core.state';
21 21 import {TranslateService} from '@ngx-translate/core';
22   -import {AliasEntityType, EntityType, entityTypeTranslations} from '@app/shared/models/entity-type.models';
  22 +import {AliasEntityType, EntityType, entityTypeTranslations} from '@shared/models/entity-type.models';
23 23 import {EntityService} from '@core/http/entity.service';
24   -import {EntityId} from '@app/shared/models/id/entity-id';
  24 +import {EntityId} from '@shared/models/id/entity-id';
25 25 import {coerceBooleanProperty} from '@angular/cdk/coercion';
26 26
27 27 @Component({
... ... @@ -58,9 +58,9 @@ export class EntitySelectComponent implements ControlValueAccessor, OnInit, Afte
58 58 @Input()
59 59 disabled: boolean;
60 60
61   - private defaultEntityType: EntityType | AliasEntityType = null;
  61 + displayEntityTypeSelect: boolean;
62 62
63   - private displayEntityTypeSelect: boolean;
  63 + private defaultEntityType: EntityType | AliasEntityType = null;
64 64
65 65 private propagateChange = (v: any) => { };
66 66
... ...
... ... @@ -14,72 +14,67 @@
14 14 /// limitations under the License.
15 15 ///
16 16
17   -import { NgModule } from '@angular/core';
18   -import { CommonModule, DatePipe } from '@angular/common';
19   -import { FooterComponent } from './components/footer.component';
20   -import { LogoComponent } from './components/logo.component';
21   -import { ToastDirective, TbSnackBarComponent } from './components/toast.directive';
22   -import { BreadcrumbComponent } from '@app/shared/components/breadcrumb.component';
  17 +import {NgModule} from '@angular/core';
  18 +import {CommonModule, DatePipe} from '@angular/common';
  19 +import {FooterComponent} from './components/footer.component';
  20 +import {LogoComponent} from './components/logo.component';
  21 +import {TbSnackBarComponent, ToastDirective} from './components/toast.directive';
  22 +import {BreadcrumbComponent} from '@app/shared/components/breadcrumb.component';
23 23
24 24 import {
  25 + MatAutocompleteModule,
25 26 MatButtonModule,
  27 + MatCardModule,
26 28 MatCheckboxModule,
  29 + MatChipsModule,
  30 + MatDatepickerModule,
  31 + MatDialogModule,
  32 + MatDividerModule,
  33 + MatExpansionModule,
  34 + MatGridListModule,
27 35 MatIconModule,
28   - MatCardModule,
29   - MatProgressBarModule,
30 36 MatInputModule,
31   - MatSnackBarModule,
32   - MatSidenavModule,
33   - MatToolbarModule,
34 37 MatMenuModule,
35   - MatGridListModule,
36   - MatDialogModule,
37   - MatSelectModule,
38   - MatTooltipModule,
39   - MatTableModule,
40 38 MatPaginatorModule,
41   - MatSortModule,
  39 + MatProgressBarModule,
42 40 MatProgressSpinnerModule,
43   - MatDividerModule,
44   - MatTabsModule,
45 41 MatRadioModule,
46   - MatSlideToggleModule,
47   - MatDatepickerModule,
  42 + MatSelectModule,
  43 + MatSidenavModule,
48 44 MatSliderModule,
49   - MatExpansionModule,
  45 + MatSlideToggleModule,
  46 + MatSnackBarModule,
  47 + MatSortModule,
50 48 MatStepperModule,
51   - MatAutocompleteModule,
52   - MatChipsModule
  49 + MatTableModule,
  50 + MatTabsModule,
  51 + MatToolbarModule,
  52 + MatTooltipModule
53 53 } from '@angular/material';
54   -import { MatDatetimepickerModule, MatNativeDatetimeModule } from '@mat-datetimepicker/core';
55   -import { FlexLayoutModule } from '@angular/flex-layout';
56   -import { FormsModule, ReactiveFormsModule } from '@angular/forms';
57   -import { RouterModule } from '@angular/router';
58   -import { ShareModule as ShareButtonsModule } from '@ngx-share/core';
59   -import { UserMenuComponent } from '@shared/components/user-menu.component';
60   -import { NospacePipe } from './pipe/nospace.pipe';
61   -import { TranslateModule } from '@ngx-translate/core';
62   -import { TbCheckboxComponent } from '@shared/components/tb-checkbox.component';
63   -import { HelpComponent } from '@shared/components/help.component';
64   -import { EntitiesTableComponent } from '@shared/components/entity/entities-table.component';
65   -import { AddEntityDialogComponent } from '@shared/components/entity/add-entity-dialog.component';
66   -import { DetailsPanelComponent } from '@shared/components/details-panel.component';
67   -import { EntityDetailsPanelComponent } from '@shared/components/entity/entity-details-panel.component';
68   -import { TbAnchorComponent } from '@shared/components/tb-anchor.component';
69   -import { ContactComponent } from '@shared/components/contact.component';
  54 +import {MatDatetimepickerModule, MatNativeDatetimeModule} from '@mat-datetimepicker/core';
  55 +import {FlexLayoutModule} from '@angular/flex-layout';
  56 +import {FormsModule, ReactiveFormsModule} from '@angular/forms';
  57 +import {RouterModule} from '@angular/router';
  58 +import {ShareModule as ShareButtonsModule} from '@ngx-share/core';
  59 +import {UserMenuComponent} from '@shared/components/user-menu.component';
  60 +import {NospacePipe} from './pipe/nospace.pipe';
  61 +import {TranslateModule} from '@ngx-translate/core';
  62 +import {TbCheckboxComponent} from '@shared/components/tb-checkbox.component';
  63 +import {HelpComponent} from '@shared/components/help.component';
  64 +import {TbAnchorComponent} from '@shared/components/tb-anchor.component';
70 65 // import { AuditLogDetailsDialogComponent } from '@shared/components/audit-log/audit-log-details-dialog.component';
71 66 // import { AuditLogTableComponent } from '@shared/components/audit-log/audit-log-table.component';
72   -import { MillisecondsToTimeStringPipe } from '@shared/pipe/milliseconds-to-time-string.pipe';
73   -import { TimewindowComponent } from '@shared/components/time/timewindow.component';
74   -import { OverlayModule } from '@angular/cdk/overlay';
75   -import { TimewindowPanelComponent } from '@shared/components/time/timewindow-panel.component';
76   -import { TimeintervalComponent } from '@shared/components/time/timeinterval.component';
77   -import { DatetimePeriodComponent } from '@shared/components/time/datetime-period.component';
78   -import { EnumToArrayPipe } from '@shared/pipe/enum-to-array.pipe';
79   -import { ClipboardModule } from 'ngx-clipboard';
  67 +import {MillisecondsToTimeStringPipe} from '@shared/pipe/milliseconds-to-time-string.pipe';
  68 +import {TimewindowComponent} from '@shared/components/time/timewindow.component';
  69 +import {OverlayModule} from '@angular/cdk/overlay';
  70 +import {TimewindowPanelComponent} from '@shared/components/time/timewindow-panel.component';
  71 +import {TimeintervalComponent} from '@shared/components/time/timeinterval.component';
  72 +import {DatetimePeriodComponent} from '@shared/components/time/datetime-period.component';
  73 +import {EnumToArrayPipe} from '@shared/pipe/enum-to-array.pipe';
  74 +import {ClipboardModule} from 'ngx-clipboard';
80 75 // import { ValueInputComponent } from '@shared/components/value-input.component';
81   -import { FullscreenDirective } from '@shared/components/fullscreen.directive';
82   -import { HighlightPipe } from '@shared/pipe/highlight.pipe';
  76 +import {FullscreenDirective} from '@shared/components/fullscreen.directive';
  77 +import {HighlightPipe} from '@shared/pipe/highlight.pipe';
83 78 import {DashboardAutocompleteComponent} from '@shared/components/dashboard-autocomplete.component';
84 79 import {EntitySubTypeAutocompleteComponent} from '@shared/components/entity/entity-subtype-autocomplete.component';
85 80 import {EntitySubTypeSelectComponent} from './components/entity/entity-subtype-select.component';
... ... @@ -102,7 +97,6 @@ import {SocialSharePanelComponent} from './components/socialshare-panel.componen
102 97 entryComponents: [
103 98 TbSnackBarComponent,
104 99 TbAnchorComponent,
105   - AddEntityDialogComponent,
106 100 // AuditLogDetailsDialogComponent,
107 101 TimewindowPanelComponent,
108 102 ],
... ... @@ -117,11 +111,6 @@ import {SocialSharePanelComponent} from './components/socialshare-panel.componen
117 111 TbSnackBarComponent,
118 112 BreadcrumbComponent,
119 113 UserMenuComponent,
120   - EntitiesTableComponent,
121   - AddEntityDialogComponent,
122   - DetailsPanelComponent,
123   - EntityDetailsPanelComponent,
124   - ContactComponent,
125 114 // AuditLogTableComponent,
126 115 // AuditLogDetailsDialogComponent,
127 116 TimewindowComponent,
... ... @@ -195,11 +184,6 @@ import {SocialSharePanelComponent} from './components/socialshare-panel.componen
195 184 TbCheckboxComponent,
196 185 BreadcrumbComponent,
197 186 UserMenuComponent,
198   - EntitiesTableComponent,
199   - AddEntityDialogComponent,
200   - DetailsPanelComponent,
201   - EntityDetailsPanelComponent,
202   - ContactComponent,
203 187 // AuditLogTableComponent,
204 188 TimewindowComponent,
205 189 TimewindowPanelComponent,
... ...
... ... @@ -21,7 +21,8 @@
21 21 ],
22 22 "@core/*": ["src/app/core/*"],
23 23 "@modules/*": ["src/app/modules/*"],
24   - "@shared/*": ["src/app/shared/*"]
  24 + "@shared/*": ["src/app/shared/*"],
  25 + "@home/*": ["src/app/modules/home/*"]
25 26 },
26 27 "lib": [
27 28 "es2018",
... ...