2020-01-27 14:03:01 +00:00
|
|
|
import {Component, Injectable, Input} from '@angular/core';
|
|
|
|
import {Location} from '@angular/common';
|
|
|
|
import {Store} from '@ngrx/store';
|
2019-12-11 17:03:37 +00:00
|
|
|
import * as mapReducers from '../../reducers/map.reducer';
|
2020-01-27 14:03:01 +00:00
|
|
|
import {AppConfig, commonReducers, IItem, ItemTypeService} from '@farmmaps/common';
|
2019-12-11 17:03:37 +00:00
|
|
|
import * as mapActions from '../../actions/map.actions';
|
2020-01-27 14:03:01 +00:00
|
|
|
import {Router} from '@angular/router';
|
2020-03-02 12:48:10 +00:00
|
|
|
import { IItemLayer } from '../../models/item.layer';
|
2019-12-11 17:03:37 +00:00
|
|
|
|
|
|
|
|
|
|
|
@Injectable()
|
|
|
|
export abstract class AbstractSelectedItemComponent {
|
|
|
|
@Input() item: IItem
|
2020-03-27 12:22:11 +00:00
|
|
|
@Input() itemLayer: IItemLayer;
|
|
|
|
@Input() overlayLayers: Array<IItemLayer>;
|
2020-03-03 20:16:01 +00:00
|
|
|
constructor(public store: Store<mapReducers.State | commonReducers.State>, public itemTypeService: ItemTypeService, private location: Location, public router: Router) {
|
2019-12-11 17:03:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
handleOnView(item: IItem) {
|
2020-01-08 13:43:24 +00:00
|
|
|
if (this.itemTypeService.hasViewer(item)) {
|
2020-02-18 16:00:19 +00:00
|
|
|
let viewer = this.itemTypeService.itemTypes[item.itemType].viewer;
|
2020-01-08 13:43:24 +00:00
|
|
|
let url = `/viewer/${viewer}/item/${item.code}`;
|
|
|
|
this.router.navigate([url]);
|
2019-12-11 17:03:37 +00:00
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2020-01-27 14:03:01 +00:00
|
|
|
handleOnEdit(item: IItem) {
|
2020-01-08 13:43:24 +00:00
|
|
|
var editor = "property";
|
|
|
|
if(this.itemTypeService.hasEditor(item)) {
|
|
|
|
editor = this.itemTypeService.itemTypes[item.itemType].editor;
|
|
|
|
}
|
|
|
|
let url = `/editor/${editor}/item/${item.code}`
|
2020-01-27 14:03:01 +00:00
|
|
|
this.router.navigate([url]);
|
2019-12-11 17:03:37 +00:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
handleAddAsLayer(item: IItem,layerIndex:number = -1) {
|
|
|
|
this.store.dispatch(new mapActions.AddLayer(item,layerIndex));
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2020-03-27 12:22:11 +00:00
|
|
|
handleRemoveLayer(item: IItem,layerIndex:number = -1) {
|
|
|
|
let itemLayer = this.getItemLayer(item,layerIndex);
|
|
|
|
if(itemLayer) {
|
|
|
|
this.store.dispatch(new mapActions.RemoveLayer(itemLayer));
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
getItemLayer(item:IItem,layerIndex:number = -1):IItemLayer {
|
|
|
|
let li = layerIndex==-1?0:layerIndex;
|
|
|
|
let selected = this.overlayLayers.filter(ol => ol.item.code == item.code && ol.layerIndex == li);
|
|
|
|
if(selected.length==0) return null;
|
|
|
|
return selected[0];
|
|
|
|
}
|
|
|
|
|
2019-12-11 17:03:37 +00:00
|
|
|
handleBackToList(event: MouseEvent) {
|
|
|
|
event.preventDefault();
|
|
|
|
this.location.back();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Injectable()
|
|
|
|
@Component({
|
|
|
|
selector: 'fm-map-selected-item',
|
|
|
|
templateUrl: './selected-item.component.html',
|
|
|
|
styleUrls: ['./selected-item.component.scss']
|
|
|
|
})
|
|
|
|
export class SelectedItemComponent extends AbstractSelectedItemComponent {
|
|
|
|
|
|
|
|
constructor(store: Store<mapReducers.State | commonReducers.State>, itemTypeService: ItemTypeService, location: Location, router: Router, public config:AppConfig) {
|
|
|
|
super(store, itemTypeService,location,router);
|
|
|
|
}
|
|
|
|
}
|