import { Component, Input, Injectable } from '@angular/core'; import { Location } from '@angular/common'; import { Feature } from 'ol'; import { Store } from '@ngrx/store'; import * as mapReducers from '../../reducers/map.reducer'; import { commonReducers,ItemTypeService, IItem, Item } from '@farmmaps/common'; import * as mapActions from '../../actions/map.actions'; import { Router, ActivatedRoute, ParamMap, Event } from '@angular/router'; @Injectable() export abstract class AbstractSelectedItemComponent { @Input() item: IItem constructor(public store: Store, public itemTypeService: ItemTypeService, private location: Location, private router: Router) { } handleOnView(item: IItem) { var itemType = this.itemTypeService.itemTypes[item.itemType]; if (itemType) { if (itemType.viewer) { let url = `/viewer/${itemType.viewer}/item/${item.code}`; this.router.navigate([url]); } } return false; } handleOnEdit(item: IItem) { let url = `/editor/property/item/${item.code}`; this.router.navigate([url]); return false; } handleAddAsLayer(item: IItem,layerIndex:number = -1) { this.store.dispatch(new mapActions.AddLayer(item,layerIndex)); return false; } handleBackToList(event: MouseEvent) { event.preventDefault(); this.location.back(); } } @Injectable() @Component({ selector: 'selected-item', templateUrl: './selected-item.component.html', styleUrls: ['./selected-item.component.scss'] }) export class SelectedItemComponent extends AbstractSelectedItemComponent { constructor(store: Store, itemTypeService: ItemTypeService, location: Location, router: Router) { super(store, itemTypeService,location,router); } }