Add menu background

This commit is contained in:
Willem Dantuma 2020-01-08 11:37:37 +01:00
parent c52497af59
commit d3bc921000
9 changed files with 135 additions and 88 deletions

View File

@ -198,9 +198,9 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
} }
this.stateSetCount += 1; this.stateSetCount += 1;
}); });
// setTimeout(() => { setTimeout(() => {
// this.map.instance.updateSize(); this.map.instance.updateSize();
// }, 500); }, 500);
} }
handleSearchCollapse(event) { handleSearchCollapse(event) {

View File

@ -1,41 +1,34 @@
import {NgModule} from '@angular/core'; import {NgModule} from '@angular/core';
import {RouterModule} from '@angular/router'; import {RouterModule} from '@angular/router';
import {AuthCallbackComponent} from './components/auth-callback/auth-callback.component'; import {AuthCallbackComponent} from './components/auth-callback/auth-callback.component';
import {AuthCallbackGuard} from './components/auth-callback/auth-callback.guard'; import {AuthCallbackGuard} from './components/auth-callback/auth-callback.guard';
import {FullScreenGuard} from './services/full-screen-guard.service'; import {NavBarGuard} from './services/nav-bar-guard.service';
import {SessionClearedComponent} from './components/session-cleared/session-cleared.component'; import {FullScreenGuard} from './services/full-screen-guard.service';
import {NotFoundComponent} from './components/not-found/not-found.component'; import {SessionClearedComponent} from './components/session-cleared/session-cleared.component';
import {NotFoundComponent} from './components/not-found/not-found.component';
const routes = [
{ const routes = [
path: 'cb', {
component: AuthCallbackComponent, path: 'cb',
canActivate: [AuthCallbackGuard], component: AuthCallbackComponent,
}, canActivate: [AuthCallbackGuard],
{ },
path: 'loggedout', {
component: SessionClearedComponent, path: 'loggedout',
canActivate: [FullScreenGuard], component: SessionClearedComponent,
}, canActivate: [FullScreenGuard],
{ },
path: '**', component: NotFoundComponent, {
data: { path: '**', component: NotFoundComponent,
title: '404 - Not found', canActivate: [NavBarGuard]
meta: [{name: 'description', content: '404 - Error'}], }
links: [], ];
// links: [
// { rel: 'canonical', href: 'http://blogs.example.com/bootstrap/something' }, @NgModule({
// { rel: 'alternate', hreflang: 'es', href: 'http://es.example.com/bootstrap-demo' } imports: [RouterModule.forChild(routes)],
//] exports: [RouterModule],
}, })
}, export class AppCommonRoutingModule {
]; }
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class AppCommonRoutingModule {
}

View File

@ -29,6 +29,7 @@ import { NotImplementedComponent } from './components/not-implemented/not-implem
import { SidePanelComponent } from './components/side-panel/side-panel.component'; import { SidePanelComponent } from './components/side-panel/side-panel.component';
import { TimespanComponent } from './components/timespan/timespan.component'; import { TimespanComponent } from './components/timespan/timespan.component';
import { TagInputComponent } from './components/tag-input/tag-input.component'; import { TagInputComponent } from './components/tag-input/tag-input.component';
import {MenuBackgroundComponent} from './components/menu-background/menu-background.component';
import {IEventMessage } from './models/event.message'; import {IEventMessage } from './models/event.message';
import { IItem, Item } from './models/item'; import { IItem, Item } from './models/item';
import {IItemType} from './models/item.type'; import {IItemType} from './models/item.type';
@ -65,7 +66,8 @@ export {
commonActions, commonActions,
commonReducers, commonReducers,
IAuthconfigFactory, IAuthconfigFactory,
AuthConfigFactory AuthConfigFactory,
MenuBackgroundComponent
}; };
@NgModule({ @NgModule({
@ -90,7 +92,8 @@ export {
ResumableFileUploadComponent, ResumableFileUploadComponent,
TimespanComponent, TimespanComponent,
TagInputComponent, TagInputComponent,
SessionClearedComponent SessionClearedComponent,
MenuBackgroundComponent
], ],
exports: [ exports: [
NgbModule, NgbModule,
@ -106,7 +109,8 @@ export {
ResumableFileUploadComponent, ResumableFileUploadComponent,
TimespanComponent, TimespanComponent,
TagInputComponent, TagInputComponent,
SessionClearedComponent SessionClearedComponent,
MenuBackgroundComponent
] ]
}) })
export class AppCommonModule { export class AppCommonModule {

View File

@ -9,7 +9,8 @@
</nav> </nav>
<div class="body"> <div class="body">
<router-outlet></router-outlet> <router-outlet></router-outlet>
</div> </div>
<fm-menu-background [visible]="menuVisible|async"></fm-menu-background>
<fm-side-panel [visible]="menuVisible|async" [left]="true" class="menu" (click)="handleStopBubble($event)"> <fm-side-panel [visible]="menuVisible|async" [left]="true" class="menu" (click)="handleStopBubble($event)">
<div class="container-fluid"> <div class="container-fluid">
<div class="body"> <div class="body">

View File

@ -0,0 +1,3 @@
<div class="menu-background" [ngClass]="{'show':visible}">
</div>

View File

@ -0,0 +1,17 @@
.menu-background {
display: block;
position: absolute;
top:0;
left:0;
right:0;
bottom:0;
opacity: 0;
background-color: #000000;
transition: opacity 0s ease-out 1s;
pointer-events: none;
}
.menu-background.show {
pointer-events: all;
opacity: 0.3;
}

View File

@ -0,0 +1,23 @@
import { Component, OnInit,Input } from '@angular/core';
import { Store, Action } from '@ngrx/store';
import * as appReducers from '../../reducers/app-common.reducer';
import * as commonActions from '../../actions/app-common.actions';
@Component({
selector: 'fm-menu-background',
templateUrl: './menu-background.component.html',
styleUrls: ['./menu-background.component.scss'],
})
export class MenuBackgroundComponent implements OnInit {
@Input() visible:boolean = false;
constructor(private store: Store<appReducers.State>) { }
ngOnInit() { }
handleOnClick(event:MouseEvent) {
if(this.visible) {
this.store.dispatch(new commonActions.SetMenuVisible(false));
event.stopPropagation();
}
}
}

View File

@ -26,7 +26,7 @@ export const initialState: State = {
user:null, user:null,
fullScreen: true, fullScreen: true,
routeLoading: false, routeLoading: false,
menuVisible: true menuVisible: false
} }
export function reducer(state = initialState, action: appCommonActions.Actions ): State { export function reducer(state = initialState, action: appCommonActions.Actions ): State {

View File

@ -1,40 +1,46 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import {IItemTypes} from '../models/item.types' import {IItemTypes} from '../models/item.types'
import {IItem} from '../models/item' import {IItem} from '../models/item'
import {ItemService} from '../services/item.service'; import {ItemService} from '../services/item.service';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',
}) })
export class ItemTypeService { export class ItemTypeService {
public itemTypes: IItemTypes; public itemTypes: IItemTypes;
constructor(itemService:ItemService) { constructor(itemService:ItemService) {
itemService.getItemTypes().subscribe((itemTypes) => { itemService.getItemTypes().subscribe((itemTypes) => {
this.itemTypes = itemTypes; this.itemTypes = itemTypes;
}); });
} }
getIcon(itemType: string) { getIcon(itemType: string) {
var icon = "fa fa-file-o"; var icon = "fa fa-file-o";
if (this.itemTypes[itemType]) icon = this.itemTypes[itemType].icon; if (this.itemTypes[itemType]) icon = this.itemTypes[itemType].icon;
return icon; return icon;
} }
getColor(itemType: string) { getColor(itemType: string) {
var color = "#000000"; var color = "#000000";
if (this.itemTypes[itemType]) color = this.itemTypes[itemType].iconColor; if (this.itemTypes[itemType]) color = this.itemTypes[itemType].iconColor;
return color; return color;
} }
hasViewer(item: IItem) { hasViewer(item: IItem) {
let itemType: string = item.itemType; let itemType: string = item.itemType;
if (this.itemTypes[itemType]) return this.itemTypes[itemType].viewer !== undefined; if (this.itemTypes[itemType]) return this.itemTypes[itemType].viewer !== undefined;
return false; return false;
} }
isLayer(item: IItem) { hasEditor(item: IItem) {
let itemType: string = item.itemType; let itemType: string = item.itemType;
return itemType == "vnd.farmmaps.itemtype.geotiff.processed" || itemType == "vnd.farmmaps.itemtype.layer" || itemType == "vnd.farmmaps.itemtype.shape.processed"; if (this.itemTypes[itemType]) return this.itemTypes[itemType].editor !== undefined;
} return false;
}
isLayer(item: IItem) {
let itemType: string = item.itemType;
return itemType == "vnd.farmmaps.itemtype.geotiff.processed" || itemType == "vnd.farmmaps.itemtype.layer" || itemType == "vnd.farmmaps.itemtype.shape.processed";
}
} }