diff --git a/package-lock.json b/package-lock.json index 9ace4b3..bb39ee0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,22 +1,22 @@ { "name": "farmmaps-lib-app", - "version": "4.11.1", + "version": "4.12.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "farmmaps-lib-app", - "version": "4.11.1", + "version": "4.12.0", "dependencies": { "@angular-eslint/eslint-plugin": "^18.2.0", - "@angular/animations": "^18.2.3", - "@angular/common": "^18.2.3", - "@angular/compiler": "^18.2.3", - "@angular/core": "^18.2.3", - "@angular/forms": "^18.2.3", - "@angular/platform-browser": "^18.2.3", - "@angular/platform-browser-dynamic": "^18.2.3", - "@angular/router": "^18.2.3", + "@angular/animations": "18.2.3", + "@angular/common": "18.2.3", + "@angular/compiler": "18.2.3", + "@angular/core": "18.2.3", + "@angular/forms": "18.2.3", + "@angular/platform-browser": "18.2.3", + "@angular/platform-browser-dynamic": "18.2.3", + "@angular/router": "18.2.3", "@farmmaps/common": "file:dist/common", "@farmmaps/common-map": "file:dist/common-map", "@farmmaps/common-map3d": "file:dist/common-map3d", @@ -55,11 +55,11 @@ }, "devDependencies": { "@angular-builders/custom-webpack": "^18.0.0", - "@angular-devkit/build-angular": "^18.2.3", - "@angular/cli": "^18.2.3", - "@angular/compiler-cli": "^18.2.3", - "@angular/language-service": "^18.2.3", - "@angular/localize": "^18.2.3", + "@angular-devkit/build-angular": "18.2.3", + "@angular/cli": "18.2.3", + "@angular/compiler-cli": "18.2.3", + "@angular/language-service": "18.2.3", + "@angular/localize": "18.2.3", "@types/arcgis-rest-api": "^10.4.5", "@types/jasmine": "~2.8.8", "@types/jasminewd2": "^2.0.9", @@ -90,7 +90,7 @@ }, "dist/common": { "name": "@farmmaps/common", - "version": "4.11.0-prerelease.2517", + "version": "4.12.0-prerelease.2532", "dependencies": { "tslib": "^2.3.0" }, @@ -115,7 +115,7 @@ }, "dist/common-map": { "name": "@farmmaps/common-map", - "version": "4.11.0-prerelease.2517", + "version": "4.12.0-prerelease.2532", "dependencies": { "tslib": "^2.0.0" }, @@ -130,7 +130,7 @@ }, "dist/common-map3d": { "name": "@farmmaps/common-map3d", - "version": "4.11.0-prerelease.2517", + "version": "4.12.0-prerelease.2532", "dependencies": { "tslib": "^2.0.0" }, @@ -143,7 +143,7 @@ }, "dist/ng-openlayers": { "name": "@farmmaps/ng-openlayers", - "version": "4.11.0-prerelease.2517", + "version": "4.12.0-prerelease.2532", "license": "MPL-2.0", "dependencies": { "tslib": "^2.3.0" diff --git a/package.json b/package.json index f55564a..9c5d09b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "farmmaps-lib-app", - "version": "4.11.1", + "version": "4.12.0", "scripts": { "ng": "ng", "start": "ng serve", @@ -12,14 +12,14 @@ "private": true, "dependencies": { "@angular-eslint/eslint-plugin": "^18.2.0", - "@angular/animations": "^18.2.3", - "@angular/common": "^18.2.3", - "@angular/compiler": "^18.2.3", - "@angular/core": "^18.2.3", - "@angular/forms": "^18.2.3", - "@angular/platform-browser": "^18.2.3", - "@angular/platform-browser-dynamic": "^18.2.3", - "@angular/router": "^18.2.3", + "@angular/animations": "18.2.3", + "@angular/common": "18.2.3", + "@angular/compiler": "18.2.3", + "@angular/core": "18.2.3", + "@angular/forms": "18.2.3", + "@angular/platform-browser": "18.2.3", + "@angular/platform-browser-dynamic": "18.2.3", + "@angular/router": "18.2.3", "@farmmaps/common": "file:dist/common", "@farmmaps/common-map": "file:dist/common-map", "@farmmaps/common-map3d": "file:dist/common-map3d", @@ -62,11 +62,11 @@ }, "devDependencies": { "@angular-builders/custom-webpack": "^18.0.0", - "@angular-devkit/build-angular": "^18.2.3", - "@angular/cli": "^18.2.3", - "@angular/compiler-cli": "^18.2.3", - "@angular/language-service": "^18.2.3", - "@angular/localize": "^18.2.3", + "@angular-devkit/build-angular": "18.2.3", + "@angular/cli": "18.2.3", + "@angular/compiler-cli": "18.2.3", + "@angular/language-service": "18.2.3", + "@angular/localize": "18.2.3", "@types/arcgis-rest-api": "^10.4.5", "@types/jasmine": "~2.8.8", "@types/jasminewd2": "^2.0.9", diff --git a/projects/common-map/package.json b/projects/common-map/package.json index 6a000e7..a767d92 100644 --- a/projects/common-map/package.json +++ b/projects/common-map/package.json @@ -8,7 +8,7 @@ "tslib": "^2.0.0" }, "peerDependencies": { - "@angular/core": "^18.2.3", + "@angular/core": "18.2.3", "ngrx-store-localstorage": "^18.0.0", "@ngrx/effects": "^18.0.2", "@ngrx/router-store": "^18.0.2", diff --git a/projects/common-map3d/package.json b/projects/common-map3d/package.json index d2c55d8..41d5b82 100644 --- a/projects/common-map3d/package.json +++ b/projects/common-map3d/package.json @@ -8,8 +8,8 @@ "tslib": "^2.0.0" }, "peerDependencies": { - "@angular/common": "^18.2.3", - "@angular/core": "^18.2.3", + "@angular/common": "18.2.3", + "@angular/core": "18.2.3", "cesium": "^1.97.0", "ol-cesium": ">=2.13.0" } diff --git a/projects/common/package.json b/projects/common/package.json index 78bf3b7..8bfa106 100644 --- a/projects/common/package.json +++ b/projects/common/package.json @@ -6,9 +6,9 @@ }, "peerDependencies": { "@ng-bootstrap/ng-bootstrap": "^17.0.1", - "@angular/common": "^18.2.3", - "@angular/core": "^18.2.3", - "@angular/forms": "^18.2.3", + "@angular/common": "18.2.3", + "@angular/core": "18.2.3", + "@angular/forms": "18.2.3", "@ngrx/effects": "^18.0.2", "@ngrx/router-store": "^18.0.2", "@ngrx/store": "^18.0.2", diff --git a/projects/common/src/fm/common-service.module.ts b/projects/common/src/fm/common-service.module.ts index 445472e..a01c703 100644 --- a/projects/common/src/fm/common-service.module.ts +++ b/projects/common/src/fm/common-service.module.ts @@ -13,6 +13,7 @@ import { SchemaService } from './services/schema.service'; import { FolderService } from './services/folder.service'; import { TimespanService } from './services/timespan.service'; import { ItemService } from './services/item.service'; +import { TaskService } from './services/task.service'; import { AdminService } from './services/admin.service'; import { EventService } from './services/event.service'; import { TypeaheadService } from './services/typeahead.service'; @@ -44,6 +45,7 @@ export { ItemTypeService, TimespanService, ItemService, + TaskService, AdminService, EventService, TypeaheadService, diff --git a/projects/common/src/fm/components/resumable-file-upload/resumable-file-upload.component.scss b/projects/common/src/fm/components/resumable-file-upload/resumable-file-upload.component.scss index 55a33e1..76b5c87 100644 --- a/projects/common/src/fm/components/resumable-file-upload/resumable-file-upload.component.scss +++ b/projects/common/src/fm/components/resumable-file-upload/resumable-file-upload.component.scss @@ -4,6 +4,7 @@ div.resumable-file-upload { bottom: 0px; width: 300px; max-height: 250px; + z-index: 1; /*z-index:2000 !important;*/ } diff --git a/projects/common/src/fm/effects/app-common.effects.ts b/projects/common/src/fm/effects/app-common.effects.ts index d2570ec..87e42ff 100644 --- a/projects/common/src/fm/effects/app-common.effects.ts +++ b/projects/common/src/fm/effects/app-common.effects.ts @@ -134,15 +134,22 @@ export class AppCommonEffects { withLatestFrom(this.store$.select(appCommonReducers.selectGetItemTypes)), switchMap(([action, itemtypes]) => { const a = action as appCommonActions.EditItem; - var editor = "property"; + var editor = "property"; if(a.item.itemType) { const itemType = itemtypes[a.item.itemType]; var editor = itemType && itemType.editor ? itemType.editor : editor; } - this.router$.navigate(['/editor',editor,'item', a.item.code]) - return []; - } - ))); + if (editor == 'croppingscheme') { + // 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( ofType(appCommonActions.VIEWITEM), diff --git a/projects/common/src/fm/models/itemTask.ts b/projects/common/src/fm/models/itemTask.ts index acc0915..3ae4b0b 100644 --- a/projects/common/src/fm/models/itemTask.ts +++ b/projects/common/src/fm/models/itemTask.ts @@ -1,6 +1,7 @@ export interface IItemTask { code?: string; + workflowCode?: string; taskType?: string; attributes?: any; message?: string, @@ -11,6 +12,7 @@ export interface IItemTask { export class ItemTask implements IItemTask { public code?:string; + public workflowCode?: string; public taskType?: string; public attributes?: any; public message?: string; @@ -18,6 +20,6 @@ export class ItemTask implements IItemTask { public started?: Date; public finished?: Date; - constructor() { + constructor() { } -} \ No newline at end of file +} diff --git a/projects/common/src/fm/services/item.service.ts b/projects/common/src/fm/services/item.service.ts index 116f8b7..e7b18b0 100644 --- a/projects/common/src/fm/services/item.service.ts +++ b/projects/common/src/fm/services/item.service.ts @@ -1,14 +1,12 @@ -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; -import { IItemType } from '../models/item.type'; -import { IItemLinkType } from '../models/itemlink.type'; -import { IUrlType } from '../models/url.type'; -import { IItem } from '../models/item'; -import { IJsonline } from '../models/json-line'; -import { IItemTask } from '../models/itemTask'; -import { HttpClient, HttpParams, HttpHeaders } from "@angular/common/http"; -import { AppConfig } from "../shared/app.config"; +import {Injectable} from '@angular/core'; +import {Observable} from 'rxjs'; +import {IItemType} from '../models/item.type'; +import {IItemLinkType} from '../models/itemlink.type'; +import {IItem} from '../models/item'; +import {IJsonline} from '../models/json-line'; +import {IItemTask} from '../models/itemTask'; +import {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http'; +import {AppConfig} from '../shared/app.config'; import {ItemTypeService} from './itemtype.service'; import {IListItem} from '../models/list.item'; @@ -81,7 +79,7 @@ export class ItemService { getItemList(itemType?: string, dataFilter?: any, level?: number, atItemLocationItemCode?: string, indexed?: boolean, validToday?: boolean,tags?:string,crs?:string, startDate?: Date, endDate?: Date, - skip?: number, take?: number, sourceTask?: string): Observable { + skip?: number, take?: number, sourceTask?: string, exactMatchStartOrEndDate?: boolean, owner?:string): Observable { let params = new HttpParams(); if(itemType) params = params.append("it", itemType); if(dataFilter) params = params.append("df", JSON.stringify(dataFilter)); @@ -96,20 +94,27 @@ export class ItemService { if (sourceTask) params = params.append("sourceTask", sourceTask); if(skip) params = params.append("skip", skip); 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(`${this.ApiEndpoint()}/api/v1/items/`, { params: params }); } - - getItemListCount(itemType: string, startDate?: Date, endDate?: Date, sourceTask?: string): Observable { + + getItemListCount(itemType: string, startDate?: Date, endDate?: Date, sourceTask?: string, + indexed?: boolean, exactMatchStartOrEndDate?: boolean, owner?:string): Observable { let params = new HttpParams(); params = params.append("it", itemType); if (sourceTask) params = params.append("sourceTask", sourceTask); if (startDate) params = params.append("sDate", startDate.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(`${this.ApiEndpoint()}/api/v1/items/count`, { params: params }); } getChildItemList(parentcode: string, itemType?: string, dataFilter?: any, level = 1, deep = true, - startDate?: Date, endDate?: Date, skip?: number, take?: number): Observable { + startDate?: Date, endDate?: Date, skip?: number, take?: number, + exactMatchStartOrEndDate?: boolean, owner?:string, indexed?: boolean): Observable { let params = new HttpParams(); if(itemType != null) { params = params.append("it", itemType); @@ -121,13 +126,18 @@ export class ItemService { params = params.append("deep", deep.toString()); 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(skip) params = params.append("skip", skip); if(take) params = params.append("take", take); + if(indexed) params = params.append("ind",indexed?"true":"false"); return this.httpClient.get(`${this.ApiEndpoint()}/api/v1/items/${parentcode}/children`, { params: params }); } - getChildItemListCount(parentcode: string, itemType?: string,dataFilter?: any): Observable { + getChildItemListCount(parentcode: string, itemType?: string,dataFilter?: any, + startDate?: Date, endDate?: Date, exactMatchStartOrEndDate?: boolean, owner?:string, + indexed?: boolean): Observable { let params = new HttpParams(); if(itemType != null) { params = params.append("it", itemType); @@ -135,6 +145,11 @@ export class ItemService { if (dataFilter != null) { 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(`${this.ApiEndpoint()}/api/v1/items/${parentcode}/children/count`, { params: params }); } diff --git a/projects/common/src/fm/services/itemtype.service.ts b/projects/common/src/fm/services/itemtype.service.ts index c46930f..aff768f 100644 --- a/projects/common/src/fm/services/itemtype.service.ts +++ b/projects/common/src/fm/services/itemtype.service.ts @@ -15,37 +15,37 @@ export class ItemTypeService { getIcon(itemType: string) { 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; } getColor(itemType: string) { 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; } getExtraAttributes(itemType: string) { 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; } getSchema(itemType: string): string { 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; } hasViewer(item: IItem) { 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; } hasEditor(item: IItem) { 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; } diff --git a/projects/common/src/fm/services/task.service.ts b/projects/common/src/fm/services/task.service.ts new file mode 100644 index 0000000..f681f12 --- /dev/null +++ b/projects/common/src/fm/services/task.service.ts @@ -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(`${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(`${this.appConfig.getConfig('apiEndPoint')}/api/v1/tasks`, + {params: params}) + } +} diff --git a/projects/ng-openlayers/package.json b/projects/ng-openlayers/package.json index 70983c7..1ddb241 100644 --- a/projects/ng-openlayers/package.json +++ b/projects/ng-openlayers/package.json @@ -31,8 +31,8 @@ "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^18.2.3", - "@angular/core": "^18.2.3", + "@angular/common": "18.2.3", + "@angular/core": "18.2.3", "ol": "^8.2.0" } }