Files
newfreeplanet_OLD/src/layouts/menuone/menuOne.ts
2021-10-01 03:08:43 +02:00

93 lines
2.3 KiB
TypeScript
Executable File

import { IListRoutes } from '@src/model'
import { useGlobalStore } from '@store/globalStore'
import { tools } from '@store/Modules/tools'
import { computed, defineComponent, watch } from 'vue'
import { useRoute } from 'vue-router'
import { static_data } from '@/db/static_data'
export default defineComponent({
name: 'MenuOne',
props: {
clBase: {
type: String,
required: false,
default: 'my-menu',
},
},
setup(props) {
const route = useRoute()
const globalStore = useGlobalStore()
const finishLoading = computed(() => globalStore.finishLoading)
const path = computed(() => route.path)
function getmenu(): any {
console.log('getmenu menuOne!')
return globalStore.getmenu
}
function setParentVisibilityBasedOnRoute(parent: any) {
parent.routes.forEach((item: any) => {
if (path.value === item.path) {
parent.show = true
}
})
}
watch(path, (to: string, from: string) => {
const mymenu = globalStore.getmenu
console.log('watch:', mymenu)
Object.keys(mymenu).forEach((parentName: any) => {
console.log('parentName', parentName)
// @ts-ignore
setParentVisibilityBasedOnRoute(mymenu[parentName])
})
})
/* function replaceUnderlineToSpace(text: string) {
while (text.indexOf('_') !== -1) {
text = text.replace('_', ' ')
}
return text
} */
function getroute(elem: IListRoutes) {
if (elem.idelem) {
return tools.getUrlByTipoProj(elem.urlroute ? elem.urlroute : '') + elem.idelem
}
return elem.path
}
function getmymenuclass(elem: IListRoutes) {
let menu: string = props.clBase
if (elem.color) {
menu += ` ${elem.color}`
} else {
if (elem.onlyAdmin) menu += ' isAdmin'
if (elem.onlyManager) menu += ' isManager'
if (elem.onlySocioResidente) menu += ' isSocioResidente'
if (elem.onlyConsiglio) menu += ' isConsiglio'
if (elem.onlyDepartment) menu += ' isDepartment'
if (elem.onlyTutor) menu += ' isTutor'
if (elem.onlyEditor) menu += ' isEditor'
}
if (elem.extraclass) menu += ` ${elem.extraclass}`
return menu
}
return {
getmenu,
finishLoading,
getmymenuclass,
getroute,
static_data,
tools,
}
},
})