]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: Separate file for icons for refering and reusing 27376/head
authorKanika Murarka <kmurarka@redhat.com>
Thu, 4 Apr 2019 11:42:37 +0000 (17:12 +0530)
committerKanika Murarka <kmurarka@redhat.com>
Wed, 26 Jun 2019 08:26:13 +0000 (13:56 +0530)
Fixes: http://tracker.ceph.com/issues/39032
Signed-off-by: Kanika Murarka <kmurarka@redhat.com>
82 files changed:
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-details/iscsi-target-details.component.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-details/iscsi-target-details.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/pool-list/pool-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-configuration-form/rbd-configuration-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-configuration-form/rbd-configuration-form.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-list/rbd-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-list/rbd-trash-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-list/rbd-trash-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/configuration/configuration.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/configuration/configuration.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/logs/logs.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/logs/logs.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/mgr-modules/mgr-module-list/mgr-module-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-list/osd-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/prometheus-list/prometheus-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/prometheus-list/prometheus-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/health/health.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/health/health.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form-client/nfs-form-client.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form-client/nfs-form-client.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-list/nfs-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-list/pool-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-list/rgw-bucket-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-details/rgw-user-details.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-details/rgw-user-details.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-list/rgw-user-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/core/auth/role-list/role-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/core/auth/user-list/user-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/core/forbidden/forbidden.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/forbidden/forbidden.component.ts
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/administration/administration.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/administration/administration.component.ts
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/dashboard-help/dashboard-help.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/dashboard-help/dashboard-help.component.ts
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/identity/identity.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/identity/identity.component.ts
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.ts
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/notifications/notifications.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/notifications/notifications.component.ts
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/task-manager/task-manager.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/task-manager/task-manager.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/components/config-option/config-option.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/config-option/config-option.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/components/error-panel/error-panel.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/error-panel/error-panel.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/components/grafana/grafana.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/grafana/grafana.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/components/helper/helper.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/helper/helper.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/components/info-panel/info-panel.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/info-panel/info-panel.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/components/loading-panel/loading-panel.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/loading-panel/loading-panel.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/components/select-badges/select-badges.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/select-badges/select-badges.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/components/select/select.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/select/select.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/components/submit-button/submit-button.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/submit-button/submit-button.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/components/warning-panel/warning-panel.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/warning-panel/warning-panel.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table-actions/table-actions.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table-actions/table-actions.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/enum/icons.enum.ts [new file with mode: 0644]
src/pybind/mgr/dashboard/frontend/src/app/shared/models/cd-notification.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/models/cd-notification.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/services/prometheus-alert-formatter.ts
src/pybind/mgr/dashboard/frontend/src/testing/unit-test-helper.ts

index 339a3c94e3302029a4e111b7b933f3c53086133b..bc7a106e71263eaa674b7e14a6c355678249e66a 100644 (file)
@@ -7,6 +7,9 @@ import { CdTableSelection } from '../../../shared/models/cd-table-selection';
 import { SharedModule } from '../../../shared/shared.module';
 import { IscsiTargetDetailsComponent } from './iscsi-target-details.component';
 
+import * as _ from 'lodash';
+import { Icons } from '../../../shared/enum/icons.enum';
+
 describe('IscsiTargetDetailsComponent', () => {
   let component: IscsiTargetDetailsComponent;
   let fixture: ComponentFixture<IscsiTargetDetailsComponent>;
@@ -97,7 +100,10 @@ describe('IscsiTargetDetailsComponent', () => {
         {
           children: [{ id: 'disk_rbd_disk_1', value: 'rbd/disk_1' }],
           settings: {
-            cssClasses: { expanded: 'fa fa-fw fa-hdd-o fa-lg', leaf: 'fa fa-fw fa-hdd-o' },
+            cssClasses: {
+              expanded: _.join([Icons.width, Icons.large, Icons.disk], ' '),
+              leaf: _.join([Icons.width, Icons.disk], ' ')
+            },
             selectionAllowed: false
           },
           value: 'Disks'
@@ -105,7 +111,10 @@ describe('IscsiTargetDetailsComponent', () => {
         {
           children: [{ value: 'node1:192.168.100.201' }],
           settings: {
-            cssClasses: { expanded: 'fa fa-fw fa-server fa-lg', leaf: 'fa fa-fw fa-server fa-lg' },
+            cssClasses: {
+              expanded: _.join([Icons.width, Icons.large, Icons.server], ' '),
+              leaf: _.join([Icons.width, Icons.large, Icons.server], ' ')
+            },
             selectionAllowed: false
           },
           value: 'Portals'
@@ -117,7 +126,10 @@ describe('IscsiTargetDetailsComponent', () => {
                 {
                   id: 'disk_rbd_disk_1',
                   settings: {
-                    cssClasses: { expanded: 'fa fa-fw fa-hdd-o fa-lg', leaf: 'fa fa-fw fa-hdd-o' }
+                    cssClasses: {
+                      expanded: _.join([Icons.width, Icons.large, Icons.disk], ' '),
+                      leaf: _.join([Icons.width, Icons.disk], ' ')
+                    }
                   },
                   value: 'rbd/disk_1'
                 }
@@ -127,7 +139,10 @@ describe('IscsiTargetDetailsComponent', () => {
             }
           ],
           settings: {
-            cssClasses: { expanded: 'fa fa-fw fa-user fa-lg', leaf: 'fa fa-fw fa-user' },
+            cssClasses: {
+              expanded: _.join([Icons.width, Icons.large, Icons.user], ' '),
+              leaf: _.join([Icons.width, Icons.user], ' ')
+            },
             selectionAllowed: false
           },
           value: 'Initiators'
@@ -135,14 +150,20 @@ describe('IscsiTargetDetailsComponent', () => {
         {
           children: [],
           settings: {
-            cssClasses: { expanded: 'fa fa-fw fa-users fa-lg', leaf: 'fa fa-fw fa-users' },
+            cssClasses: {
+              expanded: _.join([Icons.width, Icons.large, Icons.user], ' '),
+              leaf: _.join([Icons.width, Icons.user], ' ')
+            },
             selectionAllowed: false
           },
           value: 'Groups'
         }
       ],
       id: 'root',
-      settings: { cssClasses: { expanded: 'fa fa-fw fa-bullseye fa-lg' }, static: true },
+      settings: {
+        cssClasses: { expanded: _.join([Icons.width, Icons.large, Icons.bullseye], ' ') },
+        static: true
+      },
       value: 'iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw'
     });
   });
index 588c24b5c248f4e97f67256186251561bf448ec5..03a172f0f5fa3fd48a7fd232b6ae46987f031a5f 100644 (file)
@@ -5,6 +5,7 @@ import * as _ from 'lodash';
 import { NodeEvent, TreeModel } from 'ng2-tree';
 
 import { TableComponent } from '../../../shared/datatable/table/table.component';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
 import { CdTableSelection } from '../../../shared/models/cd-table-selection';
 import { IscsiBackstorePipe } from '../../../shared/pipes/iscsi-backstore.pipe';
@@ -75,26 +76,25 @@ export class IscsiTargetDetailsComponent implements OnChanges, OnInit {
 
   private generateTree() {
     this.metadata = { root: this.selectedItem.target_controls };
-
     const cssClasses = {
       target: {
-        expanded: 'fa fa-fw fa-bullseye fa-lg'
+        expanded: _.join([Icons.width, Icons.large, Icons.bullseye], ' ')
       },
       initiators: {
-        expanded: 'fa fa-fw fa-user fa-lg',
-        leaf: 'fa fa-fw fa-user'
+        expanded: _.join([Icons.width, Icons.large, Icons.user], ' '),
+        leaf: _.join([Icons.width, Icons.user], ' ')
       },
       groups: {
-        expanded: 'fa fa-fw fa-users fa-lg',
-        leaf: 'fa fa-fw fa-users'
+        expanded: _.join([Icons.width, Icons.large, Icons.user], ' '),
+        leaf: _.join([Icons.width, Icons.user], ' ')
       },
       disks: {
-        expanded: 'fa fa-fw fa-hdd-o fa-lg',
-        leaf: 'fa fa-fw fa-hdd-o'
+        expanded: _.join([Icons.width, Icons.large, Icons.disk], ' '),
+        leaf: _.join([Icons.width, Icons.disk], ' ')
       },
       portals: {
-        expanded: 'fa fa-fw fa-server fa-lg',
-        leaf: 'fa fa-fw fa-server fa-lg'
+        expanded: _.join([Icons.width, Icons.large, Icons.server], ' '),
+        leaf: _.join([Icons.width, Icons.large, Icons.server], ' ')
       }
     };
 
index 5a7031dd4c0de6e4feb2246d0fe61638e8734a74..e3d56d301a60c65555454af1814c6b8d544c6882 100644 (file)
@@ -32,7 +32,7 @@
                         id="ecp-info-button"
                         type="button"
                         (click)="targetSettingsModal()">
-                  <i class="fa fa-cogs fa-fw"
+                  <i [ngClass]="[icons.deepCheck, icons.width]"
                      aria-hidden="true"></i>
                 </button>
               </span>
@@ -84,7 +84,7 @@
                   <button class="btn btn-default"
                           type="button"
                           (click)="removePortal(i, portal)">
-                    <i class="fa fa-remove fa-fw"
+                    <i [ngClass]="[icons.destroy, icons.width]"
                        aria-hidden="true"></i>
                   </button>
                 </span>
                            [messages]="messages.portals"
                            (selection)="onPortalSelection($event)"
                            elemClass="btn btn-default pull-right">
-                  <i class="fa fa-fw fa-plus"></i>
+                  <i [ngClass]="[icons.add, icons.width]"></i>
                   <ng-container i18n>Add portal</ng-container>
                 </cd-select>
               </div>
                   <button class="btn btn-default"
                           type="button"
                           (click)="imageSettingsModal(image)">
-                    <i class="fa fa-cogs fa-fw"
+                    <i [ngClass]="[icons.deepCheck, icons.width]"
                        aria-hidden="true"></i>
                   </button>
                   <button class="btn btn-default"
                           type="button"
                           (click)="removeImage(i, image)">
-                    <i class="fa fa-remove fa-fw"
+                    <i [ngClass]="[icons.destroy, icons.width]"
                        aria-hidden="true"></i>
                   </button>
                 </span>
                            [messages]="messages.images"
                            (selection)="onImageSelection($event)"
                            elemClass="btn btn-default pull-right">
-                  <i class="fa fa-fw fa-plus"></i>
+                  <i [ngClass]="[icons.add, icons.width]"></i>
                   <ng-container i18n>Add image</ng-container>
                 </cd-select>
               </div>
                 <button type="button"
                         class="close"
                         (click)="removeInitiator(ii)">
-                  <i class="fa fa-remove fa-fw"></i>
+                  <i [ngClass]="[icons.deepCheck, icons.width]"></i>
                 </button>
               </div>
               <div class="panel-body">
                           <button class="btn btn-default"
                                   type="button"
                                   (click)="removeInitiatorImage(initiator, li, ii, image)">
-                            <i class="fa fa-remove fa-fw"
+                            <i [ngClass]="[icons.destroy, icons.width]"
                                aria-hidden="true"></i>
                           </button>
                         </span>
                                    [options]="imagesInitiatorSelections[ii]"
                                    [messages]="messages.initiatorImage"
                                    elemClass="btn btn-default pull-right">
-                          <i class="fa fa-fw fa-plus"></i>
+                          <i [ngClass]="[icons.add, icons.width]"></i>
                           <ng-container i18n>Add image</ng-container>
                         </cd-select>
                       </div>
 
                 <button (click)="addInitiator(); false"
                         class="btn btn-default pull-right">
-                  <i class="fa fa-fw fa-plus"></i>
+                  <i [ngClass]="[icons.add, icons.width]"></i>
                   <ng-container i18n>Add initiator</ng-container>
                 </button>
               </div>
                 <button type="button"
                         class="close"
                         (click)="groups.removeAt(gi)">
-                  <i class="fa fa-remove fa-fw"></i>
+                  <i [ngClass]="[icons.destroy, icons.width]"></i>
                 </button>
               </div>
               <div class="panel-body">
                           <button class="btn btn-default"
                                   type="button"
                                   (click)="removeGroupInitiator(group, i, gi)">
-                            <i class="fa fa-remove fa-fw"
+                            <i [ngClass]="[icons.destroy, icons.width]"
                                aria-hidden="true"></i>
                           </button>
                         </span>
                                    [messages]="messages.groupInitiator"
                                    (selection)="onGroupMemberSelection($event)"
                                    elemClass="btn btn-default pull-right">
-                          <i class="fa fa-fw fa-plus"></i>
+                          <i [ngClass]="[icons.add, icons.width]"></i>
                           <ng-container i18n>Add initiator</ng-container>
                         </cd-select>
                       </div>
                           <button class="btn btn-default"
                                   type="button"
                                   (click)="removeGroupDisk(group, i, gi)">
-                            <i class="fa fa-remove fa-fw"
+                            <i [ngClass]="[icons.destroy, icons.width]"
                                aria-hidden="true"></i>
                           </button>
                         </span>
                                    [options]="groupDiskSelections[gi]"
                                    [messages]="messages.initiatorImage"
                                    elemClass="btn btn-default pull-right">
-                          <i class="fa fa-fw fa-plus"></i>
+                          <i [ngClass]="[icons.add, icons.width]"></i>
                           <ng-container i18n>Add image</ng-container>
                         </cd-select>
                       </div>
 
                 <button (click)="addGroup(); false"
                         class="btn btn-default pull-right">
-                  <i class="fa fa-fw fa-plus"></i>
+                  <i [ngClass]="[icons.add, icons.width]"></i>
                   <ng-container i18n>Add group</ng-container>
                 </button>
               </div>
index 0703e2e7bc4e1e5842a398fe985014d9bff6ff46..1092c7c49d52b16293d7575f40e9c94cd9439f02 100644 (file)
@@ -12,6 +12,7 @@ import { RbdService } from '../../../shared/api/rbd.service';
 import { SelectMessages } from '../../../shared/components/select/select-messages.model';
 import { SelectOption } from '../../../shared/components/select/select-option.model';
 import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdFormGroup } from '../../../shared/forms/cd-form-group';
 import { CdValidators } from '../../../shared/forms/cd-validators';
 import { FinishedTask } from '../../../shared/models/finished-task';
@@ -35,6 +36,8 @@ export class IscsiTargetFormComponent implements OnInit {
   unsupported_rbd_features: any;
   required_rbd_features: any;
 
+  icons = Icons;
+
   isEdit = false;
   target_iqn: string;
 
index 084182df963ca801867a54502b0e0ca6a772ade3..a99424c6408a74c24df59006732772a0df04ea8f 100644 (file)
@@ -33,7 +33,7 @@
     <button class="btn btn-sm btn-default btn-label"
             type="button"
             (click)="configureDiscoveryAuth()">
-      <i class="fa fa-fw fa-key-modern"
+      <i [ngClass]="[icons.key, icons.width]"
          aria-hidden="true">
       </i>
       <ng-container i18n>Discovery authentication</ng-container>
index 42a2a80b7751e8573c43dbaa0a9f02e17f3f8d56..20cbfc5b9cb7c9fa54e479a2c5711f57c250d8eb 100644 (file)
@@ -9,6 +9,7 @@ import { CriticalConfirmationModalComponent } from '../../../shared/components/c
 import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { TableComponent } from '../../../shared/datatable/table/table.component';
 import { CellTemplate } from '../../../shared/enum/cell-template.enum';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
 import { CdTableSelection } from '../../../shared/models/cd-table-selection';
@@ -42,6 +43,7 @@ export class IscsiTargetListComponent implements OnInit, OnDestroy {
   summaryDataSubscription: Subscription;
   tableActions: CdTableAction[];
   targets = [];
+  icons = Icons;
 
   builders = {
     'iscsi/target/create': (metadata) => {
@@ -67,19 +69,19 @@ export class IscsiTargetListComponent implements OnInit, OnDestroy {
     this.tableActions = [
       {
         permission: 'create',
-        icon: 'fa-plus',
+        icon: Icons.add,
         routerLink: () => '/block/iscsi/targets/create',
         name: this.actionLabels.CREATE
       },
       {
         permission: 'update',
-        icon: 'fa-pencil',
+        icon: Icons.edit,
         routerLink: () => `/block/iscsi/targets/edit/${this.selection.first().target_iqn}`,
         name: this.actionLabels.EDIT
       },
       {
         permission: 'delete',
-        icon: 'fa-times',
+        icon: Icons.destroy,
         click: () => this.deleteIscsiTargetModal(),
         name: this.actionLabels.DELETE
       }
index b4666d71ed6a9165bd2f3ad1dc749807bc6072db..92b9cda7ced6d5d3c28d0dfcfe3f80e6c3481382 100644 (file)
@@ -6,6 +6,7 @@ import { Observable, Subscriber, Subscription } from 'rxjs';
 
 import { RbdMirroringService } from '../../../../shared/api/rbd-mirroring.service';
 import { CriticalConfirmationModalComponent } from '../../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
+import { Icons } from '../../../../shared/enum/icons.enum';
 import { CdTableAction } from '../../../../shared/models/cd-table-action';
 import { CdTableSelection } from '../../../../shared/models/cd-table-selection';
 import { FinishedTask } from '../../../../shared/models/finished-task';
@@ -47,14 +48,14 @@ export class PoolListComponent implements OnInit, OnDestroy {
 
     const editModeAction: CdTableAction = {
       permission: 'update',
-      icon: 'fa-edit',
+      icon: Icons.edit,
       click: () => this.editModeModal(),
       name: this.i18n('Edit Mode'),
       canBePrimary: () => true
     };
     const addPeerAction: CdTableAction = {
       permission: 'create',
-      icon: 'fa-plus',
+      icon: Icons.add,
       name: this.i18n('Add Peer'),
       click: () => this.editPeersModal('add'),
       disable: () => !this.selection.first() || this.selection.first().mirror_mode === 'disabled',
@@ -63,14 +64,14 @@ export class PoolListComponent implements OnInit, OnDestroy {
     };
     const editPeerAction: CdTableAction = {
       permission: 'update',
-      icon: 'fa-exchange',
+      icon: Icons.exchange,
       name: this.i18n('Edit Peer'),
       click: () => this.editPeersModal('edit'),
       visible: () => !!this.getPeerUUID()
     };
     const deletePeerAction: CdTableAction = {
       permission: 'delete',
-      icon: 'fa-times',
+      icon: Icons.destroy,
       name: this.i18n('Delete Peer'),
       click: () => this.deletePeersModal(),
       visible: () => !!this.getPeerUUID()
index 7a1a59b161931fa2e2eeebd61270c37ae5a6fa74..a384af938541bab9d1f208405978ceb793282ab0 100644 (file)
@@ -5,7 +5,7 @@
     <h3 class="page-header">
       <span
         (click)="toggleSectionVisibility(section.class)"
-        class="collapsible">{{ section.heading }} <i [ngClass]="{'fa-plus-circle': !sectionVisibility[section.class], 'fa-minus-circle': sectionVisibility[section.class]}" class="fa" aria-hidden="true"></i></span>
+        class="collapsible">{{ section.heading }} <i [ngClass]="!sectionVisibility[section.class] ? icons.addCircle : icons.minusCircle" aria-hidden="true"></i></span>
     </h3>
     <div class="{{ section.class }}" [hidden]="!sectionVisibility[section.class]">
       <div
@@ -60,7 +60,7 @@
                 title="Remove the local configuration value. The parent configuration value will be inherited and used instead."
                 i18n-title
                 (click)="reset(option.name)">
-                <i class="fa fa-eraser"
+                <i [ngClass]="[icons.erase]"
                    aria-hidden="true"></i>
               </button>
             </span>
index 072ab6fea35e2c222889379e2a56c62fea369c43..c92f2453f92fe40e3ae13b540223c45ee4a720af 100644 (file)
@@ -1,6 +1,7 @@
 import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
 import { FormControl, Validators } from '@angular/forms';
 
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdFormGroup } from '../../../shared/forms/cd-form-group';
 import {
   RbdConfigurationEntry,
@@ -25,6 +26,9 @@ export class RbdConfigurationFormComponent implements OnInit {
   }>;
   @Output()
   changes = new EventEmitter<any>();
+
+  icons = Icons;
+
   ngDataReady = new EventEmitter<any>();
   initialData: RbdConfigurationEntry[];
   configurationType = RbdConfigurationType;
index de6eca2aa81e566de893de69bb0be6565312ec5e..0db9cd86b158646b96071d8adb900ded8985da89 100644 (file)
@@ -10,6 +10,7 @@ import { CriticalConfirmationModalComponent } from '../../../shared/components/c
 import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { TableComponent } from '../../../shared/datatable/table/table.component';
 import { CellTemplate } from '../../../shared/enum/cell-template.enum';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { ViewCacheStatus } from '../../../shared/enum/view-cache-status.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
@@ -96,20 +97,20 @@ export class RbdListComponent implements OnInit {
       )}`;
     const addAction: CdTableAction = {
       permission: 'create',
-      icon: 'fa-plus',
+      icon: Icons.add,
       routerLink: () => this.urlBuilder.getCreate(),
       canBePrimary: (selection: CdTableSelection) => !selection.hasSingleSelection,
       name: this.actionLabels.CREATE
     };
     const editAction: CdTableAction = {
       permission: 'update',
-      icon: 'fa-pencil',
+      icon: Icons.edit,
       routerLink: () => this.urlBuilder.getEdit(getImageUri()),
       name: this.actionLabels.EDIT
     };
     const deleteAction: CdTableAction = {
       permission: 'delete',
-      icon: 'fa-times',
+      icon: Icons.destroy,
       click: () => this.deleteRbdModal(),
       name: this.actionLabels.DELETE
     };
@@ -118,7 +119,7 @@ export class RbdListComponent implements OnInit {
       canBePrimary: (selection: CdTableSelection) => selection.hasSingleSelection,
       disable: (selection: CdTableSelection) =>
         !selection.hasSingleSelection || selection.first().cdExecuting,
-      icon: 'fa-copy',
+      icon: Icons.copy,
       routerLink: () => `/block/rbd/copy/${getImageUri()}`,
       name: this.actionLabels.COPY
     };
@@ -126,13 +127,13 @@ export class RbdListComponent implements OnInit {
       permission: 'update',
       disable: (selection: CdTableSelection) =>
         !selection.hasSingleSelection || selection.first().cdExecuting || !selection.first().parent,
-      icon: 'fa-chain-broken',
+      icon: Icons.flatten,
       click: () => this.flattenRbdModal(),
       name: this.actionLabels.FLATTEN
     };
     const moveAction: CdTableAction = {
       permission: 'delete',
-      icon: 'fa-trash-o',
+      icon: Icons.trash,
       click: () => this.trashRbdModal(),
       name: this.actionLabels.TRASH
     };
index b3e3a186a3a7c00b53f0d4757f5b36c755207de9..2b7fed607e6e805fcd59c606b8b5c092ed102298 100644 (file)
@@ -1,6 +1,7 @@
 import { I18n } from '@ngx-translate/i18n-polyfill';
 
 import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableSelection } from '../../../shared/models/cd-table-selection';
 
@@ -22,24 +23,24 @@ export class RbdSnapshotActionsModel {
 
     this.create = {
       permission: 'create',
-      icon: 'fa-plus',
+      icon: Icons.add,
       name: actionLabels.CREATE
     };
     this.rename = {
       permission: 'update',
-      icon: 'fa-pencil',
+      icon: Icons.edit,
       name: actionLabels.RENAME
     };
     this.protect = {
       permission: 'update',
-      icon: 'fa-lock',
+      icon: Icons.lock,
       visible: (selection: CdTableSelection) =>
         selection.hasSingleSelection && !selection.first().is_protected,
       name: actionLabels.PROTECT
     };
     this.unprotect = {
       permission: 'update',
-      icon: 'fa-unlock',
+      icon: Icons.unlock,
       visible: (selection: CdTableSelection) =>
         selection.hasSingleSelection && selection.first().is_protected,
       name: actionLabels.UNPROTECT
@@ -49,7 +50,7 @@ export class RbdSnapshotActionsModel {
       canBePrimary: (selection: CdTableSelection) => selection.hasSingleSelection,
       disable: (selection: CdTableSelection) =>
         !selection.hasSingleSelection || selection.first().cdExecuting,
-      icon: 'fa-clone',
+      icon: Icons.clone,
       name: actionLabels.CLONE
     };
     this.copy = {
@@ -57,17 +58,17 @@ export class RbdSnapshotActionsModel {
       canBePrimary: (selection: CdTableSelection) => selection.hasSingleSelection,
       disable: (selection: CdTableSelection) =>
         !selection.hasSingleSelection || selection.first().cdExecuting,
-      icon: 'fa-copy',
+      icon: Icons.copy,
       name: actionLabels.COPY
     };
     this.rollback = {
       permission: 'update',
-      icon: 'fa-undo',
+      icon: Icons.undo,
       name: actionLabels.ROLLBACK
     };
     this.deleteSnap = {
       permission: 'delete',
-      icon: 'fa-times',
+      icon: Icons.destroy,
       disable: (selection: CdTableSelection) => {
         const first = selection.first();
         return !selection.hasSingleSelection || first.cdExecuting || first.is_protected;
index dd72e6623d24e3643a197033101026a3026ff99e..438d5d1aac118c2237ff54dca532e03d23b4c7ee 100644 (file)
@@ -20,7 +20,7 @@
             type="button"
             (click)="purgeModal()"
             *ngIf="permission.delete">
-      <i class="fa fa-fw fa-times"
+      <i [ngClass]="[icons.destroy, icons.width]"
          aria-hidden="true"></i>
       <ng-container i18n>Purge Trash</ng-container>
     </button>
index f5770ebdddf592a3c22e665cba80ed7ab4ea6a5c..e5d6b433b962e192103bf8f8327f76c24c840ecd 100644 (file)
@@ -10,6 +10,7 @@ import { CriticalConfirmationModalComponent } from '../../../shared/components/c
 import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { TableComponent } from '../../../shared/datatable/table/table.component';
 import { CellTemplate } from '../../../shared/enum/cell-template.enum';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { ViewCacheStatus } from '../../../shared/enum/view-cache-status.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
@@ -38,6 +39,8 @@ export class RbdTrashListComponent implements OnInit {
   @ViewChild('deleteTpl')
   deleteTpl: TemplateRef<any>;
 
+  icons = Icons;
+
   columns: CdTableColumn[];
   executingTasks: ExecutingTask[] = [];
   images: any;
@@ -59,16 +62,15 @@ export class RbdTrashListComponent implements OnInit {
     public actionLabels: ActionLabelsI18n
   ) {
     this.permission = this.authStorageService.getPermissions().rbdImage;
-
     const restoreAction: CdTableAction = {
       permission: 'update',
-      icon: 'fa-undo',
+      icon: Icons.undo,
       click: () => this.restoreModal(),
       name: this.actionLabels.RESTORE
     };
     const deleteAction: CdTableAction = {
       permission: 'delete',
-      icon: 'fa-times',
+      icon: Icons.destroy,
       click: () => this.deleteModal(),
       name: this.actionLabels.DELETE
     };
index 36d280aebb0ec7a2953481ee907a4615024741c0..6c0f7d5a7f2d7f428d98723bb6e592110697bfbe 100644 (file)
         <option *ngFor="let opt of filter.options">{{ opt }}</option>
       </select>
     </div>
-    <a class="fa-stack" 
-       title="Reset filters" 
+    <a [ngClass]="[icons.stack]"
+       title="Reset filters"
        (click)="resetFilter()">
-      <i class="fa fa-filter fa-stack-2x"></i>
-      <i class="fa fa-times fa-stack-1x" style="margin-left: 8px; margin-top: 5px;"></i>
+      <i [ngClass]="[icons.filter, icons.stack2x]"></i>
+      <i [ngClass]="[icons.destroy, icons.stack1x]" style="margin-left: 8px; margin-top: 5px;"></i>
     </a>
   </div>
   <cd-configuration-details cdTableDetail
index 82ea4b444e68d5380014e67804b624ed0d4963ca..dd671370b8fa75303c1866ad39b558761ccc7948 100644 (file)
@@ -5,6 +5,7 @@ import { I18n } from '@ngx-translate/i18n-polyfill';
 import { ConfigurationService } from '../../../shared/api/configuration.service';
 import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { CellTemplate } from '../../../shared/enum/cell-template.enum';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
 import { CdTableFetchDataContext } from '../../../shared/models/cd-table-fetch-data-context';
@@ -21,6 +22,7 @@ export class ConfigurationComponent implements OnInit {
   permission: Permission;
   tableActions: CdTableAction[];
   data = [];
+  icons = Icons;
   columns: CdTableColumn[];
   selection = new CdTableSelection();
   filters = [
@@ -92,7 +94,7 @@ export class ConfigurationComponent implements OnInit {
       this.selection.first() && `${encodeURIComponent(this.selection.first().name)}`;
     const editAction: CdTableAction = {
       permission: 'update',
-      icon: 'fa-pencil',
+      icon: Icons.edit,
       routerLink: () => `/configuration/edit/${getConfigOptUri()}`,
       name: this.actionLabels.EDIT,
       disable: () => !this.isEditable(this.selection)
index c455894c1eb103b369ecf5a11332be6cb1245690..1a12843a9dac5bd1b6d83bcc50ca52f68664a736 100644 (file)
@@ -51,7 +51,7 @@
       <label i18n>Keyword:</label>
       <div class="input-group">
         <span class="input-group-addon">
-          <i class="glyphicon glyphicon-search"></i>
+          <i [ngClass]="[icons.search]"></i>
         </span>
         <input class="form-control"
                type="text"
@@ -61,7 +61,7 @@
           <button type="button"
                   class="btn btn-default clear-input tc_clearInputBtn"
                   (click)="clearSearchKey()">
-            <i class="icon-prepend fa fa-remove"></i>
+            <i class="icon-prepend {{ icons.destroy }}"></i>
           </button>
         </span>
       </div>
@@ -81,7 +81,7 @@
           <button type="button"
                   class="btn btn-default clear-input tc_clearInputBtn"
                   (click)="clearDate()">
-            <i class="icon-prepend fa fa-remove"></i>
+            <i class="icon-prepend {{ icons.destroy }}"></i>
           </button>
         </span>
       </div>
index 1ffc1610c7d611ec30129c74256a86d54ab1c2be..ddb8a73a7f77a53caddb2f241ce6e656ae414e11 100644 (file)
@@ -2,6 +2,7 @@ import { DatePipe } from '@angular/common';
 import { Component, OnDestroy, OnInit } from '@angular/core';
 
 import { LogsService } from '../../../shared/api/logs.service';
+import { Icons } from '../../../shared/enum/icons.enum';
 
 @Component({
   selector: 'cd-logs',
@@ -12,6 +13,7 @@ export class LogsComponent implements OnInit, OnDestroy {
   contentData: any;
   clog: Array<any>;
   audit_log: Array<any>;
+  icons = Icons;
 
   interval: number;
   bsConfig = {
index 50a13fd39ff27fa39aa22378e26c39b3cdf2815c..e218ef81e78f0d4785ccbced2127dd59e3b556c8 100644 (file)
@@ -7,6 +7,7 @@ import { timer as observableTimer } from 'rxjs';
 import { MgrModuleService } from '../../../../shared/api/mgr-module.service';
 import { TableComponent } from '../../../../shared/datatable/table/table.component';
 import { CellTemplate } from '../../../../shared/enum/cell-template.enum';
+import { Icons } from '../../../../shared/enum/icons.enum';
 import { CdTableAction } from '../../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../../shared/models/cd-table-column';
 import { CdTableFetchDataContext } from '../../../../shared/models/cd-table-fetch-data-context';
@@ -67,21 +68,21 @@ export class MgrModuleListComponent {
           return Object.values(this.selection.first().options).length === 0;
         },
         routerLink: () => `/mgr-modules/edit/${getModuleUri()}`,
-        icon: 'fa-pencil'
+        icon: Icons.edit
       },
       {
         name: this.i18n('Enable'),
         permission: 'update',
         click: () => this.updateModuleState(),
         disable: () => this.isTableActionDisabled('enabled'),
-        icon: 'fa-play'
+        icon: Icons.start
       },
       {
         name: this.i18n('Disable'),
         permission: 'update',
         click: () => this.updateModuleState(),
         disable: () => this.isTableActionDisabled('disabled'),
-        icon: 'fa-stop'
+        icon: Icons.stop
       }
     ];
   }
index d4d5f2945a1d6795b33949b237d0dfe569748b6e..cf2d25d54e9ce3b6011685fd87eb067cd3ddeb3d 100644 (file)
@@ -10,6 +10,7 @@ import { CriticalConfirmationModalComponent } from '../../../../shared/component
 import { ActionLabelsI18n } from '../../../../shared/constants/app.constants';
 import { TableComponent } from '../../../../shared/datatable/table/table.component';
 import { CellTemplate } from '../../../../shared/enum/cell-template.enum';
+import { Icons } from '../../../../shared/enum/icons.enum';
 import { CdTableAction } from '../../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../../shared/models/cd-table-column';
 import { CdTableSelection } from '../../../../shared/models/cd-table-selection';
@@ -48,6 +49,7 @@ export class OsdListComponent implements OnInit {
   bsModalRef: BsModalRef;
   columns: CdTableColumn[];
   clusterWideActions: CdTableAction[];
+  icons = Icons;
 
   osds = [];
   selection = new CdTableSelection();
@@ -69,14 +71,14 @@ export class OsdListComponent implements OnInit {
       {
         name: this.actionLabels.SCRUB,
         permission: 'update',
-        icon: 'fa-stethoscope',
+        icon: Icons.analyse,
         click: () => this.scrubAction(false),
         disable: () => !this.hasOsdSelected
       },
       {
         name: this.actionLabels.DEEP_SCRUB,
         permission: 'update',
-        icon: 'fa-cog',
+        icon: Icons.deepCheck,
         click: () => this.scrubAction(true),
         disable: () => !this.hasOsdSelected
       },
@@ -85,28 +87,28 @@ export class OsdListComponent implements OnInit {
         permission: 'update',
         click: () => this.reweight(),
         disable: () => !this.hasOsdSelected,
-        icon: 'fa-balance-scale'
+        icon: Icons.reweight
       },
       {
         name: this.actionLabels.MARK_OUT,
         permission: 'update',
         click: () => this.showConfirmationModal(this.i18n('out'), this.osdService.markOut),
         disable: () => this.isNotSelectedOrInState('out'),
-        icon: 'fa-arrow-left'
+        icon: Icons.left
       },
       {
         name: this.actionLabels.MARK_IN,
         permission: 'update',
         click: () => this.showConfirmationModal(this.i18n('in'), this.osdService.markIn),
         disable: () => this.isNotSelectedOrInState('in'),
-        icon: 'fa-arrow-right'
+        icon: Icons.right
       },
       {
         name: this.actionLabels.MARK_DOWN,
         permission: 'update',
         click: () => this.showConfirmationModal(this.i18n('down'), this.osdService.markDown),
         disable: () => this.isNotSelectedOrInState('down'),
-        icon: 'fa-arrow-down'
+        icon: Icons.down
       },
       {
         name: this.actionLabels.MARK_LOST,
@@ -119,7 +121,7 @@ export class OsdListComponent implements OnInit {
             this.osdService.markLost
           ),
         disable: () => this.isNotSelectedOrInState('up'),
-        icon: 'fa-unlink'
+        icon: Icons.flatten
       },
       {
         name: this.actionLabels.PURGE,
@@ -132,7 +134,7 @@ export class OsdListComponent implements OnInit {
             this.osdService.purge
           ),
         disable: () => this.isNotSelectedOrInState('up'),
-        icon: 'fa-eraser'
+        icon: Icons.erase
       },
       {
         name: this.actionLabels.DESTROY,
@@ -145,7 +147,7 @@ export class OsdListComponent implements OnInit {
             this.osdService.destroy
           ),
         disable: () => this.isNotSelectedOrInState('up'),
-        icon: 'fa-remove'
+        icon: Icons.destroy
       }
     ];
   }
@@ -154,21 +156,21 @@ export class OsdListComponent implements OnInit {
     this.clusterWideActions = [
       {
         name: this.i18n('Flags'),
-        icon: 'fa-flag',
+        icon: Icons.flag,
         click: () => this.configureFlagsAction(),
         permission: 'read',
         visible: () => this.permissions.osd.read
       },
       {
         name: this.i18n('Recovery Priority'),
-        icon: 'fa-cog',
+        icon: Icons.deepCheck,
         click: () => this.configureQosParamsAction(),
         permission: 'read',
         visible: () => this.permissions.configOpt.read
       },
       {
         name: this.i18n('PG scrub'),
-        icon: 'fa-stethoscope',
+        icon: Icons.analyse,
         click: () => this.configurePgScrubAction(),
         permission: 'read',
         visible: () => this.permissions.configOpt.read
index 50ac7bda711c9bd82bd6abf6031cc52a2135c910..94c5930ce901831b94a1813665c56e3a351e23a0 100644 (file)
@@ -22,6 +22,5 @@
 <ng-template #externalLinkTpl
              let-row="row"
              let-value="value">
-  <a [href]="value" target="_blank"><i class="fa fa-line-chart"></i> Source</a>
+  <a [href]="value" target="_blank"><i [ngClass]="[icons.lineChart]"></i> Source</a>
 </ng-template>
-
index 722046e001cfd9f1290d6e84095acc725d9ff414..a2138d8beabb7e2e962f7e4529963a7fad27dcf2 100644 (file)
@@ -1,6 +1,7 @@
 import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
 import { I18n } from '@ngx-translate/i18n-polyfill';
 import { CellTemplate } from '../../../../shared/enum/cell-template.enum';
+import { Icons } from '../../../../shared/enum/icons.enum';
 import { CdTableColumn } from '../../../../shared/models/cd-table-column';
 import { CdTableSelection } from '../../../../shared/models/cd-table-selection';
 import { CdDatePipe } from '../../../../shared/pipes/cd-date.pipe';
@@ -16,6 +17,7 @@ export class PrometheusListComponent implements OnInit {
   externalLinkTpl: TemplateRef<any>;
   columns: CdTableColumn[];
   selection = new CdTableSelection();
+  icons = Icons;
   customCss = {
     'label label-danger': 'active',
     'label label-warning': 'unprocessed',
index a2f7244b619c6dc178fbd943cb7acc7e3c73af79..53d48f888f3e3297b275f03fb981dce77368cc2b 100644 (file)
   <ng-template #logsLink>
     <ng-container *ngIf="permissions.log.read">
       <p class="logs-link"
-         i18n><i class="fa fa-info-circle"></i> See <a routerLink="/logs">Logs</a> for more details.</p>
+         i18n><i [ngClass]="[icons.infoCircle]"></i> See <a routerLink="/logs">Logs</a> for more details.</p>
     </ng-container>
   </ng-template>
 </div>
index 6cca3b5cac495862d4e0960c1deca8eda5e91fd8..2aa7886d6e045ef729630c0c93eafee5ee883a35 100644 (file)
@@ -5,6 +5,7 @@ import * as _ from 'lodash';
 import { Subscription } from 'rxjs/Subscription';
 
 import { HealthService } from '../../../shared/api/health.service';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { Permissions } from '../../../shared/models/permissions';
 import { DimlessBinaryPipe } from '../../../shared/pipes/dimless-binary.pipe';
 import { DimlessPipe } from '../../../shared/pipes/dimless.pipe';
@@ -27,6 +28,7 @@ export class HealthComponent implements OnInit, OnDestroy {
   interval = new Subscription();
   permissions: Permissions;
   enabledFeature$: FeatureTogglesMap$;
+  icons = Icons;
 
   rawCapacityChartConfig = {
     options: {
index b5a05c75f1c80da27dcf0bbee6256ec465d565e8..bce4513160534f823f6a060daeea52a2d7f6e46c 100644 (file)
@@ -95,7 +95,7 @@
     <span class="form-control no-border">
       <button class="btn btn-default btn-label pull-right"
               (click)="addClient()">
-        <i class="fa fa-fw fa-plus"></i>
+        <i [ngClass]="[icons.add, icons.width]"></i>
         <ng-container i18n>Add clients</ng-container>
       </button>
     </span>
index a549deb0445cecc4bc3954e23c86dd8c01160e3a..5067f5a2ba7430ad4629962548c49713962f0552 100644 (file)
@@ -5,6 +5,7 @@ import { I18n } from '@ngx-translate/i18n-polyfill';
 import * as _ from 'lodash';
 
 import { NfsService } from '../../../shared/api/nfs.service';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdFormGroup } from '../../../shared/forms/cd-form-group';
 
 @Component({
@@ -18,6 +19,7 @@ export class NfsFormClientComponent {
 
   nfsSquash: any[] = this.nfsService.nfsSquash;
   nfsAccessType: any[] = this.nfsService.nfsAccessType;
+  icons = Icons;
 
   constructor(private nfsService: NfsService, private i18n: I18n) {}
 
index d1300cb3d4174152130262bd2a774fd0cb3796e6..5057a1faf1d78d7d76898d1196ad4e7d0fb0e701 100644 (file)
@@ -63,7 +63,7 @@
                   <button class="btn btn-default"
                           type="button"
                           (click)="removeDaemon(i, daemon)">
-                    <i class="fa fa-remove fa-fw"
+                    <i [ngClass]="[icons.destroy, icons.width]"
                        aria-hidden="true"></i>
                   </button>
                 </span>
@@ -77,7 +77,7 @@
                            [messages]="daemonsMessages"
                            (selection)="onDaemonSelection()"
                            elemClass="btn btn-default pull-right">
-                  <i class="fa fa-fw fa-plus"></i>
+                  <i [ngClass]="[icons.add, icons.width]"></i>
                   <ng-container i18n>Add daemon</ng-container>
                 </cd-select>
               </div>
index 8916d1b7da00331101fefc0cad0199a4c500e964..0545e33e44d7ccea3d6822414ae8fa5453cf7e31 100644 (file)
@@ -12,6 +12,7 @@ import { RgwUserService } from '../../../shared/api/rgw-user.service';
 import { SelectMessages } from '../../../shared/components/select/select-messages.model';
 import { SelectOption } from '../../../shared/components/select/select-option.model';
 import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdFormBuilder } from '../../../shared/forms/cd-form-builder';
 import { CdFormGroup } from '../../../shared/forms/cd-form-group';
 import { CdValidators } from '../../../shared/forms/cd-validators';
@@ -43,6 +44,7 @@ export class NfsFormComponent implements OnInit {
 
   allClusters: string[] = null;
   allDaemons = {};
+  icons = Icons;
 
   allFsals: any[] = [];
   allRgwUsers: any[] = [];
index 14cbe2d664b9bad79804ca375194a42c6e08b8a2..3ea15378760d762dc2d5c5b42175b3c89b5caf16 100644 (file)
@@ -10,6 +10,7 @@ import { CriticalConfirmationModalComponent } from '../../../shared/components/c
 import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { TableComponent } from '../../../shared/datatable/table/table.component';
 import { CellTemplate } from '../../../shared/enum/cell-template.enum';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { ViewCacheStatus } from '../../../shared/enum/view-cache-status.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
@@ -74,7 +75,7 @@ export class NfsListComponent implements OnInit, OnDestroy {
 
     const createAction: CdTableAction = {
       permission: 'create',
-      icon: 'fa-plus',
+      icon: Icons.add,
       routerLink: () => '/nfs/create',
       canBePrimary: (selection: CdTableSelection) => !selection.hasSingleSelection,
       name: this.actionLabels.CREATE
@@ -82,14 +83,14 @@ export class NfsListComponent implements OnInit, OnDestroy {
 
     const editAction: CdTableAction = {
       permission: 'update',
-      icon: 'fa-pencil',
+      icon: Icons.edit,
       routerLink: () => `/nfs/edit/${getNfsUri()}`,
       name: this.actionLabels.EDIT
     };
 
     const deleteAction: CdTableAction = {
       permission: 'delete',
-      icon: 'fa-times',
+      icon: Icons.destroy,
       click: () => this.deleteNfsModal(),
       name: this.actionLabels.DELETE
     };
index ad9dca78e350ea1776af275923722a3afeb3a288..f958aaa2a4ea01d6c85e570679d105f0de098c41 100644 (file)
@@ -1,7 +1,7 @@
 <div class="col-sm-12 col-lg-6">
   <h1 *ngIf="!(info && ecProfiles)"
       class="jumbotron">
-    <i class="fa fa-lg fa-pulse fa-spinner text-primary"></i>
+    <i [ngClass]="[icons.spinner, icons.pulse, icons.large]" class="text-primary"></i>
     <ng-container i18n>Loading...</ng-container>
   </h1>
   <form name="form"
                           id="crush-info-button"
                           type="button"
                           (click)="data.crushInfo = !data.crushInfo">
-                    <i class="fa fa-question-circle"
+                    <i [ngClass]="[icons.questionCircle]"
                        aria-hidden="true"></i>
                   </button>
                 </span>
                           id="ecp-info-button"
                           type="button"
                           (click)="data.erasureInfo = !data.erasureInfo">
-                    <i class="fa fa-question-circle"
+                    <i [ngClass]="[icons.questionCircle]"
                        aria-hidden="true"></i>
                   </button>
                   <button class="btn btn-default"
                           type="button"
                           [disabled]="editing"
                           (click)="addErasureCodeProfile()">
-                    <i class="fa fa-plus"
+                    <i [ngClass]="[icons.add]"
                        aria-hidden="true"></i>
                   </button>
                   <button class="btn btn-default"
                           type="button"
                           (click)="deleteErasureCodeProfile()"
                           [disabled]="editing || ecProfiles.length < 1">
-                    <i class="fa fa-trash-o"
+                    <i [ngClass]="[icons.trash]"
                        aria-hidden="true"></i>
                   </button>
                 </span>
index b6f57ee9a8266358101bdafdb9b7ef834e0ca9e8..6dc726e03d1837f176ff47ca0362684b6218c09f 100644 (file)
@@ -11,6 +11,7 @@ import { ErasureCodeProfileService } from '../../../shared/api/erasure-code-prof
 import { PoolService } from '../../../shared/api/pool.service';
 import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
 import { ActionLabelsI18n, URLVerbs } from '../../../shared/constants/app.constants';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdFormGroup } from '../../../shared/forms/cd-form-group';
 import { CdValidators } from '../../../shared/forms/cd-validators';
 import {
@@ -65,6 +66,7 @@ export class PoolFormComponent implements OnInit {
   currentConfigurationValues: { [configKey: string]: any } = {};
   action: string;
   resource: string;
+  icons = Icons;
 
   constructor(
     private dimlessBinaryPipe: DimlessBinaryPipe,
index 78586e69bbd0c4142885a80536cedd7e0ed60613..2a1f57059ab3488b2fe49c713370f37f84d1d5f3 100644 (file)
@@ -10,6 +10,7 @@ import { CriticalConfirmationModalComponent } from '../../../shared/components/c
 import { ActionLabelsI18n, URLVerbs } from '../../../shared/constants/app.constants';
 import { TableComponent } from '../../../shared/datatable/table/table.component';
 import { CellTemplate } from '../../../shared/enum/cell-template.enum';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { ViewCacheStatus } from '../../../shared/enum/view-cache-status.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
@@ -74,20 +75,20 @@ export class PoolListComponent implements OnInit {
     this.tableActions = [
       {
         permission: 'create',
-        icon: 'fa-plus',
+        icon: Icons.add,
         routerLink: () => this.urlBuilder.getCreate(),
         name: this.actionLabels.CREATE
       },
       {
         permission: 'update',
-        icon: 'fa-pencil',
+        icon: Icons.edit,
         routerLink: () =>
           this.urlBuilder.getEdit(encodeURIComponent(this.selection.first().pool_name)),
         name: this.actionLabels.EDIT
       },
       {
         permission: 'delete',
-        icon: 'fa-trash-o',
+        icon: Icons.destroy,
         click: () => this.deletePoolModal(),
         name: this.actionLabels.DELETE,
         disable: () => !this.selection.first() || !this.monAllowPoolDelete,
index 3923071d7a46e75b05f067d349f39fde6ae333b8..9ecabc9a31d7422d1f0e42e7454f39ddb55c96e5 100644 (file)
@@ -8,6 +8,7 @@ import { RgwBucketService } from '../../../shared/api/rgw-bucket.service';
 import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
 import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { TableComponent } from '../../../shared/datatable/table/table.component';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
 import { CdTableFetchDataContext } from '../../../shared/models/cd-table-fetch-data-context';
@@ -59,19 +60,19 @@ export class RgwBucketListComponent {
       this.selection.first() && `${encodeURIComponent(this.selection.first().bid)}`;
     const addAction: CdTableAction = {
       permission: 'create',
-      icon: 'fa-plus',
+      icon: Icons.add,
       routerLink: () => this.urlBuilder.getCreate(),
       name: this.actionLabels.CREATE
     };
     const editAction: CdTableAction = {
       permission: 'update',
-      icon: 'fa-pencil',
+      icon: Icons.edit,
       routerLink: () => this.urlBuilder.getEdit(getBucketUri()),
       name: this.actionLabels.EDIT
     };
     const deleteAction: CdTableAction = {
       permission: 'delete',
-      icon: 'fa-times',
+      icon: Icons.destroy,
       click: () => this.deleteAction(),
       name: this.actionLabels.DELETE
     };
index c58445e09508a39447bb8973c086a79f85e84aba..da3de2e77de8436a5801191ea682cc40a8e09140 100644 (file)
                   class="btn btn-sm btn-primary"
                   [disabled]="!keysSelection.hasSingleSelection"
                   (click)="showKeyModal()">
-            <i class="fa fa-eye"></i>
+            <i [ngClass]="[icons.show]"></i>
             <ng-container i18n>Show</ng-container>
           </button>
         </div>
index daa2ff74eaaeae515782c04266854546ba4422e5..767ddeb6e5d8c1fc292a769df09318e45ca67f7b 100644 (file)
@@ -5,6 +5,7 @@ import * as _ from 'lodash';
 import { BsModalService } from 'ngx-bootstrap/modal';
 
 import { RgwUserService } from '../../../shared/api/rgw-user.service';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
 import { CdTableSelection } from '../../../shared/models/cd-table-selection';
 import { RgwUserS3Key } from '../models/rgw-user-s3-key';
@@ -34,6 +35,8 @@ export class RgwUserDetailsComponent implements OnChanges, OnInit {
   keysColumns: CdTableColumn[] = [];
   keysSelection: CdTableSelection = new CdTableSelection();
 
+  icons = Icons;
+
   constructor(
     private rgwUserService: RgwUserService,
     private bsModalService: BsModalService,
index 12dd06c55941aff5cc7e9f779a156f2fb6080be2..b7dda481c5158cdd195b43c210f2060f42a0971e 100644 (file)
             <span *ngFor="let subuser of subusers; let i=index;">
               <div class="input-group">
                 <span class="input-group-addon">
-                  <i class="icon-prepend fa fa-user"></i>
+                  <i class="icon-prepend {{ icons.user }}"></i>
                 </span>
                 <input type="text"
                        class="form-control"
                        readonly>
                 <span class="input-group-addon"
                       style="border-left: 0; border-right: 0;">
-                  <i class="icon-prepend fa fa-share-alt"></i>
+                  <i class="icon-prepend {{ icons.share }}"></i>
                 </span>
                 <input type="text"
                        class="form-control"
                           i18n-tooltip
                           tooltip="Edit"
                           (click)="showSubuserModal(i)">
-                    <i class="fa fa-cogs"></i>
+                    <i [ngClass]="[icons.edit]"></i>
                   </button>
                   <button type="button"
                           class="btn btn-default tc_deleteSubuserButton"
                           i18n-tooltip
                           tooltip="Delete"
                           (click)="deleteSubuser(i)">
-                    <i class="fa fa-times"></i>
+                    <i [ngClass]="[icons.destroy]"></i>
                   </button>
                 </span>
               </div>
               <button type="button"
                       class="btn btn-sm btn-default btn-label pull-right tc_addSubuserButton"
                       (click)="showSubuserModal()">
-                <i class="fa fa-fw fa-plus"></i>
+                <i [ngClass]="[icons.add, icons.width]"></i>
                 <ng-container i18n>{{ actionLabels.CREATE | titlecase }} {{ subuserLabel | upperFirst }}</ng-container>
               </button>
             </span>
             <span *ngFor="let key of s3Keys; let i=index;">
               <div class="input-group">
                 <span class="input-group-addon">
-                  <i class="icon-prepend fa fa-key"></i>
+                  <i class="icon-prepend {{ icons.key }}"></i>
                 </span>
                 <input type="text"
                        class="form-control"
                           i18n-tooltip
                           tooltip="Show"
                           (click)="showS3KeyModal(i)">
-                    <i class="fa fa-eye"></i>
+                    <i [ngClass]="[icons.show]"></i>
                   </button>
                   <button type="button"
                           class="btn btn-default tc_deleteS3KeyButton"
                           i18n-tooltip
                           tooltip="Delete"
                           (click)="deleteS3Key(i)">
-                    <i class="fa fa-times"></i>
+                    <i [ngClass]="[icons.destroy]"></i>
                   </button>
                 </span>
               </div>
               <button type="button"
                       class="btn btn-sm btn-default btn-label pull-right tc_addS3KeyButton"
                       (click)="showS3KeyModal()">
-                <i class="fa fa-fw fa-plus"></i>
+                <i [ngClass]="[icons.add, icons.width]"></i>
                 <ng-container i18n>{{ actionLabels.CREATE | titlecase }} {{ s3keyLabel | upperFirst }}</ng-container>
               </button>
             </span>
             <span *ngFor="let key of swiftKeys; let i=index;">
               <div class="input-group">
                 <span class="input-group-addon">
-                  <i class="icon-prepend fa fa-key"></i>
+                  <i class="icon-prepend {{ icons.key }}"></i>
                 </span>
                 <input type="text"
                        class="form-control"
                           i18n-tooltip
                           tooltip="Show"
                           (click)="showSwiftKeyModal(i)">
-                    <i class="fa fa-eye"></i>
+                    <i [ngClass]="[icons.show]"></i>
                   </button>
                 </span>
               </div>
             <span *ngFor="let cap of capabilities; let i=index;">
               <div class="input-group">
                 <span class="input-group-addon">
-                  <i class="icon-prepend fa fa-share-alt"></i>
+                  <i class="icon-prepend {{ icons.share }}"></i>
                 </span>
                 <input type="text"
                        class="form-control"
                           i18n-tooltip
                           tooltip="Edit"
                           (click)="showCapabilityModal(i)">
-                    <i class="fa fa-cogs"></i>
+                    <i [ngClass]="[icons.edit]"></i>
                   </button>
                   <button type="button"
                           class="btn btn-default tc_deleteCapButton"
                           i18n-tooltip
                           tooltip="Delete"
                           (click)="deleteCapability(i)">
-                    <i class="fa fa-times"></i>
+                    <i [ngClass]="[icons.destroy]"></i>
                   </button>
                 </span>
               </div>
               <button type="button"
                       class="btn btn-sm btn-default btn-label pull-right tc_addCapButton"
                       (click)="showCapabilityModal()">
-                <i class="fa fa-fw fa-plus"></i>
+                <i [ngClass]="[icons.add, icons.width]"></i>
                 <ng-container i18n>{{ actionLabels.ADD | titlecase }} {{ capabilityLabel | upperFirst }}</ng-container>
               </button>
             </span>
index 9ecf7eccedc3230fcf1ecd50fbd783aeaaee9418..aa973270a2026b6b70711e22f7622ed9d8c662c3 100644 (file)
@@ -9,6 +9,7 @@ import { concat as observableConcat, forkJoin as observableForkJoin, Observable
 
 import { RgwUserService } from '../../../shared/api/rgw-user.service';
 import { ActionLabelsI18n, URLVerbs } from '../../../shared/constants/app.constants';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { NotificationType } from '../../../shared/enum/notification-type.enum';
 import { CdFormBuilder } from '../../../shared/forms/cd-form-builder';
 import { CdFormGroup } from '../../../shared/forms/cd-form-group';
@@ -35,7 +36,7 @@ export class RgwUserFormComponent implements OnInit {
   error = false;
   loading = false;
   submitObservables: Observable<Object>[] = [];
-
+  icons = Icons;
   subusers: RgwUserSubuser[] = [];
   s3Keys: RgwUserS3Key[] = [];
   swiftKeys: RgwUserSwiftKey[] = [];
index 7a6789f4b896e45547be0c8dacfc6d2f8385a578..06fe38571ca47f240fbafc066d0fc04c65b37b93 100644 (file)
@@ -9,6 +9,7 @@ import { CriticalConfirmationModalComponent } from '../../../shared/components/c
 import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { TableComponent } from '../../../shared/datatable/table/table.component';
 import { CellTemplate } from '../../../shared/enum/cell-template.enum';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
 import { CdTableFetchDataContext } from '../../../shared/models/cd-table-fetch-data-context';
@@ -77,19 +78,19 @@ export class RgwUserListComponent {
       this.selection.first() && `${encodeURIComponent(this.selection.first().uid)}`;
     const addAction: CdTableAction = {
       permission: 'create',
-      icon: 'fa-plus',
+      icon: Icons.add,
       routerLink: () => this.urlBuilder.getCreate(),
       name: this.actionLabels.CREATE
     };
     const editAction: CdTableAction = {
       permission: 'update',
-      icon: 'fa-pencil',
+      icon: Icons.edit,
       routerLink: () => this.urlBuilder.getEdit(getUserUri()),
       name: this.actionLabels.EDIT
     };
     const deleteAction: CdTableAction = {
       permission: 'delete',
-      icon: 'fa-times',
+      icon: Icons.destroy,
       click: () => this.deleteAction(),
       name: this.actionLabels.DELETE
     };
index 49b9c2ac468c5e4d9a094425f51c92593dee9f47..7c3e5998150692a2231642bc12498872405bdee1 100644 (file)
@@ -9,6 +9,7 @@ import { ScopeService } from '../../../shared/api/scope.service';
 import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
 import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { CellTemplate } from '../../../shared/enum/cell-template.enum';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { NotificationType } from '../../../shared/enum/notification-type.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
@@ -51,13 +52,13 @@ export class RoleListComponent implements OnInit {
     this.permission = this.authStorageService.getPermissions().user;
     const addAction: CdTableAction = {
       permission: 'create',
-      icon: 'fa-plus',
+      icon: Icons.add,
       routerLink: () => this.urlBuilder.getCreate(),
       name: this.actionLabels.CREATE
     };
     const editAction: CdTableAction = {
       permission: 'update',
-      icon: 'fa-pencil',
+      icon: Icons.edit,
       disable: () => !this.selection.hasSingleSelection || this.selection.first().system,
       routerLink: () =>
         this.selection.first() && this.urlBuilder.getEdit(this.selection.first().name),
@@ -65,7 +66,7 @@ export class RoleListComponent implements OnInit {
     };
     const deleteAction: CdTableAction = {
       permission: 'delete',
-      icon: 'fa-times',
+      icon: Icons.destroy,
       disable: () => !this.selection.hasSingleSelection || this.selection.first().system,
       click: () => this.deleteRoleModal(),
       name: this.actionLabels.DELETE
index 060b9a90a200e85a71bae40b963ed2a75d8a8f88..3499dcb2d5f5536f72bb4fcd7b02e7addc6e68e8 100644 (file)
@@ -6,6 +6,7 @@ import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';
 import { UserService } from '../../../shared/api/user.service';
 import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
 import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { NotificationType } from '../../../shared/enum/notification-type.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
@@ -49,20 +50,20 @@ export class UserListComponent implements OnInit {
     this.permission = this.authStorageService.getPermissions().user;
     const addAction: CdTableAction = {
       permission: 'create',
-      icon: 'fa-plus',
+      icon: Icons.add,
       routerLink: () => this.urlBuilder.getCreate(),
       name: this.actionLabels.CREATE
     };
     const editAction: CdTableAction = {
       permission: 'update',
-      icon: 'fa-pencil',
+      icon: Icons.edit,
       routerLink: () =>
         this.selection.first() && this.urlBuilder.getEdit(this.selection.first().username),
       name: this.actionLabels.EDIT
     };
     const deleteAction: CdTableAction = {
       permission: 'delete',
-      icon: 'fa-times',
+      icon: Icons.destroy,
       click: () => this.deleteUserModal(),
       name: this.actionLabels.DELETE
     };
index ba06ebe97c317decbd02a40f3d9f254706f6c1ba..81ea8c0aaa429be0211fb2196614803e2de0f11e 100644 (file)
@@ -2,7 +2,7 @@
   <div class="col-md-12 text-center">
     <h1 i18n>Forbidden</h1>
 
-    <i class="fa fa-lock text-danger"></i>
+    <i class="{{ icons.lock }} text-danger"></i>
 
     <h2 i18n>Sorry, you are not allowed to see what you were looking for.</h2>
 
index 8b70d3ee7e5223d6125949c46b69bed8efb33e76..45bd73c908983cc88047b083904607b5cef26a17 100644 (file)
@@ -1,4 +1,5 @@
 import { Component } from '@angular/core';
+import { Icons } from '../../shared/enum/icons.enum';
 
 @Component({
   selector: 'cd-forbidden',
@@ -6,5 +7,6 @@ import { Component } from '@angular/core';
   styleUrls: ['./forbidden.component.scss']
 })
 export class ForbiddenComponent {
+  icons = Icons;
   constructor() {}
 }
index 1dd555563f38ce5b74626061fad7bd8319a59794..68a9e1085496bc9b9ce0a11bea958540eb45705f 100644 (file)
@@ -5,7 +5,7 @@
      data-toggle="dropdown"
      i18n-title
      title="Dashboard Settings">
-    <i class="fa fa-fw fa-cog"></i>
+    <i [ngClass]="[icons.deepCheck, icons.width]"></i>
     <span i18n
           class="visible-xs-inline-block">Dashboard Settings</span>
     <span class="caret"></span>
index eacef89848d64305d07b90b3fa6af38f8749ddbd..ccb6ec80f2155197d8cd2732335fda1c073da486 100644 (file)
@@ -1,5 +1,6 @@
 import { Component, OnInit } from '@angular/core';
 
+import { Icons } from '../../../shared/enum/icons.enum';
 import { Permission } from '../../../shared/models/permissions';
 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
 
@@ -10,6 +11,7 @@ import { AuthStorageService } from '../../../shared/services/auth-storage.servic
 })
 export class AdministrationComponent implements OnInit {
   userPermission: Permission;
+  icons = Icons;
 
   constructor(private authStorageService: AuthStorageService) {
     this.userPermission = this.authStorageService.getPermissions().user;
index 02c7ad9c827071f55c15d9ad3bce783f0a14af5b..0cbfd5f7998b28b1d45519e76f8a1587700e30e5 100644 (file)
@@ -8,7 +8,7 @@
      data-toggle="dropdown"
      i18n-title
      title="Help">
-    <i class="fa fa-fw fa-question-circle-o"></i>
+    <i [ngClass]="[icons.questionCircle, icons.width]"></i>
     <span i18n
           class="visible-xs-inline-block">Help</span>
     <span class="caret"></span>
index bf7f1b574e1d880df7231a9884f6e50b76494f52..4478508190d8969f8580d5be5e672137b59b0fc0 100644 (file)
@@ -2,6 +2,7 @@ import { Component, OnInit, ViewChild } from '@angular/core';
 
 import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';
 
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CephReleaseNamePipe } from '../../../shared/pipes/ceph-release-name.pipe';
 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
 import { SummaryService } from '../../../shared/services/summary.service';
@@ -17,6 +18,7 @@ export class DashboardHelpComponent implements OnInit {
   docsFormElement;
   docsUrl: string;
   modalRef: BsModalRef;
+  icons = Icons;
 
   constructor(
     private summaryService: SummaryService,
index ad62aaf386847fef037d0a2edb408737705982cb..1eda7d06f8301e3492bb0520a1066d1fbf5844cf 100644 (file)
@@ -4,7 +4,7 @@
      data-toggle="dropdown"
      i18n-title
      title="Logged in user">
-    <i class="fa fa-fw fa-user"></i>
+    <i [ngClass]="[icons.user, icons.width]"></i>
     <span i18n
           class="visible-xs-inline-block">Logged in user</span>
     <span class="caret"></span>
@@ -23,7 +23,7 @@
     <li role="menuitem">
       <a class="dropdown-item"
          (click)="logout()">
-        <i class="fa fa-sign-out fa-fw"></i>
+        <i [ngClass]="[icons.signOut, icons.width]"></i>
         <span i18n>Sign out</span>
       </a>
     </li>
index ccc31cd22c90483ab45b8dc61c8eafea15dd0e63..54d1a277f0a8c13fe4976c9c7a2b427e2f786100 100644 (file)
@@ -1,6 +1,7 @@
 import { Component, OnInit } from '@angular/core';
 
 import { AuthService } from '../../../shared/api/auth.service';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
 
 @Component({
@@ -10,6 +11,7 @@ import { AuthStorageService } from '../../../shared/services/auth-storage.servic
 })
 export class IdentityComponent implements OnInit {
   username: string;
+  icons = Icons;
 
   constructor(private authStorageService: AuthStorageService, private authService: AuthService) {}
 
index 67b30c719f92ca670bff2470a5b53e7f66d1ecc6..5ee7508d3712a409af9066e230aa1d11d083f8ac 100644 (file)
@@ -30,7 +30,7 @@
       <li routerLinkActive="active"
           class="tc_menuitem tc_menuitem_dashboard">
         <a routerLink="/dashboard">
-          <i class="fa fa-heartbeat fa-fw"
+          <i [ngClass]="[icons.health, icons.width]"
              [ngStyle]="summaryData?.health_status | healthColor"></i>
           <span i18n>Dashboard</span>
         </a>
index 5f8d1f5a7e96a8c20645b500f41ee9de10afed74..85154c3a7afd1eac49764e11b64e996a46bf9aa5 100644 (file)
@@ -1,6 +1,7 @@
 import { Component, OnInit } from '@angular/core';
 
 import { PrometheusService } from '../../../shared/api/prometheus.service';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { Permissions } from '../../../shared/models/permissions';
 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
 import {
@@ -17,6 +18,7 @@ import { SummaryService } from '../../../shared/services/summary.service';
 export class NavigationComponent implements OnInit {
   permissions: Permissions;
   summaryData: any;
+  icons = Icons;
 
   isCollapsed = true;
   prometheusConfigured = false;
index 9e73409d99850849e59c3499bc855d82fd659101..43d00cf818bc0637e90134c6c123c7925577df29 100644 (file)
@@ -1,7 +1,7 @@
 <ng-template #notificationsTpl>
   <div *ngIf="notifications.length > 0">
     <button type="button" class="btn btn-default btn-sm btn-block" (click)="removeAll()">
-      <i class="fa fa-trash-o" aria-hidden="true"></i>
+      <i [ngClass]="[icons.trash]" aria-hidden="true"></i>
       &nbsp;
       <ng-container i18n>Remove all</ng-container>
     </button>
@@ -10,9 +10,9 @@
       <table>
         <tr>
           <td rowspan="3" class="icon-col text-center">
-            <span [ngClass]="['fa-stack fa-2x', notification.textClass]">
-              <i class="fa fa-circle fa-stack-2x"></i>
-              <i [ngClass]="['fa fa-stack-1x fa-inverse', notification.iconClass]"></i>
+            <span [ngClass]="[icons.stack, icons.large2x, notification.textClass]">
+              <i [ngClass]="[icons.circle, icons.stack2x]"></i>
+              <i [ngClass]="[icons.stack1x, icons.inverse, notification.iconClass]"></i>
             </span>
           </td>
           <td>
@@ -51,7 +51,7 @@
    outsideClick="true"
    i18n-title
    title="Recent Notifications">
-  <i class="fa fa-fw fa-bell"></i>
+  <i [ngClass]="[icons.bell, icons.width]"></i>
   <span i18n
         class="visible-xs-inline-block">Recent Notifications</span>
 </a>
index d3dd47a13ef5e1dc6fc46b33b5db4d4894b33340..a51882fb905f43d1cb8da4ae7eae7b8c1c4d8814 100644 (file)
@@ -2,6 +2,7 @@ import { Component, NgZone, OnDestroy, OnInit } from '@angular/core';
 
 import * as _ from 'lodash';
 
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdNotification } from '../../../shared/models/cd-notification';
 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
 import { NotificationService } from '../../../shared/services/notification.service';
@@ -16,6 +17,7 @@ import { PrometheusNotificationService } from '../../../shared/services/promethe
 export class NotificationsComponent implements OnInit, OnDestroy {
   notifications: CdNotification[];
   private interval: number;
+  icons = Icons;
 
   constructor(
     public notificationService: NotificationService,
index dae5758080321cc525b737c97635576ec4651764..987c63c7de1d8223c813d2d24eef3d9f7ca437d8 100644 (file)
@@ -7,9 +7,9 @@
       <table>
         <tr>
           <td rowspan="3"  class="icon-col text-center">
-            <span class="fa-stack fa-2x text-info">
-              <i class="fa fa-circle fa-stack-2x"></i>
-              <i class="fa fa-stack-1x fa-inverse fa-spinner fa-spin"></i>
+            <span [ngClass]="[icons.stack, icons.large2x]" class="text-info">
+              <i [ngClass]="[icons.stack2x, icons.circle]"></i>
+              <i [ngClass]="[icons.stack1x, icons.spinner, icons.spin, icons.inverse]"></i>
             </span>
           </td>
           <td colspan="3"><strong>{{ executingTask.description }}</strong></td>
         <tr>
           <td rowspan="3"  class="icon-col text-center">
             <span *ngIf="!finishedTask.errorMessage">
-              <span class="fa-stack fa-2x text-success">
-                <i class="fa fa-circle fa-stack-2x"></i>
-                <i class="fa fa-stack-1x fa-inverse fa-check"></i>
+              <span [ngClass]="[icons.stack, icons.large2x]" class="text-success">
+                <i [ngClass]="[icons.stack2x, icons.circle]"></i>
+                <i [ngClass]="[icons.stack1x, icons.inverse, icons.check]"></i>
               </span>
             </span>
             <span *ngIf="finishedTask.errorMessage">
-              <span class="fa-stack fa-2x text-danger">
-                <i class="fa fa-circle fa-stack-2x"></i>
-                <i class="fa fa-stack-1x fa-inverse fa-exclamation-triangle"></i>
+              <span [ngClass]="[icons.stack, icons.large2x]" class="text-danger">
+                <i [ngClass]="[icons.stack2x, icons.circle]"></i>
+                <i [ngClass]="[icons.stack1x, icons.inverse, icons.warning]"></i>
               </span>
             </span>
           </td>
@@ -77,8 +77,7 @@
    outsideClick="true"
    i18n-title
    title="Background Tasks">
-  <i class="fa fa-fw"
-     [ngClass]="icon"></i>
+  <i [ngClass]="[icon,icons.width]"></i>
   <span i18n
         class="visible-xs-inline-block">Background Tasks</span>
   <span *ngIf="executingTasks.length > 0"> ({{ executingTasks.length }})</span>
index 3eb58985ee67ef3ebd9fdc45eecad2a5fd4a9260..c23bbcde119ce0e9ecfd6335cee349a2fa82bd5e 100644 (file)
@@ -1,5 +1,7 @@
 import { Component, OnInit } from '@angular/core';
 
+import * as _ from 'lodash';
+import { Icons } from '../../../shared/enum/icons.enum';
 import { ExecutingTask } from '../../../shared/models/executing-task';
 import { FinishedTask } from '../../../shared/models/finished-task';
 import { SummaryService } from '../../../shared/services/summary.service';
@@ -14,7 +16,8 @@ export class TaskManagerComponent implements OnInit {
   executingTasks: ExecutingTask[] = [];
   finishedTasks: FinishedTask[] = [];
 
-  icon = 'fa-hourglass-o';
+  icons = Icons;
+  icon = _.join([this.icons.hourglass], ' ');
 
   constructor(
     private summaryService: SummaryService,
index 0db04413d97bb8629b005a6499b59f5d460a5bd1..37c4663ec6a22011488623adfb313057e4d7bedb 100644 (file)
@@ -48,7 +48,7 @@
                     title="Remove the custom configuration value. The default configuration will be inherited and used instead."
                     (click)="resetValue(option.name)"
                     i18n-title>
-              <i class="fa fa-eraser"
+              <i [ngClass]="[icons.erase]"
                  aria-hidden="true"></i>
             </button>
           </span>
index e9d6a116c9c919490d1d4e9cf953bf1a25fd0348..07eaf3362f28bf5bbbbd34c4842929949b5840b3 100644 (file)
@@ -3,6 +3,7 @@ import { FormControl, NgForm } from '@angular/forms';
 
 import * as _ from 'lodash';
 
+import { Icons } from '../../../shared/enum/icons.enum';
 import { ConfigurationService } from '../../api/configuration.service';
 import { CdFormGroup } from '../../forms/cd-form-group';
 import { ConfigOptionTypes } from './config-option.types';
@@ -24,6 +25,7 @@ export class ConfigOptionComponent implements OnInit {
   @Input()
   optionsFormShowReset = true;
 
+  icons: Icons;
   options: Array<any> = [];
   optionsFormGroup: CdFormGroup = new CdFormGroup({});
 
index 962a0ca264f1b05981cda5a623c3549a875fa9d6..b60ccc3e3068613fd872bb2fedd2a2c7249d8ff4 100644 (file)
@@ -3,7 +3,7 @@
     <tr>
       <td rowspan="2"
           class="error-panel-alert-icon">
-        <i class="fa fa-3x fa-times-circle alert-danger"
+        <i [ngClass]="[icons.destroyCircle, icons.large3x]" class="alert-danger"
            aria-hidden="true"></i>
       </td>
       <td class="error-panel-alert-title">
index 85ccef2c43bbc0d1f0281386847a325ed84d25f9..56b322158e45c17525c838767be8ebe03ec67fc6 100644 (file)
@@ -1,4 +1,5 @@
 import { Component, EventEmitter, Input, Output } from '@angular/core';
+import { Icons } from '../../../shared/enum/icons.enum';
 
 @Component({
   selector: 'cd-error-panel',
@@ -19,4 +20,6 @@ export class ErrorPanelComponent {
    */
   @Output()
   backAction = new EventEmitter();
+
+  icons = Icons;
 }
index 61fccbc616162b4c8301682b7c782d6389d26c49..51ecf44445a9c76c7b26403b5e9c3af5d612d9ab 100644 (file)
@@ -34,7 +34,7 @@
             i18n-title
             title="Reset Settings"
             (click)="reset()">
-      <i class="fa fa-undo"></i>
+      <i [ngClass]="[icons.undo]"></i>
     </button>
     <br>
   </div>
index 1a2656e00ca32c2afd1338bc441c4cd68e09ff4e..a813653ee9e77502b50580a8da10cbec6dd63f02 100644 (file)
@@ -3,6 +3,7 @@ import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
 
 import { I18n } from '@ngx-translate/i18n-polyfill';
 
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CephReleaseNamePipe } from '../../../shared/pipes/ceph-release-name.pipe';
 import { SummaryService } from '../../../shared/services/summary.service';
 import { SettingsService } from '../../api/settings.service';
@@ -27,6 +28,7 @@ export class GrafanaComponent implements OnInit, OnChanges {
   dashboardExist = true;
   time: string;
   grafanaTimes: any;
+  icons = Icons;
   readonly DEFAULT_TIME: string = 'from=now-1h&to=now';
 
   @Input()
index 408e47c2aa6a2f5fb56ff8a60e80bdd89e5f3666..2d93cb7b2d5f0b16fe5e2e9cb54d82d6af5c7d73 100644 (file)
@@ -2,7 +2,7 @@
   <div [innerHtml]="html"></div>
   <ng-content></ng-content>
 </ng-template>
-<i class="fa fa-question-circle"
+<i [ngClass]="[icons.questionCircle]"
    aria-hidden="true"
    [popover]="popoverTpl"
    placement="bottom"
index 7430411bfcd8cdbadb627aeb7591c1ebf02c038c..996d78ba8d544bd68184fa1f70530f77e4e98805 100644 (file)
@@ -1,4 +1,5 @@
 import { Component, Input } from '@angular/core';
+import { Icons } from '../../../shared/enum/icons.enum';
 
 @Component({
   selector: 'cd-helper',
@@ -9,5 +10,7 @@ export class HelperComponent {
   @Input()
   html: any;
 
+  icons = Icons;
+
   constructor() {}
 }
index 27b5fd676b813a0b37734b02e29fd5fdc58a1eff..f5efe531149b9ec4f4d72caa8847d7f30da5bf98 100644 (file)
@@ -2,7 +2,7 @@
   <table>
     <tr>
       <td rowspan="2" class="info-panel-alert-icon">
-        <i class="fa fa-3x fa-info-circle alert-info"
+        <i [ngClass]="[icons.infoCircle, icons.large3x]" class="alert-info"
            aria-hidden="true"></i>
       </td>
       <td class="info-panel-alert-title">
index ce0ef7ffe2743be75ed43f9707f2d1482a275686..a5427d9f1ed28aa5bb7ee6be0ca3911da094b992 100644 (file)
@@ -1,6 +1,7 @@
 import { Component, Input } from '@angular/core';
 
 import { I18n } from '@ngx-translate/i18n-polyfill';
+import { Icons } from '../../../shared/enum/icons.enum';
 
 @Component({
   selector: 'cd-info-panel',
@@ -15,5 +16,7 @@ export class InfoPanelComponent {
   @Input()
   title = this.i18n('Information');
 
+  icons = Icons;
+
   constructor(private i18n: I18n) {}
 }
index 4aca235703a22fc5bc47c66c5691a5fe2af1084d..651801c7e5548e4df0440fad78144b666b661bbc 100644 (file)
@@ -1,6 +1,6 @@
 <alert type="info">
   <strong>
-    <i class="fa fa-spinner fa-spin fa-fw"
+    <i [ngClass]="[icons.spinner, icons.spin, icons.width]"
        aria-hidden="true"></i>
   </strong>
   <ng-content></ng-content>
index 17d02a76419093af17308418796b6f8ba5758a60..3fe95f07f811763edefbe0d79c1ac171e6375e19 100644 (file)
@@ -1,8 +1,11 @@
 import { Component } from '@angular/core';
+import { Icons } from '../../../shared/enum/icons.enum';
 
 @Component({
   selector: 'cd-loading-panel',
   templateUrl: './loading-panel.component.html',
   styleUrls: ['./loading-panel.component.scss']
 })
-export class LoadingPanelComponent {}
+export class LoadingPanelComponent {
+  icons = Icons;
+}
index d7f5517955de3e3e052a6deb51fad870234c40c0..02c5458f814441e5a4c024e3072e66af73e97bce 100644 (file)
@@ -7,7 +7,7 @@
            [customBadgeValidators]="customBadgeValidators"
            elemClass="margin-right-sm select-menu-edit"
            (selection)="selection.emit($event)">
-  <i class="fa fa-fw fa-pencil"></i>
+  <i [ngClass]="[icons.edit, icons.width]"></i>
 </cd-select>
 
 <span *ngFor="let dataItem of data">
@@ -15,7 +15,7 @@
     <span class="margin-right-sm">{{ dataItem }}</span>
     <a class="badge-remove"
        (click)="cdSelect.removeItem(dataItem)">
-      <i class="fa fa-times"
+      <i [ngClass]="[icons.destroy]"
          aria-hidden="true"></i>
     </a>
   </span>
index c275095eaec315133e4fa0aa1b6f7a1bc01ebdfb..5affcc192323abb414276d41fa13a7956308c6ea 100644 (file)
@@ -4,6 +4,7 @@ import { ValidatorFn } from '@angular/forms';
 import { I18n } from '@ngx-translate/i18n-polyfill';
 import * as _ from 'lodash';
 
+import { Icons } from '../../../shared/enum/icons.enum';
 import { SelectMessages } from '../select/select-messages.model';
 import { SelectOption } from '../select/select-option.model';
 
@@ -32,5 +33,7 @@ export class SelectBadgesComponent {
   @ViewChild('cdSelect')
   cdSelect;
 
+  icons = Icons;
+
   constructor(private i18n: I18n) {}
 }
index 72682dbd342ade8155e56e98ed37fd33ff65648b..6a58995894ce83f1e35aaacd2fd7afa5bc6ce07c 100644 (file)
@@ -23,7 +23,7 @@
        [ngClass]="{'help-block disabled': (data.length === selectionLimit || !option.enabled) && !option.selected}"
        (click)="triggerSelection(option)">
     <div class="select-menu-item-icon">
-      <i class="fa fa-check"
+      <i [ngClass]="[icons.check]"
          aria-hidden="true"
          *ngIf="option.selected"></i>
       &nbsp;
@@ -42,7 +42,7 @@
        class="select-menu-item"
        (click)="addCustomOption(filter.value)">
     <div class="select-menu-item-icon">
-      <i class="fa fa-tag"
+      <i [ngClass]="[icons.tag]"
          aria-hidden="true"></i>
       &nbsp;
     </div>
index 1728acb5ab6fb595c1fb022ec59cdd6e8ffffaac..ad3a97c09a3c4a20a9f96863b8ebe1cabf0616b7 100644 (file)
@@ -4,6 +4,7 @@ import { FormControl, ValidatorFn } from '@angular/forms';
 import { I18n } from '@ngx-translate/i18n-polyfill';
 import * as _ from 'lodash';
 
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdFormGroup } from '../../forms/cd-form-group';
 import { SelectMessages } from './select-messages.model';
 import { SelectOption } from './select-option.model';
@@ -36,6 +37,7 @@ export class SelectComponent implements OnInit, OnChanges {
   filter: FormControl;
   Object = Object;
   filteredOptions: Array<SelectOption> = [];
+  icons = Icons;
 
   constructor(private i18n: I18n) {}
 
index c5750e7276b39e3a4e9dbefd7e0b6d986f4ef793..94604fefec11004edaec0f7ad06aa0e76efc0abc 100644 (file)
@@ -4,6 +4,6 @@
         (click)="submit($event)">
   <ng-content></ng-content>
   <span *ngIf="loading">
-    <i class="fa fa-spinner fa-spin fa-fw"></i>
+    <i [ngClass]="[icons.spinner, icons.spin, icons.width]"></i>
   </span>
 </button>
index 1b98d67effe40dd084c0d6e93f4f04f5e30f43ea..9e9f75f04f657ce39ffffcc078eda0de4b3db77f 100644 (file)
@@ -1,5 +1,6 @@
 import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core';
 import { AbstractControl, FormGroup, FormGroupDirective, NgForm } from '@angular/forms';
+import { Icons } from '../../../shared/enum/icons.enum';
 
 import * as _ from 'lodash';
 
@@ -37,6 +38,7 @@ export class SubmitButtonComponent implements OnInit {
   disabled = false;
 
   loading = false;
+  icons = Icons;
 
   constructor(private elRef: ElementRef) {}
 
index cf9bc8cbe14dde464ea2e19f267ab75ca17e349f..2592112bff030672576703b979448765c8386aaa 100644 (file)
@@ -2,7 +2,7 @@
   <table>
     <tr>
       <td rowspan="2" class="warning-panel-alert-icon">
-        <i class="fa fa-3x fa-warning alert-warning"
+        <i [ngClass]="[icons.large3x, icons.warning]" class="alert-warning"
            aria-hidden="true"></i>
       </td>
       <td class="warning-panel-alert-title">
index cdbf71f31669621e830215a717b4958e12575e3f..e29e9feebbc07c2aa41fda3c0128ff573bf559de 100644 (file)
@@ -1,4 +1,5 @@
 import { Component, Input } from '@angular/core';
+import { Icons } from '../../../shared/enum/icons.enum';
 
 @Component({
   selector: 'cd-warning-panel',
@@ -12,4 +13,6 @@ export class WarningPanelComponent {
    */
   @Input()
   title = 'Warning';
+
+  icons = Icons;
 }
index 57761eb1f8f28f16c7354669d4c5a0dcede59818..89e37e6f948cccd64927422fa96bbdbe01dcd8c7 100644 (file)
@@ -6,7 +6,7 @@
             [ngClass]="{'disabled': disableSelectionAction(action)}"
             (click)="useClickAction(action)"
             [routerLink]="useRouterLink(action)">
-      <i class="fa fa-fw {{ action.icon }}"></i><span>{{ action.name }}</span>
+      <i [ngClass]="[action.icon, icons.width]"></i><span>{{ action.name }}</span>
     </button>
   </ng-container>
   <button type="button"
@@ -29,7 +29,7 @@
         <a class="dropdown-item"
            (click)="useClickAction(action)"
            [routerLink]="useRouterLink(action)">
-          <i class="fa fa-fw {{ action.icon }}"></i><span>{{ action.name }}</span>
+          <i [ngClass]="[action.icon, icons.width]"></i><span>{{ action.name }}</span>
         </a>
       </li>
     </ng-container>
index 034092862a33c284d0683937cfb197e2760e5612..95216a4b19e61873c4f5e2fd65ad95472a0d990f 100644 (file)
@@ -2,6 +2,7 @@ import { Component, Input, OnInit } from '@angular/core';
 
 import * as _ from 'lodash';
 
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CdTableAction } from '../../models/cd-table-action';
 import { CdTableSelection } from '../../models/cd-table-selection';
 import { Permission } from '../../models/permissions';
@@ -30,6 +31,8 @@ export class TableActionsComponent implements OnInit {
   // Array with all visible actions
   dropDownActions: CdTableAction[] = [];
 
+  icons = Icons;
+
   constructor() {}
 
   ngOnInit() {
index 13ee5a7786ed9d7c097117ad0c9a9d14649103ad..940f989f9e3efb708546951d0ee8998ee1941d36 100644 (file)
@@ -17,7 +17,7 @@
     <!-- search -->
     <div class="input-group">
       <span class="input-group-addon">
-        <i class="glyphicon glyphicon-search"></i>
+        <i [ngClass]="[icons.search]"></i>
       </span>
       <input class="form-control"
              type="text"
@@ -27,7 +27,7 @@
         <button type="button"
                 class="btn btn-default clear-input tc_clearInputBtn"
                 (click)="updateFilter(true)">
-          <i class="icon-prepend fa fa-remove"></i>
+          <i class="icon-prepend {{ icons.destroy }}"></i>
         </button>
       </span>
     </div>
@@ -53,7 +53,7 @@
         <a dropdownToggle
            class="btn btn-sm btn-default dropdown-toggle tc_columnBtn"
            data-toggle="dropdown">
-          <i class="fa fa-lg fa-table"></i>
+          <i [ngClass]="[icons.large, icons.table]"></i>
         </a>
         <ul *dropdownMenu
             class="dropdown-menu">
@@ -75,7 +75,7 @@
     <div class="widget-toolbar tc_refreshBtn"
          *ngIf="fetchData.observers.length > 0">
       <a (click)="refreshBtn()">
-        <i class="fa fa-lg fa-refresh"
+        <i [ngClass]="[icons.large, icons.refresh]"
            [class.fa-spin]="updating || loadingIndicator"></i>
       </a>
     </div>
 
 <ng-template #checkIconTpl
              let-value="value">
-  <i class="fa fa-check fa-fw"
+  <i [ngClass]="[icons.check, icons.width]"
      [hidden]="!value"></i>
 </ng-template>
 
 <ng-template #executingTpl
              let-row="row"
              let-value="value">
-  <i class="fa fa-spinner fa-spin fa-fw"
+  <i [ngClass]="[icons.spinner, icons.width, icons.spin]"
      *ngIf="row.cdExecuting"></i>
   {{ value }}
   <span *ngIf="row.cdExecuting"
index 9539aa95550c67d389435ca1ad7eda5199ff15ea..ad94eeebae50438c42006a3929d1d218bad26723 100644 (file)
@@ -23,6 +23,7 @@ import {
 import * as _ from 'lodash';
 import { Observable, timer as observableTimer } from 'rxjs';
 
+import { Icons } from '../../../shared/enum/icons.enum';
 import { CellTemplate } from '../../enum/cell-template.enum';
 import { CdTableColumn } from '../../models/cd-table-column';
 import { CdTableFetchDataContext } from '../../models/cd-table-fetch-data-context';
@@ -138,6 +139,7 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
   selection = new CdTableSelection();
 
   tableColumns: CdTableColumn[];
+  icons = Icons;
   cellTemplates: {
     [key: string]: TemplateRef<any>;
   } = {};
@@ -146,10 +148,10 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O
   loadingIndicator = true;
   loadingError = false;
   paginationClasses = {
-    pagerLeftArrow: 'i fa fa-angle-double-left',
-    pagerRightArrow: 'i fa fa-angle-double-right',
-    pagerPrevious: 'i fa fa-angle-left',
-    pagerNext: 'i fa fa-angle-right'
+    pagerLeftArrow: Icons.leftArrowDouble,
+    pagerRightArrow: Icons.rightArrowDouble,
+    pagerPrevious: Icons.leftArrow,
+    pagerNext: Icons.rightArrow
   };
   userConfig: CdUserConfig = {};
   tableName: string;
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/enum/icons.enum.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/enum/icons.enum.ts
new file mode 100644 (file)
index 0000000..cd4d5e6
--- /dev/null
@@ -0,0 +1,69 @@
+export enum Icons {
+  /* Icons for Symbol */
+  add = 'fa fa-plus', // Create, Add
+  addCircle = 'fa fa-plus-circle', // Plus with Circle
+  minusCircle = 'fa fa-minus-circle', // Minus with Circle
+  edit = 'fa fa-pencil', // Edit, Edit Mode, Rename
+  destroy = 'fa fa-times', // Destroy, Remove, Delete
+  destroyCircle = 'fa fa-times-circle', // Destroy, Remove, Delete
+  exchange = 'fa fa-exchange', // Edit-Peer
+  copy = 'fa fa-copy', // Copy
+  clipboard = 'fa fa-clipboard', // Clipboard
+  flatten = 'fa-chain-broken', // Flatten, Link broken, Mark Lost
+  trash = 'fa fa-trash-o', // Move to trash
+  lock = 'fa fa-lock', // Protect
+  unlock = 'fa fa-unlock', // Unprotect
+  clone = 'fa fa-clone', // clone
+  undo = 'fa fa-undo', // Rollback, Restore
+  search = 'fa fa-search', // Search
+  start = 'fa fa-play', // Enable
+  stop = 'fa fa-stop', // Disable
+  analyse = 'fa fa-stethoscope', // Scrub
+  deepCheck = 'fa fa-cog', // Deep Scrub, Setting, Configuration
+  reweight = 'fa-balance-scale', // Reweight
+  left = 'fa fa-arrow-left', // Mark out
+  right = 'fa fa-arrow-right', // Mark in
+  down = 'fa fa-arrow-down', // Mark Down
+  erase = 'fa fa-eraser', // Purge
+  user = 'fa fa-user', // User, Initiators
+  share = 'fa fa-share-alt', // share
+  key = 'fa fa-key-modern', // S3 Keys, Swift Keys, Authentication
+  warning = 'fa fa-exclamation-triangle', // Notification warning
+  info = 'fa fa-info', // Notification information
+  infoCircle = 'fa fa-info-circle', // Info on landing page
+  questionCircle = 'fa fa-question-circle-o',
+  check = 'fa fa-check', // Notification check
+  show = 'fa fa-eye', // Show
+  hourglass = 'fa fa-hourglass-o', // Task
+  filledHourglass = 'fa fa-hourglass', // Task
+  table = 'fa fa-table', // Table,
+  spinner = 'fa spinner', // spinner, Load
+  refresh = 'fa fa-refresh', // Refresh
+  bullseye = 'fa fa-bullseye', // Target
+  disk = 'fa fa-hdd-o', // Hard disk, disks
+  server = 'fa fa-server', // Server, Portal
+  filter = 'fa fa-filter', // Filter
+  lineChart = 'fa fa-line-chart', // Line chart
+  signOut = 'fa fa-sign-out', // Sign Out
+  health = 'fa fa-heartbeat', // Health
+  circle = 'fa fa-circle', // Circle
+  bell = 'fa fa-bell', // Notification
+  tag = 'fa fa-tag', // Tag, Badge
+  leftArrow = 'fa fa-angle-left', // Left facing angle
+  rightArrow = 'fa fa-angle-right', // Right facing angle
+  leftArrowDouble = 'fa fa-angle-double-left', // Left facing Double angle
+  rightArrowDouble = 'fa fa-angle-double-right', // Left facing Double angle
+  flag = 'fa fa-flag', // OSD configuration
+
+  /* Icons for special effect */
+  width = 'fa fa-fw', // set one or more icons to the same fixed width
+  large = 'fa fa-lg', // icon becomes 33% larger
+  large2x = 'fa fa-2x', // icon becomes 50% larger
+  large3x = 'fa fa-3x', // icon becomes 3 times larger
+  stack = 'fa fa-stack', // To stack multiple icons
+  stack1x = 'fa fa-stack-1x', // To stack regularly sized icon
+  stack2x = 'fa fa-stack-2x', // To stack regularly sized icon
+  pulse = 'fa fa-pulse', // To have spinner rotate with 8 steps
+  spin = 'fa fa-spin', //  To get any icon to rotate
+  inverse = 'fa fa-inverse' // To get an alternative icon color
+}
index e0f65b9af039d30e5e3237516d79b8f3274286a3..df6e8899bf8b03b36eb027e42d5af6a4b20b2ff1 100644 (file)
@@ -50,7 +50,7 @@ describe('cd-notification classes', () => {
       expectObject(new CdNotification(), {
         application: 'Ceph',
         applicationClass: 'ceph-icon',
-        iconClass: 'fa-info',
+        iconClass: 'fa fa-info',
         message: undefined,
         options: undefined,
         textClass: 'text-info',
@@ -74,7 +74,7 @@ describe('cd-notification classes', () => {
         {
           application: 'Prometheus',
           applicationClass: 'prometheus-icon',
-          iconClass: 'fa-exclamation-triangle',
+          iconClass: 'fa fa-exclamation-triangle',
           message: 'Something failed',
           options: undefined,
           textClass: 'text-danger',
@@ -87,7 +87,7 @@ describe('cd-notification classes', () => {
 
     it('should expect the right success classes', () => {
       expectObject(new CdNotification(new CdNotificationConfig(NotificationType.success)), {
-        iconClass: 'fa-check',
+        iconClass: 'fa fa-check',
         textClass: 'text-success'
       });
     });
index cc0bebfcf6f878f6c28d8d2ce71d9d30695cf5ea..64d72b10ac8824e0dc8741e2d41bf5c8b75732cb 100644 (file)
@@ -1,4 +1,5 @@
 import { ToastOptions } from 'ng2-toastr';
+import { Icons } from '../enum/icons.enum';
 import { NotificationType } from '../enum/notification-type.enum';
 
 export class CdNotificationConfig {
@@ -26,7 +27,7 @@ export class CdNotification extends CdNotificationConfig {
   iconClass: string;
 
   private textClasses = ['text-danger', 'text-info', 'text-success'];
-  private iconClasses = ['fa-exclamation-triangle', 'fa-info', 'fa-check'];
+  private iconClasses = [Icons.warning, Icons.info, Icons.check];
 
   constructor(private config: CdNotificationConfig = new CdNotificationConfig()) {
     super(config.type, config.title, config.message, config.options, config.application);
index 573704f935e5fc058da3167e040d7ac895d300b2..2ae0e8f10b5fea18bc7ffa6ecf3fd2bc64f9b4ce 100644 (file)
@@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
 
 import * as _ from 'lodash';
 
+import { Icons } from '../../shared/enum/icons.enum';
 import { NotificationType } from '../enum/notification-type.enum';
 import { CdNotificationConfig } from '../models/cd-notification';
 import {
@@ -68,6 +69,8 @@ export class PrometheusAlertFormatter {
   }
 
   private appendSourceLink(alert: PrometheusCustomAlert, message: string): string {
-    return `${message} <a href="${alert.url}" target="_blank"><i class="fa fa-line-chart"></i></a>`;
+    return `${message} <a href="${alert.url}" target="_blank"><i class="${
+      Icons.lineChart
+    }"></i></a>`;
   }
 }
index 539ee792f4a38661c5273f8ea8e4986719ba3cda..9e73ff094128cab935206933355464a766edd9f3 100644 (file)
@@ -7,6 +7,7 @@ import { I18n } from '@ngx-translate/i18n-polyfill';
 import * as _ from 'lodash';
 
 import { TableActionsComponent } from '../app/shared/datatable/table-actions/table-actions.component';
+import { Icons } from '../app/shared/enum/icons.enum';
 import { CdFormGroup } from '../app/shared/forms/cd-form-group';
 import { Permission } from '../app/shared/models/permissions';
 import {
@@ -253,7 +254,7 @@ export class PrometheusHelper {
   }
 
   createLink(url) {
-    return `<a href="${url}" target="_blank"><i class="fa fa-line-chart"></i></a>`;
+    return `<a href="${url}" target="_blank"><i class="${Icons.lineChart}"></i></a>`;
   }
 }