blob: 5a9c306989454629f9b52dd0c246426b2a82b783 [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';
kumaran.m3b4814a2020-05-01 19:48:54 +053058import { NSInstancesActionComponent } from 'NSInstancesActionComponent';
59import { NsPackagesActionComponent } from 'NsPackagesAction';
SANDHYA.JS99144582022-04-27 17:22:35 +053060import { NsUpdateComponent } from 'NsUpdateComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053061import { PageNotFoundComponent } from 'PageNotFound';
62import { PDUInstancesActionComponent } from 'PDUInstancesActionComponent';
63import { ProjectLinkComponent } from 'ProjectLinkComponent';
64import { ProjectsActionComponent } from 'ProjectsAction';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053065import { ProjectService } from 'ProjectService';
66import { RestService } from 'RestService';
Barath Kumar R07698ab2021-03-30 11:50:42 +053067import { ScalingComponent } from 'ScalingComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053068import { SDNControllerActionComponent } from 'SDNControllerActionComponent';
SANDHYA.JS4a7a5422021-05-15 15:35:22 +053069import { SharedModule } from 'SharedModule';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053070import { SharedService } from 'SharedService';
kumaran.m3b4814a2020-05-01 19:48:54 +053071import { ShowInfoComponent } from 'ShowInfoComponent';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053072import { SidebarComponent } from 'SidebarComponent';
SANDHYA.JS3d81a282022-05-02 08:25:39 +053073import { StartStopRebuildComponent } from 'StartStopRebuildComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053074import { SwitchProjectComponent } from 'SwitchProjectComponent';
75import { UsersActionComponent } from 'UsersActionComponent';
76import { UserSettingsComponent } from 'UserSettingsComponent';
SANDHYA.JS017df362022-05-02 06:57:11 +053077import { VerticalScalingComponent } from 'VerticalScalingComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053078import { VimAccountsActionComponent } from 'VimAccountsAction';
SANDHYA.JSfced3d42022-04-28 20:28:17 +053079import { VmMigrationComponent } from 'VmMigrationComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053080import { VNFInstancesActionComponent } from 'VNFInstancesActionComponent';
81import { VNFLinkComponent } from 'VNFLinkComponent';
82import { VNFPackagesActionComponent } from 'VNFPackagesAction';
SANDHYA.JS99144582022-04-27 17:22:35 +053083import { WarningComponent } from 'WarningComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053084import { WIMAccountsActionComponent } from 'WIMAccountsAction';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053085import { AppComponent } from './AppComponent';
86import { appRoutes } from './approutes.module';
kumaran.m3b4814a2020-05-01 19:48:54 +053087
88/**
89 * Custom angular notifier options
90 */
91const customNotifierOptions: NotifierOptions = {
92 position: { horizontal: { position: 'right' }, vertical: { position: 'top' } },
93 behaviour: { autoHide: 3000, onClick: 'hide', onMouseover: 'pauseAutoHide' }
94};
95
96/**
97 * An NgModule is a class adorned with the @NgModule decorator function.
98 * @NgModule takes a metadata object that tells Angular how to compile and run module code.
99 */
100@NgModule({
101 declarations: [
102 AppComponent,
103 LayoutComponent,
104 HeaderComponent,
105 SidebarComponent,
106 LoginComponent,
107 PageNotFoundComponent,
108 VNFPackagesActionComponent,
109 NsPackagesActionComponent,
110 NSInstancesActionComponent,
111 VNFInstancesActionComponent,
112 VNFLinkComponent,
113 NetsliceInstancesActionComponent,
114 BreadcrumbComponent,
115 DeleteComponent,
116 NetslicePackagesActionComponent,
117 UsersActionComponent,
118 VimAccountsActionComponent,
119 ProjectsActionComponent,
120 ProjectLinkComponent,
121 UserSettingsComponent,
122 ShowInfoComponent,
123 InstantiateNetSliceTemplateComponent,
124 InstantiateNsComponent,
125 ConfirmationTopologyComponent,
126 ComposePackages,
127 WIMAccountsActionComponent,
128 PDUInstancesActionComponent,
129 SDNControllerActionComponent,
130 SwitchProjectComponent,
Barath Kumar R07698ab2021-03-30 11:50:42 +0530131 GoToTopDirective,
SANDHYA.JSa9816552022-04-12 09:07:08 +0530132 ScalingComponent,
SANDHYA.JSfced3d42022-04-28 20:28:17 +0530133 ChangePasswordComponent,
SANDHYA.JS99144582022-04-27 17:22:35 +0530134 VmMigrationComponent,
135 NsUpdateComponent,
SANDHYA.JS3d81a282022-05-02 08:25:39 +0530136 WarningComponent,
SANDHYA.JS017df362022-05-02 06:57:11 +0530137 StartStopRebuildComponent,
SANDHYA.JS219fe612024-01-23 15:52:43 +0530138 VerticalScalingComponent,
139 HealingComponent
kumaran.m3b4814a2020-05-01 19:48:54 +0530140 ],
141 imports: [
142 NotifierModule.withConfig(customNotifierOptions),
143 CommonModule,
144 BrowserModule,
145 BrowserAnimationsModule,
146 FormsModule,
147 ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: 'never' }),
148 Ng2SmartTableModule,
149 CodemirrorModule,
150 NgSelectModule,
151 HttpClientModule,
152 TranslateModule.forRoot({
153 loader: {
154 provide: TranslateLoader,
155 useFactory: HttpLoaderFactory,
156 deps: [HttpClient]
157 }
158 }),
159 NgbModule,
160 NgSelectModule,
Barath Kumar R5abb2742020-11-22 20:15:10 +0530161 RouterModule.forRoot(appRoutes, { useHash: false, relativeLinkResolution: 'legacy' }),
kumaran.m3b4814a2020-05-01 19:48:54 +0530162 NgIdleKeepaliveModule.forRoot(),
SANDHYA.JS4a7a5422021-05-15 15:35:22 +0530163 LoaderModule,
SANDHYA.JSa9816552022-04-12 09:07:08 +0530164 SharedModule,
SANDHYA.JS1b17c432023-04-26 17:54:57 +0530165 ChangePasswordModule,
166 ToastrModule.forRoot({
167 timeOut: 500,
168 positionClass: 'toast-bottom-right'
169 })
kumaran.m3b4814a2020-05-01 19:48:54 +0530170 ],
171 providers: [
172 {
173 provide: APP_INITIALIZER,
174 useFactory: appInitializerFactory,
175 deps: [TranslateService, Injector],
176 multi: true
177 },
178 {
179 provide: HTTP_INTERCEPTORS,
180 useClass: AuthInterceptorService,
181 multi: true
182 },
183 RestService,
184 AuthenticationService,
185 AuthGuardService,
186 DataService,
187 ProjectService,
188 SharedService,
189 DeviceCheckService
190 ],
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +0530191 bootstrap: [AppComponent]
kumaran.m3b4814a2020-05-01 19:48:54 +0530192})
193
194/** Exporting a class @exports AppModule */
195export class AppModule {
196 /** Variables declared to avoid state-less class */
197 private appModule: string;
198}
199
200/**
201 * HttpLoaderFactory is for translate service of the application.
202 */
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +0530203/* eslint-disable */
kumaran.m3b4814a2020-05-01 19:48:54 +0530204export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader {
205 const now: number = new Date().getTime();
206 return new TranslateHttpLoader(http, './assets/i18n/', '.json?locale=' + now);
207}
208/**
209 * HttpLoaderFactory is for translate service of the application.
210 */
kumaran.m3b4814a2020-05-01 19:48:54 +0530211export function appInitializerFactory(translate: TranslateService, injector: Injector): Object {
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +0530212 // eslint-disable-next-line @typescript-eslint/no-explicit-any
kumaran.m3b4814a2020-05-01 19:48:54 +0530213 return async (): Promise<any> => {
214 await injector.get(LOCATION_INITIALIZED, Promise.resolve(null));
215 translate.setDefaultLang('en');
SANDHYA.JS5b35bcd2023-04-27 15:11:06 +0530216 const languageCode: string = sessionStorage.getItem('languageCode');
kumaran.m3b4814a2020-05-01 19:48:54 +0530217 if (languageCode !== null && languageCode !== undefined && languageCode !== '') {
SANDHYA.JSa9816552022-04-12 09:07:08 +0530218 await translate.use(languageCode).toPromise().catch((): void => {
kumaran.m3b4814a2020-05-01 19:48:54 +0530219 translate.setDefaultLang('en');
220 });
221 } else {
222 await translate.use('en').toPromise();
SANDHYA.JS5b35bcd2023-04-27 15:11:06 +0530223 sessionStorage.setItem('languageCode', 'en');
kumaran.m3b4814a2020-05-01 19:48:54 +0530224 }
225 };
226}