Compare commits

...

63 Commits

Author SHA1 Message Date
jenkins
2137f3f07e [ci skip] Updated packages #2545
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-24 08:17:20 +00:00
a46e8040b2 AW-6756 Settingsknop Explorer dezelfde kleur als het logo van de explorer.
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-24 09:13:47 +01:00
jenkins
2ca9730735 [ci skip] Updated packages #2544
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-14 14:27:03 +00:00
3d2ca8fb9f 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-03-14 15:25:09 +01:00
6810da8b79 AW-6742 Add analyse functions 2025-03-14 15:25:06 +01:00
jenkins
4866a6f22d [ci skip] Updated packages #2543
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-13 07:46:33 +00:00
84a1004977 Fix redirect URL for locale (without loosing queryparms)
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-13 08:44:46 +01:00
39c619a837 Fix RVO redirect URL for locale (without loosing queryparms)
Some checks failed
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2025-03-13 08:38:24 +01:00
jenkins
758613aa12 [ci skip] Updated packages #2541
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-12 14:40:01 +00:00
6914a61bc4 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-03-12 15:38:06 +01:00
9f43287433 Revert "Fix RVO redirect URL for locale (without loosing queryparms)"
This reverts commit df14427d604ed254908c9192f5789e2ba924660d.
2025-03-12 15:37:59 +01:00
jenkins
10df983ae3 [ci skip] Updated packages #2540
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-12 14:16:55 +00:00
78249811ab 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-03-12 15:15:01 +01:00
df14427d60 Fix RVO redirect URL for locale (without loosing queryparms) 2025-03-12 15:14:58 +01:00
jenkins
c7c131d437 [ci skip] Updated packages #2539
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-12 13:49:12 +00:00
b2fe8f3bd7 Fix RVO redirect URL for locale
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-12 14:47:17 +01:00
jenkins
3027c69fa8 [ci skip] Updated packages #2538
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-12 08:00:13 +00:00
5995d205a4 AW-2925 Accidently removed
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-12 08:58:19 +01:00
jenkins
fd479c92d8 [ci skip] Updated packages #2537
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-10 10:30:23 +00:00
e9880d6eb2 AW-2925 Data temporal item
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-10 11:28:34 +01:00
jenkins
a4438d8a90 [ci skip] Updated packages #2536
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-04 07:54:29 +00:00
89061774de AW-6716 Uploaden avatar geeft foutmelding
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
Caused by BREAKING CHANGE: by default the output will be set to blob. Using blob instead of a base64 should decrease the memory usage. If you wish to keep using base64, simply add output="base64" to the <image-cropper> tag. (https://github.com/Mawi137/ngx-image-cropper/releases/tag/7.0.0)
2025-03-04 08:52:38 +01:00
jenkins
362e6c8534 [ci skip] Updated packages #2535
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-03 14:34:07 +00:00
64a0e58238 AW-3128 Cleanup
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-03 15:32:16 +01:00
jenkins
a3d4dfbd59 [ci skip] Updated packages #2534
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-03 14:05:03 +00:00
4c106ebff3 AW-3128 Taalinstellingen profiel gebruiken voor FarmMaps ipv browser instelling
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-03 15:02:59 +01:00
jenkins
5c8fd64521 [ci skip] Updated packages #2533
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-12-03 12:02:22 +00:00
72ba8eca81 AW-6556 The Angular Material version (18.2.4) does not match the Angular CDK version (18.2.3).
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-12-03 13:00:12 +01:00
jenkins
f89f741265 [ci skip] Updated packages #2532
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-12-02 09:31:15 +00:00
50af55acb2 AW-6480 Blauwe balk van upload venster is niet zichtbaar in de explorer
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-12-02 10:29:18 +01:00
jenkins
cc879b85e5 [ci skip] Updated packages #2531
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-21 09:49:47 +00:00
b4a0a4584d 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
2024-11-21 10:47:51 +01:00
8ab1611f39 AW-6504 Support indexed on retrieving child items 2024-11-21 10:47:42 +01:00
jenkins
475c522039 [ci skip] Updated packages #2530
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-20 15:35:21 +00:00
068396ac9a added TaskService
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-20 16:33:20 +01:00
jenkins
4a30707ec6 [ci skip] Updated packages #2529
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-20 08:13:33 +00:00
852b1db895 added workflowcode to IItemTask
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-20 09:11:34 +01:00
jenkins
fcbd68eca0 [ci skip] Updated packages #2528
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-19 12:25:40 +00:00
3a42f9114e 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
2024-11-19 13:23:36 +01:00
3f664b472c Fixed VM104:1 Uncaught TypeError: Cannot read properties of null (reading 'vnd.farmmaps.itemtype.croppingscheme') at eval (eval at getExtraAttributes (main.ce80740d3a633957.js:311566:14), <anonymous>:1:15) 2024-11-19 13:23:32 +01:00
jenkins
57811f3f2e [ci skip] Updated packages #2527
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-15 13:08:26 +00:00
5e1bc6d705 AW-6495 Exception editor croppingscheme: do not use 'item' in route
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-15 14:06:33 +01:00
d4a230f96d AW-6495 Exception editor croppingscheme: do not use 'item' in route 2024-11-15 14:06:11 +01:00
jenkins
ed1e1478b2 [ci skip] Updated packages #2526
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-14 13:23:40 +00:00
afe013a59a 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
2024-11-14 14:21:46 +01:00
db3734f8a3 AW-6466 Filter by (given) owner 2024-11-14 14:21:43 +01:00
jenkins
86f75c7f78 [ci skip] Updated packages #2525
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-12 13:41:57 +00:00
a7abb4072b AW-6466 Fixed double line of code
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-12 14:40:05 +01:00
jenkins
61d6446d75 [ci skip] Updated packages #2524
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-12 09:14:09 +00:00
392008ae4b 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
2024-11-12 10:12:15 +01:00
093c26c7f3 AW-6466 Fix optional boolean value to overrule default. 2024-11-12 10:12:12 +01:00
jenkins
a8e1ba6c02 [ci skip] Updated packages #2523
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-12 08:01:08 +00:00
e64fbfd014 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
2024-11-12 08:56:59 +01:00
8cd7b85de2 AW-6466 Overrule exact matching on data start/end date with from/until behavior 2024-11-12 08:56:50 +01:00
jenkins
ddc7f97e27 [ci skip] Updated packages #2522
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-12 07:49:58 +00:00
24e3765c28 AW-6466 Overrule exact matching on data start/end date with from/until behavior
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-12 08:48:02 +01:00
jenkins
86f3ddb34b [ci skip] Updated packages #2521
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-05 08:27:53 +00:00
d6c55ef82b 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
2024-11-05 09:26:03 +01:00
d977ddfb7b Fix null ref exception 2024-11-05 09:26:00 +01:00
jenkins
0e8bd5343d [ci skip] Updated packages #2520
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-10-30 10:39:49 +00:00
ceeaa89ba3 AW-6410 Add indexed parm to getItemListCount
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-10-30 11:37:51 +01:00
jenkins
c3dbf85eb6 [ci skip] Updated packages #2519
Some checks reported errors
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-10-23 12:02:56 +00:00
ad5fe95b55 AW-6410 Add extra parms to /api/v1/items/../children/count
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-10-23 14:00:47 +02:00
23 changed files with 228 additions and 94 deletions

54
package-lock.json generated
View File

@ -1,22 +1,22 @@
{ {
"name": "farmmaps-lib-app", "name": "farmmaps-lib-app",
"version": "4.11.0", "version": "4.14.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "farmmaps-lib-app", "name": "farmmaps-lib-app",
"version": "4.11.0", "version": "4.14.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",
"@angular/common": "^18.2.3", "@angular/common": "18.2.3",
"@angular/compiler": "^18.2.3", "@angular/compiler": "18.2.3",
"@angular/core": "^18.2.3", "@angular/core": "18.2.3",
"@angular/forms": "^18.2.3", "@angular/forms": "18.2.3",
"@angular/platform-browser": "^18.2.3", "@angular/platform-browser": "18.2.3",
"@angular/platform-browser-dynamic": "^18.2.3", "@angular/platform-browser-dynamic": "18.2.3",
"@angular/router": "^18.2.3", "@angular/router": "18.2.3",
"@farmmaps/common": "file:dist/common", "@farmmaps/common": "file:dist/common",
"@farmmaps/common-map": "file:dist/common-map", "@farmmaps/common-map": "file:dist/common-map",
"@farmmaps/common-map3d": "file:dist/common-map3d", "@farmmaps/common-map3d": "file:dist/common-map3d",
@ -55,11 +55,11 @@
}, },
"devDependencies": { "devDependencies": {
"@angular-builders/custom-webpack": "^18.0.0", "@angular-builders/custom-webpack": "^18.0.0",
"@angular-devkit/build-angular": "^18.2.3", "@angular-devkit/build-angular": "18.2.3",
"@angular/cli": "^18.2.3", "@angular/cli": "18.2.3",
"@angular/compiler-cli": "^18.2.3", "@angular/compiler-cli": "18.2.3",
"@angular/language-service": "^18.2.3", "@angular/language-service": "18.2.3",
"@angular/localize": "^18.2.3", "@angular/localize": "18.2.3",
"@types/arcgis-rest-api": "^10.4.5", "@types/arcgis-rest-api": "^10.4.5",
"@types/jasmine": "~2.8.8", "@types/jasmine": "~2.8.8",
"@types/jasminewd2": "^2.0.9", "@types/jasminewd2": "^2.0.9",
@ -90,14 +90,14 @@
}, },
"dist/common": { "dist/common": {
"name": "@farmmaps/common", "name": "@farmmaps/common",
"version": "4.11.0-prerelease.2517", "version": "4.14.0-prerelease.2544",
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/common": "^18.2.3", "@angular/common": "18.2.3",
"@angular/core": "^18.2.3", "@angular/core": "18.2.3",
"@angular/forms": "^18.2.3", "@angular/forms": "18.2.3",
"@microsoft/signalr": "^3.1.16", "@microsoft/signalr": "^3.1.16",
"@ng-bootstrap/ng-bootstrap": "^17.0.1", "@ng-bootstrap/ng-bootstrap": "^17.0.1",
"@ngrx/effects": "^18.0.2", "@ngrx/effects": "^18.0.2",
@ -115,12 +115,12 @@
}, },
"dist/common-map": { "dist/common-map": {
"name": "@farmmaps/common-map", "name": "@farmmaps/common-map",
"version": "4.11.0-prerelease.2517", "version": "4.14.0-prerelease.2544",
"dependencies": { "dependencies": {
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/core": "^18.2.3", "@angular/core": "18.2.3",
"@ngrx/effects": "^18.0.2", "@ngrx/effects": "^18.0.2",
"@ngrx/router-store": "^18.0.2", "@ngrx/router-store": "^18.0.2",
"@ngrx/store": "^18.0.2", "@ngrx/store": "^18.0.2",
@ -130,27 +130,27 @@
}, },
"dist/common-map3d": { "dist/common-map3d": {
"name": "@farmmaps/common-map3d", "name": "@farmmaps/common-map3d",
"version": "4.11.0-prerelease.2517", "version": "4.14.0-prerelease.2544",
"dependencies": { "dependencies": {
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/common": "^18.2.3", "@angular/common": "18.2.3",
"@angular/core": "^18.2.3", "@angular/core": "18.2.3",
"cesium": "^1.97.0", "cesium": "^1.97.0",
"ol-cesium": ">=2.13.0" "ol-cesium": ">=2.13.0"
} }
}, },
"dist/ng-openlayers": { "dist/ng-openlayers": {
"name": "@farmmaps/ng-openlayers", "name": "@farmmaps/ng-openlayers",
"version": "4.11.0-prerelease.2517", "version": "4.14.0-prerelease.2544",
"license": "MPL-2.0", "license": "MPL-2.0",
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/common": "^18.2.3", "@angular/common": "18.2.3",
"@angular/core": "^18.2.3", "@angular/core": "18.2.3",
"ol": "^8.2.0" "ol": "^8.2.0"
} }
}, },

View File

@ -1,6 +1,6 @@
{ {
"name": "farmmaps-lib-app", "name": "farmmaps-lib-app",
"version": "4.11.0", "version": "4.14.0",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve", "start": "ng serve",
@ -12,14 +12,14 @@
"private": true, "private": true,
"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",
"@angular/common": "^18.2.3", "@angular/common": "18.2.3",
"@angular/compiler": "^18.2.3", "@angular/compiler": "18.2.3",
"@angular/core": "^18.2.3", "@angular/core": "18.2.3",
"@angular/forms": "^18.2.3", "@angular/forms": "18.2.3",
"@angular/platform-browser": "^18.2.3", "@angular/platform-browser": "18.2.3",
"@angular/platform-browser-dynamic": "^18.2.3", "@angular/platform-browser-dynamic": "18.2.3",
"@angular/router": "^18.2.3", "@angular/router": "18.2.3",
"@farmmaps/common": "file:dist/common", "@farmmaps/common": "file:dist/common",
"@farmmaps/common-map": "file:dist/common-map", "@farmmaps/common-map": "file:dist/common-map",
"@farmmaps/common-map3d": "file:dist/common-map3d", "@farmmaps/common-map3d": "file:dist/common-map3d",
@ -62,11 +62,11 @@
}, },
"devDependencies": { "devDependencies": {
"@angular-builders/custom-webpack": "^18.0.0", "@angular-builders/custom-webpack": "^18.0.0",
"@angular-devkit/build-angular": "^18.2.3", "@angular-devkit/build-angular": "18.2.3",
"@angular/cli": "^18.2.3", "@angular/cli": "18.2.3",
"@angular/compiler-cli": "^18.2.3", "@angular/compiler-cli": "18.2.3",
"@angular/language-service": "^18.2.3", "@angular/language-service": "18.2.3",
"@angular/localize": "^18.2.3", "@angular/localize": "18.2.3",
"@types/arcgis-rest-api": "^10.4.5", "@types/arcgis-rest-api": "^10.4.5",
"@types/jasmine": "~2.8.8", "@types/jasmine": "~2.8.8",
"@types/jasminewd2": "^2.0.9", "@types/jasminewd2": "^2.0.9",

View File

@ -8,7 +8,7 @@
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/core": "^18.2.3", "@angular/core": "18.2.3",
"ngrx-store-localstorage": "^18.0.0", "ngrx-store-localstorage": "^18.0.0",
"@ngrx/effects": "^18.0.2", "@ngrx/effects": "^18.0.2",
"@ngrx/router-store": "^18.0.2", "@ngrx/router-store": "^18.0.2",

View File

@ -42,6 +42,7 @@
<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)="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)="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> </ul>
</div> </div>
</div> </div>

View File

@ -2,7 +2,7 @@ import { Component, Injectable } 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 { commonReducers, ItemTypeService, IItem } from '@farmmaps/common'; import { commonReducers, ItemTypeService, IItem, ItemService, IItemLinkType, IUrlType } from '@farmmaps/common';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
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';
@ -11,7 +11,6 @@ import * as mapActions from '../../actions/map.actions';
import { IItemLayer } from '../../models/item.layer'; import { IItemLayer } from '../../models/item.layer';
import {TemporalService} from '../../services/temporal.service'; import {TemporalService} from '../../services/temporal.service';
@ForItemType("vnd.farmmaps.itemtype.temporal") @ForItemType("vnd.farmmaps.itemtype.temporal")
@Injectable() @Injectable()
@Component({ @Component({
@ -21,7 +20,7 @@ import {TemporalService} from '../../services/temporal.service';
}) })
export class SelectedItemTemporalComponent extends AbstractSelectedItemComponent { export class SelectedItemTemporalComponent extends AbstractSelectedItemComponent {
constructor(store: Store<mapReducers.State | commonReducers.State>, 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,location,router);
} }
@ -61,4 +60,15 @@ export class SelectedItemTemporalComponent extends AbstractSelectedItemComponent
this.router.navigate(['/viewer', 'temporal', 'item', item.parentCode, new Date(Date.parse(item.dataDate)).getUTCFullYear()]); this.router.navigate(['/viewer', 'temporal', 'item', item.parentCode, new Date(Date.parse(item.dataDate)).getUTCFullYear()]);
return false; return false;
} }
download(item:IItem,event:MouseEvent) {
event.stopPropagation();
event.preventDefault();
const itemLink : IItemLinkType = {itemcode:item.code,pathsuffix:"download", validminutes:10}
console.log('download1', itemLink)
const foo = this.itemService.getItemLink(itemLink).subscribe((itemLinkUrl:IUrlType) => {
console.log('download2', itemLinkUrl)
window.location.href =itemLinkUrl.url
})
}
} }

View File

@ -8,8 +8,8 @@
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/common": "^18.2.3", "@angular/common": "18.2.3",
"@angular/core": "^18.2.3", "@angular/core": "18.2.3",
"cesium": "^1.97.0", "cesium": "^1.97.0",
"ol-cesium": ">=2.13.0" "ol-cesium": ">=2.13.0"
} }

View File

@ -6,9 +6,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@ng-bootstrap/ng-bootstrap": "^17.0.1", "@ng-bootstrap/ng-bootstrap": "^17.0.1",
"@angular/common": "^18.2.3", "@angular/common": "18.2.3",
"@angular/core": "^18.2.3", "@angular/core": "18.2.3",
"@angular/forms": "^18.2.3", "@angular/forms": "18.2.3",
"@ngrx/effects": "^18.0.2", "@ngrx/effects": "^18.0.2",
"@ngrx/router-store": "^18.0.2", "@ngrx/router-store": "^18.0.2",
"@ngrx/store": "^18.0.2", "@ngrx/store": "^18.0.2",

View File

@ -83,6 +83,11 @@ export const SETPAGEMODE = '[AppCommon] SetPageMode';
export const SETUNREADNOTIFICATIONS = '[AppCommon] SetUnreadNotifications'; export const SETUNREADNOTIFICATIONS = '[AppCommon] SetUnreadNotifications';
export const SWITCHLANGUAGE = '[AppCommon] SwitchLanguage';
export const SETSETTINGMENUBACKGROUNDCOLOR = '[AppCommon] SetSettingMenuBackgroundColor';
export class InitUser implements Action { export class InitUser implements Action {
readonly type = INITUSER; readonly type = INITUSER;
@ -371,6 +376,17 @@ export class SetUnreadNotifications implements Action {
} }
export class SwitchLanguage implements Action {
readonly type = SWITCHLANGUAGE;
constructor(public locale:string) { }
}
export class SetSettingMenuBackgroundColor implements Action {
readonly type = SETSETTINGMENUBACKGROUNDCOLOR;
constructor(public color:string) { }
}
export type Actions = OpenModal export type Actions = OpenModal
| InitRoot | InitRoot
@ -418,6 +434,8 @@ export type Actions = OpenModal
| ToggleHelpMenu | ToggleHelpMenu
| ToggleSettingMenu | ToggleSettingMenu
| NotificationEvent | NotificationEvent
| SetUnreadNotifications; | SetUnreadNotifications
| SwitchLanguage
| SetSettingMenuBackgroundColor;

View File

@ -13,6 +13,7 @@ import { SchemaService } from './services/schema.service';
import { FolderService } from './services/folder.service'; import { FolderService } from './services/folder.service';
import { TimespanService } from './services/timespan.service'; import { TimespanService } from './services/timespan.service';
import { ItemService } from './services/item.service'; import { ItemService } from './services/item.service';
import { TaskService } from './services/task.service';
import { AdminService } from './services/admin.service'; import { AdminService } from './services/admin.service';
import { EventService } from './services/event.service'; import { EventService } from './services/event.service';
import { TypeaheadService } from './services/typeahead.service'; import { TypeaheadService } from './services/typeahead.service';
@ -44,6 +45,7 @@ export {
ItemTypeService, ItemTypeService,
TimespanService, TimespanService,
ItemService, ItemService,
TaskService,
AdminService, AdminService,
EventService, EventService,
TypeaheadService, TypeaheadService,

View File

@ -33,7 +33,7 @@
<fm-resumable-file-upload></fm-resumable-file-upload> <fm-resumable-file-upload></fm-resumable-file-upload>
</ng-container> </ng-container>
<div class="user-menu apponly"> <div class="user-menu apponly">
<fm-setting-menu [user]="user|async" [showMenu]="settingMenuVisible|async"></fm-setting-menu> <fm-setting-menu [user]="user|async" [showMenu]="settingMenuVisible|async" [backgroundColor]="settingMenuBackgroundColor|async"></fm-setting-menu>
<fm-help-menu [user]="user|async" [showMenu]="helpMenuVisible|async"></fm-help-menu> <fm-help-menu [user]="user|async" [showMenu]="helpMenuVisible|async"></fm-help-menu>
<fm-notification-menu [user]="user|async" [unread]="unreadNotifications|async" [showMenu]="notificationMenuVisible|async"></fm-notification-menu> <fm-notification-menu [user]="user|async" [unread]="unreadNotifications|async" [showMenu]="notificationMenuVisible|async"></fm-notification-menu>
<fm-app-menu [user]="user|async" [showMenu]="appMenuVisible|async"></fm-app-menu> <fm-app-menu [user]="user|async" [showMenu]="appMenuVisible|async"></fm-app-menu>

View File

@ -50,6 +50,7 @@ export class AppComponent implements OnInit, OnDestroy {
public unreadNotifications: Observable<number> = this.store$.select(appReducers.SelectgetUnreadNotifications); public unreadNotifications: Observable<number> = this.store$.select(appReducers.SelectgetUnreadNotifications);
public user: Observable<IUser> = this.store$.select(appReducers.SelectGetUser); public user: Observable<IUser> = this.store$.select(appReducers.SelectGetUser);
public isPageMode: Observable<boolean> = this.store$.select(appReducers.SelectGetIsPageMode); public isPageMode: Observable<boolean> = this.store$.select(appReducers.SelectGetIsPageMode);
public settingMenuBackgroundColor: Observable<string> = this.store$.select(appReducers.SelectGetSettingMenuBackgroundColor);
@Input() showUploadProgress = true; @Input() showUploadProgress = true;
constructor( constructor(

View File

@ -11,7 +11,7 @@
<i class="fal fa-image"></i> <i class="fal fa-image"></i>
<div i18n>No image selected</div> <div i18n>No image selected</div>
</div> </div>
<image-cropper #imageCropper <image-cropper #imageCropper output="base64"
[imageChangedEvent]="imageChangedEvent" [imageChangedEvent]="imageChangedEvent"
[maintainAspectRatio]="true" [maintainAspectRatio]="true"
[format]="imageType" [format]="imageType"

View File

@ -4,6 +4,7 @@ div.resumable-file-upload {
bottom: 0px; bottom: 0px;
width: 300px; width: 300px;
max-height: 250px; max-height: 250px;
z-index: 1;
/*z-index:2000 !important;*/ /*z-index:2000 !important;*/
} }

View File

@ -1,5 +1,5 @@
<div> <div>
<div (click)="toggle($event)" class="rounded-circle menu-button hidden" [ngClass]="{'hidden':!user || noContent}"> <div (click)="toggle($event)" class="rounded-circle menu-button hidden" [style.background-color]="backgroundColor" [ngClass]="{'hidden':!user || noContent}">
<span i18n-title title="Settings"><i class="fas fa-gear" aria-hidden="true"></i></span> <span i18n-title title="Settings"><i class="fas fa-gear" aria-hidden="true"></i></span>
<div class="menu hidden" [ngClass]="{'hidden':!showMenu}"> <div class="menu hidden" [ngClass]="{'hidden':!showMenu}">
<router-outlet name="setting-menu" (activate)="activateRoute()" (deactivate)="deActivateRoute()"></router-outlet> <router-outlet name="setting-menu" (activate)="activateRoute()" (deactivate)="deActivateRoute()"></router-outlet>

View File

@ -15,6 +15,7 @@ export class SettingMenuComponent implements OnInit {
@Input() user:IUser; @Input() user:IUser;
@Input() showMenu:boolean; @Input() showMenu:boolean;
@Input() backgroundColor:string;
public noContent = true; public noContent = true;
constructor(private store: Store<appReducers.State>) { } constructor(private store: Store<appReducers.State>) { }

View File

@ -1,4 +1,4 @@
import { Injectable } from '@angular/core'; import { Injectable, Inject, LOCALE_ID } from '@angular/core';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { OAuthService,UserInfo } from 'angular-oauth2-oidc'; import { OAuthService,UserInfo } from 'angular-oauth2-oidc';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
@ -16,6 +16,7 @@ import {StateSerializerService} from '../services/state-serializer.service';
@Injectable() @Injectable()
export class AppCommonEffects { export class AppCommonEffects {
locale: string;
login$ = createEffect(() => this.actions$.pipe( login$ = createEffect(() => this.actions$.pipe(
ofType(appCommonActions.LOGIN), ofType(appCommonActions.LOGIN),
@ -47,11 +48,27 @@ export class AppCommonEffects {
first(), first(),
switchMap((action) => { switchMap((action) => {
return zip(this.userService$.getCurrentUser(),from(this.oauthService$.loadUserProfile())).pipe( return zip(this.userService$.getCurrentUser(),from(this.oauthService$.loadUserProfile())).pipe(
switchMap(([user,userInfo]) => {return of(new appCommonActions.InitUserSuccess(user,userInfo as UserInfo))} ), switchMap(([user,userInfo]) => {
if (location.hostname === 'localhost' || user.language === undefined || user.language === this.locale)
{
return of(new appCommonActions.InitUserSuccess(user,userInfo as UserInfo))
}
return of(new appCommonActions.SwitchLanguage(user.language))
}),
catchError(error => of(new appCommonActions.Fail(error)))) catchError(error => of(new appCommonActions.Fail(error))))
} }
))); )));
switchLanguage$ = createEffect(() => this.actions$.pipe(
ofType(appCommonActions.SWITCHLANGUAGE),
switchMap((action) => {
const a = action as appCommonActions.SwitchLanguage;
if (location.href.includes(`/${this.locale}/`)) {
const newPath = location.href.replace(`/${this.locale}/`, `/${a.locale}/`);
location.replace(newPath);
}
return of(undefined);
})),{ dispatch:false});
initUserPackages$ = createEffect(() => this.actions$.pipe( initUserPackages$ = createEffect(() => this.actions$.pipe(
ofType(appCommonActions.INITUSERPACKAGES), ofType(appCommonActions.INITUSERPACKAGES),
@ -134,15 +151,22 @@ export class AppCommonEffects {
withLatestFrom(this.store$.select(appCommonReducers.selectGetItemTypes)), withLatestFrom(this.store$.select(appCommonReducers.selectGetItemTypes)),
switchMap(([action, itemtypes]) => { switchMap(([action, itemtypes]) => {
const a = action as appCommonActions.EditItem; const a = action as appCommonActions.EditItem;
var editor = "property"; var editor = "property";
if(a.item.itemType) { if(a.item.itemType) {
const itemType = itemtypes[a.item.itemType]; const itemType = itemtypes[a.item.itemType];
var editor = itemType && itemType.editor ? itemType.editor : editor; var editor = itemType && itemType.editor ? itemType.editor : editor;
} }
this.router$.navigate(['/editor',editor,'item', a.item.code]) if (editor == 'croppingscheme') {
return []; // Exeception: no 'item' in route
} this.router$.navigate(['/editor', editor, a.item.code])
))); }
else {
this.router$.navigate(['/editor', editor, 'item', a.item.code])
}
return [];
}
)
));
viewItem$ = createEffect(() => this.actions$.pipe( viewItem$ = createEffect(() => this.actions$.pipe(
ofType(appCommonActions.VIEWITEM), ofType(appCommonActions.VIEWITEM),
@ -201,7 +225,8 @@ export class AppCommonEffects {
constructor(private actions$: Actions, private store$: Store<appCommonReducers.State>, private oauthService$: OAuthService, private itemService$: ItemService, private folderService$:FolderService, private userService$: UserService, private router$: Router, private stateSerializerService$:StateSerializerService) { constructor(private actions$: Actions, private store$: Store<appCommonReducers.State>, private oauthService$: OAuthService, private itemService$: ItemService, private folderService$:FolderService, private userService$: UserService, private router$: Router, private stateSerializerService$:StateSerializerService, @Inject(LOCALE_ID) locale: string) {
this.locale = locale;
store$.dispatch(new appCommonActions.LoadItemTypes()); store$.dispatch(new appCommonActions.LoadItemTypes());
} }
} }

View File

@ -1,6 +1,7 @@
export interface IItemTask { export interface IItemTask {
code?: string; code?: string;
workflowCode?: string;
taskType?: string; taskType?: string;
attributes?: any; attributes?: any;
message?: string, message?: string,
@ -11,6 +12,7 @@ export interface IItemTask {
export class ItemTask implements IItemTask { export class ItemTask implements IItemTask {
public code?:string; public code?:string;
public workflowCode?: string;
public taskType?: string; public taskType?: string;
public attributes?: any; public attributes?: any;
public message?: string; public message?: string;
@ -18,6 +20,6 @@ export class ItemTask implements IItemTask {
public started?: Date; public started?: Date;
public finished?: Date; public finished?: Date;
constructor() { constructor() {
} }
} }

View File

@ -29,7 +29,8 @@ export interface State {
settingMenuVisible: boolean, settingMenuVisible: boolean,
unreadNotifications: number, unreadNotifications: number,
isOnline: boolean, isOnline: boolean,
isPageMode:boolean isPageMode:boolean,
settingMenuBackgroundColor:string
} }
export const initialState: State = { export const initialState: State = {
@ -51,7 +52,8 @@ export const initialState: State = {
settingMenuVisible: false, settingMenuVisible: false,
unreadNotifications: 0, unreadNotifications: 0,
isOnline: true, isOnline: true,
isPageMode: true isPageMode: true,
settingMenuBackgroundColor:'rgb(128, 128, 128)'
} }
export function reducer(state = initialState, action: appCommonActions.Actions ): State { export function reducer(state = initialState, action: appCommonActions.Actions ): State {
@ -187,6 +189,10 @@ export function reducer(state = initialState, action: appCommonActions.Actions )
const a = action as appCommonActions.SetUnreadNotifications; const a = action as appCommonActions.SetUnreadNotifications;
return tassign(state,{unreadNotifications:a.unread}); return tassign(state,{unreadNotifications:a.unread});
} }
case appCommonActions.SETSETTINGMENUBACKGROUNDCOLOR: {
const a = action as appCommonActions.SetSettingMenuBackgroundColor;
return tassign(state,{settingMenuBackgroundColor:a.color});
}
default: { default: {
return state; return state;
} }
@ -212,6 +218,7 @@ export const getSettingMenuVisible = (state: State) => state.settingMenuVisible;
export const getUnreadNotifications = (state: State) => state.unreadNotifications; export const getUnreadNotifications = (state: State) => state.unreadNotifications;
export const getIsOnline = (state: State) => state.isOnline; export const getIsOnline = (state: State) => state.isOnline;
export const getIsPageMode = (state: State) => state.isPageMode; export const getIsPageMode = (state: State) => state.isPageMode;
export const getSettingMenuBackgroundColor = (state: State) => state.settingMenuBackgroundColor;
export const selectAppCommonState = createFeatureSelector<State>(MODULE_NAME); export const selectAppCommonState = createFeatureSelector<State>(MODULE_NAME);
@ -238,5 +245,4 @@ export const SelectgetUnreadNotifications = createSelector(selectAppCommonState,
export const SelectGetIsOnline = createSelector(selectAppCommonState,getIsOnline); export const SelectGetIsOnline = createSelector(selectAppCommonState,getIsOnline);
export const SelectGetIsPageMode = createSelector(selectAppCommonState,getIsPageMode); export const SelectGetIsPageMode = createSelector(selectAppCommonState,getIsPageMode);
export const SelectGetSettingMenuBackgroundColor= createSelector(selectAppCommonState,getSettingMenuBackgroundColor);

View File

@ -52,4 +52,16 @@ export class AdminService {
postItemTask(item: IItem, task: IItemTask): Observable<IItemTask> { postItemTask(item: IItem, task: IItemTask): Observable<IItemTask> {
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> {
return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/admin/analysefolder/folderinfo/overview`);
}
getAnalyseFolderInfo(user: string): Observable<any> {
return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/admin/analysefolder/folderinfo/${user}`);
}
getAnalyseFolderLog(): Observable<any> {
return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/admin/analysefolder/folderinfo/log`);
}
} }

View File

@ -1,14 +1,12 @@
import { Injectable } from '@angular/core'; import {Injectable} from '@angular/core';
import { Observable } from 'rxjs'; import {Observable} from 'rxjs';
import { map } from 'rxjs/operators'; import {IItemType} from '../models/item.type';
import { IItemType } from '../models/item.type'; import {IItemLinkType} from '../models/itemlink.type';
import { IItemLinkType } from '../models/itemlink.type'; import {IItem} from '../models/item';
import { IUrlType } from '../models/url.type'; import {IJsonline} from '../models/json-line';
import { IItem } from '../models/item'; import {IItemTask} from '../models/itemTask';
import { IJsonline } from '../models/json-line'; import {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';
import { IItemTask } from '../models/itemTask'; import {AppConfig} from '../shared/app.config';
import { HttpClient, HttpParams, HttpHeaders } from "@angular/common/http";
import { AppConfig } from "../shared/app.config";
import {ItemTypeService} from './itemtype.service'; import {ItemTypeService} from './itemtype.service';
import {IListItem} from '../models/list.item'; import {IListItem} from '../models/list.item';
@ -81,7 +79,7 @@ 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): Observable<IItem[]> { skip?: number, take?: number, sourceTask?: string, exactMatchStartOrEndDate?: boolean, owner?:string): 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,20 +94,27 @@ export class ItemService {
if (sourceTask) params = params.append("sourceTask", sourceTask); if (sourceTask) params = params.append("sourceTask", sourceTask);
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(exactMatchStartOrEndDate !== undefined) params = params.append("exactMatchStartOrEndDate", exactMatchStartOrEndDate);
if(owner) params = params.append("owner", owner);
return this.httpClient.get<IItem[]>(`${this.ApiEndpoint()}/api/v1/items/`, { params: params }); return this.httpClient.get<IItem[]>(`${this.ApiEndpoint()}/api/v1/items/`, { params: params });
} }
getItemListCount(itemType: string, startDate?: Date, endDate?: Date, sourceTask?: string): Observable<number> { getItemListCount(itemType: string, startDate?: Date, endDate?: Date, sourceTask?: string,
indexed?: boolean, exactMatchStartOrEndDate?: boolean, owner?:string): Observable<number> {
let params = new HttpParams(); let params = new HttpParams();
params = params.append("it", itemType); params = params.append("it", itemType);
if (sourceTask) params = params.append("sourceTask", sourceTask); if (sourceTask) params = params.append("sourceTask", sourceTask);
if (startDate) params = params.append("sDate", startDate.toISOString()); if (startDate) params = params.append("sDate", startDate.toISOString());
if (endDate) params = params.append("eDate", endDate.toISOString()); if (endDate) params = params.append("eDate", endDate.toISOString());
if(indexed) params = params.append("ind",indexed?"true":"false");
if(exactMatchStartOrEndDate !== undefined) params = params.append("exactMatchStartOrEndDate", exactMatchStartOrEndDate);
if(owner) params = params.append("owner", owner);
return this.httpClient.get<number>(`${this.ApiEndpoint()}/api/v1/items/count`, { params: params }); return this.httpClient.get<number>(`${this.ApiEndpoint()}/api/v1/items/count`, { params: params });
} }
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): Observable<IItem[]> { startDate?: Date, endDate?: Date, skip?: number, take?: number,
exactMatchStartOrEndDate?: boolean, owner?:string, indexed?: boolean): 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);
@ -121,13 +126,18 @@ export class ItemService {
params = params.append("deep", deep.toString()); params = params.append("deep", deep.toString());
if (startDate) params = params.append("sDate", startDate.toISOString()); if (startDate) params = params.append("sDate", startDate.toISOString());
if (endDate) params = params.append("eDate", endDate.toISOString()); if (endDate) params = params.append("eDate", endDate.toISOString());
if(exactMatchStartOrEndDate !== undefined) params = params.append("exactMatchStartOrEndDate", exactMatchStartOrEndDate);
if(owner) params = params.append("owner", owner);
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");
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 });
} }
getChildItemListCount(parentcode: string, itemType?: string,dataFilter?: any): Observable<number> { getChildItemListCount(parentcode: string, itemType?: string,dataFilter?: any,
startDate?: Date, endDate?: Date, exactMatchStartOrEndDate?: boolean, owner?:string,
indexed?: boolean): Observable<number> {
let params = new HttpParams(); let params = new HttpParams();
if(itemType != null) { if(itemType != null) {
params = params.append("it", itemType); params = params.append("it", itemType);
@ -135,6 +145,11 @@ export class ItemService {
if (dataFilter != null) { if (dataFilter != null) {
params = params.append("df", JSON.stringify(dataFilter)); params = params.append("df", JSON.stringify(dataFilter));
} }
if (startDate) params = params.append("sDate", startDate.toISOString());
if (endDate) params = params.append("eDate", endDate.toISOString());
if(exactMatchStartOrEndDate !== undefined) params = params.append("exactMatchStartOrEndDate", exactMatchStartOrEndDate);
if(owner) params = params.append("owner", owner);
if(indexed) params = params.append("ind",indexed?"true":"false");
return this.httpClient.get<number>(`${this.ApiEndpoint()}/api/v1/items/${parentcode}/children/count`, { params: params }); return this.httpClient.get<number>(`${this.ApiEndpoint()}/api/v1/items/${parentcode}/children/count`, { params: params });
} }

View File

@ -15,37 +15,37 @@ export class ItemTypeService {
getIcon(itemType: string) { getIcon(itemType: string) {
let icon = "fal fa-file"; let icon = "fal fa-file";
if (this.itemTypes[itemType]) icon = this.itemTypes[itemType].icon; if (this.itemTypes && this.itemTypes[itemType]) icon = this.itemTypes[itemType].icon;
return icon; return icon;
} }
getColor(itemType: string) { getColor(itemType: string) {
let color = "#000000"; let color = "#000000";
if (this.itemTypes[itemType]) color = this.itemTypes[itemType].iconColor; if (this.itemTypes && this.itemTypes[itemType]) color = this.itemTypes[itemType].iconColor;
return color; return color;
} }
getExtraAttributes(itemType: string) { getExtraAttributes(itemType: string) {
let extraAttributes = null; let extraAttributes = null;
if (this.itemTypes[itemType] && this.itemTypes[itemType].extraAttributes) extraAttributes = this.itemTypes[itemType].extraAttributes; if (this.itemTypes && this.itemTypes[itemType] && this.itemTypes[itemType]?.extraAttributes) extraAttributes = this.itemTypes[itemType]?.extraAttributes;
return extraAttributes; return extraAttributes;
} }
getSchema(itemType: string): string { getSchema(itemType: string): string {
let schema = null; let schema = null;
if (this.itemTypes[itemType]) schema = this.itemTypes[itemType].schema; if (this.itemTypes && this.itemTypes[itemType]) schema = this.itemTypes[itemType].schema;
return schema; return schema;
} }
hasViewer(item: IItem) { hasViewer(item: IItem) {
const itemType: string = item.itemType; const itemType: string = item.itemType;
if (this.itemTypes[itemType]) return this.itemTypes[itemType].viewer !== undefined; if (this.itemTypes && this.itemTypes[itemType]) return this.itemTypes[itemType].viewer !== undefined;
return false; return false;
} }
hasEditor(item: IItem) { hasEditor(item: IItem) {
const itemType: string = item.itemType; const itemType: string = item.itemType;
if (this.itemTypes[itemType]) return this.itemTypes[itemType].editor !== undefined; if (this.itemTypes && this.itemTypes[itemType]) return this.itemTypes[itemType].editor !== undefined;
return false; return false;
} }

View File

@ -0,0 +1,40 @@
import {Injectable} from '@angular/core';
import {HttpClient, HttpParams} from '@angular/common/http';
import {AppConfig} from '../shared/app.config';
@Injectable({
providedIn: 'root',
})
export class TaskService {
constructor(public httpClient: HttpClient, public appConfig: AppConfig) {
}
ApiEndpoint() {
return this.appConfig.getConfig("apiEndPoint");
}
getTask(taskCode: string) {
return this.httpClient.get<any>(`${this.appConfig.getConfig('apiEndPoint')}/api/v1/tasks/${taskCode}`)
}
getTasks(workflowCode: string, itemCode: string = null, taskType: string = null, skip = 0, take = 25) {
let params = new HttpParams();
if (workflowCode) {
params = params.append('workflowCode', workflowCode);
}
if (itemCode) {
params = params.append('itemCode', itemCode);
}
if (taskType) {
params = params.append('taskType', taskType);
}
params = params.append('skip', skip.toString());
params = params.append('take', take.toString());
return this.httpClient.get<any>(`${this.appConfig.getConfig('apiEndPoint')}/api/v1/tasks`,
{params: params})
}
}

View File

@ -31,8 +31,8 @@
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/common": "^18.2.3", "@angular/common": "18.2.3",
"@angular/core": "^18.2.3", "@angular/core": "18.2.3",
"ol": "^8.2.0" "ol": "^8.2.0"
} }
} }