blob: 1f58a5f6b06338d7cc412acdbdebd8c01f4a5a0d [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';
77import { VimAccountsActionComponent } from 'VimAccountsAction';
SANDHYA.JSfced3d42022-04-28 20:28:17 +053078import { VmMigrationComponent } from 'VmMigrationComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053079import { VNFInstancesActionComponent } from 'VNFInstancesActionComponent';
80import { VNFLinkComponent } from 'VNFLinkComponent';
81import { VNFPackagesActionComponent } from 'VNFPackagesAction';
SANDHYA.JS99144582022-04-27 17:22:35 +053082import { WarningComponent } from 'WarningComponent';
kumaran.m3b4814a2020-05-01 19:48:54 +053083import { WIMAccountsActionComponent } from 'WIMAccountsAction';
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +053084import { AppComponent } from './AppComponent';
85import { appRoutes } from './approutes.module';
kumaran.m3b4814a2020-05-01 19:48:54 +053086
87/**
88 * Custom angular notifier options
89 */
90const customNotifierOptions: NotifierOptions = {
91 position: { horizontal: { position: 'right' }, vertical: { position: 'top' } },
92 behaviour: { autoHide: 3000, onClick: 'hide', onMouseover: 'pauseAutoHide' }
93};
94
95/**
96 * An NgModule is a class adorned with the @NgModule decorator function.
97 * @NgModule takes a metadata object that tells Angular how to compile and run module code.
98 */
99@NgModule({
100 declarations: [
101 AppComponent,
102 LayoutComponent,
103 HeaderComponent,
104 SidebarComponent,
105 LoginComponent,
106 PageNotFoundComponent,
107 VNFPackagesActionComponent,
108 NsPackagesActionComponent,
109 NSInstancesActionComponent,
110 VNFInstancesActionComponent,
111 VNFLinkComponent,
112 NetsliceInstancesActionComponent,
113 BreadcrumbComponent,
114 DeleteComponent,
115 NetslicePackagesActionComponent,
116 UsersActionComponent,
117 VimAccountsActionComponent,
118 ProjectsActionComponent,
119 ProjectLinkComponent,
120 UserSettingsComponent,
121 ShowInfoComponent,
122 InstantiateNetSliceTemplateComponent,
123 InstantiateNsComponent,
124 ConfirmationTopologyComponent,
125 ComposePackages,
126 WIMAccountsActionComponent,
127 PDUInstancesActionComponent,
128 SDNControllerActionComponent,
129 SwitchProjectComponent,
Barath Kumar R07698ab2021-03-30 11:50:42 +0530130 GoToTopDirective,
SANDHYA.JSa9816552022-04-12 09:07:08 +0530131 ScalingComponent,
SANDHYA.JSfced3d42022-04-28 20:28:17 +0530132 ChangePasswordComponent,
SANDHYA.JS99144582022-04-27 17:22:35 +0530133 VmMigrationComponent,
134 NsUpdateComponent,
SANDHYA.JS3d81a282022-05-02 08:25:39 +0530135 WarningComponent,
SANDHYA.JS017df362022-05-02 06:57:11 +0530136 StartStopRebuildComponent,
SANDHYA.JS219fe612024-01-23 15:52:43 +0530137 HealingComponent
kumaran.m3b4814a2020-05-01 19:48:54 +0530138 ],
139 imports: [
140 NotifierModule.withConfig(customNotifierOptions),
141 CommonModule,
142 BrowserModule,
143 BrowserAnimationsModule,
144 FormsModule,
145 ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: 'never' }),
146 Ng2SmartTableModule,
147 CodemirrorModule,
148 NgSelectModule,
149 HttpClientModule,
150 TranslateModule.forRoot({
151 loader: {
152 provide: TranslateLoader,
153 useFactory: HttpLoaderFactory,
154 deps: [HttpClient]
155 }
156 }),
157 NgbModule,
158 NgSelectModule,
SANDHYA.JSc84f1122024-06-04 21:50:03 +0530159 RouterModule.forRoot(appRoutes, { useHash: false }),
kumaran.m3b4814a2020-05-01 19:48:54 +0530160 NgIdleKeepaliveModule.forRoot(),
SANDHYA.JS4a7a5422021-05-15 15:35:22 +0530161 LoaderModule,
SANDHYA.JSa9816552022-04-12 09:07:08 +0530162 SharedModule,
SANDHYA.JS1b17c432023-04-26 17:54:57 +0530163 ChangePasswordModule,
164 ToastrModule.forRoot({
165 timeOut: 500,
166 positionClass: 'toast-bottom-right'
167 })
kumaran.m3b4814a2020-05-01 19:48:54 +0530168 ],
169 providers: [
170 {
171 provide: APP_INITIALIZER,
172 useFactory: appInitializerFactory,
173 deps: [TranslateService, Injector],
174 multi: true
175 },
176 {
177 provide: HTTP_INTERCEPTORS,
178 useClass: AuthInterceptorService,
179 multi: true
180 },
181 RestService,
182 AuthenticationService,
183 AuthGuardService,
184 DataService,
185 ProjectService,
186 SharedService,
187 DeviceCheckService
188 ],
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +0530189 bootstrap: [AppComponent]
kumaran.m3b4814a2020-05-01 19:48:54 +0530190})
191
192/** Exporting a class @exports AppModule */
193export class AppModule {
194 /** Variables declared to avoid state-less class */
195 private appModule: string;
196}
197
198/**
199 * HttpLoaderFactory is for translate service of the application.
200 */
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +0530201/* eslint-disable */
kumaran.m3b4814a2020-05-01 19:48:54 +0530202export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader {
203 const now: number = new Date().getTime();
204 return new TranslateHttpLoader(http, './assets/i18n/', '.json?locale=' + now);
205}
206/**
207 * HttpLoaderFactory is for translate service of the application.
208 */
kumaran.m3b4814a2020-05-01 19:48:54 +0530209export function appInitializerFactory(translate: TranslateService, injector: Injector): Object {
SANDHYA.JS0a34dfa2023-04-25 23:59:41 +0530210 // eslint-disable-next-line @typescript-eslint/no-explicit-any
kumaran.m3b4814a2020-05-01 19:48:54 +0530211 return async (): Promise<any> => {
212 await injector.get(LOCATION_INITIALIZED, Promise.resolve(null));
213 translate.setDefaultLang('en');
SANDHYA.JS5b35bcd2023-04-27 15:11:06 +0530214 const languageCode: string = sessionStorage.getItem('languageCode');
kumaran.m3b4814a2020-05-01 19:48:54 +0530215 if (languageCode !== null && languageCode !== undefined && languageCode !== '') {
SANDHYA.JSa9816552022-04-12 09:07:08 +0530216 await translate.use(languageCode).toPromise().catch((): void => {
kumaran.m3b4814a2020-05-01 19:48:54 +0530217 translate.setDefaultLang('en');
218 });
219 } else {
220 await translate.use('en').toPromise();
SANDHYA.JS5b35bcd2023-04-27 15:11:06 +0530221 sessionStorage.setItem('languageCode', 'en');
kumaran.m3b4814a2020-05-01 19:48:54 +0530222 }
223 };
224}