Compare commits
20 Commits
09c74448a8
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0ff8992874 | ||
| b5b84c2547 | |||
| c2b016b2b9 | |||
|
|
d44531274b | ||
| c52ee36d1b | |||
|
|
9b86927e2c | ||
|
|
e224b80995 | ||
|
|
88f3d9ef1a | ||
| 6737029a61 | |||
|
|
d4786564bd | ||
| 6fd69d7999 | |||
|
|
4ec75b3d5a | ||
| 04e3f1e71f | |||
|
|
df77631299 | ||
| a8d0f05c81 | |||
|
|
c79637be77 | ||
|
|
b5e11da9a8 | ||
|
|
9d45c25a95 | ||
|
|
2ffce50c47 | ||
|
|
f50ff878e0 |
12
package-lock.json
generated
12
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "farmmaps-lib-app",
|
"name": "farmmaps-lib-app",
|
||||||
"version": "4.18.0",
|
"version": "4.19.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "farmmaps-lib-app",
|
"name": "farmmaps-lib-app",
|
||||||
"version": "4.18.0",
|
"version": "4.19.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular-eslint/eslint-plugin": "^18.2.0",
|
"@angular-eslint/eslint-plugin": "^18.2.0",
|
||||||
"@angular/animations": "18.2.3",
|
"@angular/animations": "18.2.3",
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
},
|
},
|
||||||
"dist/common": {
|
"dist/common": {
|
||||||
"name": "@farmmaps/common",
|
"name": "@farmmaps/common",
|
||||||
"version": "2.1.0",
|
"version": "4.19.0-prerelease.2584",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tslib": "^2.3.0"
|
"tslib": "^2.3.0"
|
||||||
},
|
},
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
},
|
},
|
||||||
"dist/common-map": {
|
"dist/common-map": {
|
||||||
"name": "@farmmaps/common-map",
|
"name": "@farmmaps/common-map",
|
||||||
"version": "4.17.0-prerelease.2569",
|
"version": "4.19.0-prerelease.2584",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tslib": "^2.0.0"
|
"tslib": "^2.0.0"
|
||||||
},
|
},
|
||||||
@@ -130,7 +130,7 @@
|
|||||||
},
|
},
|
||||||
"dist/common-map3d": {
|
"dist/common-map3d": {
|
||||||
"name": "@farmmaps/common-map3d",
|
"name": "@farmmaps/common-map3d",
|
||||||
"version": "4.17.0-prerelease.2570",
|
"version": "4.19.0-prerelease.2584",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tslib": "^2.0.0"
|
"tslib": "^2.0.0"
|
||||||
},
|
},
|
||||||
@@ -143,7 +143,7 @@
|
|||||||
},
|
},
|
||||||
"dist/ng-openlayers": {
|
"dist/ng-openlayers": {
|
||||||
"name": "@farmmaps/ng-openlayers",
|
"name": "@farmmaps/ng-openlayers",
|
||||||
"version": "18.0.0",
|
"version": "4.19.0-prerelease.2584",
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tslib": "^2.3.0"
|
"tslib": "^2.3.0"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "farmmaps-lib-app",
|
"name": "farmmaps-lib-app",
|
||||||
"version": "4.18.0",
|
"version": "4.19.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
"start": "ng serve",
|
"start": "ng serve",
|
||||||
|
|||||||
@@ -59,6 +59,8 @@ export const TOGGLESHOWDATALAYERSLIDE = '[Map] ToggleShowDataLayerSlide'
|
|||||||
export const SETVIEWSTATE = '[Map] SetViewState'
|
export const SETVIEWSTATE = '[Map] SetViewState'
|
||||||
export const CLEARFEATURES = '[Map] ClearFeatures';
|
export const CLEARFEATURES = '[Map] ClearFeatures';
|
||||||
export const SETPANELEXTRAWIDE = '[Map] SetPanelExtraWide';
|
export const SETPANELEXTRAWIDE = '[Map] SetPanelExtraWide';
|
||||||
|
export const BACKUPFEATURES = '[Map] BackupFeatures';
|
||||||
|
export const RESTOREFEATURES = '[Map] RestoreFeatures';
|
||||||
|
|
||||||
export class Clear implements Action {
|
export class Clear implements Action {
|
||||||
readonly type = CLEAR;
|
readonly type = CLEAR;
|
||||||
@@ -300,7 +302,7 @@ export class SetReplaceUrl implements Action {
|
|||||||
export class SetFeatures implements Action {
|
export class SetFeatures implements Action {
|
||||||
readonly type = SETFEATURES;
|
readonly type = SETFEATURES;
|
||||||
|
|
||||||
constructor(public features: Array<Feature<Geometry>>) { }
|
constructor(public features: Array<Feature<Geometry>>, public zoomToExtent: boolean = true) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
export class SetLayerValuesLocation implements Action {
|
export class SetLayerValuesLocation implements Action {
|
||||||
@@ -347,6 +349,16 @@ export class SetPanelExtraWide implements Action {
|
|||||||
constructor(public panelExtraWide:boolean) {}
|
constructor(public panelExtraWide:boolean) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class BackupFeatures implements Action {
|
||||||
|
readonly type = BACKUPFEATURES;
|
||||||
|
constructor() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class RestoreFeatures implements Action {
|
||||||
|
readonly type = RESTOREFEATURES;
|
||||||
|
constructor() {}
|
||||||
|
}
|
||||||
|
|
||||||
export type Actions = SetMapState
|
export type Actions = SetMapState
|
||||||
| Init
|
| Init
|
||||||
| Clear
|
| Clear
|
||||||
@@ -395,5 +407,7 @@ export type Actions = SetMapState
|
|||||||
| ToggleShowDataLayerSlide
|
| ToggleShowDataLayerSlide
|
||||||
| SetViewState
|
| SetViewState
|
||||||
| ClearFeatures
|
| ClearFeatures
|
||||||
| SetPanelExtraWide;
|
| SetPanelExtraWide
|
||||||
|
| BackupFeatures
|
||||||
|
| RestoreFeatures;
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import { RotationResetComponent } from './components/aol/rotation-reset/rotation
|
|||||||
import { ZoomToExtentComponent } from './components/aol/zoom-to-extent/zoom-to-extent.component';
|
import { ZoomToExtentComponent } from './components/aol/zoom-to-extent/zoom-to-extent.component';
|
||||||
import { FeatureListContainerComponent } from './components/feature-list-container/feature-list-container.component';
|
import { FeatureListContainerComponent } from './components/feature-list-container/feature-list-container.component';
|
||||||
import { FeatureListCropfieldComponent } from './components/feature-list-cropfield/feature-list-cropfield.component';
|
import { FeatureListCropfieldComponent } from './components/feature-list-cropfield/feature-list-cropfield.component';
|
||||||
|
import { FeatureListObservationComponent } from './components/feature-list-observation/feature-list-observation.component';
|
||||||
import { FeatureListCroppingschemeComponent } from './components/feature-list-croppingscheme/feature-list-croppingscheme.component';
|
import { FeatureListCroppingschemeComponent } from './components/feature-list-croppingscheme/feature-list-croppingscheme.component';
|
||||||
import { FeatureListFeatureContainerComponent } from './components/feature-list-feature-container/feature-list-feature-container.component';
|
import { FeatureListFeatureContainerComponent } from './components/feature-list-feature-container/feature-list-feature-container.component';
|
||||||
import { FeatureListFeatureCropfieldComponent } from './components/feature-list-feature-cropfield/feature-list-feature-cropfield.component';
|
import { FeatureListFeatureCropfieldComponent } from './components/feature-list-feature-cropfield/feature-list-feature-cropfield.component';
|
||||||
@@ -105,7 +106,7 @@ const metaReducers: Array<MetaReducer<any, any>> = [LocalStorageSync];
|
|||||||
|
|
||||||
export {
|
export {
|
||||||
AbstractFeatureListComponent,
|
AbstractFeatureListComponent,
|
||||||
AbstractFeatureListFeatureComponent, AbstractItemListComponent, AbstractItemListItemComponent, AbstractItemWidgetComponent, AbstractSelectedItemComponent, DeviceOrientationService, FeatureIconService, FeatureListComponent, FeatureListContainerComponent, FeatureListCropfieldComponent, FeatureListCroppingschemeComponent, FeatureListFeatureComponent, FeatureListFeatureContainerComponent, FeatureListFeatureCropfieldComponent, FeatureListFeatureCroppingschemeComponent, FileDropTargetComponent, ForChild,
|
AbstractFeatureListFeatureComponent, AbstractItemListComponent, AbstractItemListItemComponent, AbstractItemWidgetComponent, AbstractSelectedItemComponent, DeviceOrientationService, FeatureIconService, FeatureListComponent, FeatureListContainerComponent, FeatureListCropfieldComponent, FeatureListObservationComponent, FeatureListCroppingschemeComponent, FeatureListFeatureComponent, FeatureListFeatureContainerComponent, FeatureListFeatureCropfieldComponent, FeatureListFeatureCroppingschemeComponent, FileDropTargetComponent, ForChild,
|
||||||
ForItemType, ForPackage, ForSourceTask, GeolocationService, GeometryThumbnailComponent, GpsLocation, IClickedFeature, ifZoomToShowDirective, IItemLayer, IMapState, IPeriodState, ISelectedFeatures, ItemLayer, ItemLayersComponent, ItemListComponent, ItemListItemComponent,
|
ForItemType, ForPackage, ForSourceTask, GeolocationService, GeometryThumbnailComponent, GpsLocation, IClickedFeature, ifZoomToShowDirective, IItemLayer, IMapState, IPeriodState, ISelectedFeatures, ItemLayer, ItemLayersComponent, ItemListComponent, ItemListItemComponent,
|
||||||
ItemListItemContainerComponent, ITemporalItemLayer, ItemVectorSourceComponent, ItemWidgetListComponent, LayerListComponent, LayerSwitcher, LayerVectorImageComponent, LegendComponent, mapActions, MapComponent, mapEffects,
|
ItemListItemContainerComponent, ITemporalItemLayer, ItemVectorSourceComponent, ItemWidgetListComponent, LayerListComponent, LayerSwitcher, LayerVectorImageComponent, LegendComponent, mapActions, MapComponent, mapEffects,
|
||||||
mapReducers, MapSearchComponent, MetaDataModalComponent, PanToLocation, RotationResetComponent, SelectedItemComponent, SelectedItemContainerComponent, SelectedItemCropfieldComponent,
|
mapReducers, MapSearchComponent, MetaDataModalComponent, PanToLocation, RotationResetComponent, SelectedItemComponent, SelectedItemContainerComponent, SelectedItemCropfieldComponent,
|
||||||
@@ -142,6 +143,7 @@ export {
|
|||||||
FeatureListContainerComponent,
|
FeatureListContainerComponent,
|
||||||
FeatureListCroppingschemeComponent,
|
FeatureListCroppingschemeComponent,
|
||||||
FeatureListCropfieldComponent,
|
FeatureListCropfieldComponent,
|
||||||
|
FeatureListObservationComponent,
|
||||||
FeatureListFeatureContainerComponent,
|
FeatureListFeatureContainerComponent,
|
||||||
FeatureListFeatureComponent,
|
FeatureListFeatureComponent,
|
||||||
FeatureListFeatureCroppingschemeComponent,
|
FeatureListFeatureCroppingschemeComponent,
|
||||||
@@ -201,6 +203,7 @@ export {
|
|||||||
FeatureListContainerComponent,
|
FeatureListContainerComponent,
|
||||||
FeatureListCroppingschemeComponent,
|
FeatureListCroppingschemeComponent,
|
||||||
FeatureListCropfieldComponent,
|
FeatureListCropfieldComponent,
|
||||||
|
FeatureListObservationComponent,
|
||||||
FeatureListFeatureContainerComponent,
|
FeatureListFeatureContainerComponent,
|
||||||
ZoomToExtentComponent,
|
ZoomToExtentComponent,
|
||||||
ifZoomToShowDirective,
|
ifZoomToShowDirective,
|
||||||
@@ -214,6 +217,7 @@ export {
|
|||||||
TemporalService,
|
TemporalService,
|
||||||
{ provide: AbstractFeatureListComponent, useClass: FeatureListCroppingschemeComponent, multi: true },
|
{ provide: AbstractFeatureListComponent, useClass: FeatureListCroppingschemeComponent, multi: true },
|
||||||
{ provide: AbstractFeatureListComponent, useClass: FeatureListCropfieldComponent, multi: true },
|
{ provide: AbstractFeatureListComponent, useClass: FeatureListCropfieldComponent, multi: true },
|
||||||
|
{ provide: AbstractFeatureListComponent, useClass: FeatureListObservationComponent, multi: true },
|
||||||
{ provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureComponent, multi: true },
|
{ provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureComponent, multi: true },
|
||||||
{ provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureCroppingschemeComponent, multi: true },
|
{ provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureCroppingschemeComponent, multi: true },
|
||||||
{ provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureCropfieldComponent, multi: true },
|
{ provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureCropfieldComponent, multi: true },
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<div class="card border-0">
|
||||||
|
<div class="card-body" *ngIf="(schemeItem|async);let schemeItem">
|
||||||
|
<fm-back-button></fm-back-button>
|
||||||
|
<h4 i18n>Farm</h4>
|
||||||
|
<h3>{{schemeItem.name}}</h3>
|
||||||
|
<div *ngIf="features;let features">
|
||||||
|
<div class="cropfields">
|
||||||
|
<div class="row m-0 ps-3 pe-3" *ngFor="let feature of features" [ngClass]="{'selected':isFeatureSelected(feature)}" (click)="handleFeatureClick(feature)" (mouseenter)="handleFeatureMouseEnter(feature)" (mouseleave)="handleFeatureMouseLeave(feature)">
|
||||||
|
<fm-map-feature-list-feature-container [feature]="feature"></fm-map-feature-list-feature-container>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
fm-map-feature-list-feature-container {
|
||||||
|
width:100%;
|
||||||
|
pointer-events:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
border-bottom: 1px solid var(--bs-gray-500);
|
||||||
|
user-select: none;
|
||||||
|
padding-left:1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row.selected {
|
||||||
|
background-color: var(--bs-gray-100);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cropfields {
|
||||||
|
border-top: 1px solid var(--bs-gray-500);
|
||||||
|
margin-left: -1.25rem;
|
||||||
|
margin-right: -1.25rem;
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
import { Component, Injectable,AfterViewInit, OnInit,SimpleChanges, ChangeDetectorRef} from '@angular/core';
|
||||||
|
import { Location } from '@angular/common';
|
||||||
|
import { AbstractFeatureListComponent } from '../feature-list/feature-list.component';
|
||||||
|
import {ForItemType } from '../for-item/for-itemtype.decorator';
|
||||||
|
import {ForChild } from '../for-item/for-child.decorator';
|
||||||
|
import { Store } from '@ngrx/store';
|
||||||
|
import * as mapReducers from '../../reducers/map.reducer';
|
||||||
|
import { commonReducers, ItemTypeService, IItem,ItemService } from '@farmmaps/common';
|
||||||
|
import { Observable } from 'rxjs';
|
||||||
|
|
||||||
|
@ForChild()
|
||||||
|
@ForItemType("vnd.farmmaps.itemtype.observation")
|
||||||
|
@Injectable()
|
||||||
|
@Component({
|
||||||
|
selector: 'fm-map-feature-list-observation',
|
||||||
|
templateUrl: './feature-list-observation.component.html',
|
||||||
|
styleUrls: ['./feature-list-observation.component.scss']
|
||||||
|
})
|
||||||
|
export class FeatureListObservationComponent extends AbstractFeatureListComponent implements OnInit {
|
||||||
|
|
||||||
|
constructor(store: Store<mapReducers.State | commonReducers.State>, itemTypeService: ItemTypeService, location: Location, private itemService: ItemService) {
|
||||||
|
super(store, itemTypeService,location);
|
||||||
|
}
|
||||||
|
|
||||||
|
public schemeItem: Observable<IItem>
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.schemeItem = this.itemService.getItem(this.queryState.parentCode);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -92,6 +92,8 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
|
|||||||
public noContent = false;
|
public noContent = false;
|
||||||
public overrideSelectedItemLayer = false;
|
public overrideSelectedItemLayer = false;
|
||||||
public overrideOverlayLayers = false;
|
public overrideOverlayLayers = false;
|
||||||
|
public hideShowLayerValues = false;
|
||||||
|
public const
|
||||||
public dataLayerSlideValue = 50;
|
public dataLayerSlideValue = 50;
|
||||||
public dataLayerSlideEnabled = false;
|
public dataLayerSlideEnabled = false;
|
||||||
private visibleAreaBottom = 0;
|
private visibleAreaBottom = 0;
|
||||||
@@ -116,6 +118,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
|
|||||||
const params = route.snapshot.data["fm-map-map"];
|
const params = route.snapshot.data["fm-map-map"];
|
||||||
this.overrideSelectedItemLayer = params["overrideSelectedItemlayer"] ? params["overrideSelectedItemlayer"] : false;
|
this.overrideSelectedItemLayer = params["overrideSelectedItemlayer"] ? params["overrideSelectedItemlayer"] : false;
|
||||||
this.overrideOverlayLayers = params["overrideOverlayLayers"] ? params["overrideOverlayLayers"] : false;
|
this.overrideOverlayLayers = params["overrideOverlayLayers"] ? params["overrideOverlayLayers"] : false;
|
||||||
|
this.hideShowLayerValues = params["hideShowLayerValues"] ? params["hideShowLayerValues"] : false;
|
||||||
}
|
}
|
||||||
this.querySub = this.query$.pipe(skip(1), withLatestFrom(this.mapState$)).subscribe(([query, mapState]) => {
|
this.querySub = this.query$.pipe(skip(1), withLatestFrom(this.mapState$)).subscribe(([query, mapState]) => {
|
||||||
if (query && query.querystate) {
|
if (query && query.querystate) {
|
||||||
@@ -297,11 +300,13 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
|
|||||||
|
|
||||||
normalizeMapState(mapState: IMapState): IMapState {
|
normalizeMapState(mapState: IMapState): IMapState {
|
||||||
if (!mapState) return null;
|
if (!mapState) return null;
|
||||||
return {zoom: this.round(mapState.zoom,0),
|
return {
|
||||||
|
zoom: this.round(mapState.zoom, 0),
|
||||||
rotation: this.round(mapState.rotation, 2),
|
rotation: this.round(mapState.rotation, 2),
|
||||||
xCenter: this.round(mapState.xCenter, 5),
|
xCenter: this.round(mapState.xCenter, 5),
|
||||||
yCenter: this.round(mapState.yCenter, 5),
|
yCenter: this.round(mapState.yCenter, 5),
|
||||||
baseLayerCode: mapState.baseLayerCode };
|
baseLayerCode: mapState.baseLayerCode
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
serializeMapState(mapState: IMapState): string {
|
serializeMapState(mapState: IMapState): string {
|
||||||
@@ -472,11 +477,13 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
handleShowLayerValues(event: MouseEvent) {
|
handleShowLayerValues(event: MouseEvent) {
|
||||||
|
if (!this.hideShowLayerValues) {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
this.zone.run(() => {
|
this.zone.run(() => {
|
||||||
this.store.dispatch(new mapActions.ToggleLayerValuesEnabled());
|
this.store.dispatch(new mapActions.ToggleLayerValuesEnabled());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
handleOnDownload(event) {
|
handleOnDownload(event) {
|
||||||
|
|
||||||
|
|||||||
@@ -166,6 +166,7 @@ export class MapEffects {
|
|||||||
zoomToExtent2$ = createEffect(() => this.actions$.pipe(
|
zoomToExtent2$ = createEffect(() => this.actions$.pipe(
|
||||||
ofType(mapActions.SETFEATURES),
|
ofType(mapActions.SETFEATURES),
|
||||||
switchMap((action: mapActions.SetFeatures) => {
|
switchMap((action: mapActions.SetFeatures) => {
|
||||||
|
if (action.zoomToExtent) {
|
||||||
const extent = createEmpty();
|
const extent = createEmpty();
|
||||||
if (extent) {
|
if (extent) {
|
||||||
for (const f of action.features) {
|
for (const f of action.features) {
|
||||||
@@ -173,6 +174,7 @@ export class MapEffects {
|
|||||||
}
|
}
|
||||||
if (action.features.length > 0) return of(new mapActions.SetExtent(extent));
|
if (action.features.length > 0) return of(new mapActions.SetExtent(extent));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return EMPTY;
|
return EMPTY;
|
||||||
})));
|
})));
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import { ILayervalue } from '../models/layer.value';
|
|||||||
import * as mapActions from '../actions/map.actions';
|
import * as mapActions from '../actions/map.actions';
|
||||||
import {commonActions} from '@farmmaps/common';
|
import {commonActions} from '@farmmaps/common';
|
||||||
import { createSelector, createFeatureSelector } from '@ngrx/store';
|
import { createSelector, createFeatureSelector } from '@ngrx/store';
|
||||||
|
import * as _ from 'lodash';
|
||||||
|
|
||||||
import {Feature} from 'ol';
|
import {Feature} from 'ol';
|
||||||
import {Geometry} from 'ol/geom';
|
import {Geometry} from 'ol/geom';
|
||||||
@@ -47,6 +48,7 @@ export interface State {
|
|||||||
query:IQuery,
|
query:IQuery,
|
||||||
parentCode: string,
|
parentCode: string,
|
||||||
features: Array<Feature<Geometry>>,
|
features: Array<Feature<Geometry>>,
|
||||||
|
featuresBackup: Array<Feature<Geometry>>,
|
||||||
panelVisible: boolean,
|
panelVisible: boolean,
|
||||||
panelCollapsed: boolean,
|
panelCollapsed: boolean,
|
||||||
panelExtraWide: boolean,
|
panelExtraWide: boolean,
|
||||||
@@ -93,6 +95,7 @@ export const initialState: State = {
|
|||||||
query: null,
|
query: null,
|
||||||
parentCode: null,
|
parentCode: null,
|
||||||
features: [],
|
features: [],
|
||||||
|
featuresBackup: [],
|
||||||
panelVisible: false,
|
panelVisible: false,
|
||||||
panelCollapsed: false,
|
panelCollapsed: false,
|
||||||
panelExtraWide: false,
|
panelExtraWide: false,
|
||||||
@@ -156,13 +159,15 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
|
|||||||
const a = action as mapActions.StartSearchSuccess;
|
const a = action as mapActions.StartSearchSuccess;
|
||||||
return tassign(state, {
|
return tassign(state, {
|
||||||
features: a.features,
|
features: a.features,
|
||||||
|
featuresBackup: [],
|
||||||
inSearch:false
|
inSearch:false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
case mapActions.SETFEATURES: {
|
case mapActions.SETFEATURES: {
|
||||||
const a = action as mapActions.SetFeatures;
|
const a = action as mapActions.SetFeatures;
|
||||||
return tassign(state, {
|
return tassign(state, {
|
||||||
features: a.features
|
features: a.features,
|
||||||
|
featuresBackup: []
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
case mapActions.SELECTFEATURE: {
|
case mapActions.SELECTFEATURE: {
|
||||||
@@ -180,6 +185,7 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
|
|||||||
selectedItemLayer: null,
|
selectedItemLayer: null,
|
||||||
showDataLayerSlide: false,
|
showDataLayerSlide: false,
|
||||||
features:[],
|
features:[],
|
||||||
|
featuresBackup: [],
|
||||||
inSearch:inSearch
|
inSearch:inSearch
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -296,6 +302,7 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
|
|||||||
return tassign(state, {
|
return tassign(state, {
|
||||||
selectedItem: null,
|
selectedItem: null,
|
||||||
features:[],
|
features:[],
|
||||||
|
featuresBackup: [],
|
||||||
selectedItemLayer:null,
|
selectedItemLayer:null,
|
||||||
searchCollapsed: !panelVisible,
|
searchCollapsed: !panelVisible,
|
||||||
panelVisible: panelVisible,
|
panelVisible: panelVisible,
|
||||||
@@ -332,7 +339,8 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
|
|||||||
extent: a.feature.getGeometry().getExtent(),
|
extent: a.feature.getGeometry().getExtent(),
|
||||||
searchCollapsed: false,
|
searchCollapsed: false,
|
||||||
clearEnabled:true,
|
clearEnabled:true,
|
||||||
features:features
|
features:features,
|
||||||
|
featuresBackup:[]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
case mapActions.UPDATEFEATURESUCCESS: {
|
case mapActions.UPDATEFEATURESUCCESS: {
|
||||||
@@ -346,7 +354,7 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
|
|||||||
features.push(state.features[i]);
|
features.push(state.features[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return tassign(state, { features: features });
|
return tassign(state, { features: features, featuresBackup: [] });
|
||||||
}
|
}
|
||||||
case mapActions.EXPANDSEARCH: {
|
case mapActions.EXPANDSEARCH: {
|
||||||
return tassign(state, { searchCollapsed: false });
|
return tassign(state, { searchCollapsed: false });
|
||||||
@@ -391,7 +399,7 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
|
|||||||
return tassign(state, {overlayLayers: [], selectedOverlayLayer: null});
|
return tassign(state, {overlayLayers: [], selectedOverlayLayer: null});
|
||||||
}
|
}
|
||||||
case mapActions.CLEARFEATURES: {
|
case mapActions.CLEARFEATURES: {
|
||||||
return tassign(state, {features: [], selectedFeature: null});
|
return tassign(state, {features: [], featuresBackup: [], selectedFeature: null});
|
||||||
}
|
}
|
||||||
case mapActions.SETVISIBILITY: {
|
case mapActions.SETVISIBILITY: {
|
||||||
const a = action as mapActions.SetVisibility;
|
const a = action as mapActions.SetVisibility;
|
||||||
@@ -509,6 +517,7 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
|
|||||||
searchCollapsed: true,
|
searchCollapsed: true,
|
||||||
searchMinified: false,
|
searchMinified: false,
|
||||||
features: [],
|
features: [],
|
||||||
|
featuresBackup: [],
|
||||||
query:initialState.query,
|
query:initialState.query,
|
||||||
showLayerSwitcher: false,
|
showLayerSwitcher: false,
|
||||||
extent: null,
|
extent: null,
|
||||||
@@ -556,7 +565,8 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
|
|||||||
selectedItem: null,
|
selectedItem: null,
|
||||||
selectedItemLayer: null,
|
selectedItemLayer: null,
|
||||||
showDataLayerSlide: false,
|
showDataLayerSlide: false,
|
||||||
features:[]
|
features:[],
|
||||||
|
featuresBackup:[]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if(state.features.length>0) {
|
if(state.features.length>0) {
|
||||||
@@ -569,7 +579,7 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
|
|||||||
if(index>=0) {
|
if(index>=0) {
|
||||||
const newFeatures = state.features.slice(0);
|
const newFeatures = state.features.slice(0);
|
||||||
newFeatures.splice(index,1);
|
newFeatures.splice(index,1);
|
||||||
return tassign(state,{features:newFeatures});
|
return tassign(state,{features:newFeatures, featuresBackup:[]});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return state;
|
return state;
|
||||||
@@ -578,6 +588,17 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
|
|||||||
const a= action as mapActions.SetPanelExtraWide;
|
const a= action as mapActions.SetPanelExtraWide;
|
||||||
return tassign(state,{panelExtraWide:a.panelExtraWide});
|
return tassign(state,{panelExtraWide:a.panelExtraWide});
|
||||||
}
|
}
|
||||||
|
case mapActions.BACKUPFEATURES: {
|
||||||
|
return tassign(state, {
|
||||||
|
featuresBackup: _.cloneDeep(state.features)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
case mapActions.RESTOREFEATURES: {
|
||||||
|
return tassign(state, {
|
||||||
|
features: _.cloneDeep(state.featuresBackup),
|
||||||
|
featuresBackup: []
|
||||||
|
});
|
||||||
|
}
|
||||||
default: {
|
default: {
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ export class ItemService {
|
|||||||
return this.httpClient.get<{ [id: string]: IItemType }>(`${this.ApiEndpoint()}/api/v1/itemtypes/`);
|
return this.httpClient.get<{ [id: string]: IItemType }>(`${this.ApiEndpoint()}/api/v1/itemtypes/`);
|
||||||
}
|
}
|
||||||
|
|
||||||
getFeatures(extent: number[], crs: string, searchText?: string, searchTags?:string,startDate?:Date,endDate?:Date,itemType?:string,parentCode?:string,dataFilter?:string,level?:number,indexed?:boolean): Observable<any> {
|
getFeatures(extent: number[], crs: string, searchText?: string, searchTags?:string,startDate?:Date,endDate?:Date,
|
||||||
|
itemType?:string,parentCode?:string,dataFilter?:string,level?:number,indexed?:boolean,atItemLocationItemCode?: string): Observable<any> {
|
||||||
let params = new HttpParams();
|
let params = new HttpParams();
|
||||||
params = params.append("crs", crs);
|
params = params.append("crs", crs);
|
||||||
if (extent) params =params.append("bbox", extent.join(","));
|
if (extent) params =params.append("bbox", extent.join(","));
|
||||||
@@ -43,6 +44,7 @@ export class ItemService {
|
|||||||
if (parentCode) params = params.append("pc", parentCode);
|
if (parentCode) params = params.append("pc", parentCode);
|
||||||
if (dataFilter) params = params.append("df", dataFilter);
|
if (dataFilter) params = params.append("df", dataFilter);
|
||||||
if (level) params = params.append("lvl", level.toString());
|
if (level) params = params.append("lvl", level.toString());
|
||||||
|
if (atItemLocationItemCode) params = params.append("ail", atItemLocationItemCode);
|
||||||
params = params.append("ind", indexed ?? true);
|
params = params.append("ind", indexed ?? true);
|
||||||
return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/items/features/`, {params:params});
|
return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/items/features/`, {params:params});
|
||||||
}
|
}
|
||||||
@@ -116,7 +118,8 @@ export class ItemService {
|
|||||||
|
|
||||||
getChildItemList(parentcode: string, itemType?: string, dataFilter?: any, level = 1, deep = true,
|
getChildItemList(parentcode: string, itemType?: string, dataFilter?: any, level = 1, deep = true,
|
||||||
startDate?: Date, endDate?: Date, skip?: number, take?: number,
|
startDate?: Date, endDate?: Date, skip?: number, take?: number,
|
||||||
exactMatchStartOrEndDate?: boolean, owner?:string, indexed?: boolean): Observable<IItem[]> {
|
exactMatchStartOrEndDate?: boolean, owner?:string, indexed?: boolean,
|
||||||
|
atItemLocationItemCode?: string): Observable<IItem[]> {
|
||||||
let params = new HttpParams();
|
let params = new HttpParams();
|
||||||
if(itemType != null) {
|
if(itemType != null) {
|
||||||
params = params.append("it", itemType);
|
params = params.append("it", itemType);
|
||||||
@@ -134,6 +137,7 @@ export class ItemService {
|
|||||||
if(skip) params = params.append("skip", skip);
|
if(skip) params = params.append("skip", skip);
|
||||||
if(take) params = params.append("take", take);
|
if(take) params = params.append("take", take);
|
||||||
if(indexed) params = params.append("ind",indexed?"true":"false");
|
if(indexed) params = params.append("ind",indexed?"true":"false");
|
||||||
|
if(atItemLocationItemCode) params = params.append("ail",atItemLocationItemCode);
|
||||||
return this.httpClient.get<IItem[]>(`${this.ApiEndpoint()}/api/v1/items/${parentcode}/children`, { params: params });
|
return this.httpClient.get<IItem[]>(`${this.ApiEndpoint()}/api/v1/items/${parentcode}/children`, { params: params });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user