25 Commits

Author SHA1 Message Date
jenkins
df77631299 [ci skip] Updated packages #2577
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-08-14 07:28:29 +00:00
a8d0f05c81 Aw6981 Add observation components
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-08-14 09:26:36 +02:00
jenkins
c79637be77 [ci skip] Updated packages #2576
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-08-11 08:14:46 +00:00
Willem Dantuma
b5e11da9a8 Fix flag check
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-08-11 10:11:45 +02:00
jenkins
9d45c25a95 [ci skip] Updated packages #2575
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-08-11 07:42:16 +00:00
Willem Dantuma
2ffce50c47 Add hideShowLayerValues flag for fm-map-map
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-08-11 09:40:00 +02:00
jenkins
f50ff878e0 [ci skip] Updated packages #2574
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-07-30 09:49:37 +00:00
09c74448a8 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-07-30 11:47:01 +02:00
205b73b30e AW-4935 Tools in croppingscheme weer goed zetten op mobile 2025-07-30 11:46:58 +02:00
jenkins
313cc59fe7 [ci skip] Updated packages #2573
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-07-30 09:20:14 +00:00
c3fb42c65f AW-4935 Tools in croppingscheme weer goed zetten op mobile
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-07-30 11:17:55 +02:00
jenkins
6b73fb0d55 [ci skip] Updated packages #2572
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-06-03 10:27:08 +00:00
ea641caf38 AW-6806 Allow delete
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-06-03 12:25:16 +02:00
ac15b2018d AW-6806 Allow delete
Some checks failed
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2025-06-03 12:15:14 +02:00
jenkins
fe73f615ad [ci skip] Updated packages #2570
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-05-13 09:34:44 +00:00
jenkins
3e1b3ee78e Updated packages #2569
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-05-13 09:28:46 +00:00
jenkins
58391b7828 [ci skip] Updated packages #2568
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-05-12 13:54:16 +00:00
jenkins
b2b2a1e8be Updated packages #2567
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-05-12 13:48:35 +00:00
jenkins
0d96a1be4f [ci skip] Updated packages #2566
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-05-12 11:01:08 +00:00
d599430cb0 AW-6649 Layers dialog => rename Data to Overlay slide, move below Overlays
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-05-12 12:59:12 +02:00
jenkins
e17911b339 [ci skip] Updated packages #2565
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-04-30 11:27:32 +00:00
jenkins
9d6cbffb3d Updated packages #2564
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-30 11:20:25 +00:00
jenkins
a11eb81e73 [ci skip] Updated packages #2563
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-30 09:21:42 +00:00
jenkins
4fc3ad933c Updated packages #2562
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-30 09:14:15 +00:00
jenkins
e6d90c9e61 [ci skip] Updated packages #2561
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-30 06:26:59 +00:00
17 changed files with 367 additions and 214 deletions

12
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "farmmaps-lib-app", "name": "farmmaps-lib-app",
"version": "4.17.0", "version": "4.18.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "farmmaps-lib-app", "name": "farmmaps-lib-app",
"version": "4.17.0", "version": "4.18.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": "4.17.0-prerelease.2559", "version": "4.18.0-prerelease.2576",
"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.2559", "version": "4.18.0-prerelease.2576",
"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.2559", "version": "4.18.0-prerelease.2576",
"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": "4.17.0-prerelease.2559", "version": "4.18.0-prerelease.2576",
"license": "MPL-2.0", "license": "MPL-2.0",
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"

View File

@@ -1,6 +1,6 @@
{ {
"name": "farmmaps-lib-app", "name": "farmmaps-lib-app",
"version": "4.17.0", "version": "4.18.0",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve", "start": "ng serve",

View File

@@ -36,10 +36,12 @@ 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';
import { FeatureListFeatureCroppingschemeComponent } from './components/feature-list-feature-croppingscheme/feature-list-feature-croppingscheme.component'; import { FeatureListFeatureCroppingschemeComponent } from './components/feature-list-feature-croppingscheme/feature-list-feature-croppingscheme.component';
import { FeatureListFeatureObservationComponent } from './components/feature-list-feature-observation/feature-list-feature-observation.component';
import { AbstractFeatureListFeatureComponent, FeatureListFeatureComponent } from './components/feature-list-feature/feature-list-feature.component'; import { AbstractFeatureListFeatureComponent, FeatureListFeatureComponent } from './components/feature-list-feature/feature-list-feature.component';
import { AbstractFeatureListComponent, FeatureListComponent } from './components/feature-list/feature-list.component'; import { AbstractFeatureListComponent, FeatureListComponent } from './components/feature-list/feature-list.component';
import { GeometryThumbnailComponent } from './components/feature-thumbnail/feature-thumbnail.component'; import { GeometryThumbnailComponent } from './components/feature-thumbnail/feature-thumbnail.component';
@@ -105,7 +107,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, FeatureListFeatureObservationComponent, 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,10 +144,12 @@ export {
FeatureListContainerComponent, FeatureListContainerComponent,
FeatureListCroppingschemeComponent, FeatureListCroppingschemeComponent,
FeatureListCropfieldComponent, FeatureListCropfieldComponent,
FeatureListObservationComponent,
FeatureListFeatureContainerComponent, FeatureListFeatureContainerComponent,
FeatureListFeatureComponent, FeatureListFeatureComponent,
FeatureListFeatureCroppingschemeComponent, FeatureListFeatureCroppingschemeComponent,
FeatureListFeatureCropfieldComponent, FeatureListFeatureCropfieldComponent,
FeatureListFeatureObservationComponent,
SelectedItemContainerComponent, SelectedItemContainerComponent,
SelectedItemComponent, SelectedItemComponent,
SelectedItemCropfieldComponent, SelectedItemCropfieldComponent,
@@ -178,6 +182,7 @@ export {
LayerSwitcher, LayerSwitcher,
FeatureListFeatureComponent, FeatureListFeatureComponent,
FeatureListFeatureCropfieldComponent, FeatureListFeatureCropfieldComponent,
FeatureListFeatureObservationComponent,
FeatureListFeatureCroppingschemeComponent, FeatureListFeatureCroppingschemeComponent,
SelectedItemContainerComponent, SelectedItemContainerComponent,
SelectedItemComponent, SelectedItemComponent,
@@ -201,6 +206,7 @@ export {
FeatureListContainerComponent, FeatureListContainerComponent,
FeatureListCroppingschemeComponent, FeatureListCroppingschemeComponent,
FeatureListCropfieldComponent, FeatureListCropfieldComponent,
FeatureListObservationComponent,
FeatureListFeatureContainerComponent, FeatureListFeatureContainerComponent,
ZoomToExtentComponent, ZoomToExtentComponent,
ifZoomToShowDirective, ifZoomToShowDirective,
@@ -214,9 +220,11 @@ 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 },
{ provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureObservationComponent, multi: true },
{ provide: AbstractSelectedItemComponent, useClass: SelectedItemComponent, multi: true }, { provide: AbstractSelectedItemComponent, useClass: SelectedItemComponent, multi: true },
{ provide: AbstractSelectedItemComponent, useClass: SelectedItemCropfieldComponent, multi: true }, { provide: AbstractSelectedItemComponent, useClass: SelectedItemCropfieldComponent, multi: true },
{ provide: AbstractSelectedItemComponent, useClass: SelectedItemGeotiffComponent, multi: true }, { provide: AbstractSelectedItemComponent, useClass: SelectedItemGeotiffComponent, multi: true },

View File

@@ -0,0 +1,10 @@
<div *ngIf="feature;let feature">
<div class="row m-0">
<div class="col-3 m-0 p-2 thumbnail">
<img [src]="getSource(feature)" style="width: 34px">
</div>
<div class="col p-2" style="margin: auto;">
<h1 class="card-title" title="{{feature.get('name')}}">{{feature.get('name')}}</h1>
</div>
</div>
</div>

View File

@@ -0,0 +1,22 @@
.card-title {
font-size: 1rem;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.card-text {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.col {
overflow: hidden;
}
.thumbnail {
width: 4em;
height: 4em;
}

View File

@@ -0,0 +1,29 @@
import { Component, Injectable } from '@angular/core';
import { AppConfig, commonReducers, ItemTypeService } from '@farmmaps/common';
import { Store } from '@ngrx/store';
import { Feature } from 'ol';
import { Geometry } from 'ol/geom';
import * as mapReducers from '../../reducers/map.reducer';
import { AbstractFeatureListFeatureComponent } from '../feature-list-feature/feature-list-feature.component';
import { ForItemType } from '../for-item/for-itemtype.decorator';
@ForItemType("vnd.farmmaps.itemtype.observation")
@Injectable()
@Component({
selector: 'fm-map-feature-list-feature-observation',
templateUrl: './feature-list-feature-observation.component.html',
styleUrls: ['./feature-list-feature-observation.component.scss']
})
export class FeatureListFeatureObservationComponent extends AbstractFeatureListFeatureComponent {
constructor(store: Store<mapReducers.State | commonReducers.State>, itemTypeService: ItemTypeService,config:AppConfig) {
super(store, itemTypeService,config);
}
getSource(feature: Feature<Geometry>): string {
let source = "/images/decease.png";
var type = feature.get('type');
source = '/images/' + type + '.png';
return source;
}
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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);
}
}

View File

@@ -19,19 +19,18 @@
<fm-map-layer-list [itemLayers]="overlayLayers|async" [selectedLayer]="selectedOverlayLayer|async" (onDelete)="handleOnDelete($event)" (onToggleVisibility)="handleOnToggleVisibility($event)" (onSetOpacity)="handleOnSetOpacity($event)" (onZoomToExtent)="handleZoomToExtent($event)" (onSelectLayer)="handleSelectOverlayLayer($event)"></fm-map-layer-list> <fm-map-layer-list [itemLayers]="overlayLayers|async" [selectedLayer]="selectedOverlayLayer|async" (onDelete)="handleOnDelete($event)" (onToggleVisibility)="handleOnToggleVisibility($event)" (onSetOpacity)="handleOnSetOpacity($event)" (onZoomToExtent)="handleZoomToExtent($event)" (onSelectLayer)="handleSelectOverlayLayer($event)"></fm-map-layer-list>
</div> </div>
</li> </li>
<li class="nav-item py-0" *ngIf="selectedItemLayer$ | async as selectedItemLayer">
<span><i class="fal fa-layer-group" aria-hidden="true"></i>&nbsp;<span i18n>Overlay slider</span><span class="slideButton"><a href="#" title="Compare" class="btn btn-light btn-sm" (click)="handleToggleShowDatalayerSlide($event)"><i class="fal fa-sliders-h-square"></i></a></span></span>
<div class="mb-4">
<fm-map-layer-list [dataLayers]="true" [itemLayers]="[selectedItemLayer]" [selectedLayer]="selectedItemLayer" (onToggleVisibility)="handleOnToggleVisibility($event)" (onSetOpacity)="handleOnSetOpacity($event)" (onZoomToExtent)="handleZoomToExtent($event)" (onSelectLayer)="handleSelectOverlayLayer($event)"></fm-map-layer-list>
</div>
</li>
<li class="nav-item py-0"> <li class="nav-item py-0">
<span><i class="fal fa-layer-group" aria-hidden="true"></i>&nbsp;<span i18n>Aerial photos</span></span> <span><i class="fal fa-layer-group" aria-hidden="true"></i>&nbsp;<span i18n>Aerial photos</span></span>
<div class="mb-4"> <div class="mb-4">
<fm-map-layer-list [baseLayers]="true" [itemLayers]="aerialMaps|async" [selectedLayer]="selectedBaseLayer|async" (onSelectLayer)="handleSelectBaseLayer($event)"></fm-map-layer-list> <fm-map-layer-list [baseLayers]="true" [itemLayers]="aerialMaps|async" [selectedLayer]="selectedBaseLayer|async" (onSelectLayer)="handleSelectBaseLayer($event)"></fm-map-layer-list>
</div> </div>
</li> </li>
<li class="nav-item py-0" *ngIf="selectedItemLayer$ | async as selectedItemLayer">
<span><i class="fal fa-layer-group" aria-hidden="true"></i>&nbsp;<span i18n>Data</span><span class="slideButton"><a href="#" title="Compare" class="btn btn-light btn-sm" (click)="handleToggleShowDatalayerSlide($event)"><i class="fal fa-sliders-h-square"></i></a></span></span>
<div class="mb-4">
<fm-map-layer-list [dataLayers]="true" [itemLayers]="[selectedItemLayer]" [selectedLayer]="selectedItemLayer" (onToggleVisibility)="handleOnToggleVisibility($event)" (onSetOpacity)="handleOnSetOpacity($event)" (onZoomToExtent)="handleZoomToExtent($event)" (onSelectLayer)="handleSelectOverlayLayer($event)"></fm-map-layer-list>
</div>
</li>
</ul> </ul>
</div> </div>
</div> </div>

View File

@@ -52,12 +52,21 @@ aol-map { position:absolute;width:100%;height:calc( 100vh );}
pointer-events: none; pointer-events: none;
} }
@media screen and (max-width: 768px) {
.control-container {
margin-left: 1em;
margin-right: 1em;
pointer-events: all;
}
}
@media screen and (min-width: 768px) {
.control-container { .control-container {
float: right; float: right;
margin-right: 1em; margin-right: 1em;
pointer-events: all; pointer-events: all;
} }
}
.fullscreen .viewport-container { .fullscreen .viewport-container {
margin-bottom: 1em; margin-bottom: 1em;

View File

@@ -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) {

View File

@@ -25,7 +25,7 @@ export class SelectedItemCropfieldComponent extends AbstractSelectedItemComponen
public items: Observable<IListItem[]>; public items: Observable<IListItem[]>;
constructor(store: Store<mapReducers.State | commonReducers.State>, itemTypeService: ItemTypeService, location: Location, router: Router, private itemService$: ItemService,private folderService$: FolderService) { constructor(store: Store<mapReducers.State | commonReducers.State>, itemTypeService: ItemTypeService, location: Location, router: Router, private itemService$: ItemService,private folderService$: FolderService) {
super(store, itemTypeService,location,router); super(store, itemTypeService, itemService$, location,router);
} }
areaInHa(item:IItem):number { areaInHa(item:IItem):number {

View File

@@ -21,7 +21,7 @@ export class SelectedItemGeotiffComponent extends AbstractSelectedItemComponent
sub: Subscription; sub: Subscription;
constructor(store: Store<mapReducers.State | commonReducers.State>, public itemService: ItemService, itemTypeService: ItemTypeService, location: Location, router: Router, private itemService$: ItemService,private folderService$: FolderService) { constructor(store: Store<mapReducers.State | commonReducers.State>, public itemService: ItemService, itemTypeService: ItemTypeService, location: Location, router: Router, private itemService$: ItemService,private folderService$: FolderService) {
super(store, itemTypeService,location,router); super(store, itemTypeService,itemService,location,router);
} }
ngOnDestroy(): void { ngOnDestroy(): void {

View File

@@ -22,7 +22,7 @@ export class SelectedItemShapeComponent extends AbstractSelectedItemComponent im
sub: Subscription; sub: Subscription;
constructor(store: Store<mapReducers.State | commonReducers.State>, public itemService: ItemService, itemTypeService: ItemTypeService, location: Location, router: Router, private itemService$: ItemService,private folderService$: FolderService) { constructor(store: Store<mapReducers.State | commonReducers.State>, public itemService: ItemService, itemTypeService: ItemTypeService, location: Location, router: Router, private itemService$: ItemService,private folderService$: FolderService) {
super(store, itemTypeService,location,router); super(store, itemTypeService,itemService,location,router);
} }
ngOnDestroy(): void { ngOnDestroy(): void {

View File

@@ -22,7 +22,7 @@ export class SelectedItemTemporalComponent extends AbstractSelectedItemComponent
sub: Subscription; sub: Subscription;
constructor(store: Store<mapReducers.State | commonReducers.State>, public itemService: ItemService, itemTypeService: ItemTypeService, location: Location, router: Router,public temporalService:TemporalService) { constructor(store: Store<mapReducers.State | commonReducers.State>, public itemService: ItemService, itemTypeService: ItemTypeService, location: Location, router: Router,public temporalService:TemporalService) {
super(store, itemTypeService,location,router); super(store, itemTypeService,itemService,location,router);
} }
ngOnDestroy(): void { ngOnDestroy(): void {

View File

@@ -2,7 +2,7 @@ import {Component, Injectable, Input, Directive} from '@angular/core';
import {Location} from '@angular/common'; import {Location} from '@angular/common';
import {Store} from '@ngrx/store'; import {Store} from '@ngrx/store';
import * as mapReducers from '../../reducers/map.reducer'; import * as mapReducers from '../../reducers/map.reducer';
import {AppConfig, commonReducers, IItem, ItemTypeService} from '@farmmaps/common'; import {AppConfig, commonReducers, IItem, ItemService, ItemTypeService} from '@farmmaps/common';
import * as mapActions from '../../actions/map.actions'; import * as mapActions from '../../actions/map.actions';
import {Router} from '@angular/router'; import {Router} from '@angular/router';
import { IItemLayer } from '../../models/item.layer'; import { IItemLayer } from '../../models/item.layer';
@@ -15,7 +15,7 @@ export abstract class AbstractSelectedItemComponent {
@Input() parentItem: IItem; @Input() parentItem: IItem;
@Input() itemLayer: IItemLayer; @Input() itemLayer: IItemLayer;
@Input() overlayLayers: Array<IItemLayer>; @Input() overlayLayers: Array<IItemLayer>;
constructor(public store: Store<mapReducers.State | commonReducers.State>, public itemTypeService: ItemTypeService, private location: Location, public router: Router) { constructor(public store: Store<mapReducers.State | commonReducers.State>, public itemTypeService: ItemTypeService, public itemService: ItemService, private location: Location, public router: Router) {
} }
handleOnView(item: IItem) { handleOnView(item: IItem) {
@@ -37,6 +37,11 @@ export abstract class AbstractSelectedItemComponent {
return false; return false;
} }
handleOnDelete(item: IItem) {
this.itemService.deleteItem(item.code);
return false;
}
handleAddAsLayer(item: IItem,layerIndex = -1) { handleAddAsLayer(item: IItem,layerIndex = -1) {
this.store.dispatch(new mapActions.AddLayer(item,layerIndex)); this.store.dispatch(new mapActions.AddLayer(item,layerIndex));
return false; return false;
@@ -76,8 +81,8 @@ export abstract class AbstractSelectedItemComponent {
}) })
export class SelectedItemComponent extends AbstractSelectedItemComponent { export class SelectedItemComponent extends AbstractSelectedItemComponent {
constructor(store: Store<mapReducers.State | commonReducers.State>, itemTypeService: ItemTypeService, location: Location, router: Router, public config:AppConfig) { constructor(store: Store<mapReducers.State | commonReducers.State>, itemTypeService: ItemTypeService, itemService: ItemService, location: Location, router: Router, public config:AppConfig) {
super(store, itemTypeService,location,router); super(store, itemTypeService,itemService,location,router);
} }
getThumbnailUrl(item:IItem):string { getThumbnailUrl(item:IItem):string {