diff --git a/src/modules/otus/composables/useChildrenRoutes.js b/src/modules/otus/composables/useChildrenRoutes.js index 841a99a..654cc49 100644 --- a/src/modules/otus/composables/useChildrenRoutes.js +++ b/src/modules/otus/composables/useChildrenRoutes.js @@ -1,5 +1,5 @@ import { useRouter } from 'vue-router' -import { humanize } from '@/utils/strings' +import { humanize, uncapitalize } from '@/utils/strings' export default function useChildrenRoutes() { const router = useRouter() @@ -7,8 +7,14 @@ export default function useChildrenRoutes() { .getRoutes() .find((route) => route.name === 'otus-id') + const makeLabel = (path, isUncapitalize) => { + const label = humanize(path) + + return isUncapitalize ? uncapitalize(label) : label + } + return children.map(({ path, name, meta }) => ({ - label: path && humanize(path), + label: path && makeLabel(path, meta.uncapitalize), path, name, meta diff --git a/src/modules/otus/constants/layouts.js b/src/modules/otus/constants/layouts.js index dab70e1..867cf39 100644 --- a/src/modules/otus/constants/layouts.js +++ b/src/modules/otus/constants/layouts.js @@ -34,9 +34,12 @@ function parsePanelConfiguraion(panelLayout) { const layouts = {} for (const key in tabsLayout) { + const tabLayout = tabsLayout[key] + layouts[key] = { - panels: parsePanelConfiguraion(tabsLayout[key]?.panels || {}), - rankGroup: tabsLayout[key].rank_group || [] + panels: parsePanelConfiguraion(tabLayout?.panels || {}), + rankGroup: tabLayout.rank_group || [], + uncapitalize: tabLayout.uncapitalize } } diff --git a/src/modules/otus/router/index.js b/src/modules/otus/router/index.js index 64fdca4..6574e59 100644 --- a/src/modules/otus/router/index.js +++ b/src/modules/otus/router/index.js @@ -11,7 +11,8 @@ function makeChildrenRoutes() { component: PageLayout, meta: { tab, - rankGroup: layouts[tab].rankGroup + rankGroup: layouts[tab].rankGroup, + uncapitalize: layouts[tab].uncapitalize } })) } diff --git a/src/utils/strings.js b/src/utils/strings.js index b052f91..7b3d8c8 100644 --- a/src/utils/strings.js +++ b/src/utils/strings.js @@ -1,10 +1,12 @@ -function humanize (text) { +function humanize(text) { return text .replace(/^[\s_]+|[\s_]+$/g, '') .replace(/[_\s]+/g, ' ') - .replace(/^[a-z]/, m => m.toUpperCase()) + .replace(/^[a-z]/, (m) => m.toUpperCase()) } -export { - humanize -} \ No newline at end of file +function uncapitalize(text) { + return text.replace(/^[A-Z]/, (m) => m.toLowerCase()) +} + +export { humanize, uncapitalize }