Skip to content

Commit

Permalink
Add panel layout customization. Add analytics
Browse files Browse the repository at this point in the history
  • Loading branch information
jlpereira committed Aug 31, 2023
1 parent 761ea13 commit 85a66e8
Show file tree
Hide file tree
Showing 16 changed files with 142 additions and 53 deletions.
12 changes: 11 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
"tailwindcss": "^3.3.3",
"vite": "^4.4.9",
"vite-plugin-md": "^0.21.5",
"vite-plugin-pages": "^0.31.0"
"vite-plugin-pages": "^0.31.0",
"vite-plugin-radar": "^0.9.1"
}
}
6 changes: 6 additions & 0 deletions src/modules/otus/components/Panel/PanelContent/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import PanelContent from './PanelContent.vue'

export default {
id: 'panel:content',
component: PanelContent
}
6 changes: 6 additions & 0 deletions src/modules/otus/components/Panel/PanelDescendants/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import PanelDescendants from './PanelDescendants.vue'

export default {
id: 'panel:descendants',
component: PanelDescendants
}
8 changes: 8 additions & 0 deletions src/modules/otus/components/Panel/PanelGallery/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { SPECIES_GROUP } from '@/modules/otus/constants'
import PanelGallery from './PanelGallery.vue'

export default {
id: 'panel:gallery',
component: PanelGallery,
available: [SPECIES_GROUP]
}
6 changes: 6 additions & 0 deletions src/modules/otus/components/Panel/PanelMap/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import PanelMap from './PanelMap.vue'

export default {
id: 'panel:map',
component: PanelMap
}
6 changes: 6 additions & 0 deletions src/modules/otus/components/Panel/PanelNomenclature/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import PanelNomenclature from './PanelNomenclature.vue'

export default {
id: 'panel:nomenclature',
component: PanelNomenclature
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import PanelNomenclatureReferences from './PanelNomenclatureReferences.vue'

export default {
id: 'panel:nomenclature-references',
component: PanelNomenclatureReferences
}
6 changes: 6 additions & 0 deletions src/modules/otus/components/Panel/PanelStats/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import PanelStats from './PanelStats.vue'

export default {
id: 'panel:statistics',
component: PanelStats
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import PanelTypeDesignation from './PanelTypeDesignation.vue'
import { FAMILY_GROUP, GENUS_GROUP } from '../../../constants'

export default {
id: 'panel:type',
component: PanelTypeDesignation,
available: [FAMILY_GROUP, GENUS_GROUP]
}
8 changes: 8 additions & 0 deletions src/modules/otus/components/Panel/PanelTypeSpecimen/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { SPECIES_GROUP } from '../../../constants'
import PanelTypeSpecimen from './PanelTypeSpecimen.vue'

export default {
id: 'panel:type-specimen',
component: PanelTypeSpecimen,
available: [SPECIES_GROUP]
}
68 changes: 39 additions & 29 deletions src/modules/otus/constants/overviewLayout.js
Original file line number Diff line number Diff line change
@@ -1,33 +1,43 @@
import { FAMILY_GROUP, GENUS_GROUP, SPECIES_GROUP } from './rankGroups.js'
import PanelGallery from '../components/Panel/PanelGallery/Gallery.vue'
import PanelTypeSpecimen from '../components/Panel/PanelTypeSpecimen/PanelTypeSpecimen.vue'
import PanelTypeDesignation from '../components/Panel/PanelTypeDesignation/PanelTypeDesignation.vue'
import PanelNomenclature from '../components/Panel/PanelNomenclature/PanelNomenclature.vue'
import PanelNomenclatureReference from '../components/Panel/PanelNomenclatureReferences/PanelNomenclatureReferences.vue'
import PanelMap from '../components/Panel/PanelMap/PanelMap.vue'
import PanelDescendants from '../components/Panel/PanelDescendants/Descendants.vue'
import PanelContent from '../components/Panel/PanelContent/PanelContent.vue'
import PanelStats from '../components/Panel/PanelStats/PanelStats.vue'
const panelEntries = Object.values(
import.meta.glob('../components/Panel/*/main.js', {
eager: true,
import: 'default'
})
)

export const overviewLayout = {
left: [
{ component: PanelGallery },
{
component: PanelTypeSpecimen,
available: [SPECIES_GROUP]
},
{
component: PanelTypeDesignation,
available: [FAMILY_GROUP, GENUS_GROUP]
},
{ component: PanelNomenclature },
{ component: PanelNomenclatureReference }
],
const { taxa_page_overview } = __APP_ENV__

right: [
{ component: PanelMap },
{ component: PanelDescendants },
{ component: PanelContent },
{ component: PanelStats }
const DEFAULT_LAYOUT = [
[
[
'panel:gallery',
'panel:type',
'panel:type',
'panel:type-specimen',
'panel:nomenclature',
'panel:nomenclature-references'
],
['panel:map', 'panel:descendants', 'panel:content', 'panel:statistics']
]
]

function parsePanelConfiguraion(panelLayout) {
return panelLayout.map((row) =>
row.map((col) =>
col.map((panel) => {
const isPanelKey = typeof panel === 'string'
const panelObj = isPanelKey ? { id: panel } : { ...panel }
const entry = panelEntries.find((item) => item.id === panelObj.id)

return {
...entry,
...panelObj
}
})
)
)
}

export const overviewLayout = parsePanelConfiguraion(
taxa_page_overview.panels || DEFAULT_LAYOUT
)
45 changes: 23 additions & 22 deletions src/modules/otus/views/Overview.vue
Original file line number Diff line number Diff line change
@@ -1,25 +1,18 @@
<template>
<div>
<div class="grid grid-cols-1 gap-3 md:grid-cols-2">
<div class="grid grid-cols-1 gap-3 auto-rows-min">
<div class="grid gap-3">
<div
v-for="(row, index) in overviewLayout"
class="grid grid-cols-1 gap-3"
:class="[columnClasses[row.length]]"
>
<div
v-for="(column, index) in row"
class="grid grid-cols-1 gap-3 auto-rows-min"
:key="index"
>
<template
v-for="{ component, available } in overviewLayout.left"
:key="component"
>
<component
:is="component"
v-if="!available || isComponentForRank(available, taxonRank)"
:otu-id="otuId"
:otu="otu"
:taxon-id="taxonId"
:taxon="taxon"
/>
</template>
</div>
<div class="grid grid-cols-1 auto-rows-min gap-3">
<template
v-for="{ component, available } in overviewLayout.right"
:key="component"
v-for="{ component, available, id } in column"
:key="id"
>
<component
:is="component"
Expand All @@ -36,6 +29,7 @@
</template>

<script setup>
import { computed } from 'vue'
import { overviewLayout } from '../constants/overviewLayout'
defineProps({
Expand Down Expand Up @@ -65,6 +59,13 @@ defineProps({
}
})
const isComponentForRank = (available, rankString) =>
available.some((rankGroup) => rankString?.includes(rankGroup))
const columnClasses = {
1: ['md:grid-cols-1'],
2: ['md:grid-cols-2'],
3: ['md:grid-cols-3']
}
function isComponentForRank(available, rankString) {
return available.some((rankGroup) => rankString?.includes(rankGroup))
}
</script>
7 changes: 7 additions & 0 deletions vite.config.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { defineConfig } from 'vite'
import { loadConfiguration } from './src/utils/loadConfiguration.js'
import { VitePluginRadar } from 'vite-plugin-radar'
import path from 'path'
import Vue from '@vitejs/plugin-vue'
import Markdown from 'vite-plugin-md'
Expand Down Expand Up @@ -29,6 +30,7 @@ export default () => {
Vue({
include: [/\.vue$/, /\.md$/]
}),

Markdown({
wrapperClasses:
'!container mx-auto p-4 sm:pl-0 sm:pr-0 prose dark:prose-invert box-border',
Expand All @@ -40,6 +42,7 @@ export default () => {
},
markdownItUses: [relativeToRouterPlugin]
}),

Pages({
dirs: 'pages',
exclude: ['**/components/*.vue'],
Expand All @@ -52,6 +55,10 @@ export default () => {
return route
}
}
}),

VitePluginRadar({
...configuration?.analytics_services
})
]
})
Expand Down

0 comments on commit 85a66e8

Please sign in to comment.