blob: 5244bb267b0df23b733f30125a7139f5e263d1e2 [file] [log] [blame]
kumaran.m3b4814a2020-05-01 19:48:54 +05301/*
2 Copyright 2020 TATA ELXSI
3
4 Licensed under the Apache License, Version 2.0 (the 'License');
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15
16 Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
17*/
18/**
19 * @file Instance Module file
20 */
21import { CommonModule, LOCATION_INITIALIZED } from '@angular/common';
Barath Kumar R5abb2742020-11-22 20:15:10 +053022import { HttpClient, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
kumaran.m3b4814a2020-05-01 19:48:54 +053023import { APP_INITIALIZER, Injector, NgModule } from '@angular/core';
24import { FormsModule, ReactiveFormsModule } from '@angular/forms';
25import { BrowserModule } from '@angular/platform-browser';
26import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
27import { RouterModule } from '@angular/router';
28import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
29import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
30import { TranslateHttpLoader } from '@ngx-translate/http-loader';
31import { NotifierModule, NotifierOptions } from 'angular-notifier';
32import { AuthInterceptorService } from 'AuthInterceptorService';
33import { HeaderComponent } from 'HeaderComponent';
34import { LayoutComponent } from 'LayoutComponent';
35import { Ng2SmartTableModule } from 'ng2-smart-table';
36import { RestService } from 'RestService';
37import { SidebarComponent } from 'SidebarComponent';
38import { AppComponent } from './AppComponent';
39
40import { appRoutes } from './approutes.module';
41
42import { DataService } from 'DataService';
43import { ProjectService } from 'ProjectService';
44import { SharedService } from 'SharedService';
45
46import { CodemirrorModule } from '@ctrl/ngx-codemirror';
47import { NgSelectModule } from '@ng-select/ng-select';
48
49import { NgIdleKeepaliveModule } from '@ng-idle/keepalive';
50import { AuthenticationService } from 'AuthenticationService';
51import { AuthGuardService } from 'AuthGuardService';
52import { BreadcrumbComponent } from 'BreadCrumb';
SANDHYA.JSa9816552022-04-12 09:07:08 +053053import { ChangePasswordComponent } from 'ChangePasswordComponent';
54import { ChangePasswordModule } from 'ChangePasswordModule';
kumaran.m3b4814a2020-05-01 19:48:54 +053055import { ComposePackages } from 'ComposePackages';
56import { ConfirmationTopologyComponent } from 'ConfirmationTopology';
57import { DeleteComponent } from 'DeleteComponent';
58import { DeviceCheckService } from 'DeviceCheckService';
59import { GoToTopDirective } from 'GoToTopDirective';
60import { InstantiateNetSliceTemplateComponent } from 'InstantiateNetSliceTemplate';
61import { InstantiateNsComponent } from 'InstantiateNs';
62import { LoaderModule } from 'LoaderModule';
63import { LoginComponent } from 'LoginComponent';
64import { NetsliceInstancesActionComponent } from 'NetsliceInstancesActionComponent';
65import { NetslicePackagesActionComponent } from 'NetslicePackagesAction';
66import { NSInstancesActionComponent } from 'NSInstancesActionComponent';
67import { NsPackagesActionComponent } from 'NsPackagesAction';
SANDHYA.JS99144582022-04-27 17:22:35 +053068import { NsUpdateComponent } from 'NsUpdateComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053069import { PageNotFoundComponent } from 'PageNotFound';
70import { PDUInstancesActionComponent } from 'PDUInstancesActionComponent';
71import { ProjectLinkComponent } from 'ProjectLinkComponent';
72import { ProjectsActionComponent } from 'ProjectsAction';
Barath Kumar R07698ab2021-03-30 11:50:42 +053073import { ScalingComponent } from 'ScalingComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053074import { SDNControllerActionComponent } from 'SDNControllerActionComponent';
SANDHYA.JS4a7a5422021-05-15 15:35:22 +053075import { SharedModule } from 'SharedModule';
kumaran.m3b4814a2020-05-01 19:48:54 +053076import { ShowInfoComponent } from 'ShowInfoComponent';
SANDHYA.JS3d81a282022-05-02 08:25:39 +053077import { StartStopRebuildComponent } from 'StartStopRebuildComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053078import { SwitchProjectComponent } from 'SwitchProjectComponent';
79import { UsersActionComponent } from 'UsersActionComponent';
80import { UserSettingsComponent } from 'UserSettingsComponent';
SANDHYA.JS017df362022-05-02 06:57:11 +053081import { VerticalScalingComponent } from 'VerticalScalingComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053082import { VimAccountsActionComponent } from 'VimAccountsAction';
SANDHYA.JSfced3d42022-04-28 20:28:17 +053083import { VmMigrationComponent } from 'VmMigrationComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053084import { VNFInstancesActionComponent } from 'VNFInstancesActionComponent';
85import { VNFLinkComponent } from 'VNFLinkComponent';
86import { VNFPackagesActionComponent } from 'VNFPackagesAction';
SANDHYA.JS99144582022-04-27 17:22:35 +053087import { WarningComponent } from 'WarningComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053088import { WIMAccountsActionComponent } from 'WIMAccountsAction';
89
90/**
91 * Custom angular notifier options
92 */
93const customNotifierOptions: NotifierOptions = {
94 position: { horizontal: { position: 'right' }, vertical: { position: 'top' } },
95 behaviour: { autoHide: 3000, onClick: 'hide', onMouseover: 'pauseAutoHide' }
96};
97
98/**
99 * An NgModule is a class adorned with the @NgModule decorator function.
100 * @NgModule takes a metadata object that tells Angular how to compile and run module code.
101 */
102@NgModule({
103 declarations: [
104 AppComponent,
105 LayoutComponent,
106 HeaderComponent,
107 SidebarComponent,
108 LoginComponent,
109 PageNotFoundComponent,
110 VNFPackagesActionComponent,
111 NsPackagesActionComponent,
112 NSInstancesActionComponent,
113 VNFInstancesActionComponent,
114 VNFLinkComponent,
115 NetsliceInstancesActionComponent,
116 BreadcrumbComponent,
117 DeleteComponent,
118 NetslicePackagesActionComponent,
119 UsersActionComponent,
120 VimAccountsActionComponent,
121 ProjectsActionComponent,
122 ProjectLinkComponent,
123 UserSettingsComponent,
124 ShowInfoComponent,
125 InstantiateNetSliceTemplateComponent,
126 InstantiateNsComponent,
127 ConfirmationTopologyComponent,
128 ComposePackages,
129 WIMAccountsActionComponent,
130 PDUInstancesActionComponent,
131 SDNControllerActionComponent,
132 SwitchProjectComponent,
Barath Kumar R07698ab2021-03-30 11:50:42 +0530133 GoToTopDirective,
SANDHYA.JSa9816552022-04-12 09:07:08 +0530134 ScalingComponent,
SANDHYA.JSfced3d42022-04-28 20:28:17 +0530135 ChangePasswordComponent,
SANDHYA.JS99144582022-04-27 17:22:35 +0530136 VmMigrationComponent,
137 NsUpdateComponent,
SANDHYA.JS3d81a282022-05-02 08:25:39 +0530138 WarningComponent,
SANDHYA.JS017df362022-05-02 06:57:11 +0530139 StartStopRebuildComponent,
140 VerticalScalingComponent
kumaran.m3b4814a2020-05-01 19:48:54 +0530141 ],
142 imports: [
143 NotifierModule.withConfig(customNotifierOptions),
144 CommonModule,
145 BrowserModule,
146 BrowserAnimationsModule,
147 FormsModule,
148 ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: 'never' }),
149 Ng2SmartTableModule,
150 CodemirrorModule,
151 NgSelectModule,
152 HttpClientModule,
153 TranslateModule.forRoot({
154 loader: {
155 provide: TranslateLoader,
156 useFactory: HttpLoaderFactory,
157 deps: [HttpClient]
158 }
159 }),
160 NgbModule,
161 NgSelectModule,
Barath Kumar R5abb2742020-11-22 20:15:10 +0530162 RouterModule.forRoot(appRoutes, { useHash: false, relativeLinkResolution: 'legacy' }),
kumaran.m3b4814a2020-05-01 19:48:54 +0530163 NgIdleKeepaliveModule.forRoot(),
SANDHYA.JS4a7a5422021-05-15 15:35:22 +0530164 LoaderModule,
SANDHYA.JSa9816552022-04-12 09:07:08 +0530165 SharedModule,
166 ChangePasswordModule
kumaran.m3b4814a2020-05-01 19:48:54 +0530167 ],
168 providers: [
169 {
170 provide: APP_INITIALIZER,
171 useFactory: appInitializerFactory,
172 deps: [TranslateService, Injector],
173 multi: true
174 },
175 {
176 provide: HTTP_INTERCEPTORS,
177 useClass: AuthInterceptorService,
178 multi: true
179 },
180 RestService,
181 AuthenticationService,
182 AuthGuardService,
183 DataService,
184 ProjectService,
185 SharedService,
186 DeviceCheckService
187 ],
188 bootstrap: [AppComponent],
189 entryComponents: [
190 VNFPackagesActionComponent,
191 NsPackagesActionComponent,
192 NSInstancesActionComponent,
193 VNFInstancesActionComponent,
194 VNFLinkComponent,
195 NetsliceInstancesActionComponent,
196 BreadcrumbComponent,
197 DeleteComponent,
198 NetslicePackagesActionComponent,
199 UsersActionComponent,
200 VimAccountsActionComponent,
201 ProjectsActionComponent,
202 ProjectLinkComponent,
203 UserSettingsComponent,
204 ShowInfoComponent,
205 InstantiateNetSliceTemplateComponent,
206 InstantiateNsComponent,
207 ConfirmationTopologyComponent,
208 ComposePackages,
209 WIMAccountsActionComponent,
210 PDUInstancesActionComponent,
211 SDNControllerActionComponent,
Barath Kumar R07698ab2021-03-30 11:50:42 +0530212 SwitchProjectComponent,
SANDHYA.JSa9816552022-04-12 09:07:08 +0530213 ScalingComponent,
SANDHYA.JSfced3d42022-04-28 20:28:17 +0530214 ChangePasswordComponent,
SANDHYA.JS99144582022-04-27 17:22:35 +0530215 VmMigrationComponent,
216 NsUpdateComponent,
SANDHYA.JS3d81a282022-05-02 08:25:39 +0530217 WarningComponent,
SANDHYA.JS017df362022-05-02 06:57:11 +0530218 StartStopRebuildComponent,
219 VerticalScalingComponent
kumaran.m3b4814a2020-05-01 19:48:54 +0530220 ]
221})
222
223/** Exporting a class @exports AppModule */
224export class AppModule {
225 /** Variables declared to avoid state-less class */
226 private appModule: string;
227}
228
229/**
230 * HttpLoaderFactory is for translate service of the application.
231 */
232// tslint:disable:function-name
233export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader {
234 const now: number = new Date().getTime();
235 return new TranslateHttpLoader(http, './assets/i18n/', '.json?locale=' + now);
236}
237/**
238 * HttpLoaderFactory is for translate service of the application.
239 */
240// tslint:disable:function-name
241export function appInitializerFactory(translate: TranslateService, injector: Injector): Object {
242 // tslint:disable-next-line: no-any
243 return async (): Promise<any> => {
244 await injector.get(LOCATION_INITIALIZED, Promise.resolve(null));
245 translate.setDefaultLang('en');
246 const languageCode: string = localStorage.getItem('languageCode');
247 if (languageCode !== null && languageCode !== undefined && languageCode !== '') {
SANDHYA.JSa9816552022-04-12 09:07:08 +0530248 await translate.use(languageCode).toPromise().catch((): void => {
kumaran.m3b4814a2020-05-01 19:48:54 +0530249 translate.setDefaultLang('en');
250 });
251 } else {
252 await translate.use('en').toPromise();
253 localStorage.setItem('languageCode', 'en');
254 }
255 };
256}