Update navbar to use front-end route converter

Signed-off-by: Dillon-Brown <dillon.brown@salesagility.com>
This commit is contained in:
Dillon-Brown 2020-05-01 13:59:10 +01:00
parent f10cc2812f
commit 5ceaf98172
2 changed files with 16 additions and 25 deletions

View file

@ -2,7 +2,7 @@ import {NavbarModel} from './navbar-model';
import {LogoAbstract} from '../logo/logo-abstract';
import {GroupedTab, NavbarModuleMap, Navigation, UserActionMenu} from '@base/facades/navigation/navigation.facade';
import {LanguageStrings, LanguageStringMap} from '@base/facades/language/language.facade';
import {RouteConverter} from '@services/navigation/route-converter/route-converter.service';
import {CurrentUserModel} from './current-user-model';
import {ActionLinkModel} from './action-link-model';
import {ready} from '@base/utils/object-utils';
@ -51,6 +51,10 @@ export class NavbarAbstract implements NavbarModel {
* Public API
*/
constructor(
private routeConverter: RouteConverter) {
}
/**
* Reset menus
*/
@ -82,15 +86,13 @@ export class NavbarAbstract implements NavbarModel {
userActionMenu.forEach((subMenu) => {
const name = subMenu.name;
let url = subMenu.url;
let urlParams;
if (name === 'logout') {
return;
}
if (name !== 'training') {
urlParams = this.getModuleFromUrlParams(url);
url = ROUTE_PREFIX + '/' + (urlParams.module).toLowerCase() + '/' + (urlParams.action).toLowerCase();
url = ROUTE_PREFIX + this.routeConverter.toFrontEnd(url);
}
const label = appStrings[subMenu.labelKey];
@ -445,20 +447,4 @@ export class NavbarAbstract implements NavbarModel {
return menuItem;
}
/**
* Get module from url params
*
* @param {string} search query
* @returns {{}} params map
*/
private getModuleFromUrlParams(search: string): any {
const hashes = search.slice(search.indexOf('?') + 1).split('&');
const params = {};
hashes.map(hash => {
const [key, val] = hash.split('=');
params[key] = decodeURIComponent(val);
});
return params;
}
}

View file

@ -11,6 +11,9 @@ import {AuthService} from '@services/auth/auth.service';
import {SystemConfigFacade} from '@base/facades/system-config/system-config.facade';
import {AppState, AppStateFacade} from '@base/facades/app-state/app-state.facade';
import {LanguageFacade, LanguageStrings,} from '@base/facades/language/language.facade';
import {RouteConverter} from "@services/navigation/route-converter/route-converter.service";
import {ModuleNameMapper} from "@services/navigation/module-name-mapper/module-name-mapper.service";
import {ActionNameMapper} from "@services/navigation/action-name-mapper/action-name-mapper.service";
@Component({
selector: 'scrm-navbar-ui',
@ -31,8 +34,10 @@ export class NavbarUiComponent implements OnInit, OnDestroy {
backLink = false;
mainNavLink = true;
submenu: any = [];
navbar: NavbarModel = new NavbarAbstract();
moduleNameMapper = new ModuleNameMapper(this.systemConfigFacade)
actionNameMapper = new ActionNameMapper(this.systemConfigFacade)
routeConverter = new RouteConverter(this.moduleNameMapper, this.actionNameMapper)
navbar: NavbarModel = new NavbarAbstract(this.routeConverter);
languages$: Observable<LanguageStrings> = this.languageFacade.vm$;
userPreferences$: Observable<UserPreferenceMap> = this.userPreferenceFacade.userPreferences$;
@ -71,7 +76,7 @@ export class NavbarUiComponent implements OnInit, OnDestroy {
protected appState: AppStateFacade,
private authService: AuthService
) {
const navbar = new NavbarAbstract();
const navbar = new NavbarAbstract(this.routeConverter);
this.setNavbar(navbar);
NavbarUiComponent.instances.push(this);
@ -87,7 +92,7 @@ export class NavbarUiComponent implements OnInit, OnDestroy {
static reset(): void {
NavbarUiComponent.instances.forEach((navbarComponent: NavbarUiComponent) => {
navbarComponent.loaded = false;
navbarComponent.navbar = new NavbarAbstract();
navbarComponent.navbar = new NavbarAbstract(navbarComponent.routeConverter);
});
}
@ -98,7 +103,7 @@ export class NavbarUiComponent implements OnInit, OnDestroy {
}
ngOnInit(): void {
const navbar = new NavbarAbstract();
const navbar = new NavbarAbstract(this.routeConverter);
this.setNavbar(navbar);
this.authService.isUserLoggedIn.subscribe(value => {
this.isUserLoggedIn = value;