Commit 61a5047e34a43a81322dfd4a9ec777980f544d98

Authored by Igor Kulikov
1 parent 99f15f5f

UI: Performance improvements by using On Push change detection strategy on top level components

... ... @@ -14,13 +14,14 @@
14 14 /// limitations under the License.
15 15 ///
16 16
17   -import { Component, Input, OnInit } from '@angular/core';
  17 +import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
18 18 import { MenuSection } from '@core/services/menu.models';
19 19
20 20 @Component({
21 21 selector: 'tb-menu-link',
22 22 templateUrl: './menu-link.component.html',
23   - styleUrls: ['./menu-link.component.scss']
  23 + styleUrls: ['./menu-link.component.scss'],
  24 + changeDetection: ChangeDetectionStrategy.OnPush
24 25 })
25 26 export class MenuLinkComponent implements OnInit {
26 27
... ...
... ... @@ -14,14 +14,15 @@
14 14 /// limitations under the License.
15 15 ///
16 16
17   -import { Component, Input, OnInit } from '@angular/core';
  17 +import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
18 18 import { MenuSection } from '@core/services/menu.models';
19 19 import { Router } from '@angular/router';
20 20
21 21 @Component({
22 22 selector: 'tb-menu-toggle',
23 23 templateUrl: './menu-toggle.component.html',
24   - styleUrls: ['./menu-toggle.component.scss']
  24 + styleUrls: ['./menu-toggle.component.scss'],
  25 + changeDetection: ChangeDetectionStrategy.OnPush
25 26 })
26 27 export class MenuToggleComponent implements OnInit {
27 28
... ...
... ... @@ -14,14 +14,15 @@
14 14 /// limitations under the License.
15 15 ///
16 16
17   -import { Component, OnInit } from '@angular/core';
  17 +import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
18 18 import { MenuService } from '@core/services/menu.service';
19 19 import { MenuSection } from '@core/services/menu.models';
20 20
21 21 @Component({
22 22 selector: 'tb-side-menu',
23 23 templateUrl: './side-menu.component.html',
24   - styleUrls: ['./side-menu.component.scss']
  24 + styleUrls: ['./side-menu.component.scss'],
  25 + changeDetection: ChangeDetectionStrategy.OnPush
25 26 })
26 27 export class SideMenuComponent implements OnInit {
27 28
... ...
... ... @@ -14,7 +14,7 @@
14 14 /// limitations under the License.
15 15 ///
16 16
17   -import { Component, OnInit } from '@angular/core';
  17 +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';
18 18 import { MenuService } from '@core/services/menu.service';
19 19 import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';
20 20 import { MediaBreakpoints } from '@shared/models/constants';
... ... @@ -25,7 +25,8 @@ import { HomeDashboard } from '@shared/models/dashboard.models';
25 25 @Component({
26 26 selector: 'tb-home-links',
27 27 templateUrl: './home-links.component.html',
28   - styleUrls: ['./home-links.component.scss']
  28 + styleUrls: ['./home-links.component.scss'],
  29 + changeDetection: ChangeDetectionStrategy.OnPush
29 30 })
30 31 export class HomeLinksComponent implements OnInit {
31 32
... ... @@ -37,6 +38,7 @@ export class HomeLinksComponent implements OnInit {
37 38
38 39 constructor(private menuService: MenuService,
39 40 public breakpointObserver: BreakpointObserver,
  41 + private cd: ChangeDetectorRef,
40 42 private route: ActivatedRoute) {
41 43 }
42 44
... ... @@ -57,6 +59,7 @@ export class HomeLinksComponent implements OnInit {
57 59 if (this.breakpointObserver.isMatched(MediaBreakpoints['gt-lg'])) {
58 60 this.cols = 4;
59 61 }
  62 + this.cd.detectChanges();
60 63 }
61 64
62 65 sectionColspan(section: HomeSection): number {
... ...
... ... @@ -14,7 +14,7 @@
14 14 /// limitations under the License.
15 15 ///
16 16
17   -import { Component, Input, OnDestroy, OnInit } from '@angular/core';
  17 +import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit } from '@angular/core';
18 18 import { BehaviorSubject, Subject } from 'rxjs';
19 19 import { BreadCrumb, BreadCrumbConfig } from './breadcrumb';
20 20 import { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';
... ... @@ -25,7 +25,8 @@ import { guid } from '@core/utils';
25 25 @Component({
26 26 selector: 'tb-breadcrumb',
27 27 templateUrl: './breadcrumb.component.html',
28   - styleUrls: ['./breadcrumb.component.scss']
  28 + styleUrls: ['./breadcrumb.component.scss'],
  29 + changeDetection: ChangeDetectionStrategy.OnPush
29 30 })
30 31 export class BreadcrumbComponent implements OnInit, OnDestroy {
31 32
... ...
... ... @@ -14,7 +14,7 @@
14 14 /// limitations under the License.
15 15 ///
16 16
17   -import { Component, Input, OnDestroy, OnInit } from '@angular/core';
  17 +import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit } from '@angular/core';
18 18 import { User } from '@shared/models/user.model';
19 19 import { Authority } from '@shared/models/authority.enum';
20 20 import { select, Store } from '@ngrx/store';
... ... @@ -27,7 +27,8 @@ import { Router } from '@angular/router';
27 27 @Component({
28 28 selector: 'tb-user-menu',
29 29 templateUrl: './user-menu.component.html',
30   - styleUrls: ['./user-menu.component.scss']
  30 + styleUrls: ['./user-menu.component.scss'],
  31 + changeDetection: ChangeDetectionStrategy.OnPush
31 32 })
32 33 export class UserMenuComponent implements OnInit, OnDestroy {
33 34
... ...