Compare commits
63 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2137f3f07e | ||
a46e8040b2 | |||
|
2ca9730735 | ||
3d2ca8fb9f | |||
6810da8b79 | |||
|
4866a6f22d | ||
84a1004977 | |||
39c619a837 | |||
|
758613aa12 | ||
6914a61bc4 | |||
9f43287433 | |||
|
10df983ae3 | ||
78249811ab | |||
df14427d60 | |||
|
c7c131d437 | ||
b2fe8f3bd7 | |||
|
3027c69fa8 | ||
5995d205a4 | |||
|
fd479c92d8 | ||
e9880d6eb2 | |||
|
a4438d8a90 | ||
89061774de | |||
|
362e6c8534 | ||
64a0e58238 | |||
|
a3d4dfbd59 | ||
4c106ebff3 | |||
|
5c8fd64521 | ||
72ba8eca81 | |||
|
f89f741265 | ||
50af55acb2 | |||
|
cc879b85e5 | ||
b4a0a4584d | |||
8ab1611f39 | |||
|
475c522039 | ||
068396ac9a | |||
|
4a30707ec6 | ||
852b1db895 | |||
|
fcbd68eca0 | ||
3a42f9114e | |||
3f664b472c | |||
|
57811f3f2e | ||
5e1bc6d705 | |||
d4a230f96d | |||
|
ed1e1478b2 | ||
afe013a59a | |||
db3734f8a3 | |||
|
86f75c7f78 | ||
a7abb4072b | |||
|
61d6446d75 | ||
392008ae4b | |||
093c26c7f3 | |||
|
a8e1ba6c02 | ||
e64fbfd014 | |||
8cd7b85de2 | |||
|
ddc7f97e27 | ||
24e3765c28 | |||
|
86f3ddb34b | ||
d6c55ef82b | |||
d977ddfb7b | |||
|
0e8bd5343d | ||
ceeaa89ba3 | |||
|
c3dbf85eb6 | ||
ad5fe95b55 |
54
package-lock.json
generated
54
package-lock.json
generated
@ -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"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
28
package.json
28
package.json
@ -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",
|
||||||
|
@ -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",
|
||||||
|
@ -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> <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> <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> <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> <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> <span i18n>Download</span></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -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
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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",
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
@ -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>
|
||||||
|
@ -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(
|
||||||
|
@ -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"
|
||||||
|
@ -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;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
@ -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>) { }
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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 });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
40
projects/common/src/fm/services/task.service.ts
Normal file
40
projects/common/src/fm/services/task.service.ts
Normal 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})
|
||||||
|
}
|
||||||
|
}
|
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user