From 9add7369de1f4e78ff3358d1eeb0472c3c3cca3f Mon Sep 17 00:00:00 2001 From: Maxime Moraine Date: Thu, 16 Apr 2020 16:08:44 +0200 Subject: [PATCH] optimisation mobile + filtres des monstres + seo --- docs/.vuepress/config.js | 24 +++++- docs/.vuepress/public/manifest.json | 6 +- docs/.vuepress/public/social-logo.png | Bin 0 -> 7824 bytes docs/.vuepress/store/index.js | 8 ++ .../.vuepress/store/modules/monsterFilters.js | 2 +- docs/.vuepress/theme/components/Monster.vue | 20 +---- .../theme/components/MonsterFilters.vue | 70 +++++++++++++++++- docs/.vuepress/theme/components/NavDrawer.vue | 10 +++ docs/.vuepress/theme/components/Navbar.vue | 7 +- .../theme/components/search/SRDSearchBox.vue | 7 ++ .../theme/layouts/MagicItemsLayout.vue | 1 + .../theme/layouts/MonstersLayout.vue | 50 +++++++++++++ docs/.vuepress/theme/layouts/SpellsLayout.vue | 1 + docs/.vuepress/theme/styles/_tables.scss | 2 +- docs/.vuepress/theme/util/monsterHelpers.js | 25 +++++++ package.json | 1 + yarn.lock | 5 ++ 17 files changed, 210 insertions(+), 29 deletions(-) create mode 100644 docs/.vuepress/public/social-logo.png diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index d358fdf..a66a139 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -93,7 +93,28 @@ module.exports = { '@vuepress/pwa', { serviceWorker: true, - updatePopup: true + updatePopup: true, + generateSWConfig: { + cacheId: 'hddrs', + globIgnores: ['**/*.js', '**/*.css', '**/*.html'] + } + } + ], + [ + 'seo', + { + siteTitle: (_, $site) => $site.title, + title: ($page, $site) => $page.title + ' | ' + $site.title, + description: $page => $page.frontmatter.description, + // author: (_, $site) => $site.themeConfig.author, + // tags: $page => $page.frontmatter.tags, + twitterCard: _ => 'summary_large_image', + type: $page => 'website', + url: (_, $site, path) => ($site.themeConfig.domain || '') + path, + // image: ($page, $site) => $page.frontmatter.image && (($site.themeConfig.domain || '') + $page.frontmatter.image), + image: ($page, $site) => $site.themeConfig.domain + '/social-logo.png', + // publishedAt: $page => $page.frontmatter.date && new Date($page.frontmatter.date), + // modifiedAt: $page => $page.lastUpdated && new Date($page.lastUpdated), } ], ], @@ -115,6 +136,7 @@ module.exports = { } }, themeConfig: { + domain: 'https://staging.heros-et-dragons.fr', repository: 'https://github.com/em-squared/heros-et-dragons-drs', kofi: 'https://ko-fi.com/S6S410PB8', primaryColor: '#563f5a', // Hero diff --git a/docs/.vuepress/public/manifest.json b/docs/.vuepress/public/manifest.json index 4c4dcef..62b9ef3 100644 --- a/docs/.vuepress/public/manifest.json +++ b/docs/.vuepress/public/manifest.json @@ -4,7 +4,7 @@ "name" : "Héros & Dragons DRS", "scope" : "/", "display" : "standalone", - "start_url" : "https://staging.heros-et-dragons.fr/", + "start_url" : "/index.html", "short_name" : "H&D DRS", "theme_color" : "#563f5a", "description" : "Document de référence système pour le jeu de rôle Héros & Dragons", @@ -12,12 +12,12 @@ "background_color" : "#ffffff", "icons" : [ { - "src": "https://staging.heros-et-dragons.fr/android-chrome-192x192.png", + "src": "/android-chrome-192x192.png", "type": "image/png", "sizes": "192x192" }, { - "src": "https://staging.heros-et-dragons.fr/android-chrome-512x512.png", + "src": "/android-chrome-512x512.png", "type": "image/png", "sizes": "512x512" } diff --git a/docs/.vuepress/public/social-logo.png b/docs/.vuepress/public/social-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fc3563f91afbbedc11864e78d9a7d90159882c3f GIT binary patch literal 7824 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 state.hasRightDrawer, inRightDrawer: state => state.inRightDrawer, isThemeDark: state => state.isThemeDark, + isOpenAboutDialog: state => state.isOpenAboutDialog, }, actions: { @@ -51,6 +53,9 @@ export default new Vuex.Store({ isThemeDark: ({ commit }, payload) => { commit('setIsThemeDark', payload) }, + isOpenAboutDialog: ({ commit }, payload) => { + commit('setIsOpenAboutDialog', payload) + }, }, mutations: { @@ -72,5 +77,8 @@ export default new Vuex.Store({ setIsThemeDark: (state, payload) => { state.isThemeDark = payload }, + setIsOpenAboutDialog: (state, payload) => { + state.isOpenAboutDialog = payload + }, }, }) diff --git a/docs/.vuepress/store/modules/monsterFilters.js b/docs/.vuepress/store/modules/monsterFilters.js index 2a5ca8b..897713a 100644 --- a/docs/.vuepress/store/modules/monsterFilters.js +++ b/docs/.vuepress/store/modules/monsterFilters.js @@ -29,7 +29,7 @@ export default { { label: "Très grand", abbr:"TG", value: false }, { label: "Gigantesque", abbr:"Gig", value: false }, ], - environements: [ + environments: [ { label: "Arctique / Subarctique", value: false }, { label: "Bois / Forêt", value: false }, { label: "Collines / Vallées", value: false }, diff --git a/docs/.vuepress/theme/components/Monster.vue b/docs/.vuepress/theme/components/Monster.vue index 1725c17..35570e2 100644 --- a/docs/.vuepress/theme/components/Monster.vue +++ b/docs/.vuepress/theme/components/Monster.vue @@ -139,7 +139,8 @@ import { getModifier, displayAbilityScore, getProficiencyBonus, - displayChallenge + displayChallenge, + displayMonsterTypeSizeAlignment } from '@theme/util/monsterHelpers' import {stats} from '../../data/stats.js' @@ -184,22 +185,7 @@ export default { getProficiencyBonus () { return getProficiencyBonus(this.monster.challenge) }, displayMonsterTypeSizeAlignment () { - let result = '' - if (this.monster.isSwarm) { - result = 'Nuée de taille '+ this.monster.size + ' composée ' + stats.monsterTypes[this.monster.type].swarm - if (this.monster.subtype) { - result += ' (' + this.monster.subtype + ')' - } - result += ' de taille ' + this.monster.swarmSize - } else { - result = this.monster.type - if (this.monster.subtype) { - result += ' (' + this.monster.subtype + ')' - } - result += ' de taille ' + this.monster.size - } - result += ', ' + this.monster.alignment - return result + return displayMonsterTypeSizeAlignment(this.monster) }, displaySavingThrowBonus (ability) { diff --git a/docs/.vuepress/theme/components/MonsterFilters.vue b/docs/.vuepress/theme/components/MonsterFilters.vue index 77742a1..45d5aa3 100644 --- a/docs/.vuepress/theme/components/MonsterFilters.vue +++ b/docs/.vuepress/theme/components/MonsterFilters.vue @@ -28,7 +28,21 @@ + + Environnements + + Réinitialiser + + + + + Types de donjons + + Réinitialiser + + + @@ -75,6 +89,24 @@ export default { this.$store.commit('monsterFilters/setSizes', newValue) } }, + + environments: { + get () { + return this.$store.state.monsterFilters.environments + }, + set (newValue) { + this.$store.commit('monsterFilters/setEnvironments', newValue) + } + }, + + dungeonTypes: { + get () { + return this.$store.state.monsterFilters.dungeonTypes + }, + set (newValue) { + this.$store.commit('monsterFilters/setDungeonTypes', newValue) + } + }, }, methods: { @@ -96,7 +128,27 @@ export default { list.push(this.sizes[i].label) } } - setUrlParams('raretes', list) + setUrlParams('tailles', list) + }, + + switchEnvironment () { + let list = [] + for (var i = 0; i < this.environments.length; i++) { + if (this.environments[i].value) { + list.push(this.environments[i].label) + } + } + setUrlParams('environnements', list) + }, + + switchDungeonType () { + let list = [] + for (var i = 0; i < this.dungeonTypes.length; i++) { + if (this.dungeonTypes[i].value) { + list.push(this.dungeonTypes[i].label) + } + } + setUrlParams('donjons', list) }, setColor (value, compare, color) { @@ -115,16 +167,30 @@ export default { this.$store.commit('monsterFilters/resetSizes') this.switchSize() }, + + resetEnvironments () { + this.$store.commit('monsterFilters/resetEnvironments') + this.switchEnvironment() + }, + + resetDungeonTypes () { + this.$store.commit('monsterFilters/resetDungeonTypes') + this.switchDungeonType() + }, }, mounted () { this.$store.dispatch('monsterFilters/reset') - let selectedSizes = getUrlParameter(window.location.href, "raretes").split(",") + let selectedSizes = getUrlParameter(window.location.href, "tailles").split(",") let selectedTypes = getUrlParameter(window.location.href, "types").split(",") + let selectedEnvironments = getUrlParameter(window.location.href, "environnements").split(",") + let selectedDungeonTypes = getUrlParameter(window.location.href, "donjons").split(",") setListMutation(selectedTypes, this.$store, 'monsterFilters/setTypesFromList') setListMutation(selectedSizes, this.$store, 'monsterFilters/setSizesFromList') + setListMutation(selectedEnvironments, this.$store, 'monsterFilters/setEnvironmentsFromList') + setListMutation(selectedDungeonTypes, this.$store, 'monsterFilters/setDungeonTypesFromList') } } diff --git a/docs/.vuepress/theme/components/NavDrawer.vue b/docs/.vuepress/theme/components/NavDrawer.vue index 1583737..07044e6 100644 --- a/docs/.vuepress/theme/components/NavDrawer.vue +++ b/docs/.vuepress/theme/components/NavDrawer.vue @@ -71,6 +71,16 @@ + + + mdi-information + + + + À propos + + + diff --git a/docs/.vuepress/theme/components/Navbar.vue b/docs/.vuepress/theme/components/Navbar.vue index f87d565..7481b3e 100644 --- a/docs/.vuepress/theme/components/Navbar.vue +++ b/docs/.vuepress/theme/components/Navbar.vue @@ -7,12 +7,12 @@ - mdi-information + mdi-information {{ rightDrawerIcon }} - + À propos de H&D DRS @@ -30,7 +30,6 @@