42 Commits

Author SHA1 Message Date
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
250b3841fe 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-04-30 08:25:09 +02:00
51291cd86f AW-6801 Add switch to add full path to items result 2025-04-30 08:25:00 +02:00
jenkins
e9e3b719a4 [ci skip] Updated packages #2560
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-04-29 19:35:08 +00:00
jenkins
1c0ad57b0a Updated packages #2559
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-29 19:28:05 +00:00
jenkins
8684ba25c8 [ci skip] Updated packages #2558
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-28 08:22:16 +00:00
78ca3044cf 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-04-28 10:20:22 +02:00
2e55b5a70e AW-3101 vnd.farmmaps.itemtype.shape.processed download as shape (zip) 2025-04-28 10:20:19 +02:00
jenkins
af0a3dca2d [ci skip] Updated packages #2557
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-04-28 06:47:11 +00:00
f039898c26 AW-3101 vnd.farmmaps.itemtype.geotiff.processed -> Download as tiff
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-28 08:45:05 +02:00
jenkins
ab19b1c2ce [ci skip] Updated packages #2556
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-04-24 14:18:56 +00:00
a2641f8ea5 AW-3101 Alleen relevante plaatje downloaden bij satelliet
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-24 16:15:57 +02:00
jenkins
d6841c8f83 [ci skip] Updated packages #2555
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-04-23 14:39:24 +00:00
187b24ab97 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-04-23 16:37:29 +02:00
b80ddf7854 AW-6790 Admin -> users 2025-04-23 16:37:26 +02:00
jenkins
79bc3d9082 [ci skip] Updated packages #2554
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-04-23 13:46:30 +00:00
1c92ad4c28 AW-6790 Admin -> users
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-23 15:44:36 +02:00
jenkins
61e6de0052 [ci skip] Updated packages #2553
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-04-16 13:45:05 +00:00
fb25b92349 AW-6792 Update API
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-16 15:43:08 +02:00
jenkins
e78f2893ae [ci skip] Updated packages #2552
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-04-14 12:57:56 +00:00
51170b45e9 AW-6649 overlays boven luchtfoto’s
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-14 14:56:06 +02:00
jenkins
7365bea145 [ci skip] Updated packages #2551
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-04-14 11:36:12 +00:00
dc096065b4 AW-6649 Achtergrondlagen
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-14 13:34:18 +02:00
jenkins
b9850311ea [ci skip] Updated packages #2550
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-04-14 10:31:45 +00:00
ee9c050db3 AW-6649 Achtergrondlagen
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-14 12:29:56 +02:00
jenkins
95200d9920 [ci skip] Updated packages #2549
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-04-11 21:23:04 +00:00
jenkins
ee1ce21cca Updated packages #2548
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-11 21:16:35 +00:00
jenkins
467f7447bf [ci skip] Updated packages #2547
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-11 12:01:45 +00:00
jenkins
1df4496058 Updated packages #2546
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-04-11 11:55:57 +00:00
16 changed files with 195 additions and 136 deletions

12
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "farmmaps-lib-app", "name": "farmmaps-lib-app",
"version": "4.14.0", "version": "4.17.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "farmmaps-lib-app", "name": "farmmaps-lib-app",
"version": "4.14.0", "version": "4.17.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.14.0-prerelease.2544", "version": "2.1.0",
"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.14.0-prerelease.2544", "version": "4.17.0-prerelease.2569",
"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.14.0-prerelease.2544", "version": "4.17.0-prerelease.2570",
"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.14.0-prerelease.2544", "version": "18.0.0",
"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.14.0", "version": "4.17.0",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve", "start": "ng serve",

View File

@@ -10,7 +10,7 @@
<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>Base maps</span></span> <span><i class="fal fa-layer-group" aria-hidden="true"></i>&nbsp;<span i18n>Base maps</span></span>
<div class="mb-4"> <div class="mb-4">
<fm-map-layer-list [baseLayers]="true" [itemLayers]="baseLayers|async" [selectedLayer]="selectedBaseLayer|async" (onSelectLayer)="handleSelectBaseLayer($event)"></fm-map-layer-list> <fm-map-layer-list [baseLayers]="true" [itemLayers]="baseMaps|async" [selectedLayer]="selectedBaseLayer|async" (onSelectLayer)="handleSelectBaseLayer($event)"></fm-map-layer-list>
</div> </div>
</li> </li>
<li class="nav-item py-0"> <li class="nav-item py-0">
@@ -20,12 +20,17 @@
</div> </div>
</li> </li>
<li class="nav-item py-0" *ngIf="selectedItemLayer$ | async as selectedItemLayer"> <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> <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"> <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> <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> </div>
</li> </li>
<li class="nav-item py-0">
<span><i class="fal fa-layer-group" aria-hidden="true"></i>&nbsp;<span i18n>Aerial photos</span></span>
<div class="mb-4">
<fm-map-layer-list [baseLayers]="true" [itemLayers]="aerialMaps|async" [selectedLayer]="selectedBaseLayer|async" (onSelectLayer)="handleSelectBaseLayer($event)"></fm-map-layer-list>
</div>
</li>
</ul> </ul>
</div> </div>
</div> </div>

View File

@@ -4,7 +4,7 @@ import { Store } from '@ngrx/store';
import * as mapReducers from '../../reducers/map.reducer'; import * as mapReducers from '../../reducers/map.reducer';
import * as mapActions from '../../actions/map.actions'; import * as mapActions from '../../actions/map.actions';
import {createEmpty,extend } from 'ol/extent'; import {createEmpty,extend } from 'ol/extent';
import { Observable } from 'rxjs'; import { filter, map, Observable } from 'rxjs';
@Component({ @Component({
selector: 'fm-map-layer-switcher', selector: 'fm-map-layer-switcher',
@@ -17,7 +17,8 @@ export class LayerSwitcher implements OnInit,OnChanges{
public overlayLayers: Observable<Array<IItemLayer>>; public overlayLayers: Observable<Array<IItemLayer>>;
public selectedOverlayLayer: Observable<IItemLayer>; public selectedOverlayLayer: Observable<IItemLayer>;
public selectedItemLayer$: Observable<IItemLayer>; public selectedItemLayer$: Observable<IItemLayer>;
public baseLayers: Observable<Array<IItemLayer>>; public baseMaps: Observable<Array<IItemLayer>>;
public aerialMaps: Observable<Array<IItemLayer>>;
public selectedBaseLayer: Observable<IItemLayer>; public selectedBaseLayer: Observable<IItemLayer>;
constructor( private store: Store<mapReducers.State>) { constructor( private store: Store<mapReducers.State>) {
@@ -26,7 +27,8 @@ export class LayerSwitcher implements OnInit,OnChanges{
ngOnInit() { ngOnInit() {
this.overlayLayers = this.store.select(mapReducers.selectGetOverlayLayers); this.overlayLayers = this.store.select(mapReducers.selectGetOverlayLayers);
this.selectedOverlayLayer = this.store.select(mapReducers.selectGetSelectedOverlayLayer); this.selectedOverlayLayer = this.store.select(mapReducers.selectGetSelectedOverlayLayer);
this.baseLayers = this.store.select(mapReducers.selectGetBaseLayers); this.baseMaps = this.store.select(mapReducers.selectGetBaseMaps);
this.aerialMaps = this.store.select(mapReducers.selectGetArealMaps);
this.selectedBaseLayer = this.store.select(mapReducers.selectGetSelectedBaseLayer); this.selectedBaseLayer = this.store.select(mapReducers.selectGetSelectedBaseLayer);
this.selectedItemLayer$ = this.store.select(mapReducers.selectGetSelectedItemLayer) this.selectedItemLayer$ = this.store.select(mapReducers.selectGetSelectedItemLayer)
this.showLayerSwitcher = this.store.select(mapReducers.selectGetShowLayerSwitcher); this.showLayerSwitcher = this.store.select(mapReducers.selectGetShowLayerSwitcher);
@@ -83,3 +85,4 @@ export class LayerSwitcher implements OnInit,OnChanges{
event.preventDefault(); event.preventDefault();
} }
} }

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

@@ -7,28 +7,31 @@
<h2 *ngIf="parentOfItemType('vnd.farmmaps.itemtype.cropfield')">{{parentItem.name}}</h2> <h2 *ngIf="parentOfItemType('vnd.farmmaps.itemtype.cropfield')">{{parentItem.name}}</h2>
<h1>{{item.name}}</h1> <h1>{{item.name}}</h1>
</div> </div>
<div class="legend-container" *ngIf="item?.data.layers;let layers"> <ng-container *ngIf="item?.data.layers;let layers">
<div class="card menu-card"> <div class="legend-container">
<div *ngIf="layers.length>1"> <div class="card menu-card">
<select (change)="onLayerChanged($event.target.value)"> <div *ngIf="layers.length>1">
<option *ngFor="let l of layers;" [value]="l.index" [selected]="itemLayer.layerIndex == l.index">{{l.name}}</option> <select (change)="onLayerChanged($event.target.value)">
</select> <option *ngFor="let l of layers;" [value]="l.index" [selected]="itemLayer.layerIndex == l.index">{{l.name}}</option>
</select>
</div>
<fm-map-layer-legend [showTitle]="layers.length == 1"
[layer]="layer(layers,itemLayer.layerIndex)" [histogramenabled]="true"></fm-map-layer-legend>
</div> </div>
<fm-map-layer-legend [showTitle]="layers.length == 1"
[layer]="layer(layers,itemLayer.layerIndex)" [histogramenabled]="true"></fm-map-layer-legend>
</div> </div>
</div> <div class="card menu-card">
<div class="card menu-card"> <ul class="p-0 mt-2">
<ul class="p-0 mt-2"> <li *ngIf="item.isEditable"><a href="#" class="ms-1 me-1" (click)="handleOnEdit(item)"><i class="fal fa-pencil" aria-hidden="true" i18n-title title="Edit"></i>&nbsp;<span i18n>Edit</span></a></li>
<li *ngIf="item.isEditable"><a href="#" class="ms-1 me-1" (click)="handleOnEdit(item)"><i class="fal fa-pencil" aria-hidden="true" i18n-title title="Edit"></i>&nbsp;<span i18n>Edit</span></a></li> <ng-container *ngIf="itemTypeService.isLayer(item)">
<ng-container *ngIf="itemTypeService.isLayer(item)"> <li *ngIf="!getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleAddAsLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-plus" aria-hidden="true" i18n-title title="Add as layer"></i>&nbsp;<span i18n>Add as overlay</span></a></li>
<li *ngIf="!getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleAddAsLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-plus" aria-hidden="true" i18n-title title="Add as layer"></i>&nbsp;<span i18n>Add as overlay</span></a></li> <li *ngIf="getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleRemoveLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-minus" aria-hidden="true" i18n-title title="Remove overlay"></i>&nbsp;<span i18n>Remove overlay</span></a></li>
<li *ngIf="getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleRemoveLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-minus" aria-hidden="true" i18n-title title="Remove overlay"></i>&nbsp;<span i18n>Remove overlay</span></a></li> </ng-container>
</ng-container> <li><fm-item-link class="text-primary p-0" [itemCode]="item.code" pathSuffix="data" [showText]="true"></fm-item-link></li>
<li><fm-item-link class="text-primary p-0" [itemCode]="item.code" pathSuffix="data" [showText]="true"></fm-item-link></li> <li><a href="#" (click)="download($event,item,layers,itemLayer.layerIndex)"><i class="fal fa-download" aria-hidden="true" i18n-title title="Download"></i>&nbsp;<span i18n>Download</span></a></li>
</ul> </ul>
</div> </div>
<fm-map-zoom-to-show-alert [layer]="itemLayer?.layer"></fm-map-zoom-to-show-alert> <fm-map-zoom-to-show-alert [layer]="itemLayer?.layer"></fm-map-zoom-to-show-alert>
</ng-container>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,12 +1,13 @@
import { Component, Injectable } from '@angular/core';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
import { Store } from '@ngrx/store'; import { Component, Injectable, OnDestroy } from '@angular/core';
import * as mapReducers from '../../reducers/map.reducer';
import { commonReducers, ItemTypeService, ItemService, FolderService } from '@farmmaps/common';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { commonReducers, FolderService, IItem, IItemLinkType, ItemService, ItemTypeService, IUrlType } from '@farmmaps/common';
import { Store } from '@ngrx/store';
import { Subscription } from 'rxjs';
import * as mapActions from '../../actions/map.actions';
import * as mapReducers from '../../reducers/map.reducer';
import { ForItemType } from '../for-item/for-itemtype.decorator'; import { ForItemType } from '../for-item/for-itemtype.decorator';
import { AbstractSelectedItemComponent } from '../selected-item/selected-item.component'; import { AbstractSelectedItemComponent } from '../selected-item/selected-item.component';
import * as mapActions from '../../actions/map.actions';
@ForItemType("vnd.farmmaps.itemtype.geotiff.processed") @ForItemType("vnd.farmmaps.itemtype.geotiff.processed")
@@ -16,10 +17,15 @@ import * as mapActions from '../../actions/map.actions';
templateUrl: './selected-item-geotiff.component.html', templateUrl: './selected-item-geotiff.component.html',
styleUrls: ['./selected-item-geotiff.component.scss'] styleUrls: ['./selected-item-geotiff.component.scss']
}) })
export class SelectedItemGeotiffComponent extends AbstractSelectedItemComponent { export class SelectedItemGeotiffComponent extends AbstractSelectedItemComponent implements OnDestroy {
sub: Subscription;
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>, 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 {
if (this.sub) this.sub.unsubscribe();
} }
onLayerChanged(layerIndex: number) { onLayerChanged(layerIndex: number) {
@@ -29,4 +35,13 @@ export class SelectedItemGeotiffComponent extends AbstractSelectedItemComponent
layer(layers:any,layerIndex:number) { layer(layers:any,layerIndex:number) {
return layers.find(l => l.index == layerIndex); return layers.find(l => l.index == layerIndex);
} }
download(event:MouseEvent,item:IItem,layers:any,layerIndex:number) {
event.stopPropagation();
event.preventDefault();
const itemLink : IItemLinkType = {itemcode:item.code,query:`layer=${this.layer(layers,layerIndex).name}`,pathsuffix:"download", validminutes:10}
this.sub = this.itemService.getItemLink(itemLink).subscribe((itemLinkUrl:IUrlType) => {
window.location.href = itemLinkUrl.url;
})
}
} }

View File

@@ -7,25 +7,28 @@
<h2 *ngIf="parentOfItemType('vnd.farmmaps.itemtype.cropfield')">{{parentItem.name}}</h2> <h2 *ngIf="parentOfItemType('vnd.farmmaps.itemtype.cropfield')">{{parentItem.name}}</h2>
<h1>{{item.name}}</h1> <h1>{{item.name}}</h1>
</div> </div>
<div class="legend-container" *ngIf="item?.data.layers;let layers"> <ng-container *ngIf="item?.data.layers;let layers">
<div class="card menu-card"> <div class="legend-container">
<div *ngIf="layers.length>1"> <div class="card menu-card">
<select (change)="onLayerChanged($event.target.value)"> <div *ngIf="layers.length>1">
<option *ngFor="let l of layers;" [value]="l.index" [selected]="itemLayer.layerIndex == l.index">{{l.name}}</option> <select (change)="onLayerChanged($event.target.value)">
</select> <option *ngFor="let l of layers;" [value]="l.index" [selected]="itemLayer.layerIndex == l.index">{{l.name}}</option>
</select>
</div>
<fm-map-layer-legend [showTitle]="layers.length==1" [layer]="layer(layers,itemLayer.layerIndex)" [histogramenabled]="true"></fm-map-layer-legend>
</div> </div>
<fm-map-layer-legend [showTitle]="layers.length==1" [layer]="layer(layers,itemLayer.layerIndex)" [histogramenabled]="true"></fm-map-layer-legend>
</div> </div>
</div> <div class="card menu-card">
<div class="card menu-card"> <ul class="p-0 mt-2">
<ul class="p-0 mt-2"> <li *ngIf="item.isEditable"><a href="#" class="mt-1 me-1" (click)="handleOnEdit(item)" ><i class="fal fa-pencil" aria-hidden="true" i18n-title title="Edit"></i>&nbsp;<span i18n>Edit</span></a></li>
<li *ngIf="item.isEditable"><a href="#" class="mt-1 me-1" (click)="handleOnEdit(item)" ><i class="fal fa-pencil" aria-hidden="true" i18n-title title="Edit"></i>&nbsp;<span i18n>Edit</span></a></li> <ng-container *ngIf="itemTypeService.isLayer(item)">
<ng-container *ngIf="itemTypeService.isLayer(item)"> <li *ngIf="!getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleAddAsLayer(item,itemLayer.layerIndex)" ><i class="fas fa-layer-olus" aria-hidden="true" i18n-title title="Add as layer"></i>&nbsp;<span i18n>Add as overlay</span></a></li>
<li *ngIf="!getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleAddAsLayer(item,itemLayer.layerIndex)" ><i class="fas fa-layer-olus" aria-hidden="true" i18n-title title="Add as layer"></i>&nbsp;<span i18n>Add as overlay</span></a></li> <li *ngIf="getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleRemoveLayer(item,itemLayer.layerIndex)" ><i class="fas fa-layer-minus" aria-hidden="true" i18n-title title="Remove overlay"></i>&nbsp;<span i18n>Remove overlay</span></a></li>
<li *ngIf="getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleRemoveLayer(item,itemLayer.layerIndex)" ><i class="fas fa-layer-minus" aria-hidden="true" i18n-title title="Remove overlay"></i>&nbsp;<span i18n>Remove overlay</span></a></li> </ng-container>
</ng-container> <li><a href="#" (click)="download($event,item,layers,itemLayer.layerIndex)"><i class="fal fa-download" aria-hidden="true" i18n-title title="Download"></i>&nbsp;<span i18n>Download</span></a></li>
</ul> </ul>
</div> </div>
</ng-container>
<fm-map-zoom-to-show-alert [layer]="itemLayer?.layer"></fm-map-zoom-to-show-alert> <fm-map-zoom-to-show-alert [layer]="itemLayer?.layer"></fm-map-zoom-to-show-alert>
</div> </div>
</div> </div>

View File

@@ -1,14 +1,13 @@
import { Component, Input, Injectable, OnInit } from '@angular/core';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
import { Feature } from 'ol'; import { Component, Injectable, OnDestroy } from '@angular/core';
import { Router } from '@angular/router';
import { commonReducers, FolderService, IItem, IItemLinkType, ItemService, ItemTypeService, IUrlType } from '@farmmaps/common';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
import * as mapReducers from '../../reducers/map.reducer';
import { commonReducers, ItemTypeService, IItem, Item, ItemService, FolderService, IListItem} from '@farmmaps/common';
import * as mapActions from '../../actions/map.actions'; import * as mapActions from '../../actions/map.actions';
import { Router, ActivatedRoute, ParamMap, Event } from '@angular/router'; import * as mapReducers from '../../reducers/map.reducer';
import { ForItemType } from '../for-item/for-itemtype.decorator'; import { ForItemType } from '../for-item/for-itemtype.decorator';
import { AbstractSelectedItemComponent } from '../selected-item/selected-item.component'; import { AbstractSelectedItemComponent } from '../selected-item/selected-item.component';
import { Observable } from 'rxjs'; import { Subscription } from 'rxjs';
@ForItemType("vnd.farmmaps.itemtype.shape.processed") @ForItemType("vnd.farmmaps.itemtype.shape.processed")
@@ -18,13 +17,18 @@ import { Observable } from 'rxjs';
templateUrl: './selected-item-shape.component.html', templateUrl: './selected-item-shape.component.html',
styleUrls: ['./selected-item-shape.component.scss'] styleUrls: ['./selected-item-shape.component.scss']
}) })
export class SelectedItemShapeComponent extends AbstractSelectedItemComponent { export class SelectedItemShapeComponent extends AbstractSelectedItemComponent implements OnDestroy {
constructor(store: Store<mapReducers.State | commonReducers.State>, itemTypeService: ItemTypeService, location: Location, router: Router, private itemService$: ItemService,private folderService$: FolderService) {
super(store, itemTypeService,location,router);
}
public selectedLayer = 0; public selectedLayer = 0;
sub: Subscription;
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,itemService,location,router);
}
ngOnDestroy(): void {
if (this.sub) this.sub.unsubscribe();
}
onLayerChanged(layerIndex: number) { onLayerChanged(layerIndex: number) {
this.store.dispatch(new mapActions.SetLayerIndex(layerIndex)); this.store.dispatch(new mapActions.SetLayerIndex(layerIndex));
} }
@@ -32,4 +36,13 @@ export class SelectedItemShapeComponent extends AbstractSelectedItemComponent {
layer(layers:any,layerIndex:number) { layer(layers:any,layerIndex:number) {
return layers.find(l => l.index == layerIndex); return layers.find(l => l.index == layerIndex);
} }
download(event:MouseEvent,item:IItem,layers:any,layerIndex:number) {
event.stopPropagation();
event.preventDefault();
const itemLink : IItemLinkType = {itemcode:item.code,query:`layer=${this.layer(layers,layerIndex).name}`,pathsuffix:"download", validminutes:10}
this.sub = this.itemService.getItemLink(itemLink).subscribe((itemLinkUrl:IUrlType) => {
window.location.href = itemLinkUrl.url;
})
}
} }

View File

@@ -7,44 +7,46 @@
<h2 *ngIf="parentOfItemType('vnd.farmmaps.itemtype.cropfield')">{{parentItem.name}}</h2> <h2 *ngIf="parentOfItemType('vnd.farmmaps.itemtype.cropfield')">{{parentItem.name}}</h2>
<h1>{{item.name}}</h1> <h1>{{item.name}}</h1>
</div> </div>
<div class="legend-container" *ngIf="item?.data.layers;let layers"> <ng-container *ngIf="item?.data.layers;let layers">
<div class="legend-container">
<div class="card menu-card">
<h5><span i18n>Date</span>: {{temporalService.selectedDate(itemLayer)}}</h5>
<div class="d-flex justify-content-between">
<div>
<button *ngIf="temporalService.hasPrevious(itemLayer)" type="button" class="btn btn-link p-0" (click)="handlePreviousTemporal($event)">
<i class="fal fa-arrow-circle-left" aria-hidden="true" i18n-title title="Previous"></i>&nbsp;{{ temporalService.previousDate(itemLayer) }}
</button>
</div>
<div>
<button *ngIf="temporalService.hasNext(itemLayer)" type="button" class="btn btn-link p-0" (click)="handleNextTemporal($event)">
{{ temporalService.nextDate(itemLayer)}}&nbsp;<i class="fal fa-arrow-circle-right" aria-hidden="true" i18n-title title="Next"></i>
</button>
</div>
</div>
<fm-map-zoom-to-show-alert [layer]="currentItemLayer()?.layer"></fm-map-zoom-to-show-alert>
</div>
<div class="card menu-card pt-2">
<div *ngIf="layers.length>1">
<select (change)="onLayerChanged($event.target.value)">
<option *ngFor="let l of layers;" [value]="l.index" [selected]="itemLayer.layerIndex == l.index">{{l.name}}</option>
</select>
</div>
<fm-map-layer-legend [showTitle]="layers.length == 1"
[layer]="layer(layers,itemLayer.layerIndex)" [histogramenabled]="true"></fm-map-layer-legend>
</div>
</div>
<div class="card menu-card"> <div class="card menu-card">
<h5><span i18n>Date</span>: {{temporalService.selectedDate(itemLayer)}}</h5> <ul class="p-0 mt-2">
<div class="d-flex justify-content-between"> <li *ngIf="item.isEditable"><a href="#" class="mt-1 me-1" (click)="handleOnEdit(item)"><i class="fal fa-pencil" aria-hidden="true" i18n-title title="Edit"></i>&nbsp;<span i18n>Edit</span></a></li>
<div> <ng-container *ngIf="itemTypeService.isLayer(item)">
<button *ngIf="temporalService.hasPrevious(itemLayer)" type="button" class="btn btn-link p-0" (click)="handlePreviousTemporal($event)"> <li *ngIf="!getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleAddAsLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-plus" aria-hidden="true" i18n-title title="Add as layer"></i>&nbsp;<span i18n>Add as overlay</span></a></li>
<i class="fal fa-arrow-circle-left" aria-hidden="true" i18n-title title="Previous"></i>&nbsp;{{ temporalService.previousDate(itemLayer) }} <li *ngIf="getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleRemoveLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-minus" aria-hidden="true" i18n-title title="Remove overlay"></i>&nbsp;<span i18n>Remove overlay</span></a></li>
</button> </ng-container>
</div> <li><a href="#" (click)="handleGoToChart(item)"><i class="fal fa-line-chart" aria-hidden="true" i18m-title title="Show chart"></i>&nbsp;<span i18n>Show chart</span></a></li>
<div> <li><a href="#" (click)="download($event,item,layers,itemLayer.layerIndex)"><i class="fal fa-download" aria-hidden="true" i18n-title title="Download"></i>&nbsp;<span i18n>Download</span></a></li>
<button *ngIf="temporalService.hasNext(itemLayer)" type="button" class="btn btn-link p-0" (click)="handleNextTemporal($event)"> </ul>
{{ temporalService.nextDate(itemLayer)}}&nbsp;<i class="fal fa-arrow-circle-right" aria-hidden="true" i18n-title title="Next"></i>
</button>
</div>
</div>
<fm-map-zoom-to-show-alert [layer]="currentItemLayer()?.layer"></fm-map-zoom-to-show-alert>
</div> </div>
<div class="card menu-card pt-2"> </ng-container>
<div *ngIf="layers.length>1">
<select (change)="onLayerChanged($event.target.value)">
<option *ngFor="let l of layers;" [value]="l.index" [selected]="itemLayer.layerIndex == l.index">{{l.name}}</option>
</select>
</div>
<fm-map-layer-legend [showTitle]="layers.length == 1"
[layer]="layer(layers,itemLayer.layerIndex)" [histogramenabled]="true"></fm-map-layer-legend>
</div>
</div>
<div class="card menu-card">
<ul class="p-0 mt-2">
<li *ngIf="item.isEditable"><a href="#" class="mt-1 me-1" (click)="handleOnEdit(item)"><i class="fal fa-pencil" aria-hidden="true" i18n-title title="Edit"></i>&nbsp;<span i18n>Edit</span></a></li>
<ng-container *ngIf="itemTypeService.isLayer(item)">
<li *ngIf="!getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleAddAsLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-plus" aria-hidden="true" i18n-title title="Add as layer"></i>&nbsp;<span i18n>Add as overlay</span></a></li>
<li *ngIf="getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleRemoveLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-minus" aria-hidden="true" i18n-title title="Remove overlay"></i>&nbsp;<span i18n>Remove overlay</span></a></li>
</ng-container>
<li><a href="#" (click)="handleGoToChart(item)"><i class="fal fa-line-chart" aria-hidden="true" i18m-title title="Show chart"></i>&nbsp;<span i18n>Show chart</span></a></li>
<li><a href="#" (click)="download(item,$event)"><i class="fal fa-download" aria-hidden="true" i18n-title title="Download"></i>&nbsp;<span i18n>Download</span></a></li>
</ul>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,15 +1,15 @@
import { Component, Injectable } from '@angular/core';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
import { Store } from '@ngrx/store'; import { Component, Injectable, OnDestroy } from '@angular/core';
import * as mapReducers from '../../reducers/map.reducer';
import { commonReducers, ItemTypeService, IItem, ItemService, IItemLinkType, IUrlType } from '@farmmaps/common';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { commonReducers, IItem, IItemLinkType, ItemService, ItemTypeService, IUrlType } from '@farmmaps/common';
import { Store } from '@ngrx/store';
import { Subscription } from 'rxjs';
import * as mapActions from '../../actions/map.actions';
import { IItemLayer, ITemporalItemLayer } from '../../models/item.layer';
import * as mapReducers from '../../reducers/map.reducer';
import { TemporalService } from '../../services/temporal.service';
import { ForItemType } from '../for-item/for-itemtype.decorator'; import { ForItemType } from '../for-item/for-itemtype.decorator';
import { AbstractSelectedItemComponent } from '../selected-item/selected-item.component'; import { AbstractSelectedItemComponent } from '../selected-item/selected-item.component';
import { ITemporalItemLayer} from '../../models/item.layer';
import * as mapActions from '../../actions/map.actions';
import { IItemLayer } from '../../models/item.layer';
import {TemporalService} from '../../services/temporal.service';
@ForItemType("vnd.farmmaps.itemtype.temporal") @ForItemType("vnd.farmmaps.itemtype.temporal")
@Injectable() @Injectable()
@@ -18,10 +18,15 @@ import {TemporalService} from '../../services/temporal.service';
templateUrl: './selected-item-temporal.component.html', templateUrl: './selected-item-temporal.component.html',
styleUrls: ['./selected-item-temporal.component.scss'] styleUrls: ['./selected-item-temporal.component.scss']
}) })
export class SelectedItemTemporalComponent extends AbstractSelectedItemComponent { export class SelectedItemTemporalComponent extends AbstractSelectedItemComponent implements OnDestroy {
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 {
if (this.sub) this.sub.unsubscribe();
} }
onLayerChanged(layerIndex: number) { onLayerChanged(layerIndex: number) {
@@ -32,8 +37,6 @@ export class SelectedItemTemporalComponent extends AbstractSelectedItemComponent
return (this.itemLayer as ITemporalItemLayer)?.selectedItemLayer return (this.itemLayer as ITemporalItemLayer)?.selectedItemLayer
} }
handleNextTemporal(event:MouseEvent) { handleNextTemporal(event:MouseEvent) {
this.store.dispatch(new mapActions.NextTemporal()); this.store.dispatch(new mapActions.NextTemporal());
event.preventDefault(); event.preventDefault();
@@ -61,14 +64,12 @@ export class SelectedItemTemporalComponent extends AbstractSelectedItemComponent
return false; return false;
} }
download(item:IItem,event:MouseEvent) { download(event:MouseEvent,item:IItem,layers:any,layerIndex:number) {
event.stopPropagation(); event.stopPropagation();
event.preventDefault(); event.preventDefault();
const itemLink : IItemLinkType = {itemcode:item.code,pathsuffix:"download", validminutes:10} const itemLink : IItemLinkType = {itemcode:item.code,query:`layer=${this.layer(layers,layerIndex).name}`,pathsuffix:"download", validminutes:10}
console.log('download1', itemLink) this.sub = this.itemService.getItemLink(itemLink).subscribe((itemLinkUrl:IUrlType) => {
const foo = this.itemService.getItemLink(itemLink).subscribe((itemLinkUrl:IUrlType) => { window.location.href = itemLinkUrl.url;
console.log('download2', itemLinkUrl)
window.location.href =itemLinkUrl.url
}) })
} }
} }

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 {

View File

@@ -637,6 +637,8 @@ export const selectGetExtent = createSelector(selectMapState, getExtent);
export const selectGetViewExtent = createSelector(selectMapState, getViewExtent); export const selectGetViewExtent = createSelector(selectMapState, getViewExtent);
export const selectGetOverlayLayers = createSelector(selectMapState, getOverlayLayers); export const selectGetOverlayLayers = createSelector(selectMapState, getOverlayLayers);
export const selectGetBaseLayers = createSelector(selectMapState, getBaseLayers); export const selectGetBaseLayers = createSelector(selectMapState, getBaseLayers);
export const selectGetBaseMaps = createSelector(selectGetBaseLayers, (layers) => layers.filter(layer => layer.item.data.category === "baseMap"));
export const selectGetArealMaps = createSelector(selectGetBaseLayers, (layers) => layers.filter(layer => layer.item.data.category === "aerialPhoto").sort((a, b) => a.item.dataDate <= b.item.dataDate ? 1 : -1));
export const selectGetProjection = createSelector(selectMapState, getProjection); export const selectGetProjection = createSelector(selectMapState, getProjection);
export const selectGetSelectedBaseLayer = createSelector(selectMapState, getSelectedBaseLayer); export const selectGetSelectedBaseLayer = createSelector(selectMapState, getSelectedBaseLayer);
export const selectGetSelectedOverlayLayer = createSelector(selectMapState, getSelectedOverlayLayer); export const selectGetSelectedOverlayLayer = createSelector(selectMapState, getSelectedOverlayLayer);

View File

@@ -26,6 +26,7 @@ export class Item implements IItem {
public data?:any; public data?:any;
public isEditable?:boolean; public isEditable?:boolean;
public owner?: string; public owner?: string;
public fullPath?: string;
constructor() { constructor() {
} }

View File

@@ -53,15 +53,19 @@ export class AdminService {
return this.httpClient.post<IItemTask>(`${this.ApiEndpoint()}/api/v1/admin/${item.code}/tasks`, task); return this.httpClient.post<IItemTask>(`${this.ApiEndpoint()}/api/v1/admin/${item.code}/tasks`, task);
} }
getAnalyseFolderOverview(): Observable<any> { getFileStorageOverview(): Observable<any> {
return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/admin/analysefolder/folderinfo/overview`); return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/admin/filestorage/folderinfo/overview`);
} }
getAnalyseFolderInfo(user: string): Observable<any> { getFileStorageInfo(user: string): Observable<any> {
return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/admin/analysefolder/folderinfo/${user}`); return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/admin/filestorage/folderinfo/${user}`);
} }
getAnalyseFolderLog(): Observable<any> { getFileStorageLog(): Observable<any> {
return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/admin/analysefolder/folderinfo/log`); return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/admin/filestorage/folderinfo/log`);
}
validateEmail(user: IUser) {
return this.httpClient.post(`${this.ApiEndpoint()}/api/v1/admin/user/${user.code}/validateemail`, user);
} }
} }

View File

@@ -79,7 +79,8 @@ export class ItemService {
getItemList(itemType?: string, dataFilter?: any, level?: number, atItemLocationItemCode?: string, getItemList(itemType?: string, dataFilter?: any, level?: number, atItemLocationItemCode?: string,
indexed?: boolean, validToday?: boolean,tags?:string,crs?:string, startDate?: Date, endDate?: Date, indexed?: boolean, validToday?: boolean,tags?:string,crs?:string, startDate?: Date, endDate?: Date,
skip?: number, take?: number, sourceTask?: string, exactMatchStartOrEndDate?: boolean, owner?:string): Observable<IItem[]> { skip?: number, take?: number, sourceTask?: string, exactMatchStartOrEndDate?: boolean, owner?:string,
includeFullpath?: boolean): Observable<IItem[]> {
let params = new HttpParams(); let params = new HttpParams();
if(itemType) params = params.append("it", itemType); if(itemType) params = params.append("it", itemType);
if(dataFilter) params = params.append("df", JSON.stringify(dataFilter)); if(dataFilter) params = params.append("df", JSON.stringify(dataFilter));
@@ -96,6 +97,7 @@ export class ItemService {
if(take) params = params.append("take", take); if(take) params = params.append("take", take);
if(exactMatchStartOrEndDate !== undefined) params = params.append("exactMatchStartOrEndDate", exactMatchStartOrEndDate); if(exactMatchStartOrEndDate !== undefined) params = params.append("exactMatchStartOrEndDate", exactMatchStartOrEndDate);
if(owner) params = params.append("owner", owner); if(owner) params = params.append("owner", owner);
if(includeFullpath) params = params.append("includeFullpath",includeFullpath?"true":"false");
return this.httpClient.get<IItem[]>(`${this.ApiEndpoint()}/api/v1/items/`, { params: params }); return this.httpClient.get<IItem[]>(`${this.ApiEndpoint()}/api/v1/items/`, { params: params });
} }