2019-11-25 13:34:51 +00:00
|
|
|
import { Component, OnInit, OnDestroy, Inject, ViewEncapsulation, RendererFactory2, PLATFORM_ID, ChangeDetectionStrategy, HostListener } from '@angular/core';
|
|
|
|
import { Router, NavigationEnd, RouteConfigLoadStart, RouteConfigLoadEnd, ActivatedRoute, PRIMARY_OUTLET } from '@angular/router';
|
|
|
|
import { Meta, Title, MetaDefinition } from '@angular/platform-browser';import { DOCUMENT } from "@angular/common";
|
|
|
|
import { Subscription , Observable } from 'rxjs';
|
|
|
|
import { Store, Action } from '@ngrx/store';
|
|
|
|
|
|
|
|
//AppCommon
|
|
|
|
import { IEventMessage } from '../../models/event.message';
|
|
|
|
import { IListItem} from '../../models/list.item';
|
|
|
|
import { EventService } from '../../services/event.service';
|
|
|
|
import * as commonActions from '../../actions/app-common.actions';
|
|
|
|
|
|
|
|
import * as appReducers from '../../reducers/app-common.reducer';
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'fm-app',
|
|
|
|
templateUrl: './app.component.html',
|
|
|
|
styleUrls: ['./app.component.scss'],
|
|
|
|
encapsulation: ViewEncapsulation.None,
|
|
|
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
|
|
})
|
|
|
|
export class AppComponent implements OnInit, OnDestroy {
|
|
|
|
|
|
|
|
// This will go at the END of your title for example "Home - Angular Universal..." <-- after the dash (-)
|
|
|
|
private endPageTitle: string = 'Farmmaps';
|
|
|
|
// If no Title is provided, we'll use a default one before the dash(-)
|
|
|
|
private defaultPageTitle: string = 'Farmmaps';
|
|
|
|
|
|
|
|
private routerSub$: Subscription;
|
|
|
|
private eventSub$: Subscription;
|
|
|
|
|
|
|
|
public currentFolder: Observable<IListItem>;
|
|
|
|
public folderParents: Observable<IListItem[]>;
|
|
|
|
public browseFileElement: any;
|
|
|
|
public browseDirectoryElement: any;
|
|
|
|
public fileDroptarget: any;
|
|
|
|
public fullScreen: Observable<boolean>;
|
|
|
|
public routeLoading: Observable<boolean>;
|
|
|
|
|
|
|
|
constructor(
|
|
|
|
private router: Router,
|
|
|
|
private activatedRoute: ActivatedRoute,
|
|
|
|
private title: Title,
|
|
|
|
private meta: Meta,
|
|
|
|
private store: Store<appReducers.State>,
|
|
|
|
private eventService: EventService,
|
|
|
|
) {
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getActionFromEvent(event: IEventMessage): Action {
|
|
|
|
var action: Action = null;
|
|
|
|
console.debug(`${event.eventType} Event received`);
|
|
|
|
switch (event.eventType) {
|
|
|
|
case "ItemChanged": {
|
|
|
|
action = new commonActions.ItemChangedEvent(event.itemCode, event.attributes);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "ItemAdded": {
|
|
|
|
action = new commonActions.ItemAddedEvent(event.itemCode, event.attributes);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "ItemDeleted": {
|
|
|
|
action = new commonActions.ItemDeletedEvent(event.itemCode, event.attributes);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "taskStart": {
|
|
|
|
action = new commonActions.TaskStartEvent(event.itemCode, event.attributes);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "taskEnd": {
|
|
|
|
action = new commonActions.TaskEndEvent(event.itemCode, event.attributes);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case "taskError": {
|
|
|
|
action = new commonActions.TaskErrorEvent(event.itemCode, event.attributes);
|
|
|
|
break;
|
|
|
|
}
|
2019-12-10 17:14:48 +00:00
|
|
|
case "deviceUpdate": {
|
|
|
|
action = new commonActions.DeviceUpdateEvent(event.itemCode, event.attributes);
|
|
|
|
break;
|
|
|
|
}
|
2019-11-25 13:34:51 +00:00
|
|
|
}
|
|
|
|
return action;
|
|
|
|
}
|
|
|
|
|
|
|
|
ngOnInit() {
|
|
|
|
this.fullScreen = this.store.select(appReducers.selectGetFullScreen);
|
|
|
|
this.routeLoading = this.store.select(appReducers.selectGetRouteLoading);
|
|
|
|
this.InstallRouteEventHandler();
|
|
|
|
this.InstallEventServiceEventHandler();
|
|
|
|
}
|
|
|
|
|
|
|
|
@HostListener('document:keyup', ['$event'])
|
|
|
|
keyUp(event: KeyboardEvent) {
|
|
|
|
let x = event.keyCode;
|
|
|
|
if (x === 27) {
|
|
|
|
this.store.dispatch(new commonActions.Escape(true,false));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ngOnDestroy() {
|
|
|
|
// Subscription clean-up
|
|
|
|
if(this.routerSub$) this.routerSub$.unsubscribe();
|
|
|
|
if(this.eventSub$) this.eventSub$.unsubscribe();
|
|
|
|
}
|
|
|
|
|
|
|
|
private InstallRouteEventHandler() {
|
|
|
|
var other = this;
|
|
|
|
this.routerSub$ = this.router.events.subscribe(event => {
|
|
|
|
if (event instanceof RouteConfigLoadStart) {
|
|
|
|
other.store.dispatch(new commonActions.StartRouteLoading());
|
|
|
|
}
|
|
|
|
if (event instanceof RouteConfigLoadEnd) {
|
|
|
|
other.store.dispatch(new commonActions.EndRouteLoading());
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
private InstallEventServiceEventHandler() {
|
|
|
|
var other = this;
|
|
|
|
this.eventSub$ = this.eventService.event.subscribe(event => {
|
|
|
|
var action = other.getActionFromEvent(event);
|
|
|
|
if (action) other.store.dispatch(action);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
handleClick(event: MouseEvent) {
|
|
|
|
this.store.dispatch(new commonActions.Escape(false,true));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|