Commit 15880e3ef9b3f601436d624b7fa4894180892c27

Authored by Vladyslav
Committed by GitHub
1 parent 842a1d1a

[3.0] Minor fix (#2571)

* Fix breadcrumb and breakroint api to header

* Fix layout profile

* Clear code and fix layout (admin and profile pages)

* Improvements import

* Fix entity table
Showing 57 changed files with 264 additions and 310 deletions
@@ -25,17 +25,13 @@ import { @@ -25,17 +25,13 @@ import {
25 AuditLog, 25 AuditLog,
26 AuditLogMode 26 AuditLogMode
27 } from '@shared/models/audit-log.models'; 27 } from '@shared/models/audit-log.models';
28 -import {  
29 - EntityTypeResource,  
30 - EntityTypeTranslation,  
31 - entityTypeTranslations  
32 -} from '@shared/models/entity-type.models'; 28 +import { EntityTypeResource, entityTypeTranslations } from '@shared/models/entity-type.models';
33 import { AuditLogService } from '@core/http/audit-log.service'; 29 import { AuditLogService } from '@core/http/audit-log.service';
34 import { TranslateService } from '@ngx-translate/core'; 30 import { TranslateService } from '@ngx-translate/core';
35 import { DatePipe } from '@angular/common'; 31 import { DatePipe } from '@angular/common';
36 import { Direction } from '@shared/models/page/sort-order'; 32 import { Direction } from '@shared/models/page/sort-order';
37 import { MatDialog } from '@angular/material/dialog'; 33 import { MatDialog } from '@angular/material/dialog';
38 -import { PageLink, TimePageLink } from '@shared/models/page/page-link'; 34 +import { TimePageLink } from '@shared/models/page/page-link';
39 import { Observable } from 'rxjs'; 35 import { Observable } from 'rxjs';
40 import { PageData } from '@shared/models/page/page-data'; 36 import { PageData } from '@shared/models/page/page-data';
41 import { EntityId } from '@shared/models/id/entity-id'; 37 import { EntityId } from '@shared/models/id/entity-id';
@@ -135,7 +135,7 @@ @@ -135,7 +135,7 @@
135 </div> 135 </div>
136 </mat-toolbar> 136 </mat-toolbar>
137 <div fxFlex class="table-container"> 137 <div fxFlex class="table-container">
138 - <mat-table [dataSource]="dataSource" [trackBy]="trackByEntityId" 138 + <table mat-table [dataSource]="dataSource" [trackBy]="trackByEntityId"
139 matSort [matSortActive]="pageLink.sortOrder.property" [matSortDirection]="pageLink.sortDirection()" matSortDisableClear> 139 matSort [matSortActive]="pageLink.sortOrder.property" [matSortDirection]="pageLink.sortDirection()" matSortDisableClear>
140 <ng-container matColumnDef="select" sticky> 140 <ng-container matColumnDef="select" sticky>
141 <mat-header-cell *matHeaderCellDef style="width: 30px;"> 141 <mat-header-cell *matHeaderCellDef style="width: 30px;">
@@ -187,7 +187,7 @@ @@ -187,7 +187,7 @@
187 maxWidth: (cellActionDescriptors.length * 40) + 'px', 187 maxWidth: (cellActionDescriptors.length * 40) + 'px',
188 width: (cellActionDescriptors.length * 40) + 'px' }"> 188 width: (cellActionDescriptors.length * 40) + 'px' }">
189 <div fxHide fxShow.gt-md fxFlex fxLayout="row" fxLayoutAlign="end"> 189 <div fxHide fxShow.gt-md fxFlex fxLayout="row" fxLayoutAlign="end">
190 - <button mat-button mat-icon-button [disabled]="isLoading$ | async" 190 + <button mat-icon-button [disabled]="isLoading$ | async"
191 [fxShow]="actionDescriptor.isEnabled(entity)" *ngFor="let actionDescriptor of cellActionDescriptors" 191 [fxShow]="actionDescriptor.isEnabled(entity)" *ngFor="let actionDescriptor of cellActionDescriptors"
192 matTooltip="{{ actionDescriptor.nameFunction ? actionDescriptor.nameFunction(entity) : actionDescriptor.name }}" 192 matTooltip="{{ actionDescriptor.nameFunction ? actionDescriptor.nameFunction(entity) : actionDescriptor.name }}"
193 matTooltipPosition="above" 193 matTooltipPosition="above"
@@ -197,7 +197,7 @@ @@ -197,7 +197,7 @@
197 </button> 197 </button>
198 </div> 198 </div>
199 <div fxHide fxShow.lt-lg *ngIf="cellActionDescriptors.length"> 199 <div fxHide fxShow.lt-lg *ngIf="cellActionDescriptors.length">
200 - <button mat-button mat-icon-button 200 + <button mat-icon-button
201 (click)="$event.stopPropagation()" 201 (click)="$event.stopPropagation()"
202 [matMenuTriggerFor]="cellActionsMenu"> 202 [matMenuTriggerFor]="cellActionsMenu">
203 <mat-icon class="material-icons">more_vert</mat-icon> 203 <mat-icon class="material-icons">more_vert</mat-icon>
@@ -220,7 +220,7 @@ @@ -220,7 +220,7 @@
220 'mat-selected': dataSource.selection.isSelected(entity), 220 'mat-selected': dataSource.selection.isSelected(entity),
221 'tb-current-entity': dataSource.isCurrentEntity(entity)}" 221 'tb-current-entity': dataSource.isCurrentEntity(entity)}"
222 *matRowDef="let entity; columns: displayedColumns;" (click)="onRowClick($event, entity)"></mat-row> 222 *matRowDef="let entity; columns: displayedColumns;" (click)="onRowClick($event, entity)"></mat-row>
223 - </mat-table> 223 + </table>
224 <span [fxShow]="!(isLoading$ | async) && (dataSource.isEmpty() | async)" 224 <span [fxShow]="!(isLoading$ | async) && (dataSource.isEmpty() | async)"
225 fxLayoutAlign="center center" 225 fxLayoutAlign="center center"
226 class="no-data-found" translate>{{ translations.noEntities }}</span> 226 class="no-data-found" translate>{{ translations.noEntities }}</span>
@@ -35,17 +35,17 @@ @@ -35,17 +35,17 @@
35 <mat-sidenav-content> 35 <mat-sidenav-content>
36 <div fxLayout="column" role="main" style="height: 100%;"> 36 <div fxLayout="column" role="main" style="height: 100%;">
37 <mat-toolbar fxLayout="row" color="primary" class="mat-elevation-z1 tb-primary-toolbar"> 37 <mat-toolbar fxLayout="row" color="primary" class="mat-elevation-z1 tb-primary-toolbar">
38 - <button [fxShow]="!forceFullscreen" mat-button mat-icon-button id="main" 38 + <button [fxShow]="!forceFullscreen" mat-icon-button id="main"
39 [ngClass]="{'tb-invisible': displaySearchMode()}" 39 [ngClass]="{'tb-invisible': displaySearchMode()}"
40 fxHide.gt-sm (click)="sidenav.toggle()"> 40 fxHide.gt-sm (click)="sidenav.toggle()">
41 <mat-icon class="material-icons">menu</mat-icon> 41 <mat-icon class="material-icons">menu</mat-icon>
42 </button> 42 </button>
43 - <button [fxShow]="forceFullscreen" mat-button mat-icon-button 43 + <button [fxShow]="forceFullscreen" mat-icon-button
44 [ngClass]="{'tb-invisible': displaySearchMode()}" 44 [ngClass]="{'tb-invisible': displaySearchMode()}"
45 (click)="goBack()"> 45 (click)="goBack()">
46 <mat-icon class="material-icons">arrow_back</mat-icon> 46 <mat-icon class="material-icons">arrow_back</mat-icon>
47 </button> 47 </button>
48 - <button mat-button mat-icon-button 48 + <button mat-icon-button
49 [ngClass]="{'tb-invisible': !displaySearchMode()}" 49 [ngClass]="{'tb-invisible': !displaySearchMode()}"
50 (click)="closeSearch()"> 50 (click)="closeSearch()">
51 <mat-icon class="material-icons">arrow_back</mat-icon> 51 <mat-icon class="material-icons">arrow_back</mat-icon>
@@ -62,12 +62,11 @@ @@ -62,12 +62,11 @@
62 </mat-form-field> 62 </mat-form-field>
63 </div> 63 </div>
64 <button [fxShow]="searchEnabled" 64 <button [fxShow]="searchEnabled"
65 - mat-button mat-icon-button  
66 - (click)="openSearch()"> 65 + mat-icon-button (click)="openSearch()">
67 <mat-icon class="material-icons">search</mat-icon> 66 <mat-icon class="material-icons">search</mat-icon>
68 </button> 67 </button>
69 <button *ngIf="fullscreenEnabled" [fxShow]="!displaySearchMode()" 68 <button *ngIf="fullscreenEnabled" [fxShow]="!displaySearchMode()"
70 - mat-button mat-icon-button fxHide.xs fxHide.sm (click)="toggleFullscreen()"> 69 + mat-icon-button fxHide.lt-md (click)="toggleFullscreen()">
71 <mat-icon class="material-icons">{{ isFullscreen() ? 'fullscreen_exit' : 'fullscreen' }}</mat-icon> 70 <mat-icon class="material-icons">{{ isFullscreen() ? 'fullscreen_exit' : 'fullscreen' }}</mat-icon>
72 </button> 71 </button>
73 <tb-user-menu [displayUserInfo]="!displaySearchMode()"></tb-user-menu> 72 <tb-user-menu [displayUserInfo]="!displaySearchMode()"></tb-user-menu>
@@ -17,24 +17,19 @@ @@ -17,24 +17,19 @@
17 import { AfterViewInit, Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core'; 17 import { AfterViewInit, Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';
18 import { fromEvent, Observable } from 'rxjs'; 18 import { fromEvent, Observable } from 'rxjs';
19 import { select, Store } from '@ngrx/store'; 19 import { select, Store } from '@ngrx/store';
20 -import { debounceTime, distinctUntilChanged, map, mergeMap, take, tap } from 'rxjs/operators'; 20 +import { debounceTime, distinctUntilChanged, map, tap } from 'rxjs/operators';
21 21
22 import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout'; 22 import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';
23 import { User } from '@shared/models/user.model'; 23 import { User } from '@shared/models/user.model';
24 import { PageComponent } from '@shared/components/page.component'; 24 import { PageComponent } from '@shared/components/page.component';
25 import { AppState } from '@core/core.state'; 25 import { AppState } from '@core/core.state';
26 -import { AuthService } from '@core/auth/auth.service';  
27 -import { UserService } from '@core/http/user.service';  
28 -import { MenuService } from '@core/services/menu.service';  
29 import { getCurrentAuthState, selectAuthUser, selectUserDetails } from '@core/auth/auth.selectors'; 26 import { getCurrentAuthState, selectAuthUser, selectUserDetails } from '@core/auth/auth.selectors';
30 import { MediaBreakpoints } from '@shared/models/constants'; 27 import { MediaBreakpoints } from '@shared/models/constants';
31 -import { ActionNotificationShow } from '@core/notification/notification.actions';  
32 -import { Router } from '@angular/router';  
33 import * as _screenfull from 'screenfull'; 28 import * as _screenfull from 'screenfull';
34 import { MatSidenav } from '@angular/material/sidenav'; 29 import { MatSidenav } from '@angular/material/sidenav';
35 import { AuthState } from '@core/auth/auth.models'; 30 import { AuthState } from '@core/auth/auth.models';
36 import { WINDOW } from '@core/services/window.service'; 31 import { WINDOW } from '@core/services/window.service';
37 -import { ISearchableComponent, instanceOfSearchableComponent } from '@home/models/searchable-component.models'; 32 +import { instanceOfSearchableComponent, ISearchableComponent } from '@home/models/searchable-component.models';
38 33
39 const screenfull = _screenfull as _screenfull.Screenfull; 34 const screenfull = _screenfull as _screenfull.Screenfull;
40 35
@@ -74,9 +69,6 @@ export class HomeComponent extends PageComponent implements AfterViewInit, OnIni @@ -74,9 +69,6 @@ export class HomeComponent extends PageComponent implements AfterViewInit, OnIni
74 69
75 constructor(protected store: Store<AppState>, 70 constructor(protected store: Store<AppState>,
76 @Inject(WINDOW) private window: Window, 71 @Inject(WINDOW) private window: Window,
77 - private authService: AuthService,  
78 - private router: Router,  
79 - private userService: UserService, private menuService: MenuService,  
80 public breakpointObserver: BreakpointObserver) { 72 public breakpointObserver: BreakpointObserver) {
81 super(store); 73 super(store);
82 } 74 }
@@ -15,13 +15,13 @@ @@ -15,13 +15,13 @@
15 /// 15 ///
16 16
17 import { NgModule } from '@angular/core'; 17 import { NgModule } from '@angular/core';
18 -import { Routes, RouterModule } from '@angular/router'; 18 +import { RouterModule, Routes } from '@angular/router';
19 19
20 import { MailServerComponent } from '@modules/home/pages/admin/mail-server.component'; 20 import { MailServerComponent } from '@modules/home/pages/admin/mail-server.component';
21 import { ConfirmOnExitGuard } from '@core/guards/confirm-on-exit.guard'; 21 import { ConfirmOnExitGuard } from '@core/guards/confirm-on-exit.guard';
22 import { Authority } from '@shared/models/authority.enum'; 22 import { Authority } from '@shared/models/authority.enum';
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 25
26 const routes: Routes = [ 26 const routes: Routes = [
27 { 27 {
@@ -20,9 +20,9 @@ import { CommonModule } from '@angular/common'; @@ -20,9 +20,9 @@ import { CommonModule } from '@angular/common';
20 import { AdminRoutingModule } from './admin-routing.module'; 20 import { AdminRoutingModule } from './admin-routing.module';
21 import { SharedModule } from '@app/shared/shared.module'; 21 import { SharedModule } from '@app/shared/shared.module';
22 import { MailServerComponent } from '@modules/home/pages/admin/mail-server.component'; 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';  
25 -import {HomeComponentsModule} from '@modules/home/components/home-components.module'; 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';
26 26
27 @NgModule({ 27 @NgModule({
28 declarations: 28 declarations:
@@ -20,10 +20,8 @@ import { AppState } from '@core/core.state'; @@ -20,10 +20,8 @@ import { AppState } from '@core/core.state';
20 import { PageComponent } from '@shared/components/page.component'; 20 import { PageComponent } from '@shared/components/page.component';
21 import { Router } from '@angular/router'; 21 import { Router } from '@angular/router';
22 import { FormBuilder, FormGroup, Validators } from '@angular/forms'; 22 import { FormBuilder, FormGroup, Validators } from '@angular/forms';
23 -import {AdminSettings, GeneralSettings} from '@shared/models/settings.models'; 23 +import { AdminSettings, GeneralSettings } from '@shared/models/settings.models';
24 import { AdminService } from '@core/http/admin.service'; 24 import { AdminService } from '@core/http/admin.service';
25 -import { ActionNotificationShow } from '@core/notification/notification.actions';  
26 -import { TranslateService } from '@ngx-translate/core';  
27 import { HasConfirmForm } from '@core/guards/confirm-on-exit.guard'; 25 import { HasConfirmForm } from '@core/guards/confirm-on-exit.guard';
28 26
29 @Component({ 27 @Component({
@@ -39,7 +37,6 @@ export class GeneralSettingsComponent extends PageComponent implements OnInit, H @@ -39,7 +37,6 @@ export class GeneralSettingsComponent extends PageComponent implements OnInit, H
39 constructor(protected store: Store<AppState>, 37 constructor(protected store: Store<AppState>,
40 private router: Router, 38 private router: Router,
41 private adminService: AdminService, 39 private adminService: AdminService,
42 - private translate: TranslateService,  
43 public fb: FormBuilder) { 40 public fb: FormBuilder) {
44 super(store); 41 super(store);
45 } 42 }
@@ -95,13 +95,12 @@ @@ -95,13 +95,12 @@
95 <mat-label translate>common.password</mat-label> 95 <mat-label translate>common.password</mat-label>
96 <input matInput formControlName="password" type="password" placeholder="{{ 'common.enter-password' | translate }}"/> 96 <input matInput formControlName="password" type="password" placeholder="{{ 'common.enter-password' | translate }}"/>
97 </mat-form-field> 97 </mat-form-field>
98 - <div fxLayout="row" fxLayoutAlign="end center" style="width: 100%;" class="layout-wrap">  
99 - <button mat-button mat-raised-button  
100 - type="button" style="margin-right: 16px;" 98 + <div fxLayout="row" fxLayoutAlign="end center" fxLayout.xs="column" fxLayoutAlign.xs="end" fxLayoutGap="16px">
  99 + <button mat-raised-button type="button"
101 [disabled]="(isLoading$ | async) || mailSettingsForm.invalid" (click)="sendTestMail()"> 100 [disabled]="(isLoading$ | async) || mailSettingsForm.invalid" (click)="sendTestMail()">
102 {{'admin.send-test-mail' | translate}} 101 {{'admin.send-test-mail' | translate}}
103 </button> 102 </button>
104 - <button mat-button mat-raised-button color="primary" [disabled]="(isLoading$ | async) || mailSettingsForm.invalid || !mailSettingsForm.dirty" 103 + <button mat-raised-button color="primary" [disabled]="(isLoading$ | async) || mailSettingsForm.invalid || !mailSettingsForm.dirty"
105 type="submit">{{'action.save' | translate}} 104 type="submit">{{'action.save' | translate}}
106 </button> 105 </button>
107 </div> 106 </div>
@@ -20,10 +20,8 @@ import { AppState } from '@core/core.state'; @@ -20,10 +20,8 @@ import { AppState } from '@core/core.state';
20 import { PageComponent } from '@shared/components/page.component'; 20 import { PageComponent } from '@shared/components/page.component';
21 import { Router } from '@angular/router'; 21 import { Router } from '@angular/router';
22 import { FormBuilder, FormGroup, Validators } from '@angular/forms'; 22 import { FormBuilder, FormGroup, Validators } from '@angular/forms';
23 -import { SecuritySettings} from '@shared/models/settings.models'; 23 +import { SecuritySettings } from '@shared/models/settings.models';
24 import { AdminService } from '@core/http/admin.service'; 24 import { AdminService } from '@core/http/admin.service';
25 -import { ActionNotificationShow } from '@core/notification/notification.actions';  
26 -import { TranslateService } from '@ngx-translate/core';  
27 import { HasConfirmForm } from '@core/guards/confirm-on-exit.guard'; 25 import { HasConfirmForm } from '@core/guards/confirm-on-exit.guard';
28 26
29 @Component({ 27 @Component({
@@ -39,7 +37,6 @@ export class SecuritySettingsComponent extends PageComponent implements OnInit, @@ -39,7 +37,6 @@ export class SecuritySettingsComponent extends PageComponent implements OnInit,
39 constructor(protected store: Store<AppState>, 37 constructor(protected store: Store<AppState>,
40 private router: Router, 38 private router: Router,
41 private adminService: AdminService, 39 private adminService: AdminService,
42 - private translate: TranslateService,  
43 public fb: FormBuilder) { 40 public fb: FormBuilder) {
44 super(store); 41 super(store);
45 } 42 }
@@ -14,16 +14,16 @@ @@ -14,16 +14,16 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {NgModule} from '@angular/core';  
18 -import {RouterModule, Routes} from '@angular/router'; 17 +import { NgModule } from '@angular/core';
  18 +import { RouterModule, Routes } from '@angular/router';
19 19
20 -import {EntitiesTableComponent} from '../../components/entity/entities-table.component';  
21 -import {Authority} from '@shared/models/authority.enum';  
22 -import {UsersTableConfigResolver} from '../user/users-table-config.resolver';  
23 -import {CustomersTableConfigResolver} from './customers-table-config.resolver';  
24 -import {DevicesTableConfigResolver} from '@modules/home/pages/device/devices-table-config.resolver';  
25 -import {AssetsTableConfigResolver} from '../asset/assets-table-config.resolver';  
26 -import {DashboardsTableConfigResolver} from '@modules/home/pages/dashboard/dashboards-table-config.resolver'; 20 +import { EntitiesTableComponent } from '../../components/entity/entities-table.component';
  21 +import { Authority } from '@shared/models/authority.enum';
  22 +import { UsersTableConfigResolver } from '../user/users-table-config.resolver';
  23 +import { CustomersTableConfigResolver } from './customers-table-config.resolver';
  24 +import { DevicesTableConfigResolver } from '@modules/home/pages/device/devices-table-config.resolver';
  25 +import { AssetsTableConfigResolver } from '../asset/assets-table-config.resolver';
  26 +import { DashboardsTableConfigResolver } from '@modules/home/pages/dashboard/dashboards-table-config.resolver';
27 import { DashboardPageComponent } from '@home/pages/dashboard/dashboard-page.component'; 27 import { DashboardPageComponent } from '@home/pages/dashboard/dashboard-page.component';
28 import { BreadCrumbConfig } from '@shared/components/breadcrumb'; 28 import { BreadCrumbConfig } from '@shared/components/breadcrumb';
29 import { dashboardBreadcumbLabelFunction, DashboardResolver } from '@home/pages/dashboard/dashboard-routing.module'; 29 import { dashboardBreadcumbLabelFunction, DashboardResolver } from '@home/pages/dashboard/dashboard-routing.module';
@@ -17,9 +17,9 @@ @@ -17,9 +17,9 @@
17 import { NgModule } from '@angular/core'; 17 import { NgModule } from '@angular/core';
18 import { CommonModule } from '@angular/common'; 18 import { CommonModule } from '@angular/common';
19 import { SharedModule } from '@shared/shared.module'; 19 import { SharedModule } from '@shared/shared.module';
20 -import {CustomerComponent} from '@modules/home/pages/customer/customer.component';  
21 -import {CustomerRoutingModule} from './customer-routing.module';  
22 -import {HomeComponentsModule} from '@modules/home/components/home-components.module'; 20 +import { CustomerComponent } from '@modules/home/pages/customer/customer.component';
  21 +import { CustomerRoutingModule } from './customer-routing.module';
  22 +import { HomeComponentsModule } from '@modules/home/components/home-components.module';
23 import { CustomerTabsComponent } from '@home/pages/customer/customer-tabs.component'; 23 import { CustomerTabsComponent } from '@home/pages/customer/customer-tabs.component';
24 24
25 @NgModule({ 25 @NgModule({
@@ -18,7 +18,6 @@ import { Injectable } from '@angular/core'; @@ -18,7 +18,6 @@ import { Injectable } from '@angular/core';
18 18
19 import { Resolve, Router } from '@angular/router'; 19 import { Resolve, Router } from '@angular/router';
20 20
21 -import { Tenant } from '@shared/models/tenant.model';  
22 import { 21 import {
23 DateEntityTableColumn, 22 DateEntityTableColumn,
24 EntityTableColumn, 23 EntityTableColumn,
@@ -26,15 +25,11 @@ import { @@ -26,15 +25,11 @@ import {
26 } from '@home/models/entity/entities-table-config.models'; 25 } from '@home/models/entity/entities-table-config.models';
27 import { TranslateService } from '@ngx-translate/core'; 26 import { TranslateService } from '@ngx-translate/core';
28 import { DatePipe } from '@angular/common'; 27 import { DatePipe } from '@angular/common';
29 -import {  
30 - EntityType,  
31 - entityTypeResources,  
32 - entityTypeTranslations  
33 -} from '@shared/models/entity-type.models'; 28 +import { EntityType, entityTypeResources, entityTypeTranslations } from '@shared/models/entity-type.models';
34 import { EntityAction } from '@home/models/entity/entity-component.models'; 29 import { EntityAction } from '@home/models/entity/entity-component.models';
35 -import {Customer} from '@app/shared/models/customer.model';  
36 -import {CustomerService} from '@app/core/http/customer.service';  
37 -import {CustomerComponent} from '@modules/home/pages/customer/customer.component'; 30 +import { Customer } from '@app/shared/models/customer.model';
  31 +import { CustomerService } from '@app/core/http/customer.service';
  32 +import { CustomerComponent } from '@modules/home/pages/customer/customer.component';
38 import { CustomerTabsComponent } from '@home/pages/customer/customer-tabs.component'; 33 import { CustomerTabsComponent } from '@home/pages/customer/customer-tabs.component';
39 34
40 @Injectable() 35 @Injectable()
@@ -54,7 +49,7 @@ export class CustomersTableConfigResolver implements Resolve<EntityTableConfig<C @@ -54,7 +49,7 @@ export class CustomersTableConfigResolver implements Resolve<EntityTableConfig<C
54 this.config.entityResources = entityTypeResources.get(EntityType.CUSTOMER); 49 this.config.entityResources = entityTypeResources.get(EntityType.CUSTOMER);
55 50
56 this.config.columns.push( 51 this.config.columns.push(
57 - new DateEntityTableColumn<Customer>('createdTime', 'customer.created-time', this.datePipe, '150px'), 52 + new DateEntityTableColumn<Customer>('createdTime', 'common.created-time', this.datePipe, '150px'),
58 new EntityTableColumn<Customer>('title', 'customer.title', '25%'), 53 new EntityTableColumn<Customer>('title', 'customer.title', '25%'),
59 new EntityTableColumn<Customer>('email', 'contact.email', '25%'), 54 new EntityTableColumn<Customer>('email', 'contact.email', '25%'),
60 new EntityTableColumn<Customer>('country', 'contact.country', '25%'), 55 new EntityTableColumn<Customer>('country', 'contact.country', '25%'),
@@ -45,7 +45,7 @@ import { @@ -45,7 +45,7 @@ import {
45 import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout'; 45 import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';
46 import { MediaBreakpoints } from '@shared/models/constants'; 46 import { MediaBreakpoints } from '@shared/models/constants';
47 import { AuthUser } from '@shared/models/user.model'; 47 import { AuthUser } from '@shared/models/user.model';
48 -import { getCurrentAuthState, getCurrentAuthUser } from '@core/auth/auth.selectors'; 48 +import { getCurrentAuthState } from '@core/auth/auth.selectors';
49 import { Widget, WidgetConfig, WidgetPosition, widgetTypesData } from '@app/shared/models/widget.models'; 49 import { Widget, WidgetConfig, WidgetPosition, widgetTypesData } from '@app/shared/models/widget.models';
50 import { environment as env } from '@env/environment'; 50 import { environment as env } from '@env/environment';
51 import { Authority } from '@shared/models/authority.enum'; 51 import { Authority } from '@shared/models/authority.enum';
@@ -14,17 +14,12 @@ @@ -14,17 +14,12 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import { DashboardLayoutId, GridSettings, WidgetLayout, Dashboard, WidgetLayouts } from '@app/shared/models/dashboard.models'; 17 +import { Dashboard, DashboardLayoutId, GridSettings, WidgetLayouts } from '@app/shared/models/dashboard.models';
18 import { Widget, WidgetPosition } from '@app/shared/models/widget.models'; 18 import { Widget, WidgetPosition } from '@app/shared/models/widget.models';
19 import { Timewindow } from '@shared/models/time/time.models'; 19 import { Timewindow } from '@shared/models/time/time.models';
20 import { IAliasController, IStateController } from '@core/api/widget-api.models'; 20 import { IAliasController, IStateController } from '@core/api/widget-api.models';
21 import { ILayoutController } from './layout/layout.models'; 21 import { ILayoutController } from './layout/layout.models';
22 -import {  
23 - DashboardContextMenuItem,  
24 - WidgetContextMenuItem  
25 -} from '@home/models/dashboard-component.models';  
26 -import { Observable } from 'rxjs';  
27 -import { ChangeDetectorRef } from '@angular/core'; 22 +import { DashboardContextMenuItem, WidgetContextMenuItem } from '@home/models/dashboard-component.models';
28 23
29 export declare type DashboardPageScope = 'tenant' | 'customer'; 24 export declare type DashboardPageScope = 'tenant' | 'customer';
30 25
@@ -17,14 +17,11 @@ @@ -17,14 +17,11 @@
17 import { Injectable, NgModule } from '@angular/core'; 17 import { Injectable, NgModule } from '@angular/core';
18 import { ActivatedRouteSnapshot, Resolve, RouterModule, Routes } from '@angular/router'; 18 import { ActivatedRouteSnapshot, Resolve, RouterModule, Routes } from '@angular/router';
19 19
20 -import {EntitiesTableComponent} from '../../components/entity/entities-table.component';  
21 -import {Authority} from '@shared/models/authority.enum';  
22 -import {DashboardsTableConfigResolver} from './dashboards-table-config.resolver'; 20 +import { EntitiesTableComponent } from '../../components/entity/entities-table.component';
  21 +import { Authority } from '@shared/models/authority.enum';
  22 +import { DashboardsTableConfigResolver } from './dashboards-table-config.resolver';
23 import { DashboardPageComponent } from '@home/pages/dashboard/dashboard-page.component'; 23 import { DashboardPageComponent } from '@home/pages/dashboard/dashboard-page.component';
24 import { BreadCrumbConfig, BreadCrumbLabelFunction } from '@shared/components/breadcrumb'; 24 import { BreadCrumbConfig, BreadCrumbLabelFunction } from '@shared/components/breadcrumb';
25 -import { widgetTypesBreadcumbLabelFunction } from '@home/pages/widget/widget-library-routing.module';  
26 -import { WidgetsBundle } from '@shared/models/widgets-bundle.model';  
27 -import { WidgetService } from '@core/http/widget.service';  
28 import { Observable } from 'rxjs'; 25 import { Observable } from 'rxjs';
29 import { Dashboard } from '@app/shared/models/dashboard.models'; 26 import { Dashboard } from '@app/shared/models/dashboard.models';
30 import { DashboardService } from '@core/http/dashboard.service'; 27 import { DashboardService } from '@core/http/dashboard.service';
@@ -14,9 +14,9 @@ @@ -14,9 +14,9 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {Injectable} from '@angular/core'; 17 +import { Injectable } from '@angular/core';
18 18
19 -import {ActivatedRouteSnapshot, Resolve, Router} from '@angular/router'; 19 +import { ActivatedRouteSnapshot, Resolve, Router } from '@angular/router';
20 import { 20 import {
21 CellActionDescriptor, 21 CellActionDescriptor,
22 checkBoxCell, 22 checkBoxCell,
@@ -26,20 +26,20 @@ import { @@ -26,20 +26,20 @@ import {
26 GroupActionDescriptor, 26 GroupActionDescriptor,
27 HeaderActionDescriptor 27 HeaderActionDescriptor
28 } from '@home/models/entity/entities-table-config.models'; 28 } from '@home/models/entity/entities-table-config.models';
29 -import {TranslateService} from '@ngx-translate/core';  
30 -import {DatePipe} from '@angular/common';  
31 -import {EntityType, entityTypeResources, entityTypeTranslations} from '@shared/models/entity-type.models';  
32 -import {EntityAction} from '@home/models/entity/entity-component.models';  
33 -import {forkJoin, Observable, of} from 'rxjs';  
34 -import {select, Store} from '@ngrx/store';  
35 -import {selectAuthUser} from '@core/auth/auth.selectors';  
36 -import {map, mergeMap, take, tap} from 'rxjs/operators';  
37 -import {AppState} from '@core/core.state';  
38 -import {Authority} from '@app/shared/models/authority.enum';  
39 -import {CustomerService} from '@core/http/customer.service';  
40 -import {Customer} from '@app/shared/models/customer.model'; 29 +import { TranslateService } from '@ngx-translate/core';
  30 +import { DatePipe } from '@angular/common';
  31 +import { EntityType, entityTypeResources, entityTypeTranslations } from '@shared/models/entity-type.models';
  32 +import { EntityAction } from '@home/models/entity/entity-component.models';
  33 +import { forkJoin, Observable, of } from 'rxjs';
  34 +import { select, Store } from '@ngrx/store';
  35 +import { selectAuthUser } from '@core/auth/auth.selectors';
  36 +import { map, mergeMap, take, tap } from 'rxjs/operators';
  37 +import { AppState } from '@core/core.state';
  38 +import { Authority } from '@app/shared/models/authority.enum';
  39 +import { CustomerService } from '@core/http/customer.service';
  40 +import { Customer } from '@app/shared/models/customer.model';
41 import { MatDialog } from '@angular/material/dialog'; 41 import { MatDialog } from '@angular/material/dialog';
42 -import {DialogService} from '@core/services/dialog.service'; 42 +import { DialogService } from '@core/services/dialog.service';
43 import { 43 import {
44 AddEntitiesToCustomerDialogComponent, 44 AddEntitiesToCustomerDialogComponent,
45 AddEntitiesToCustomerDialogData 45 AddEntitiesToCustomerDialogData
@@ -51,8 +51,8 @@ import { @@ -51,8 +51,8 @@ import {
51 isCurrentPublicDashboardCustomer, 51 isCurrentPublicDashboardCustomer,
52 isPublicDashboard 52 isPublicDashboard
53 } from '@app/shared/models/dashboard.models'; 53 } from '@app/shared/models/dashboard.models';
54 -import {DashboardService} from '@app/core/http/dashboard.service';  
55 -import {DashboardFormComponent} from '@modules/home/pages/dashboard/dashboard-form.component'; 54 +import { DashboardService } from '@app/core/http/dashboard.service';
  55 +import { DashboardFormComponent } from '@modules/home/pages/dashboard/dashboard-form.component';
56 import { 56 import {
57 ManageDashboardCustomersActionType, 57 ManageDashboardCustomersActionType,
58 ManageDashboardCustomersDialogComponent, 58 ManageDashboardCustomersDialogComponent,
@@ -142,7 +142,7 @@ export class DashboardsTableConfigResolver implements Resolve<EntityTableConfig< @@ -142,7 +142,7 @@ export class DashboardsTableConfigResolver implements Resolve<EntityTableConfig<
142 142
143 configureColumns(dashboardScope: string): Array<EntityTableColumn<DashboardInfo>> { 143 configureColumns(dashboardScope: string): Array<EntityTableColumn<DashboardInfo>> {
144 const columns: Array<EntityTableColumn<DashboardInfo>> = [ 144 const columns: Array<EntityTableColumn<DashboardInfo>> = [
145 - new DateEntityTableColumn<DashboardInfo>('createdTime', 'dashboard.created-time', this.datePipe, '150px'), 145 + new DateEntityTableColumn<DashboardInfo>('createdTime', 'common.created-time', this.datePipe, '150px'),
146 new EntityTableColumn<DashboardInfo>('title', 'dashboard.title', '50%') 146 new EntityTableColumn<DashboardInfo>('title', 'dashboard.title', '50%')
147 ]; 147 ];
148 if (dashboardScope === 'tenant') { 148 if (dashboardScope === 'tenant') {
@@ -14,12 +14,12 @@ @@ -14,12 +14,12 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {NgModule} from '@angular/core';  
18 -import {RouterModule, Routes} from '@angular/router'; 17 +import { NgModule } from '@angular/core';
  18 +import { RouterModule, Routes } from '@angular/router';
19 19
20 -import {EntitiesTableComponent} from '../../components/entity/entities-table.component';  
21 -import {Authority} from '@shared/models/authority.enum';  
22 -import {DevicesTableConfigResolver} from '@modules/home/pages/device/devices-table-config.resolver'; 20 +import { EntitiesTableComponent } from '../../components/entity/entities-table.component';
  21 +import { Authority } from '@shared/models/authority.enum';
  22 +import { DevicesTableConfigResolver } from '@modules/home/pages/device/devices-table-config.resolver';
23 23
24 const routes: Routes = [ 24 const routes: Routes = [
25 { 25 {
@@ -149,7 +149,7 @@ export class DevicesTableConfigResolver implements Resolve<EntityTableConfig<Dev @@ -149,7 +149,7 @@ export class DevicesTableConfigResolver implements Resolve<EntityTableConfig<Dev
149 149
150 configureColumns(deviceScope: string): Array<EntityTableColumn<DeviceInfo>> { 150 configureColumns(deviceScope: string): Array<EntityTableColumn<DeviceInfo>> {
151 const columns: Array<EntityTableColumn<DeviceInfo>> = [ 151 const columns: Array<EntityTableColumn<DeviceInfo>> = [
152 - new DateEntityTableColumn<DeviceInfo>('createdTime', 'device.created-time', this.datePipe, '150px'), 152 + new DateEntityTableColumn<DeviceInfo>('createdTime', 'common.created-time', this.datePipe, '150px'),
153 new EntityTableColumn<DeviceInfo>('name', 'device.name', '25%'), 153 new EntityTableColumn<DeviceInfo>('name', 'device.name', '25%'),
154 new EntityTableColumn<DeviceInfo>('type', 'device.device-type', '25%'), 154 new EntityTableColumn<DeviceInfo>('type', 'device.device-type', '25%'),
155 new EntityTableColumn<DeviceInfo>('label', 'device.label', '25%') 155 new EntityTableColumn<DeviceInfo>('label', 'device.label', '25%')
@@ -14,12 +14,12 @@ @@ -14,12 +14,12 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {NgModule} from '@angular/core';  
18 -import {RouterModule, Routes} from '@angular/router'; 17 +import { NgModule } from '@angular/core';
  18 +import { RouterModule, Routes } from '@angular/router';
19 19
20 -import {EntitiesTableComponent} from '../../components/entity/entities-table.component';  
21 -import {Authority} from '@shared/models/authority.enum';  
22 -import {EntityViewsTableConfigResolver} from '@modules/home/pages/entity-view/entity-views-table-config.resolver'; 20 +import { EntitiesTableComponent } from '../../components/entity/entities-table.component';
  21 +import { Authority } from '@shared/models/authority.enum';
  22 +import { EntityViewsTableConfigResolver } from '@modules/home/pages/entity-view/entity-views-table-config.resolver';
23 23
24 const routes: Routes = [ 24 const routes: Routes = [
25 { 25 {
@@ -14,12 +14,12 @@ @@ -14,12 +14,12 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {Component} from '@angular/core';  
18 -import {Store} from '@ngrx/store';  
19 -import {AppState} from '@core/core.state';  
20 -import {EntityTableHeaderComponent} from '../../components/entity/entity-table-header.component';  
21 -import {EntityType} from '@shared/models/entity-type.models';  
22 -import {EntityViewInfo} from '@app/shared/models/entity-view.models'; 17 +import { Component } from '@angular/core';
  18 +import { Store } from '@ngrx/store';
  19 +import { AppState } from '@core/core.state';
  20 +import { EntityTableHeaderComponent } from '../../components/entity/entity-table-header.component';
  21 +import { EntityType } from '@shared/models/entity-type.models';
  22 +import { EntityViewInfo } from '@app/shared/models/entity-view.models';
23 23
24 @Component({ 24 @Component({
25 selector: 'tb-entity-view-table-header', 25 selector: 'tb-entity-view-table-header',
@@ -14,20 +14,19 @@ @@ -14,20 +14,19 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {Component} from '@angular/core';  
18 -import {Store} from '@ngrx/store';  
19 -import {AppState} from '@core/core.state';  
20 -import {EntityComponent} from '../../components/entity/entity.component';  
21 -import {FormBuilder, FormGroup, Validators} from '@angular/forms';  
22 -import {EntityType} from '@shared/models/entity-type.models';  
23 -import {NULL_UUID} from '@shared/models/id/has-uuid';  
24 -import {ActionNotificationShow} from '@core/notification/notification.actions';  
25 -import {TranslateService} from '@ngx-translate/core';  
26 -import {EntityViewInfo} from '@app/shared/models/entity-view.models';  
27 -import {Observable} from 'rxjs';  
28 -import {map} from 'rxjs/operators';  
29 -import {DataKeyType} from '@shared/models/telemetry/telemetry.models';  
30 -import {EntityId} from '@app/shared/models/id/entity-id'; 17 +import { Component } from '@angular/core';
  18 +import { Store } from '@ngrx/store';
  19 +import { AppState } from '@core/core.state';
  20 +import { EntityComponent } from '../../components/entity/entity.component';
  21 +import { FormBuilder, FormGroup, Validators } from '@angular/forms';
  22 +import { EntityType } from '@shared/models/entity-type.models';
  23 +import { NULL_UUID } from '@shared/models/id/has-uuid';
  24 +import { ActionNotificationShow } from '@core/notification/notification.actions';
  25 +import { TranslateService } from '@ngx-translate/core';
  26 +import { EntityViewInfo } from '@app/shared/models/entity-view.models';
  27 +import { Observable } from 'rxjs';
  28 +import { DataKeyType } from '@shared/models/telemetry/telemetry.models';
  29 +import { EntityId } from '@app/shared/models/id/entity-id';
31 30
32 @Component({ 31 @Component({
33 selector: 'tb-entity-view', 32 selector: 'tb-entity-view',
@@ -14,14 +14,14 @@ @@ -14,14 +14,14 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {NgModule} from '@angular/core';  
18 -import {CommonModule} from '@angular/common';  
19 -import {SharedModule} from '@shared/shared.module';  
20 -import {HomeDialogsModule} from '../../dialogs/home-dialogs.module';  
21 -import {EntityViewComponent} from '@modules/home/pages/entity-view/entity-view.component';  
22 -import {EntityViewTableHeaderComponent} from './entity-view-table-header.component';  
23 -import {EntityViewRoutingModule} from './entity-view-routing.module';  
24 -import {HomeComponentsModule} from '@modules/home/components/home-components.module'; 17 +import { NgModule } from '@angular/core';
  18 +import { CommonModule } from '@angular/common';
  19 +import { SharedModule } from '@shared/shared.module';
  20 +import { HomeDialogsModule } from '../../dialogs/home-dialogs.module';
  21 +import { EntityViewComponent } from '@modules/home/pages/entity-view/entity-view.component';
  22 +import { EntityViewTableHeaderComponent } from './entity-view-table-header.component';
  23 +import { EntityViewRoutingModule } from './entity-view-routing.module';
  24 +import { HomeComponentsModule } from '@modules/home/components/home-components.module';
25 import { EntityViewTabsComponent } from '@home/pages/entity-view/entity-view-tabs.component'; 25 import { EntityViewTabsComponent } from '@home/pages/entity-view/entity-view-tabs.component';
26 26
27 @NgModule({ 27 @NgModule({
@@ -14,9 +14,9 @@ @@ -14,9 +14,9 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {Injectable} from '@angular/core'; 17 +import { Injectable } from '@angular/core';
18 18
19 -import {ActivatedRouteSnapshot, Resolve, Router} from '@angular/router'; 19 +import { ActivatedRouteSnapshot, Resolve, Router } from '@angular/router';
20 import { 20 import {
21 CellActionDescriptor, 21 CellActionDescriptor,
22 checkBoxCell, 22 checkBoxCell,
@@ -26,22 +26,22 @@ import { @@ -26,22 +26,22 @@ import {
26 GroupActionDescriptor, 26 GroupActionDescriptor,
27 HeaderActionDescriptor 27 HeaderActionDescriptor
28 } from '@home/models/entity/entities-table-config.models'; 28 } from '@home/models/entity/entities-table-config.models';
29 -import {TranslateService} from '@ngx-translate/core';  
30 -import {DatePipe} from '@angular/common';  
31 -import {EntityType, entityTypeResources, entityTypeTranslations} from '@shared/models/entity-type.models';  
32 -import {EntityAction} from '@home/models/entity/entity-component.models';  
33 -import {forkJoin, Observable, of} from 'rxjs';  
34 -import {select, Store} from '@ngrx/store';  
35 -import {selectAuthUser} from '@core/auth/auth.selectors';  
36 -import {map, mergeMap, take, tap} from 'rxjs/operators';  
37 -import {AppState} from '@core/core.state';  
38 -import {Authority} from '@app/shared/models/authority.enum';  
39 -import {CustomerService} from '@core/http/customer.service';  
40 -import {Customer} from '@app/shared/models/customer.model';  
41 -import {NULL_UUID} from '@shared/models/id/has-uuid';  
42 -import {BroadcastService} from '@core/services/broadcast.service'; 29 +import { TranslateService } from '@ngx-translate/core';
  30 +import { DatePipe } from '@angular/common';
  31 +import { EntityType, entityTypeResources, entityTypeTranslations } from '@shared/models/entity-type.models';
  32 +import { EntityAction } from '@home/models/entity/entity-component.models';
  33 +import { forkJoin, Observable, of } from 'rxjs';
  34 +import { select, Store } from '@ngrx/store';
  35 +import { selectAuthUser } from '@core/auth/auth.selectors';
  36 +import { map, mergeMap, take, tap } from 'rxjs/operators';
  37 +import { AppState } from '@core/core.state';
  38 +import { Authority } from '@app/shared/models/authority.enum';
  39 +import { CustomerService } from '@core/http/customer.service';
  40 +import { Customer } from '@app/shared/models/customer.model';
  41 +import { NULL_UUID } from '@shared/models/id/has-uuid';
  42 +import { BroadcastService } from '@core/services/broadcast.service';
43 import { MatDialog } from '@angular/material/dialog'; 43 import { MatDialog } from '@angular/material/dialog';
44 -import {DialogService} from '@core/services/dialog.service'; 44 +import { DialogService } from '@core/services/dialog.service';
45 import { 45 import {
46 AssignToCustomerDialogComponent, 46 AssignToCustomerDialogComponent,
47 AssignToCustomerDialogData 47 AssignToCustomerDialogData
@@ -50,11 +50,11 @@ import { @@ -50,11 +50,11 @@ import {
50 AddEntitiesToCustomerDialogComponent, 50 AddEntitiesToCustomerDialogComponent,
51 AddEntitiesToCustomerDialogData 51 AddEntitiesToCustomerDialogData
52 } from '../../dialogs/add-entities-to-customer-dialog.component'; 52 } from '../../dialogs/add-entities-to-customer-dialog.component';
53 -import {EntityView, EntityViewInfo} from '@app/shared/models/entity-view.models';  
54 -import {EntityViewService} from '@core/http/entity-view.service';  
55 -import {EntityViewComponent} from '@modules/home/pages/entity-view/entity-view.component';  
56 -import {EntityViewTableHeaderComponent} from '@modules/home/pages/entity-view/entity-view-table-header.component';  
57 -import {EntityViewId} from '@shared/models/id/entity-view-id'; 53 +import { EntityView, EntityViewInfo } from '@app/shared/models/entity-view.models';
  54 +import { EntityViewService } from '@core/http/entity-view.service';
  55 +import { EntityViewComponent } from '@modules/home/pages/entity-view/entity-view.component';
  56 +import { EntityViewTableHeaderComponent } from '@modules/home/pages/entity-view/entity-view-table-header.component';
  57 +import { EntityViewId } from '@shared/models/id/entity-view-id';
58 import { EntityViewTabsComponent } from '@home/pages/entity-view/entity-view-tabs.component'; 58 import { EntityViewTabsComponent } from '@home/pages/entity-view/entity-view-tabs.component';
59 59
60 @Injectable() 60 @Injectable()
@@ -146,7 +146,7 @@ export class EntityViewsTableConfigResolver implements Resolve<EntityTableConfig @@ -146,7 +146,7 @@ export class EntityViewsTableConfigResolver implements Resolve<EntityTableConfig
146 146
147 configureColumns(entityViewScope: string): Array<EntityTableColumn<EntityViewInfo>> { 147 configureColumns(entityViewScope: string): Array<EntityTableColumn<EntityViewInfo>> {
148 const columns: Array<EntityTableColumn<EntityViewInfo>> = [ 148 const columns: Array<EntityTableColumn<EntityViewInfo>> = [
149 - new DateEntityTableColumn<EntityViewInfo>('createdTime', 'entity-view.created-time', this.datePipe, '150px'), 149 + new DateEntityTableColumn<EntityViewInfo>('createdTime', 'common.created-time', this.datePipe, '150px'),
150 new EntityTableColumn<EntityViewInfo>('name', 'entity-view.name', '33%'), 150 new EntityTableColumn<EntityViewInfo>('name', 'entity-view.name', '33%'),
151 new EntityTableColumn<EntityViewInfo>('type', 'entity-view.entity-view-type', '33%'), 151 new EntityTableColumn<EntityViewInfo>('type', 'entity-view.entity-view-type', '33%'),
152 ]; 152 ];
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 <mat-toolbar fxLayout="row" color="primary"> 19 <mat-toolbar fxLayout="row" color="primary">
20 <h2 translate>profile.change-password</h2> 20 <h2 translate>profile.change-password</h2>
21 <span fxFlex></span> 21 <span fxFlex></span>
22 - <button mat-button mat-icon-button 22 + <button mat-icon-button
23 [mat-dialog-close]="false" 23 [mat-dialog-close]="false"
24 type="button"> 24 type="button">
25 <mat-icon class="material-icons">close</mat-icon> 25 <mat-icon class="material-icons">close</mat-icon>
@@ -45,15 +45,13 @@ @@ -45,15 +45,13 @@
45 <mat-icon class="material-icons" matPrefix>lock</mat-icon> 45 <mat-icon class="material-icons" matPrefix>lock</mat-icon>
46 </mat-form-field> 46 </mat-form-field>
47 </div> 47 </div>
48 - <div mat-dialog-actions fxLayout="row">  
49 - <span fxFlex></span>  
50 - <button mat-button mat-raised-button color="primary" 48 + <div mat-dialog-actions fxLayout="row" fxLayoutAlign="end center">
  49 + <button mat-raised-button color="primary"
51 type="submit" 50 type="submit"
52 [disabled]="(isLoading$ | async) || changePasswordForm.invalid"> 51 [disabled]="(isLoading$ | async) || changePasswordForm.invalid">
53 {{ 'profile.change-password' | translate }} 52 {{ 'profile.change-password' | translate }}
54 </button> 53 </button>
55 <button mat-button color="primary" 54 <button mat-button color="primary"
56 - style="margin-right: 20px;"  
57 type="button" 55 type="button"
58 [disabled]="(isLoading$ | async)" 56 [disabled]="(isLoading$ | async)"
59 [mat-dialog-close]="false" cdkFocusInitial> 57 [mat-dialog-close]="false" cdkFocusInitial>
@@ -16,10 +16,9 @@ @@ -16,10 +16,9 @@
16 16
17 import { Component, OnInit } from '@angular/core'; 17 import { Component, OnInit } from '@angular/core';
18 import { MatDialogRef } from '@angular/material/dialog'; 18 import { MatDialogRef } from '@angular/material/dialog';
19 -import { PageComponent } from '@shared/components/page.component';  
20 import { Store } from '@ngrx/store'; 19 import { Store } from '@ngrx/store';
21 import { AppState } from '@core/core.state'; 20 import { AppState } from '@core/core.state';
22 -import { FormBuilder, FormGroup, Validators } from '@angular/forms'; 21 +import { FormBuilder, FormGroup } from '@angular/forms';
23 import { ActionNotificationShow } from '@core/notification/notification.actions'; 22 import { ActionNotificationShow } from '@core/notification/notification.actions';
24 import { TranslateService } from '@ngx-translate/core'; 23 import { TranslateService } from '@ngx-translate/core';
25 import { AuthService } from '@core/auth/auth.service'; 24 import { AuthService } from '@core/auth/auth.service';
@@ -14,18 +14,18 @@ @@ -14,18 +14,18 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {Injectable, NgModule} from '@angular/core';  
18 -import {Resolve, RouterModule, Routes} from '@angular/router'; 17 +import { Injectable, NgModule } from '@angular/core';
  18 +import { Resolve, RouterModule, Routes } from '@angular/router';
19 19
20 -import {ProfileComponent} from './profile.component';  
21 -import {ConfirmOnExitGuard} from '@core/guards/confirm-on-exit.guard';  
22 -import {Authority} from '@shared/models/authority.enum';  
23 -import {User} from '@shared/models/user.model';  
24 -import {Store} from '@ngrx/store';  
25 -import {AppState} from '@core/core.state';  
26 -import {UserService} from '@core/http/user.service';  
27 -import {getCurrentAuthUser} from '@core/auth/auth.selectors';  
28 -import {Observable} from 'rxjs'; 20 +import { ProfileComponent } from './profile.component';
  21 +import { ConfirmOnExitGuard } from '@core/guards/confirm-on-exit.guard';
  22 +import { Authority } from '@shared/models/authority.enum';
  23 +import { User } from '@shared/models/user.model';
  24 +import { Store } from '@ngrx/store';
  25 +import { AppState } from '@core/core.state';
  26 +import { UserService } from '@core/http/user.service';
  27 +import { getCurrentAuthUser } from '@core/auth/auth.selectors';
  28 +import { Observable } from 'rxjs';
29 29
30 @Injectable() 30 @Injectable()
31 export class UserProfileResolver implements Resolve<User> { 31 export class UserProfileResolver implements Resolve<User> {
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 <div> 18 <div>
19 <mat-card class="profile-card"> 19 <mat-card class="profile-card">
20 <mat-card-title> 20 <mat-card-title>
21 - <div fxLayout="row"> 21 + <div fxLayout="row" fxLayout.xs="column" fxLayoutGap.xs="8px">
22 <div fxFlex fxLayout="column"> 22 <div fxFlex fxLayout="column">
23 <span class="mat-headline" translate>profile.profile</span> 23 <span class="mat-headline" translate>profile.profile</span>
24 <span class="profile-email" style='opacity: 0.7;'>{{ profile ? profile.get('email').value : '' }}</span> 24 <span class="profile-email" style='opacity: 0.7;'>{{ profile ? profile.get('email').value : '' }}</span>
@@ -14,24 +14,24 @@ @@ -14,24 +14,24 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {Component, OnInit} from '@angular/core';  
18 -import {UserService} from '@core/http/user.service';  
19 -import {User} from '@shared/models/user.model';  
20 -import {Authority} from '@shared/models/authority.enum';  
21 -import {PageComponent} from '@shared/components/page.component';  
22 -import {Store} from '@ngrx/store';  
23 -import {AppState} from '@core/core.state';  
24 -import {FormBuilder, FormGroup, Validators} from '@angular/forms';  
25 -import {HasConfirmForm} from '@core/guards/confirm-on-exit.guard';  
26 -import {ActionAuthUpdateUserDetails} from '@core/auth/auth.actions';  
27 -import {environment as env} from '@env/environment';  
28 -import {TranslateService} from '@ngx-translate/core';  
29 -import {ActionSettingsChangeLanguage} from '@core/settings/settings.actions';  
30 -import {ChangePasswordDialogComponent} from '@modules/home/pages/profile/change-password-dialog.component'; 17 +import { Component, OnInit } from '@angular/core';
  18 +import { UserService } from '@core/http/user.service';
  19 +import { User } from '@shared/models/user.model';
  20 +import { Authority } from '@shared/models/authority.enum';
  21 +import { PageComponent } from '@shared/components/page.component';
  22 +import { Store } from '@ngrx/store';
  23 +import { AppState } from '@core/core.state';
  24 +import { FormBuilder, FormGroup, Validators } from '@angular/forms';
  25 +import { HasConfirmForm } from '@core/guards/confirm-on-exit.guard';
  26 +import { ActionAuthUpdateUserDetails } from '@core/auth/auth.actions';
  27 +import { environment as env } from '@env/environment';
  28 +import { TranslateService } from '@ngx-translate/core';
  29 +import { ActionSettingsChangeLanguage } from '@core/settings/settings.actions';
  30 +import { ChangePasswordDialogComponent } from '@modules/home/pages/profile/change-password-dialog.component';
31 import { MatDialog } from '@angular/material/dialog'; 31 import { MatDialog } from '@angular/material/dialog';
32 -import {DialogService} from '@core/services/dialog.service';  
33 -import {AuthService} from '@core/auth/auth.service';  
34 -import {ActivatedRoute} from '@angular/router'; 32 +import { DialogService } from '@core/services/dialog.service';
  33 +import { AuthService } from '@core/auth/auth.service';
  34 +import { ActivatedRoute } from '@angular/router';
35 35
36 @Component({ 36 @Component({
37 selector: 'tb-profile', 37 selector: 'tb-profile',
@@ -14,17 +14,14 @@ @@ -14,17 +14,14 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {Component} from '@angular/core';  
18 -import {Store} from '@ngrx/store';  
19 -import {AppState} from '@core/core.state';  
20 -import {EntityComponent} from '../../components/entity/entity.component';  
21 -import {FormBuilder, FormGroup, Validators} from '@angular/forms';  
22 -import {EntityType} from '@shared/models/entity-type.models';  
23 -import {NULL_UUID} from '@shared/models/id/has-uuid';  
24 -import {ActionNotificationShow} from '@core/notification/notification.actions';  
25 -import {TranslateService} from '@ngx-translate/core';  
26 -import {AssetInfo} from '@app/shared/models/asset.models';  
27 -import {RuleChain} from '@shared/models/rule-chain.models'; 17 +import { Component } from '@angular/core';
  18 +import { Store } from '@ngrx/store';
  19 +import { AppState } from '@core/core.state';
  20 +import { EntityComponent } from '../../components/entity/entity.component';
  21 +import { FormBuilder, FormGroup, Validators } from '@angular/forms';
  22 +import { ActionNotificationShow } from '@core/notification/notification.actions';
  23 +import { TranslateService } from '@ngx-translate/core';
  24 +import { RuleChain } from '@shared/models/rule-chain.models';
28 25
29 @Component({ 26 @Component({
30 selector: 'tb-rulechain', 27 selector: 'tb-rulechain',
@@ -14,14 +14,18 @@ @@ -14,14 +14,18 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {NgModule} from '@angular/core';  
18 -import {CommonModule} from '@angular/common';  
19 -import {SharedModule} from '@shared/shared.module';  
20 -import {RuleChainComponent} from '@modules/home/pages/rulechain/rulechain.component';  
21 -import {RuleChainRoutingModule} from '@modules/home/pages/rulechain/rulechain-routing.module';  
22 -import {HomeComponentsModule} from '@modules/home/components/home-components.module'; 17 +import { NgModule } from '@angular/core';
  18 +import { CommonModule } from '@angular/common';
  19 +import { SharedModule } from '@shared/shared.module';
  20 +import { RuleChainComponent } from '@modules/home/pages/rulechain/rulechain.component';
  21 +import { RuleChainRoutingModule } from '@modules/home/pages/rulechain/rulechain-routing.module';
  22 +import { HomeComponentsModule } from '@modules/home/components/home-components.module';
23 import { RuleChainTabsComponent } from '@home/pages/rulechain/rulechain-tabs.component'; 23 import { RuleChainTabsComponent } from '@home/pages/rulechain/rulechain-tabs.component';
24 -import { RuleChainPageComponent, AddRuleNodeLinkDialogComponent, AddRuleNodeDialogComponent } from './rulechain-page.component'; 24 +import {
  25 + AddRuleNodeDialogComponent,
  26 + AddRuleNodeLinkDialogComponent,
  27 + RuleChainPageComponent
  28 +} from './rulechain-page.component';
25 import { RuleNodeComponent } from '@home/pages/rulechain/rulenode.component'; 29 import { RuleNodeComponent } from '@home/pages/rulechain/rulenode.component';
26 import { FC_NODE_COMPONENT_CONFIG } from 'ngx-flowchart/dist/ngx-flowchart'; 30 import { FC_NODE_COMPONENT_CONFIG } from 'ngx-flowchart/dist/ngx-flowchart';
27 import { RuleNodeDetailsComponent } from './rule-node-details.component'; 31 import { RuleNodeDetailsComponent } from './rule-node-details.component';
@@ -14,23 +14,23 @@ @@ -14,23 +14,23 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {Injectable} from '@angular/core'; 17 +import { Injectable } from '@angular/core';
18 18
19 -import {Resolve, Router} from '@angular/router'; 19 +import { Resolve, Router } from '@angular/router';
20 import { 20 import {
21 checkBoxCell, 21 checkBoxCell,
22 DateEntityTableColumn, 22 DateEntityTableColumn,
23 EntityTableColumn, 23 EntityTableColumn,
24 EntityTableConfig 24 EntityTableConfig
25 } from '@home/models/entity/entities-table-config.models'; 25 } from '@home/models/entity/entities-table-config.models';
26 -import {TranslateService} from '@ngx-translate/core';  
27 -import {DatePipe} from '@angular/common';  
28 -import {EntityType, entityTypeResources, entityTypeTranslations} from '@shared/models/entity-type.models';  
29 -import {EntityAction} from '@home/models/entity/entity-component.models';  
30 -import {RuleChain} from '@shared/models/rule-chain.models';  
31 -import {RuleChainService} from '@core/http/rule-chain.service';  
32 -import {RuleChainComponent} from '@modules/home/pages/rulechain/rulechain.component';  
33 -import {DialogService} from '@core/services/dialog.service'; 26 +import { TranslateService } from '@ngx-translate/core';
  27 +import { DatePipe } from '@angular/common';
  28 +import { EntityType, entityTypeResources, entityTypeTranslations } from '@shared/models/entity-type.models';
  29 +import { EntityAction } from '@home/models/entity/entity-component.models';
  30 +import { RuleChain } from '@shared/models/rule-chain.models';
  31 +import { RuleChainService } from '@core/http/rule-chain.service';
  32 +import { RuleChainComponent } from '@modules/home/pages/rulechain/rulechain.component';
  33 +import { DialogService } from '@core/services/dialog.service';
34 import { RuleChainTabsComponent } from '@home/pages/rulechain/rulechain-tabs.component'; 34 import { RuleChainTabsComponent } from '@home/pages/rulechain/rulechain-tabs.component';
35 import { ImportExportService } from '@home/components/import-export/import-export.service'; 35 import { ImportExportService } from '@home/components/import-export/import-export.service';
36 import { ItemBufferService } from '@core/services/item-buffer.service'; 36 import { ItemBufferService } from '@core/services/item-buffer.service';
@@ -55,7 +55,7 @@ export class RuleChainsTableConfigResolver implements Resolve<EntityTableConfig< @@ -55,7 +55,7 @@ export class RuleChainsTableConfigResolver implements Resolve<EntityTableConfig<
55 this.config.entityResources = entityTypeResources.get(EntityType.RULE_CHAIN); 55 this.config.entityResources = entityTypeResources.get(EntityType.RULE_CHAIN);
56 56
57 this.config.columns.push( 57 this.config.columns.push(
58 - new DateEntityTableColumn<RuleChain>('createdTime', 'rulechain.created-time', this.datePipe, '150px'), 58 + new DateEntityTableColumn<RuleChain>('createdTime', 'common.created-time', this.datePipe, '150px'),
59 new EntityTableColumn<RuleChain>('name', 'rulechain.name', '100%'), 59 new EntityTableColumn<RuleChain>('name', 'rulechain.name', '100%'),
60 new EntityTableColumn<RuleChain>('root', 'rulechain.root', '60px', 60 new EntityTableColumn<RuleChain>('root', 'rulechain.root', '60px',
61 entity => { 61 entity => {
@@ -14,21 +14,13 @@ @@ -14,21 +14,13 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import { Injectable, NgModule } from '@angular/core';  
18 -import { Resolve, RouterModule, Routes } from '@angular/router'; 17 +import { NgModule } from '@angular/core';
  18 +import { RouterModule, Routes } from '@angular/router';
19 19
20 import { EntitiesTableComponent } from '../../components/entity/entities-table.component'; 20 import { EntitiesTableComponent } from '../../components/entity/entities-table.component';
21 import { Authority } from '@shared/models/authority.enum'; 21 import { Authority } from '@shared/models/authority.enum';
22 import { TenantsTableConfigResolver } from '@modules/home/pages/tenant/tenants-table-config.resolver'; 22 import { TenantsTableConfigResolver } from '@modules/home/pages/tenant/tenants-table-config.resolver';
23 -import { ProfileComponent } from '@modules/home/pages/profile/profile.component';  
24 -import { ConfirmOnExitGuard } from '@core/guards/confirm-on-exit.guard';  
25 -import { Customer } from '@shared/models/customer.model';  
26 -import { Store } from '@ngrx/store';  
27 -import { AppState } from '@core/core.state';  
28 -import { forkJoin, Observable, throwError } from 'rxjs';  
29 -import { getCurrentAuthUser } from '@core/auth/auth.selectors';  
30 -import { catchError, finalize, map, tap } from 'rxjs/operators';  
31 -import {UsersTableConfigResolver} from '../user/users-table-config.resolver'; 23 +import { UsersTableConfigResolver } from '../user/users-table-config.resolver';
32 24
33 const routes: Routes = [ 25 const routes: Routes = [
34 { 26 {
@@ -54,7 +54,7 @@ export class TenantsTableConfigResolver implements Resolve<EntityTableConfig<Ten @@ -54,7 +54,7 @@ export class TenantsTableConfigResolver implements Resolve<EntityTableConfig<Ten
54 this.config.entityResources = entityTypeResources.get(EntityType.TENANT); 54 this.config.entityResources = entityTypeResources.get(EntityType.TENANT);
55 55
56 this.config.columns.push( 56 this.config.columns.push(
57 - new DateEntityTableColumn<Tenant>('createdTime', 'tenant.created-time', this.datePipe, '150px'), 57 + new DateEntityTableColumn<Tenant>('createdTime', 'common.created-time', this.datePipe, '150px'),
58 new EntityTableColumn<Tenant>('title', 'tenant.title', '25%'), 58 new EntityTableColumn<Tenant>('title', 'tenant.title', '25%'),
59 new EntityTableColumn<Tenant>('email', 'contact.email', '25%'), 59 new EntityTableColumn<Tenant>('email', 'contact.email', '25%'),
60 new EntityTableColumn<Tenant>('country', 'contact.country', '25%'), 60 new EntityTableColumn<Tenant>('country', 'contact.country', '25%'),
@@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
15 /// 15 ///
16 16
17 import { NgModule } from '@angular/core'; 17 import { NgModule } from '@angular/core';
18 -import { RouterModule, Routes } from '@angular/router'; 18 +import { RouterModule } from '@angular/router';
19 import { UsersTableConfigResolver } from '@modules/home/pages/user/users-table-config.resolver'; 19 import { UsersTableConfigResolver } from '@modules/home/pages/user/users-table-config.resolver';
20 20
21 @NgModule({ 21 @NgModule({
@@ -24,25 +24,18 @@ import { @@ -24,25 +24,18 @@ import {
24 } from '@home/models/entity/entities-table-config.models'; 24 } from '@home/models/entity/entities-table-config.models';
25 import { TranslateService } from '@ngx-translate/core'; 25 import { TranslateService } from '@ngx-translate/core';
26 import { DatePipe } from '@angular/common'; 26 import { DatePipe } from '@angular/common';
27 -import {  
28 - EntityType,  
29 - entityTypeResources,  
30 - entityTypeTranslations  
31 -} from '@shared/models/entity-type.models'; 27 +import { EntityType, entityTypeResources, entityTypeTranslations } from '@shared/models/entity-type.models';
32 import { User } from '@shared/models/user.model'; 28 import { User } from '@shared/models/user.model';
33 import { UserService } from '@core/http/user.service'; 29 import { UserService } from '@core/http/user.service';
34 import { UserComponent } from '@modules/home/pages/user/user.component'; 30 import { UserComponent } from '@modules/home/pages/user/user.component';
35 import { CustomerService } from '@core/http/customer.service'; 31 import { CustomerService } from '@core/http/customer.service';
36 import { map, mergeMap, take, tap } from 'rxjs/operators'; 32 import { map, mergeMap, take, tap } from 'rxjs/operators';
37 -import { forkJoin, noop, Observable, of } from 'rxjs'; 33 +import { Observable } from 'rxjs';
38 import { Authority } from '@shared/models/authority.enum'; 34 import { Authority } from '@shared/models/authority.enum';
39 import { CustomerId } from '@shared/models/id/customer-id'; 35 import { CustomerId } from '@shared/models/id/customer-id';
40 import { MatDialog } from '@angular/material/dialog'; 36 import { MatDialog } from '@angular/material/dialog';
41 import { EntityAction } from '@home/models/entity/entity-component.models'; 37 import { EntityAction } from '@home/models/entity/entity-component.models';
42 -import {  
43 - AddUserDialogComponent,  
44 - AddUserDialogData  
45 -} from '@modules/home/pages/user/add-user-dialog.component'; 38 +import { AddUserDialogComponent, AddUserDialogData } from '@modules/home/pages/user/add-user-dialog.component';
46 import { AuthState } from '@core/auth/auth.models'; 39 import { AuthState } from '@core/auth/auth.models';
47 import { select, Store } from '@ngrx/store'; 40 import { select, Store } from '@ngrx/store';
48 import { AppState } from '@core/core.state'; 41 import { AppState } from '@core/core.state';
@@ -54,9 +47,8 @@ import { @@ -54,9 +47,8 @@ import {
54 } from '@modules/home/pages/user/activation-link-dialog.component'; 47 } from '@modules/home/pages/user/activation-link-dialog.component';
55 import { ActionNotificationShow } from '@core/notification/notification.actions'; 48 import { ActionNotificationShow } from '@core/notification/notification.actions';
56 import { NULL_UUID } from '@shared/models/id/has-uuid'; 49 import { NULL_UUID } from '@shared/models/id/has-uuid';
57 -import { Customer } from '@shared/models/customer.model';  
58 -import {TenantService} from '@app/core/http/tenant.service';  
59 -import {TenantId} from '@app/shared/models/id/tenant-id'; 50 +import { TenantService } from '@app/core/http/tenant.service';
  51 +import { TenantId } from '@app/shared/models/id/tenant-id';
60 import { UserTabsComponent } from '@home/pages/user/user-tabs.component'; 52 import { UserTabsComponent } from '@home/pages/user/user-tabs.component';
61 53
62 export interface UsersTableRouteData { 54 export interface UsersTableRouteData {
@@ -89,7 +81,7 @@ export class UsersTableConfigResolver implements Resolve<EntityTableConfig<User> @@ -89,7 +81,7 @@ export class UsersTableConfigResolver implements Resolve<EntityTableConfig<User>
89 this.config.entityResources = entityTypeResources.get(EntityType.USER); 81 this.config.entityResources = entityTypeResources.get(EntityType.USER);
90 82
91 this.config.columns.push( 83 this.config.columns.push(
92 - new DateEntityTableColumn<User>('createdTime', 'user.created-time', this.datePipe, '150px'), 84 + new DateEntityTableColumn<User>('createdTime', 'common.created-time', this.datePipe, '150px'),
93 new EntityTableColumn<User>('firstName', 'user.first-name', '33%'), 85 new EntityTableColumn<User>('firstName', 'user.first-name', '33%'),
94 new EntityTableColumn<User>('lastName', 'user.last-name', '33%'), 86 new EntityTableColumn<User>('lastName', 'user.last-name', '33%'),
95 new EntityTableColumn<User>('email', 'user.email', '33%') 87 new EntityTableColumn<User>('email', 'user.email', '33%')
@@ -14,28 +14,28 @@ @@ -14,28 +14,28 @@
14 /// limitations under the License. 14 /// limitations under the License.
15 /// 15 ///
16 16
17 -import {Injectable} from '@angular/core'; 17 +import { Injectable } from '@angular/core';
18 18
19 -import {Resolve, Router} from '@angular/router'; 19 +import { Resolve, Router } from '@angular/router';
20 import { 20 import {
21 checkBoxCell, 21 checkBoxCell,
22 DateEntityTableColumn, 22 DateEntityTableColumn,
23 EntityTableColumn, 23 EntityTableColumn,
24 EntityTableConfig 24 EntityTableConfig
25 } from '@home/models/entity/entities-table-config.models'; 25 } from '@home/models/entity/entities-table-config.models';
26 -import {TranslateService} from '@ngx-translate/core';  
27 -import {DatePipe} from '@angular/common';  
28 -import {EntityType, entityTypeResources, entityTypeTranslations} from '@shared/models/entity-type.models';  
29 -import {EntityAction} from '@home/models/entity/entity-component.models';  
30 -import {WidgetsBundle} from '@shared/models/widgets-bundle.model';  
31 -import {WidgetService} from '@app/core/http/widget.service';  
32 -import {WidgetsBundleComponent} from '@modules/home/pages/widget/widgets-bundle.component';  
33 -import {NULL_UUID} from '@shared/models/id/has-uuid';  
34 -import {Store} from '@ngrx/store';  
35 -import {AppState} from '@core/core.state';  
36 -import {getCurrentAuthUser} from '@app/core/auth/auth.selectors';  
37 -import {Authority} from '@shared/models/authority.enum';  
38 -import {DialogService} from '@core/services/dialog.service'; 26 +import { TranslateService } from '@ngx-translate/core';
  27 +import { DatePipe } from '@angular/common';
  28 +import { EntityType, entityTypeResources, entityTypeTranslations } from '@shared/models/entity-type.models';
  29 +import { EntityAction } from '@home/models/entity/entity-component.models';
  30 +import { WidgetsBundle } from '@shared/models/widgets-bundle.model';
  31 +import { WidgetService } from '@app/core/http/widget.service';
  32 +import { WidgetsBundleComponent } from '@modules/home/pages/widget/widgets-bundle.component';
  33 +import { NULL_UUID } from '@shared/models/id/has-uuid';
  34 +import { Store } from '@ngrx/store';
  35 +import { AppState } from '@core/core.state';
  36 +import { getCurrentAuthUser } from '@app/core/auth/auth.selectors';
  37 +import { Authority } from '@shared/models/authority.enum';
  38 +import { DialogService } from '@core/services/dialog.service';
39 import { ImportExportService } from '@home/components/import-export/import-export.service'; 39 import { ImportExportService } from '@home/components/import-export/import-export.service';
40 40
41 @Injectable() 41 @Injectable()
@@ -57,7 +57,7 @@ export class WidgetsBundlesTableConfigResolver implements Resolve<EntityTableCon @@ -57,7 +57,7 @@ export class WidgetsBundlesTableConfigResolver implements Resolve<EntityTableCon
57 this.config.entityResources = entityTypeResources.get(EntityType.WIDGETS_BUNDLE); 57 this.config.entityResources = entityTypeResources.get(EntityType.WIDGETS_BUNDLE);
58 58
59 this.config.columns.push( 59 this.config.columns.push(
60 - new DateEntityTableColumn<WidgetsBundle>('createdTime', 'widgets-bundle.created-time', this.datePipe, '150px'), 60 + new DateEntityTableColumn<WidgetsBundle>('createdTime', 'common.created-time', this.datePipe, '150px'),
61 new EntityTableColumn<WidgetsBundle>('title', 'widgets-bundle.title', '100%'), 61 new EntityTableColumn<WidgetsBundle>('title', 'widgets-bundle.title', '100%'),
62 new EntityTableColumn<WidgetsBundle>('tenantId', 'widgets-bundle.system', '60px', 62 new EntityTableColumn<WidgetsBundle>('tenantId', 'widgets-bundle.system', '60px',
63 entity => { 63 entity => {
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 <h1 fxFlex fxHide.gt-sm *ngIf="lastBreadcrumb$ | async; let breadcrumb"> 19 <h1 fxFlex fxHide.gt-sm *ngIf="lastBreadcrumb$ | async; let breadcrumb">
20 {{ breadcrumb.ignoreTranslate ? (breadcrumb.labelFunction ? breadcrumb.labelFunction() : breadcrumb.label) : (breadcrumb.label | translate) }} 20 {{ breadcrumb.ignoreTranslate ? (breadcrumb.labelFunction ? breadcrumb.labelFunction() : breadcrumb.label) : (breadcrumb.label | translate) }}
21 </h1> 21 </h1>
22 - <span fxHide.xs fxHide.sm *ngFor="let breadcrumb of breadcrumbs$ | async; last as isLast;" [ngSwitch]="isLast"> 22 + <span fxHide.lt-md fxLayout="row" *ngFor="let breadcrumb of breadcrumbs$ | async; last as isLast;" [ngSwitch]="isLast">
23 <a *ngSwitchCase="false" [routerLink]="breadcrumb.link" [queryParams]="breadcrumb.queryParams"> 23 <a *ngSwitchCase="false" [routerLink]="breadcrumb.link" [queryParams]="breadcrumb.queryParams">
24 <mat-icon *ngIf="breadcrumb.isMdiIcon" [svgIcon]="breadcrumb.icon"> 24 <mat-icon *ngIf="breadcrumb.isMdiIcon" [svgIcon]="breadcrumb.icon">
25 </mat-icon> 25 </mat-icon>
@@ -14,28 +14,24 @@ @@ -14,28 +14,24 @@
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 :host { 16 :host {
17 - display: flex;  
18 - flex-direction: row;  
19 - align-items: center;  
20 min-width: 0; 17 min-width: 0;
21 - flex: 1;  
22 18
23 .tb-breadcrumb { 19 .tb-breadcrumb {
24 - font-size: 18px !important;  
25 - font-weight: 400 !important; 20 + font-size: 18px;
  21 + font-weight: 400;
26 overflow: hidden; 22 overflow: hidden;
27 23
28 h1, 24 h1,
29 a, 25 a,
30 - span { 26 + span:not(.divider) {
31 overflow: hidden; 27 overflow: hidden;
32 text-overflow: ellipsis; 28 text-overflow: ellipsis;
33 white-space: nowrap; 29 white-space: nowrap;
34 } 30 }
35 31
36 h1 { 32 h1 {
37 - font-size: 24px !important;  
38 - font-weight: 400 !important; 33 + font-size: 24px;
  34 + font-weight: 400;
39 } 35 }
40 36
41 a { 37 a {
@@ -44,6 +40,7 @@ @@ -44,6 +40,7 @@
44 transition: opacity .35s; 40 transition: opacity .35s;
45 color: inherit; 41 color: inherit;
46 text-decoration: none; 42 text-decoration: none;
  43 + outline: none;
47 } 44 }
48 45
49 a:hover, 46 a:hover,
@@ -54,7 +51,7 @@ @@ -54,7 +51,7 @@
54 } 51 }
55 52
56 .divider { 53 .divider {
57 - padding: 0 30px; 54 + padding: 0 20px;
58 } 55 }
59 } 56 }
60 } 57 }
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 16
17 --> 17 -->
18 <section fxLayout="row"> 18 <section fxLayout="row">
19 - <div fxHide.xs fxHide.sm fxHide.md *ngIf="displayUserInfo" class="tb-user-info" fxLayout="row"> 19 + <div fxHide.lt-lg *ngIf="displayUserInfo" class="tb-user-info" fxLayout="row">
20 <mat-icon class="material-icons tb-mini-avatar">account_circle</mat-icon> 20 <mat-icon class="material-icons tb-mini-avatar">account_circle</mat-icon>
21 <div fxLayout="column" fxLayoutAlign="center"> 21 <div fxLayout="column" fxLayoutAlign="center">
22 <span *ngIf="userDisplayName$ | async; let userDisplayName" class="tb-user-display-name">{{ userDisplayName }}</span> 22 <span *ngIf="userDisplayName$ | async; let userDisplayName" class="tb-user-display-name">{{ userDisplayName }}</span>
@@ -18,7 +18,6 @@ @@ -18,7 +18,6 @@
18 line-height: 1.5; 18 line-height: 1.5;
19 19
20 span { 20 span {
21 - text-align: left;  
22 text-transform: none; 21 text-transform: none;
23 } 22 }
24 23
@@ -42,6 +41,7 @@ @@ -42,6 +41,7 @@
42 height: 36px; 41 height: 36px;
43 margin: auto 8px; 42 margin: auto 8px;
44 font-size: 36px; 43 font-size: 36px;
  44 + cursor: default;
45 } 45 }
46 } 46 }
47 47
@@ -336,7 +336,8 @@ @@ -336,7 +336,8 @@
336 "password": "Heslo", 336 "password": "Heslo",
337 "enter-username": "Zadejte uživatelské jméno", 337 "enter-username": "Zadejte uživatelské jméno",
338 "enter-password": "Zadejte heslo", 338 "enter-password": "Zadejte heslo",
339 - "enter-search": "Zadejte hledaný řetězec" 339 + "enter-search": "Zadejte hledaný řetězec",
  340 + "created-time": "Datum vytvoření"
340 }, 341 },
341 "content-type": { 342 "content-type": {
342 "json": "JSON", 343 "json": "JSON",
@@ -360,7 +360,8 @@ @@ -360,7 +360,8 @@
360 "password": "Passwort", 360 "password": "Passwort",
361 "enter-username": "Benutzername eingeben", 361 "enter-username": "Benutzername eingeben",
362 "enter-password": "Passwort eingeben", 362 "enter-password": "Passwort eingeben",
363 - "enter-search": "Suche eingeben" 363 + "enter-search": "Suche eingeben",
  364 + "created-time": "Erstellungszeit"
364 }, 365 },
365 "content-type": { 366 "content-type": {
366 "json": "Json", 367 "json": "Json",
@@ -378,7 +378,8 @@ @@ -378,7 +378,8 @@
378 "password": "Κωδικός πρόσβασης", 378 "password": "Κωδικός πρόσβασης",
379 "enter-username": "Εισάγετε Όνομα χρήστη", 379 "enter-username": "Εισάγετε Όνομα χρήστη",
380 "enter-password": "Εισάγετε Κωδικό πρόσβασης", 380 "enter-password": "Εισάγετε Κωδικό πρόσβασης",
381 - "enter-search": "Αναζήτηση" 381 + "enter-search": "Αναζήτηση",
  382 + "created-time": "Δημιουργήθηκε"
382 }, 383 },
383 "converter": { 384 "converter": {
384 "converter": "Μετατροπέας δεδομένων", 385 "converter": "Μετατροπέας δεδομένων",
@@ -380,7 +380,8 @@ @@ -380,7 +380,8 @@
380 "password": "Password", 380 "password": "Password",
381 "enter-username": "Enter username", 381 "enter-username": "Enter username",
382 "enter-password": "Enter password", 382 "enter-password": "Enter password",
383 - "enter-search": "Enter search" 383 + "enter-search": "Enter search",
  384 + "created-time": "Created time"
384 }, 385 },
385 "content-type": { 386 "content-type": {
386 "json": "Json", 387 "json": "Json",
@@ -421,7 +422,6 @@ @@ -421,7 +422,6 @@
421 "manage-assets": "Manage assets", 422 "manage-assets": "Manage assets",
422 "manage-devices": "Manage devices", 423 "manage-devices": "Manage devices",
423 "manage-dashboards": "Manage dashboards", 424 "manage-dashboards": "Manage dashboards",
424 - "created-time": "Created time",  
425 "title": "Title", 425 "title": "Title",
426 "title-required": "Title is required.", 426 "title-required": "Title is required.",
427 "description": "Description", 427 "description": "Description",
@@ -466,7 +466,6 @@ @@ -466,7 +466,6 @@
466 "no-dashboards-text": "No dashboards found", 466 "no-dashboards-text": "No dashboards found",
467 "no-widgets": "No widgets configured", 467 "no-widgets": "No widgets configured",
468 "add-widget": "Add new widget", 468 "add-widget": "Add new widget",
469 - "created-time": "Created time",  
470 "title": "Title", 469 "title": "Title",
471 "select-widget-title": "Select widget", 470 "select-widget-title": "Select widget",
472 "select-widget-subtitle": "List of available widget types", 471 "select-widget-subtitle": "List of available widget types",
@@ -709,7 +708,6 @@ @@ -709,7 +708,6 @@
709 "no-device-types-matching": "No device types matching '{{entitySubtype}}' were found.", 708 "no-device-types-matching": "No device types matching '{{entitySubtype}}' were found.",
710 "device-type-list-empty": "No device types selected.", 709 "device-type-list-empty": "No device types selected.",
711 "device-types": "Device types", 710 "device-types": "Device types",
712 - "created-time": "Created time",  
713 "name": "Name", 711 "name": "Name",
714 "name-required": "Name is required.", 712 "name-required": "Name is required.",
715 "description": "Description", 713 "description": "Description",
@@ -1416,7 +1414,6 @@ @@ -1416,7 +1414,6 @@
1416 "rulechains": "Rule chains", 1414 "rulechains": "Rule chains",
1417 "root": "Root", 1415 "root": "Root",
1418 "delete": "Delete rule chain", 1416 "delete": "Delete rule chain",
1419 - "created-time": "Created time",  
1420 "name": "Name", 1417 "name": "Name",
1421 "name-required": "Name is required.", 1418 "name-required": "Name is required.",
1422 "description": "Description", 1419 "description": "Description",
@@ -1532,7 +1529,6 @@ @@ -1532,7 +1529,6 @@
1532 "delete-tenants-title": "Are you sure you want to delete { count, plural, 1 {1 tenant} other {# tenants} }?", 1529 "delete-tenants-title": "Are you sure you want to delete { count, plural, 1 {1 tenant} other {# tenants} }?",
1533 "delete-tenants-action-title": "Delete { count, plural, 1 {1 tenant} other {# tenants} }", 1530 "delete-tenants-action-title": "Delete { count, plural, 1 {1 tenant} other {# tenants} }",
1534 "delete-tenants-text": "Be careful, after the confirmation all selected tenants will be removed and all related data will become unrecoverable.", 1531 "delete-tenants-text": "Be careful, after the confirmation all selected tenants will be removed and all related data will become unrecoverable.",
1535 - "created-time": "Created time",  
1536 "title": "Title", 1532 "title": "Title",
1537 "title-required": "Title is required.", 1533 "title-required": "Title is required.",
1538 "description": "Description", 1534 "description": "Description",
@@ -1593,7 +1589,6 @@ @@ -1593,7 +1589,6 @@
1593 "delete-users-text": "Be careful, after the confirmation all selected users will be removed and all related data will become unrecoverable.", 1589 "delete-users-text": "Be careful, after the confirmation all selected users will be removed and all related data will become unrecoverable.",
1594 "activation-email-sent-message": "Activation email was successfully sent!", 1590 "activation-email-sent-message": "Activation email was successfully sent!",
1595 "resend-activation": "Resend activation", 1591 "resend-activation": "Resend activation",
1596 - "created-time": "Created time",  
1597 "email": "Email", 1592 "email": "Email",
1598 "email-required": "Email is required.", 1593 "email-required": "Email is required.",
1599 "invalid-email-format": "Invalid email format.", 1594 "invalid-email-format": "Invalid email format.",
@@ -1715,7 +1710,6 @@ @@ -1715,7 +1710,6 @@
1715 "widgets-bundles": "Widgets Bundles", 1710 "widgets-bundles": "Widgets Bundles",
1716 "add": "Add Widgets Bundle", 1711 "add": "Add Widgets Bundle",
1717 "delete": "Delete widgets bundle", 1712 "delete": "Delete widgets bundle",
1718 - "created-time": "Created time",  
1719 "title": "Title", 1713 "title": "Title",
1720 "title-required": "Title is required.", 1714 "title-required": "Title is required.",
1721 "add-widgets-bundle-text": "Add new widgets bundle", 1715 "add-widgets-bundle-text": "Add new widgets bundle",
@@ -364,7 +364,8 @@ @@ -364,7 +364,8 @@
364 "password": "Contraseña", 364 "password": "Contraseña",
365 "enter-username": "Introduzca nombre de usuario", 365 "enter-username": "Introduzca nombre de usuario",
366 "enter-password": "Introduzca contraseña", 366 "enter-password": "Introduzca contraseña",
367 - "enter-search": "Introduzca búsqueda" 367 + "enter-search": "Introduzca búsqueda",
  368 + "created-time": "Tiempo de creación"
368 }, 369 },
369 "content-type": { 370 "content-type": {
370 "json": "Json", 371 "json": "Json",
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
48 "paste-reference": "رونوشت مرجع", 48 "paste-reference": "رونوشت مرجع",
49 "import": "وارد کردن", 49 "import": "وارد کردن",
50 "export": "صدور", 50 "export": "صدور",
51 - "share-via": "{{provider}} اشتراک گذاري از طريق" 51 + "share-via": "{{provider}} اشتراک گذاري از طريق"
52 }, 52 },
53 "aggregation": { 53 "aggregation": {
54 "aggregation": "تجميع", 54 "aggregation": "تجميع",
@@ -336,7 +336,8 @@ @@ -336,7 +336,8 @@
336 "password": "رمز عبور", 336 "password": "رمز عبور",
337 "enter-username": "وارد کردن نام کاربري", 337 "enter-username": "وارد کردن نام کاربري",
338 "enter-password": "وارد کردن رمز عبور", 338 "enter-password": "وارد کردن رمز عبور",
339 - "enter-search": "وارد کردن جستجو" 339 + "enter-search": "وارد کردن جستجو",
  340 + "created-time": "زمان ايجاد"
340 }, 341 },
341 "content-type": { 342 "content-type": {
342 "json": "JSON", 343 "json": "JSON",
@@ -347,7 +347,8 @@ @@ -347,7 +347,8 @@
347 "enter-search": "Entrez la recherche", 347 "enter-search": "Entrez la recherche",
348 "enter-username": "Entrez le nom d'utilisateur", 348 "enter-username": "Entrez le nom d'utilisateur",
349 "password": "Mot de passe", 349 "password": "Mot de passe",
350 - "username": "Nom d'utilisateur" 350 + "username": "Nom d'utilisateur",
  351 + "created-time": "Heure de création"
351 }, 352 },
352 "confirm-on-exit": { 353 "confirm-on-exit": {
353 "html-message": "Vous avez des modifications non enregistrées. <br/> Êtes-vous sûr de vouloir quitter cette page?", 354 "html-message": "Vous avez des modifications non enregistrées. <br/> Êtes-vous sûr de vouloir quitter cette page?",
@@ -361,7 +361,8 @@ @@ -361,7 +361,8 @@
361 "password": "Password", 361 "password": "Password",
362 "enter-username": "Inserisci nome utente", 362 "enter-username": "Inserisci nome utente",
363 "enter-password": "Inserisci password", 363 "enter-password": "Inserisci password",
364 - "enter-search": "Cerca ..." 364 + "enter-search": "Cerca ...",
  365 + "created-time": "Orario di creazione"
365 }, 366 },
366 "content-type": { 367 "content-type": {
367 "json": "Json", 368 "json": "Json",
@@ -326,8 +326,9 @@ @@ -326,8 +326,9 @@
326 "password": "パスワード", 326 "password": "パスワード",
327 "enter-username": "ユーザーネームを入力してください", 327 "enter-username": "ユーザーネームを入力してください",
328 "enter-password": "パスワードを入力する", 328 "enter-password": "パスワードを入力する",
329 - "enter-search": "検索を入力"  
330 - }, 329 + "enter-search": "検索を入力",
  330 + "created-time": "作成時刻"
  331 + },
331 "content-type": { 332 "content-type": {
332 "json": "Json", 333 "json": "Json",
333 "text": "テキスト", 334 "text": "テキスト",
@@ -337,7 +337,8 @@ @@ -337,7 +337,8 @@
337 "password": "Parole", 337 "password": "Parole",
338 "enter-username": "Ievadiet lietotājvārdu", 338 "enter-username": "Ievadiet lietotājvārdu",
339 "enter-password": "Ievadiet paroli", 339 "enter-password": "Ievadiet paroli",
340 - "enter-search": "Ievadiet meklēt" 340 + "enter-search": "Ievadiet meklēt",
  341 + "created-time": "Izveidošanas laiks"
341 }, 342 },
342 "content-type": { 343 "content-type": {
343 "json": "Json", 344 "json": "Json",
@@ -369,7 +369,8 @@ @@ -369,7 +369,8 @@
369 "password": "Parola", 369 "password": "Parola",
370 "enter-username": "Introdu nume utilizator", 370 "enter-username": "Introdu nume utilizator",
371 "enter-password": "Introdu parola", 371 "enter-password": "Introdu parola",
372 - "enter-search": "Definește căutarea" 372 + "enter-search": "Definește căutarea",
  373 + "created-time": "Data Creării"
373 }, 374 },
374 "content-type": { 375 "content-type": {
375 "json": "Json", 376 "json": "Json",
@@ -371,7 +371,8 @@ @@ -371,7 +371,8 @@
371 "password": "Пароль", 371 "password": "Пароль",
372 "enter-username": "Введите имя пользователя", 372 "enter-username": "Введите имя пользователя",
373 "enter-password": "Введите пароль", 373 "enter-password": "Введите пароль",
374 - "enter-search": "Введите условие поиска" 374 + "enter-search": "Введите условие поиска",
  375 + "created-time": "Время создания"
375 }, 376 },
376 "content-type": { 377 "content-type": {
377 "json": "Json", 378 "json": "Json",
@@ -326,7 +326,8 @@ @@ -326,7 +326,8 @@
326 "password": "Parola", 326 "password": "Parola",
327 "enter-username": "Kullanıcı adı gir", 327 "enter-username": "Kullanıcı adı gir",
328 "enter-password": "Parola gir", 328 "enter-password": "Parola gir",
329 - "enter-search": "Arama gir" 329 + "enter-search": "Arama gir",
  330 + "created-time": "Oluşma zamanı"
330 }, 331 },
331 "content-type": { 332 "content-type": {
332 "json": "Json", 333 "json": "Json",
@@ -405,7 +405,8 @@ @@ -405,7 +405,8 @@
405 "password": "Пароль", 405 "password": "Пароль",
406 "enter-username": "Введіть ім'я користувача", 406 "enter-username": "Введіть ім'я користувача",
407 "enter-password": "Введіть пароль", 407 "enter-password": "Введіть пароль",
408 - "enter-search": "Введіть пошук" 408 + "enter-search": "Введіть пошук",
  409 + "created-time": "Час створення"
409 }, 410 },
410 "converter": { 411 "converter": {
411 "converter": "Перетворювач даних", 412 "converter": "Перетворювач даних",
@@ -326,7 +326,8 @@ @@ -326,7 +326,8 @@
326 "password": "密码", 326 "password": "密码",
327 "enter-username": "输入用户名", 327 "enter-username": "输入用户名",
328 "enter-password": "输入密码", 328 "enter-password": "输入密码",
329 - "enter-search": "输入检索条件" 329 + "enter-search": "输入检索条件",
  330 + "created-time": "创建时间"
330 }, 331 },
331 "content-type": { 332 "content-type": {
332 "json": "Json", 333 "json": "Json",
@@ -326,7 +326,8 @@ @@ -326,7 +326,8 @@
326 "password": "密碼", 326 "password": "密碼",
327 "enter-username": "輸入用戶名", 327 "enter-username": "輸入用戶名",
328 "enter-password": "輸入密碼", 328 "enter-password": "輸入密碼",
329 - "enter-search": "輸入檢索條件" 329 + "enter-search": "輸入檢索條件",
  330 + "created-time": "建立時間"
330 }, 331 },
331 "content-type": { 332 "content-type": {
332 "json": "Json", 333 "json": "Json",
@@ -477,7 +477,6 @@ mat-label { @@ -477,7 +477,6 @@ mat-label {
477 477
478 .mat-form-field{ 478 .mat-form-field{
479 .mat-icon { 479 .mat-icon {
480 - vertical-align: bottom;  
481 margin-right: 4px; 480 margin-right: 4px;
482 margin-left: 4px; 481 margin-left: 4px;
483 } 482 }
@@ -486,7 +485,6 @@ mat-label { @@ -486,7 +485,6 @@ mat-label {
486 button.mat-menu-item { 485 button.mat-menu-item {
487 overflow: hidden; 486 overflow: hidden;
488 fill: #737373; 487 fill: #737373;
489 - display: block;  
490 .tb-alt-text { 488 .tb-alt-text {
491 float: right; 489 float: right;
492 } 490 }
@@ -618,7 +616,7 @@ mat-label { @@ -618,7 +616,7 @@ mat-label {
618 display: table-cell; 616 display: table-cell;
619 box-sizing: content-box; 617 box-sizing: content-box;
620 line-break: unset; 618 line-break: unset;
621 - width: 0px; 619 + width: 0;
622 overflow: hidden; 620 overflow: hidden;
623 vertical-align: middle; 621 vertical-align: middle;
624 border-width: 0; 622 border-width: 0;
@@ -626,6 +624,7 @@ mat-label { @@ -626,6 +624,7 @@ mat-label {
626 border-bottom-color: rgba(0, 0, 0, 0.12); 624 border-bottom-color: rgba(0, 0, 0, 0.12);
627 border-style: solid; 625 border-style: solid;
628 text-overflow: ellipsis; 626 text-overflow: ellipsis;
  627 + touch-action: auto !important;
629 &:last-child { 628 &:last-child {
630 padding: 0 12px 0 0; 629 padding: 0 12px 0 0;
631 } 630 }
@@ -645,6 +644,7 @@ mat-label { @@ -645,6 +644,7 @@ mat-label {
645 .mat-header-cell { 644 .mat-header-cell {
646 white-space: nowrap; 645 white-space: nowrap;
647 button.mat-sort-header-button { 646 button.mat-sort-header-button {
  647 + display: block;
648 text-overflow: ellipsis; 648 text-overflow: ellipsis;
649 overflow: hidden; 649 overflow: hidden;
650 white-space: nowrap; 650 white-space: nowrap;
@@ -694,7 +694,7 @@ mat-label { @@ -694,7 +694,7 @@ mat-label {
694 } 694 }
695 695
696 .mat-icon { 696 .mat-icon {
697 - vertical-align: middle; 697 + vertical-align: bottom;
698 box-sizing: content-box; 698 box-sizing: content-box;
699 &.tb-mat-16 { 699 &.tb-mat-16 {
700 @include tb-mat-icon-size(16); 700 @include tb-mat-icon-size(16);