161 lines
6.6 KiB
TypeScript
161 lines
6.6 KiB
TypeScript
import { APP_INITIALIZER, NgModule, TRANSLATIONS, LOCALE_ID, TRANSLATIONS_FORMAT, Injector } from '@angular/core';
|
|
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
import { BrowserModule } from '@angular/platform-browser';
|
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
|
|
import { MessagesModule } from 'primeng/messages';
|
|
import { DropdownModule } from 'primeng/dropdown';
|
|
import { InputTextModule } from 'primeng/inputtext';
|
|
import { ButtonModule } from 'primeng/button';
|
|
import { MenuModule } from 'primeng/menu';
|
|
import { ProgressSpinnerModule } from 'primeng/progressspinner';
|
|
import { ConfirmDialogModule } from 'primeng/confirmdialog';
|
|
import { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';
|
|
import { ConfirmationService, MessageService } from 'primeng/api';
|
|
import { ToastModule } from 'primeng/toast';
|
|
import { ScrollPanelModule } from 'primeng/scrollpanel';
|
|
import { CheckboxModule } from 'primeng/checkbox';
|
|
|
|
import { AppComponent } from './app.component';
|
|
import { AppMainComponent } from './app.main.component';
|
|
import { AppMenuComponent } from './app.menu.component';
|
|
import { AppMenuitemComponent } from './app.menuitem.component';
|
|
import { AppTopbarComponent } from './app.topbar.component';
|
|
import { AppFooterComponent } from './app.footer.component';
|
|
import { AppInlineProfileComponent } from './app.profile.component';
|
|
|
|
import { DashboardComponent } from './dashboard/dashboard.component';
|
|
import { ReportComponent } from './report.component';
|
|
import { PageNotFoundComponent } from './page-not-found.component';
|
|
|
|
import { StoreModule, ActionsSubject } from '@ngrx/store';
|
|
import { EffectsModule } from '@ngrx/effects';
|
|
import { AppDispatcher } from './app-actions';
|
|
import { StoreDevtoolsModule } from '@ngrx/store-devtools';
|
|
import { reducers, metaReducers } from './reducers';
|
|
|
|
import { MenuService } from './app.menu.service';
|
|
import { JobService } from './domain/services/job.service';
|
|
import { ClientService } from './domain/services/client.service';
|
|
import { PilotService } from './domain/services/pilot.service';
|
|
import { ProductService } from './domain/services/product.service';
|
|
import { VehicleService } from './domain/services/vehicle.service';
|
|
import { CustomerService } from './domain/services/customer.service';
|
|
import { UserService } from './domain/services/user.service';
|
|
import { GeocodeService } from './shared/geocode.service';
|
|
import { TrackService } from './domain/services/track.service';
|
|
|
|
import { AppRoutingModule } from './app-routing.module';
|
|
|
|
import { environment } from '@environments/environment';
|
|
import { AppConfigService } from './domain/services/app-config.service';
|
|
import { AuthInterceptor } from './domain/services/auth-interceptor.service';
|
|
|
|
import { SettingsGuard } from './domain/guards/settings-guard.service';
|
|
import { LanguageSwicherComponent } from './language-swicher.component';
|
|
|
|
import { AppEffects } from './effects/app.effects';
|
|
import { SubPlansEffects } from './effects/sub-plans.effects';
|
|
|
|
import { Utils } from './shared/utils';
|
|
import { AppInjector } from './app-injector';
|
|
import { BaseComp } from './shared/base/base.component';
|
|
import { MapBaseComp } from './shared/base/map-base.component';
|
|
import { MapEditBaseComp } from './shared/base/mapedit-base.component';
|
|
import { BillingService } from './domain/services/billing.service';
|
|
import { AppPasswordResetComp } from './pages/app.password-reset.component';
|
|
import { GlobalModule } from './shared/global.module';
|
|
import { HttpCancelService } from './domain/services/httpcancel.service';
|
|
import { ManageHttpInterceptor } from './domain/services/managehttp.interceptor.service';
|
|
import { InvoiceService } from '@app/domain/services/invoice.service';
|
|
import '@app/shared/number.extension';
|
|
import { RoutingEffects } from './effects/routing.effects';
|
|
import { SubscriptionEffects } from './effects/subscription.effects';
|
|
import { AppSharedModule } from './shared/app-shared.module';
|
|
import { GlobalErrorInterceptor } from './domain/services/global-error.interceptor';
|
|
|
|
// Use the require method provided by webpack
|
|
declare const require;
|
|
export function translationsFactory(locale: string) {
|
|
locale = Utils.getLang(locale)
|
|
if (locale === 'en') // default, does not need to load translation file
|
|
return '';
|
|
else
|
|
return require(`raw-loader!../locale/messages.${locale}.xlf`).default;
|
|
}
|
|
|
|
@NgModule({
|
|
imports: [
|
|
BrowserModule, BrowserAnimationsModule, HttpClientModule, GlobalModule,
|
|
InputTextModule, ButtonModule, MenuModule, ProgressSpinnerModule, ScrollPanelModule,
|
|
MessagesModule, ToastModule, ConfirmDialogModule, DropdownModule, CheckboxModule, AppSharedModule,
|
|
// The store that defines our app state
|
|
StoreModule.forRoot(reducers, {
|
|
metaReducers,
|
|
runtimeChecks: {
|
|
strictStateImmutability: false,
|
|
strictActionImmutability: false,
|
|
// disabled until https://github.com/ngrx/platform/issues/2109 is resolved
|
|
/* strictActionImmutability: true, */
|
|
},
|
|
}),
|
|
// Must instrument after importing StoreModule
|
|
StoreDevtoolsModule.instrument({ name: 'AgMission', maxAge: 15, logOnly: environment.production }),
|
|
AppRoutingModule,
|
|
EffectsModule.forRoot([AppEffects, SubPlansEffects, RoutingEffects, SubscriptionEffects]),
|
|
],
|
|
declarations: [
|
|
BaseComp,
|
|
MapBaseComp,
|
|
MapEditBaseComp,
|
|
PageNotFoundComponent,
|
|
DashboardComponent,
|
|
AppComponent,
|
|
AppMainComponent,
|
|
AppMenuComponent,
|
|
AppMenuitemComponent,
|
|
AppInlineProfileComponent,
|
|
AppTopbarComponent,
|
|
AppFooterComponent,
|
|
LanguageSwicherComponent,
|
|
ReportComponent,
|
|
AppPasswordResetComp,
|
|
],
|
|
providers: [
|
|
{
|
|
provide: TRANSLATIONS,
|
|
useFactory: translationsFactory,
|
|
deps: [LOCALE_ID]
|
|
},
|
|
{ provide: TRANSLATIONS_FORMAT, useValue: 'xlf' },
|
|
AppConfigService,
|
|
HttpCancelService,
|
|
{ provide: HTTP_INTERCEPTORS, useClass: ManageHttpInterceptor, multi: true },
|
|
{
|
|
provide: HTTP_INTERCEPTORS,
|
|
useClass: AuthInterceptor,
|
|
multi: true
|
|
},
|
|
{
|
|
provide: HTTP_INTERCEPTORS,
|
|
useClass: GlobalErrorInterceptor,
|
|
multi: true
|
|
},
|
|
{
|
|
provide: ActionsSubject, useClass: AppDispatcher
|
|
},
|
|
MenuService, MessageService, ConfirmationService, DynamicDialogRef, DynamicDialogConfig,
|
|
SettingsGuard, UserService, CustomerService, ClientService, JobService, ProductService, PilotService, TrackService,
|
|
VehicleService, GeocodeService, BillingService, InvoiceService
|
|
],
|
|
bootstrap: [AppComponent],
|
|
exports: [],
|
|
entryComponents: []
|
|
})
|
|
|
|
export class AppModule {
|
|
constructor(private readonly injector: Injector) {
|
|
AppInjector.setInjector(injector);
|
|
}
|
|
}
|