blob: cd145c31d31d46e9e04bda21a561790de326095f [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';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053028import { CodemirrorModule } from '@ctrl/ngx-codemirror';
kumaran.m3b4814a2020-05-01 19:48:54 +053029import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053030import { NgIdleKeepaliveModule } from '@ng-idle/keepalive';
31import { NgSelectModule } from '@ng-select/ng-select';
kumaran.m3b4814a2020-05-01 19:48:54 +053032import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
33import { TranslateHttpLoader } from '@ngx-translate/http-loader';
34import { NotifierModule, NotifierOptions } from 'angular-notifier';
kumaran.m3b4814a2020-05-01 19:48:54 +053035import { AuthenticationService } from 'AuthenticationService';
36import { AuthGuardService } from 'AuthGuardService';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053037import { AuthInterceptorService } from 'AuthInterceptorService';
kumaran.m3b4814a2020-05-01 19:48:54 +053038import { BreadcrumbComponent } from 'BreadCrumb';
SANDHYA.JSa9816552022-04-12 09:07:08 +053039import { ChangePasswordComponent } from 'ChangePasswordComponent';
40import { ChangePasswordModule } from 'ChangePasswordModule';
kumaran.m3b4814a2020-05-01 19:48:54 +053041import { ComposePackages } from 'ComposePackages';
42import { ConfirmationTopologyComponent } from 'ConfirmationTopology';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053043import { DataService } from 'DataService';
kumaran.m3b4814a2020-05-01 19:48:54 +053044import { DeleteComponent } from 'DeleteComponent';
45import { DeviceCheckService } from 'DeviceCheckService';
46import { GoToTopDirective } from 'GoToTopDirective';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053047import { HeaderComponent } from 'HeaderComponent';
SANDHYA.JS219fe612024-01-23 15:52:43 +053048import { HealingComponent } from 'HealingComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053049import { InstantiateNetSliceTemplateComponent } from 'InstantiateNetSliceTemplate';
50import { InstantiateNsComponent } from 'InstantiateNs';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053051import { LayoutComponent } from 'LayoutComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053052import { LoaderModule } from 'LoaderModule';
53import { LoginComponent } from 'LoginComponent';
54import { NetsliceInstancesActionComponent } from 'NetsliceInstancesActionComponent';
55import { NetslicePackagesActionComponent } from 'NetslicePackagesAction';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053056import { Ng2SmartTableModule } from 'ng2-smart-table';
SANDHYA.JS1b17c432023-04-26 17:54:57 +053057import { ToastrModule } from 'ngx-toastr';
SANDHYA.JS07decc02024-07-01 21:50:48 +053058import { NSConfigTemplateActionComponent } from 'NSCONFIGTEMPLATEACTION';
kumaran.m3b4814a2020-05-01 19:48:54 +053059import { NSInstancesActionComponent } from 'NSInstancesActionComponent';
60import { NsPackagesActionComponent } from 'NsPackagesAction';
SANDHYA.JS99144582022-04-27 17:22:35 +053061import { NsUpdateComponent } from 'NsUpdateComponent';
SANDHYA.JS26570112024-07-05 21:35:46 +053062import { OkaPackagesActionComponent } from 'OkaPackagesActionComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053063import { PageNotFoundComponent } from 'PageNotFound';
64import { PDUInstancesActionComponent } from 'PDUInstancesActionComponent';
65import { ProjectLinkComponent } from 'ProjectLinkComponent';
66import { ProjectsActionComponent } from 'ProjectsAction';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053067import { ProjectService } from 'ProjectService';
68import { RestService } from 'RestService';
Barath Kumar R07698ab2021-03-30 11:50:42 +053069import { ScalingComponent } from 'ScalingComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053070import { SDNControllerActionComponent } from 'SDNControllerActionComponent';
SANDHYA.JS4a7a5422021-05-15 15:35:22 +053071import { SharedModule } from 'SharedModule';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053072import { SharedService } from 'SharedService';
kumaran.m3b4814a2020-05-01 19:48:54 +053073import { ShowInfoComponent } from 'ShowInfoComponent';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053074import { SidebarComponent } from 'SidebarComponent';
SANDHYA.JS3d81a282022-05-02 08:25:39 +053075import { StartStopRebuildComponent } from 'StartStopRebuildComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053076import { SwitchProjectComponent } from 'SwitchProjectComponent';
77import { UsersActionComponent } from 'UsersActionComponent';
78import { UserSettingsComponent } from 'UserSettingsComponent';
79import { VimAccountsActionComponent } from 'VimAccountsAction';
SANDHYA.JSfced3d42022-04-28 20:28:17 +053080import { VmMigrationComponent } from 'VmMigrationComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053081import { VNFInstancesActionComponent } from 'VNFInstancesActionComponent';
82import { VNFLinkComponent } from 'VNFLinkComponent';
83import { VNFPackagesActionComponent } from 'VNFPackagesAction';
SANDHYA.JS99144582022-04-27 17:22:35 +053084import { WarningComponent } from 'WarningComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053085import { WIMAccountsActionComponent } from 'WIMAccountsAction';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053086import { AppComponent } from './AppComponent';
87import { appRoutes } from './approutes.module';
kumaran.m3b4814a2020-05-01 19:48:54 +053088
89/**
90 * Custom angular notifier options
91 */
92const customNotifierOptions: NotifierOptions = {
93 position: { horizontal: { position: 'right' }, vertical: { position: 'top' } },
94 behaviour: { autoHide: 3000, onClick: 'hide', onMouseover: 'pauseAutoHide' }
95};
96
97/**
98 * An NgModule is a class adorned with the @NgModule decorator function.
99 * @NgModule takes a metadata object that tells Angular how to compile and run module code.
100 */
101@NgModule({
102 declarations: [
103 AppComponent,
104 LayoutComponent,
105 HeaderComponent,
106 SidebarComponent,
107 LoginComponent,
108 PageNotFoundComponent,
109 VNFPackagesActionComponent,
110 NsPackagesActionComponent,
111 NSInstancesActionComponent,
112 VNFInstancesActionComponent,
113 VNFLinkComponent,
114 NetsliceInstancesActionComponent,
115 BreadcrumbComponent,
116 DeleteComponent,
117 NetslicePackagesActionComponent,
118 UsersActionComponent,
119 VimAccountsActionComponent,
120 ProjectsActionComponent,
121 ProjectLinkComponent,
122 UserSettingsComponent,
123 ShowInfoComponent,
124 InstantiateNetSliceTemplateComponent,
125 InstantiateNsComponent,
126 ConfirmationTopologyComponent,
127 ComposePackages,
128 WIMAccountsActionComponent,
129 PDUInstancesActionComponent,
130 SDNControllerActionComponent,
131 SwitchProjectComponent,
Barath Kumar R07698ab2021-03-30 11:50:42 +0530132 GoToTopDirective,
SANDHYA.JSa9816552022-04-12 09:07:08 +0530133 ScalingComponent,
SANDHYA.JSfced3d42022-04-28 20:28:17 +0530134 ChangePasswordComponent,
SANDHYA.JS99144582022-04-27 17:22:35 +0530135 VmMigrationComponent,
136 NsUpdateComponent,
SANDHYA.JS3d81a282022-05-02 08:25:39 +0530137 WarningComponent,
SANDHYA.JS017df362022-05-02 06:57:11 +0530138 StartStopRebuildComponent,
SANDHYA.JS07decc02024-07-01 21:50:48 +0530139 HealingComponent,
SANDHYA.JS26570112024-07-05 21:35:46 +0530140 NSConfigTemplateActionComponent,
141 OkaPackagesActionComponent
kumaran.m3b4814a2020-05-01 19:48:54 +0530142 ],
143 imports: [
144 NotifierModule.withConfig(customNotifierOptions),
145 CommonModule,
146 BrowserModule,
147 BrowserAnimationsModule,
148 FormsModule,
149 ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: 'never' }),
150 Ng2SmartTableModule,
151 CodemirrorModule,
152 NgSelectModule,
153 HttpClientModule,
154 TranslateModule.forRoot({
155 loader: {
156 provide: TranslateLoader,
157 useFactory: HttpLoaderFactory,
158 deps: [HttpClient]
159 }
160 }),
161 NgbModule,
162 NgSelectModule,
SANDHYA.JSc84f1122024-06-04 21:50:03 +0530163 RouterModule.forRoot(appRoutes, { useHash: false }),
kumaran.m3b4814a2020-05-01 19:48:54 +0530164 NgIdleKeepaliveModule.forRoot(),
SANDHYA.JS4a7a5422021-05-15 15:35:22 +0530165 LoaderModule,
SANDHYA.JSa9816552022-04-12 09:07:08 +0530166 SharedModule,
SANDHYA.JS1b17c432023-04-26 17:54:57 +0530167 ChangePasswordModule,
168 ToastrModule.forRoot({
169 timeOut: 500,
170 positionClass: 'toast-bottom-right'
171 })
kumaran.m3b4814a2020-05-01 19:48:54 +0530172 ],
173 providers: [
174 {
175 provide: APP_INITIALIZER,
176 useFactory: appInitializerFactory,
177 deps: [TranslateService, Injector],
178 multi: true
179 },
180 {
181 provide: HTTP_INTERCEPTORS,
182 useClass: AuthInterceptorService,
183 multi: true
184 },
185 RestService,
186 AuthenticationService,
187 AuthGuardService,
188 DataService,
189 ProjectService,
190 SharedService,
191 DeviceCheckService
192 ],
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +0530193 bootstrap: [AppComponent]
kumaran.m3b4814a2020-05-01 19:48:54 +0530194})
195
196/** Exporting a class @exports AppModule */
197export class AppModule {
198 /** Variables declared to avoid state-less class */
199 private appModule: string;
200}
201
202/**
203 * HttpLoaderFactory is for translate service of the application.
204 */
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +0530205/* eslint-disable */
kumaran.m3b4814a2020-05-01 19:48:54 +0530206export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader {
207 const now: number = new Date().getTime();
208 return new TranslateHttpLoader(http, './assets/i18n/', '.json?locale=' + now);
209}
210/**
211 * HttpLoaderFactory is for translate service of the application.
212 */
kumaran.m3b4814a2020-05-01 19:48:54 +0530213export function appInitializerFactory(translate: TranslateService, injector: Injector): Object {
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +0530214 // eslint-disable-next-line @typescript-eslint/no-explicit-any
kumaran.m3b4814a2020-05-01 19:48:54 +0530215 return async (): Promise<any> => {
216 await injector.get(LOCATION_INITIALIZED, Promise.resolve(null));
217 translate.setDefaultLang('en');
SANDHYA.JS5b35bcd2023-04-27 15:11:06 +0530218 const languageCode: string = sessionStorage.getItem('languageCode');
kumaran.m3b4814a2020-05-01 19:48:54 +0530219 if (languageCode !== null && languageCode !== undefined && languageCode !== '') {
SANDHYA.JSa9816552022-04-12 09:07:08 +0530220 await translate.use(languageCode).toPromise().catch((): void => {
kumaran.m3b4814a2020-05-01 19:48:54 +0530221 translate.setDefaultLang('en');
222 });
223 } else {
224 await translate.use('en').toPromise();
SANDHYA.JS5b35bcd2023-04-27 15:11:06 +0530225 sessionStorage.setItem('languageCode', 'en');
kumaran.m3b4814a2020-05-01 19:48:54 +0530226 }
227 };
228}