import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {AppRoutingModule} from './app-routing.module';
import {AppComponent} from './app.component';
import {UserManagementComponent} from './module/pages/admin/userManagment/userManagement.component';
import {FormsModule, ReactiveFormsModule} from "@angular/forms";
import {MatFormFieldModule} from '@angular/material/form-field';
import {HTTP_INTERCEPTORS, HttpClientModule} from "@angular/common/http";
import { SignupComponent } from './module/pages/signup/signup.component';
import {StationComponent} from "./module/pages/admin/stationManagement/station/station.component";
import {ClientComponent} from "./module/pages/admin/stationManagement/client/client.component";
import {SensorComponent} from "./module/pages/admin/stationManagement/sensor/sensor.component";
import {HostComponent} from "./module/pages/admin/stationManagement/host/host.component";
import {EventEmitterService} from "./shared/event.emitter.service";

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import {MatIconModule} from "@angular/material/icon";
import {StationManagementComponent} from "./module/pages/admin/stationManagement/stationManagement.component";
import {MatSelectModule} from "@angular/material/select";
import {MatInputModule} from "@angular/material/input";
import {MAT_DATE_FORMATS, MatDateFormats,  NativeDateModule} from "@angular/material/core";
import { DataHeaderComponent } from './module/pages/admin/stationManagement/header/data-header/data-header.component';
import { ConfigHeaderComponent } from './module/pages/admin/stationManagement/header/config-header/config-header.component';

import {CjsTimline} from "./module/components/charts/Cjs-timeline/cjsTimlineMultiple.component";
import { ProViewComponent } from './module/components/pro-view/pro-view.component';
import {MatAutocompleteModule} from "@angular/material/autocomplete";
import {MatCheckboxModule} from "@angular/material/checkbox";
import { InterceptorService } from './shared/auth/interceptor.service';
import {CjsTimelineMultiple} from "./module/components/charts/Cjs-timeline-multiple/cjsTimlineMultiple.component";
import {MatButtonModule} from "@angular/material/button";
import { ThermometerComponent } from './module/components/customUX/thermometer/thermometer.component';
import { HomeComponent } from './module/pages/home/home.component';
import { LoginTailwindcssComponent } from './module/pages/login/login.component';
import {FontAwesomeModule} from "@fortawesome/angular-fontawesome";
import { SliderComponent } from './module/components/customUX/slider/slider.component';
import {MatSliderModule} from "@angular/material/slider";
import {MatCardModule} from "@angular/material/card";
import {ApiModule} from "../../projects/generated-api/src";
import {SummaryComponent} from "./module/pages/home/summary/summary.component";
import { ListIconComponent } from './module/pages/home/summary/list-icon/list-icon.component';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatNativeDateModule } from '@angular/material/core';
import { MomentDateModule } from '@angular/material-moment-adapter';
import { StationConfigComponent } from './module/pages/home/station-config/station-config.component';
import {MatTreeModule} from "@angular/material/tree";
import { FormDialogComponent } from './module/components/customUX/forms/form-dialog/form-dialog.component';

const MY_DATE_FORMATS: MatDateFormats = {
  parse: {
    dateInput: 'DD/MM/YYYY',
  },
  display: {
    dateInput: 'DD/MM/YYYY',
    monthYearLabel: 'MMMM YYYY',
    dateA11yLabel: 'DD/MM/YYYY',
    monthYearA11yLabel: 'MMMM YYYY',
  },
};
@NgModule({
    declarations: [
        AppComponent,
        UserManagementComponent,
        SignupComponent,
        StationComponent,
        HostComponent,
        ClientComponent,
        SensorComponent,
        StationManagementComponent,
        SummaryComponent,
        DataHeaderComponent,
        ConfigHeaderComponent,
        CjsTimline,
        ProViewComponent,
        CjsTimelineMultiple,
        ThermometerComponent,
        HomeComponent,
        LoginTailwindcssComponent,
        SliderComponent,
        SummaryComponent,
        ListIconComponent,
        StationConfigComponent,
        FormDialogComponent
    ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    ReactiveFormsModule,
    HttpClientModule,
    FormsModule,
    BrowserAnimationsModule,
    MatIconModule,
    MatFormFieldModule,
    MatSelectModule,
    MatDatepickerModule,
    MatInputModule,
    MatNativeDateModule,
    MatAutocompleteModule,
    MatCheckboxModule,
    MatButtonModule,
    ApiModule,
    FontAwesomeModule,
    MatSliderModule,
    MatCardModule,
    MatDatepickerModule,
    NativeDateModule,
    MomentDateModule,
    MatTreeModule
  ],
  //Todo remove old swagger client
  providers: [EventEmitterService,{provide:HTTP_INTERCEPTORS,useClass:InterceptorService,multi:true},{provide: MAT_DATE_FORMATS, useValue: MY_DATE_FORMATS}],
  bootstrap: [AppComponent],
})
export class AppModule {
}