Mark van der Wal
f014dc9f93
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
283 lines
12 KiB
TypeScript
283 lines
12 KiB
TypeScript
import { NgModule ,ModuleWithProviders} from '@angular/core';
|
|
import { CommonModule } from '@angular/common';
|
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
|
|
//external modules
|
|
import { AngularOpenlayersModule } from 'ngx-openlayers';
|
|
import { StoreModule, ActionReducer, MetaReducer } from '@ngrx/store';
|
|
import { EffectsModule } from '@ngrx/effects';
|
|
import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
|
|
|
|
//common modules
|
|
import { AppCommonModule } from '@farmmaps/common';
|
|
|
|
import { MODULE_NAME } from './module-name';
|
|
import * as mapReducers from './reducers/map.reducer';
|
|
import * as mapActions from './actions/map.actions';
|
|
import * as mapEffects from './effects/map.effects';
|
|
|
|
import { IMapState} from './models/map.state';
|
|
import { ISelectedFeatures } from './models/selected.features';
|
|
import { IItemLayer } from './models/item.layer';
|
|
import { ItemLayer} from './models/item.layer';
|
|
import { IPeriodState } from './models/period.state';
|
|
|
|
// components
|
|
import { GpsLocation} from './components/aol/gps-location/gps-location.component';
|
|
//import {Switch2D3DComponent } from './components/aol/switch2d3d/switch2d3d.component';
|
|
import {FeatureListFeatureCropfieldComponent } from './components/feature-list-feature-cropfield/feature-list-feature-cropfield.component';
|
|
import { FeatureListFeatureCroppingschemeComponent} from './components/feature-list-feature-croppingscheme/feature-list-feature-croppingscheme.component';
|
|
import { ItemWidgetListComponent} from './components/item-widget-list/item-widget-list.component';
|
|
import { AbstractItemListItemComponent, ItemListItemComponent, AbstractItemWidgetComponent } from './components/item-list-item/item-list-item.component';
|
|
import { ItemListItemContainerComponent } from './components/item-list-item-container/item-list-item-container.component';
|
|
import { AbstractItemListComponent,ItemListComponent} from './components/item-list/item-list.component';
|
|
import { AbstractSelectedItemComponent, SelectedItemComponent } from './components/selected-item/selected-item.component';
|
|
import { SelectedItemCropfieldComponent } from './components/selected-item-cropfield/selected-item-cropfield.component';
|
|
import { SelectedItemGeotiffComponent } from './components/selected-item-geotiff/selected-item-geotiff.component';
|
|
import { SelectedItemTemporalComponent} from './components/selected-item-temporal/selected-item-temporal.component';
|
|
import {SelectedItemShapeComponent } from './components/selected-item-shape/selected-item-shape.component';
|
|
import { SelectedItemContainerComponent } from './components/selected-item-container/selected-item-container.component';
|
|
import { AbstractFeatureListFeatureComponent, FeatureListFeatureComponent } from './components/feature-list-feature/feature-list-feature.component';
|
|
import {FeatureListFeatureContainerComponent } from './components/feature-list-feature-container/feature-list-feature-container.component';
|
|
import { FeatureListCroppingschemeComponent } from './components/feature-list-croppingscheme/feature-list-croppingscheme.component';
|
|
import {FeatureListCropfieldComponent } from './components/feature-list-cropfield/feature-list-cropfield.component';
|
|
import {FeatureListContainerComponent } from './components/feature-list-container/feature-list-container.component';
|
|
import { WidgetHostDirective} from './components/widget-host/widget-host.directive';
|
|
import { FeatureListComponent,AbstractFeatureListComponent} from './components/feature-list/feature-list.component';
|
|
import { FileDropTargetComponent } from './components/aol/file-drop-target/file-drop-target.component';
|
|
import { ItemVectorSourceComponent } from './components/aol/item-vector-source/item-vector-source.component';
|
|
import { ItemLayersComponent } from './components/aol/item-layers/item-layers.component';
|
|
import { ZoomToExtentComponent } from './components/aol/zoom-to-extent/zoom-to-extent.component';
|
|
import { RotationResetComponent } from './components/aol/rotation-reset/rotation-reset.component';
|
|
import { LayerListComponent } from './components/aol/layer-list/layer-list.component';
|
|
import { MetaDataModalComponent } from './components/meta-data-modal/meta-data-modal.component';
|
|
import { SelectPeriodModalComponent } from './components/select-period-modal/select-period-modal.component';
|
|
import { MapComponent } from './components/map/map.component';
|
|
import { MapSearchComponent } from './components/map-search/map-search.component';
|
|
import { MapRoutingModule } from './common-map-routing.module';
|
|
import { LegendComponent } from './components/legend/legend.component';
|
|
import { LayerVectorImageComponent } from './components/aol/layer-vector-image/layer-vector-image.component';
|
|
import {FeatureIconService} from './services/feature-icon.service';
|
|
import { GeolocationService } from './services/geolocation.service';
|
|
import {DeviceOrientationService} from './services/device-orientation.service';
|
|
import { WidgetStatusComponent } from './components/widget-status/widget-status.component';
|
|
import { ForChild} from './components/for-item/for-child.decorator';
|
|
import {ForItemType } from './components/for-item/for-itemtype.decorator';
|
|
import { ForSourceTask} from './components/for-item/for-sourcetask.decorator';
|
|
import { ForPackage } from './components/for-item/for-package.decorator';
|
|
import { PanToLocation} from './components/aol/pan-to-location/pan-to-location.component';
|
|
import {LayerSwitcher} from './components/layer-switcher/layer-switcher.component';
|
|
import {HistogramDetailsComponent} from './components/legend/histogram-details/histogram-details.component';
|
|
import {StatisticsDetailsComponent} from './components/legend/statistics-details/statistics-details.component';
|
|
|
|
export function LocalStorageSync(reducer: ActionReducer<any>): ActionReducer<any> {
|
|
const r = function(state, action) {
|
|
const r2 = reducer(state, action);
|
|
|
|
if(action.type == "@ngrx/store/update-reducers") {
|
|
let ms = window.localStorage.getItem(MODULE_NAME+"_mapState");
|
|
if(ms) {
|
|
r2["mapState"] = JSON.parse(ms);
|
|
}
|
|
}
|
|
if(action.type == "[Map] MapState" || action.type == "[Map] SetState") {
|
|
window.localStorage.setItem(MODULE_NAME + "_mapState",JSON.stringify(r2["mapState"]));
|
|
}
|
|
|
|
return r2;
|
|
};
|
|
return r;
|
|
}
|
|
|
|
const metaReducers: Array<MetaReducer<any, any>> = [LocalStorageSync];
|
|
|
|
export {
|
|
mapEffects,
|
|
mapReducers,
|
|
mapActions,
|
|
ZoomToExtentComponent,
|
|
ItemVectorSourceComponent,
|
|
ItemLayersComponent,
|
|
FileDropTargetComponent,
|
|
MapComponent,
|
|
MetaDataModalComponent,
|
|
RotationResetComponent,
|
|
MapSearchComponent,
|
|
SelectPeriodModalComponent,
|
|
LayerListComponent,
|
|
LegendComponent,
|
|
LayerVectorImageComponent,
|
|
FeatureListComponent,
|
|
WidgetHostDirective,
|
|
FeatureListContainerComponent,
|
|
FeatureListCroppingschemeComponent,
|
|
FeatureListCropfieldComponent,
|
|
FeatureListFeatureContainerComponent,
|
|
FeatureListFeatureComponent,
|
|
FeatureListFeatureCroppingschemeComponent,
|
|
FeatureListFeatureCropfieldComponent,
|
|
SelectedItemContainerComponent,
|
|
SelectedItemComponent,
|
|
SelectedItemCropfieldComponent,
|
|
SelectedItemGeotiffComponent,
|
|
SelectedItemTemporalComponent,
|
|
SelectedItemShapeComponent,
|
|
ItemListItemComponent,
|
|
ItemListItemContainerComponent,
|
|
ItemListComponent,
|
|
ItemWidgetListComponent,
|
|
WidgetStatusComponent,
|
|
GpsLocation,
|
|
PanToLocation,
|
|
LayerSwitcher,
|
|
AbstractFeatureListComponent,
|
|
AbstractFeatureListFeatureComponent,
|
|
AbstractSelectedItemComponent,
|
|
AbstractItemWidgetComponent,
|
|
AbstractItemListItemComponent,
|
|
AbstractItemListComponent,
|
|
FeatureIconService,
|
|
GeolocationService,
|
|
DeviceOrientationService,
|
|
IMapState,
|
|
ISelectedFeatures,
|
|
IItemLayer,
|
|
ItemLayer,
|
|
IPeriodState,
|
|
ForChild,
|
|
ForItemType,
|
|
ForSourceTask,
|
|
ForPackage
|
|
}
|
|
|
|
@NgModule({
|
|
imports: [
|
|
CommonModule,
|
|
AngularOpenlayersModule,
|
|
MapRoutingModule,
|
|
StoreModule.forFeature(MODULE_NAME, mapReducers.reducer,{metaReducers:metaReducers}),
|
|
EffectsModule.forFeature([mapEffects.MapEffects]),
|
|
NgbModule,
|
|
FormsModule,
|
|
ReactiveFormsModule,
|
|
AppCommonModule
|
|
],
|
|
declarations: [
|
|
ZoomToExtentComponent,
|
|
ItemVectorSourceComponent,
|
|
ItemLayersComponent,
|
|
FileDropTargetComponent,
|
|
MapComponent,
|
|
MetaDataModalComponent,
|
|
RotationResetComponent,
|
|
MapSearchComponent,
|
|
SelectPeriodModalComponent,
|
|
LayerListComponent,
|
|
LegendComponent,
|
|
LayerVectorImageComponent,
|
|
FeatureListComponent,
|
|
WidgetHostDirective,
|
|
FeatureListContainerComponent,
|
|
FeatureListCroppingschemeComponent,
|
|
FeatureListCropfieldComponent,
|
|
FeatureListFeatureContainerComponent,
|
|
FeatureListFeatureComponent,
|
|
FeatureListFeatureCroppingschemeComponent,
|
|
FeatureListFeatureCropfieldComponent,
|
|
SelectedItemContainerComponent,
|
|
SelectedItemComponent,
|
|
SelectedItemCropfieldComponent,
|
|
SelectedItemGeotiffComponent,
|
|
SelectedItemTemporalComponent,
|
|
SelectedItemShapeComponent,
|
|
ItemListItemComponent,
|
|
ItemListItemContainerComponent,
|
|
ItemListComponent,
|
|
ItemWidgetListComponent,
|
|
WidgetStatusComponent,
|
|
GpsLocation,
|
|
PanToLocation,
|
|
LayerSwitcher,
|
|
HistogramDetailsComponent,
|
|
StatisticsDetailsComponent
|
|
],
|
|
entryComponents: [
|
|
FeatureListComponent,
|
|
FeatureListCroppingschemeComponent,
|
|
FeatureListCropfieldComponent,
|
|
FeatureListFeatureComponent,
|
|
FeatureListFeatureCroppingschemeComponent,
|
|
FeatureListFeatureCropfieldComponent,
|
|
SelectedItemComponent,
|
|
SelectedItemCropfieldComponent,
|
|
SelectedItemGeotiffComponent,
|
|
SelectedItemTemporalComponent,
|
|
SelectedItemShapeComponent,
|
|
ItemListComponent,
|
|
ItemListItemComponent,
|
|
],
|
|
exports: [
|
|
ItemVectorSourceComponent,
|
|
ItemLayersComponent,
|
|
FileDropTargetComponent,
|
|
MetaDataModalComponent,
|
|
MapComponent,
|
|
GpsLocation,
|
|
PanToLocation,
|
|
LayerSwitcher,
|
|
FeatureListFeatureComponent,
|
|
FeatureListFeatureCropfieldComponent,
|
|
FeatureListFeatureCroppingschemeComponent,
|
|
SelectedItemContainerComponent,
|
|
SelectedItemComponent,
|
|
SelectedItemCropfieldComponent,
|
|
SelectedItemGeotiffComponent,
|
|
SelectedItemTemporalComponent,
|
|
SelectedItemShapeComponent,
|
|
ItemListItemComponent,
|
|
ItemListItemContainerComponent,
|
|
ItemListComponent,
|
|
ItemWidgetListComponent,
|
|
WidgetStatusComponent,
|
|
RotationResetComponent,
|
|
MapSearchComponent,
|
|
SelectPeriodModalComponent,
|
|
LayerListComponent,
|
|
LegendComponent,
|
|
LayerVectorImageComponent,
|
|
FeatureListComponent,
|
|
WidgetHostDirective,
|
|
FeatureListContainerComponent,
|
|
FeatureListCroppingschemeComponent,
|
|
FeatureListCropfieldComponent,
|
|
FeatureListFeatureContainerComponent,
|
|
ZoomToExtentComponent
|
|
]
|
|
})
|
|
|
|
|
|
export class AppCommonMapModule {
|
|
static forRoot(): ModuleWithProviders<AppCommonMapModule> {
|
|
return {
|
|
ngModule: AppCommonMapModule,
|
|
providers: [
|
|
FeatureIconService,
|
|
GeolocationService,
|
|
DeviceOrientationService,
|
|
{ provide: AbstractFeatureListComponent, useClass: FeatureListCroppingschemeComponent, multi: true },
|
|
{ provide: AbstractFeatureListComponent, useClass: FeatureListCropfieldComponent, multi: true },
|
|
{ provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureComponent, multi: true },
|
|
{ provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureCroppingschemeComponent, multi: true },
|
|
{ provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureCropfieldComponent, multi: true },
|
|
{ provide: AbstractSelectedItemComponent, useClass: SelectedItemComponent, multi: true },
|
|
{ provide: AbstractSelectedItemComponent, useClass: SelectedItemCropfieldComponent, multi: true },
|
|
{ provide: AbstractSelectedItemComponent, useClass: SelectedItemGeotiffComponent, multi: true },
|
|
{ provide: AbstractSelectedItemComponent, useClass: SelectedItemTemporalComponent, multi: true },
|
|
{ provide: AbstractSelectedItemComponent, useClass: SelectedItemShapeComponent, multi: true },
|
|
{ provide: AbstractItemListItemComponent, useClass: ItemListItemComponent, multi: true },
|
|
{ provide: AbstractItemListComponent, useClass: ItemListComponent, multi: true }
|
|
]
|
|
};
|
|
}
|
|
}
|