mirror of
https://github.com/em-squared/5e-drs.git
synced 2025-10-30 21:24:18 +00:00
ajout d'un range slider pour filter les monstres par ID
This commit is contained in:
parent
3efc2aaaf5
commit
eebf902641
6 changed files with 58 additions and 3 deletions
|
|
@ -5,6 +5,7 @@ export default {
|
||||||
|
|
||||||
state: {
|
state: {
|
||||||
search: '',
|
search: '',
|
||||||
|
challengeRange: [0, 30],
|
||||||
types: [
|
types: [
|
||||||
{ label: "Aberration", value: false },
|
{ label: "Aberration", value: false },
|
||||||
{ label: "Bête", value: false },
|
{ label: "Bête", value: false },
|
||||||
|
|
@ -117,6 +118,12 @@ export default {
|
||||||
resetSearch: (state) => {
|
resetSearch: (state) => {
|
||||||
state.search = ''
|
state.search = ''
|
||||||
},
|
},
|
||||||
|
setChallengeRange: (state, payload) => {
|
||||||
|
state.challengeRange = payload
|
||||||
|
},
|
||||||
|
resetChallengeRange: (state, payload) => {
|
||||||
|
state.challengeRange = [0, 30]
|
||||||
|
},
|
||||||
setTypes: (state, payload) => {
|
setTypes: (state, payload) => {
|
||||||
state.types = payload
|
state.types = payload
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
label="Filtrer"
|
label="Filtrer"
|
||||||
single-line
|
single-line
|
||||||
hide-details
|
hide-details
|
||||||
|
clearable
|
||||||
color="accent"
|
color="accent"
|
||||||
></v-text-field>
|
></v-text-field>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,16 +2,33 @@
|
||||||
<div class="monster-filters pa-1">
|
<div class="monster-filters pa-1">
|
||||||
|
|
||||||
<v-text-field
|
<v-text-field
|
||||||
class="mb-1"
|
class="mb-1 mx-2"
|
||||||
v-model="search"
|
v-model="search"
|
||||||
label="Filtrer"
|
label="Filtrer"
|
||||||
single-line
|
single-line
|
||||||
hide-details
|
hide-details
|
||||||
|
clearable
|
||||||
color="accent"
|
color="accent"
|
||||||
></v-text-field>
|
></v-text-field>
|
||||||
|
|
||||||
<v-expansion-panels multiple flat hover v-model="panels">
|
<v-expansion-panels multiple flat hover v-model="panels">
|
||||||
|
|
||||||
|
<v-expansion-panel>
|
||||||
|
<v-expansion-panel-header>Tranche d'ID</v-expansion-panel-header>
|
||||||
|
<v-expansion-panel-content class="pt-4">
|
||||||
|
<v-range-slider
|
||||||
|
class="mt-6"
|
||||||
|
v-model="challengeRange"
|
||||||
|
min="0"
|
||||||
|
max="30"
|
||||||
|
thumb-size="24"
|
||||||
|
thumb-label="always"
|
||||||
|
hide-details
|
||||||
|
@end="onEndChallengeRange"
|
||||||
|
></v-range-slider>
|
||||||
|
</v-expansion-panel-content>
|
||||||
|
</v-expansion-panel>
|
||||||
|
|
||||||
<v-expansion-panel>
|
<v-expansion-panel>
|
||||||
<v-expansion-panel-header>Types</v-expansion-panel-header>
|
<v-expansion-panel-header>Types</v-expansion-panel-header>
|
||||||
<v-expansion-panel-content>
|
<v-expansion-panel-content>
|
||||||
|
|
@ -58,7 +75,7 @@ export default {
|
||||||
|
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
panels: [],
|
panels: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -72,6 +89,15 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
challengeRange: {
|
||||||
|
get () {
|
||||||
|
return this.$store.state.monsterFilters.challengeRange
|
||||||
|
},
|
||||||
|
set (newValue) {
|
||||||
|
this.$store.commit('monsterFilters/setChallengeRange', newValue)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
types: {
|
types: {
|
||||||
get () {
|
get () {
|
||||||
return this.$store.state.monsterFilters.types
|
return this.$store.state.monsterFilters.types
|
||||||
|
|
@ -111,6 +137,10 @@ export default {
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
|
||||||
|
onEndChallengeRange () {
|
||||||
|
setUrlParams('trancheID', this.challengeRange)
|
||||||
|
},
|
||||||
|
|
||||||
switchType () {
|
switchType () {
|
||||||
let list = []
|
let list = []
|
||||||
for (var i = 0; i < this.types.length; i++) {
|
for (var i = 0; i < this.types.length; i++) {
|
||||||
|
|
@ -182,11 +212,15 @@ export default {
|
||||||
mounted () {
|
mounted () {
|
||||||
this.$store.dispatch('monsterFilters/reset')
|
this.$store.dispatch('monsterFilters/reset')
|
||||||
|
|
||||||
|
let challengeRange = getUrlParameter(window.location.href, "trancheID").split(",")
|
||||||
let selectedSizes = getUrlParameter(window.location.href, "tailles").split(",")
|
let selectedSizes = getUrlParameter(window.location.href, "tailles").split(",")
|
||||||
let selectedTypes = getUrlParameter(window.location.href, "types").split(",")
|
let selectedTypes = getUrlParameter(window.location.href, "types").split(",")
|
||||||
let selectedEnvironments = getUrlParameter(window.location.href, "environnements").split(",")
|
let selectedEnvironments = getUrlParameter(window.location.href, "environnements").split(",")
|
||||||
let selectedDungeonTypes = getUrlParameter(window.location.href, "donjons").split(",")
|
let selectedDungeonTypes = getUrlParameter(window.location.href, "donjons").split(",")
|
||||||
|
|
||||||
|
if (challengeRange && challengeRange[0] != '') {
|
||||||
|
this.$store.commit('monsterFilters/setChallengeRange', challengeRange)
|
||||||
|
}
|
||||||
setListMutation(selectedTypes, this.$store, 'monsterFilters/setTypesFromList')
|
setListMutation(selectedTypes, this.$store, 'monsterFilters/setTypesFromList')
|
||||||
setListMutation(selectedSizes, this.$store, 'monsterFilters/setSizesFromList')
|
setListMutation(selectedSizes, this.$store, 'monsterFilters/setSizesFromList')
|
||||||
setListMutation(selectedEnvironments, this.$store, 'monsterFilters/setEnvironmentsFromList')
|
setListMutation(selectedEnvironments, this.$store, 'monsterFilters/setEnvironmentsFromList')
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
label="Filtrer"
|
label="Filtrer"
|
||||||
single-line
|
single-line
|
||||||
hide-details
|
hide-details
|
||||||
|
clearable
|
||||||
color="accent"
|
color="accent"
|
||||||
></v-text-field>
|
></v-text-field>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@ export default {
|
||||||
computed: {
|
computed: {
|
||||||
...mapState({
|
...mapState({
|
||||||
search: state => state.monsterFilters.search,
|
search: state => state.monsterFilters.search,
|
||||||
|
challengeRange: state => state.monsterFilters.challengeRange,
|
||||||
types: state => state.monsterFilters.types,
|
types: state => state.monsterFilters.types,
|
||||||
sizes: state => state.monsterFilters.sizes,
|
sizes: state => state.monsterFilters.sizes,
|
||||||
environments: state => state.monsterFilters.environments,
|
environments: state => state.monsterFilters.environments,
|
||||||
|
|
@ -115,6 +116,17 @@ export default {
|
||||||
monsters() {
|
monsters() {
|
||||||
let results = this.$pagination.pages
|
let results = this.$pagination.pages
|
||||||
|
|
||||||
|
// Filter ID
|
||||||
|
let minID = this.challengeRange[0]
|
||||||
|
let maxID = this.challengeRange[1]
|
||||||
|
if (this.challengeRange[0] > this.challengeRange[1]) {
|
||||||
|
minID = this.challengeRange[1]
|
||||||
|
maxID = this.challengeRange[0]
|
||||||
|
}
|
||||||
|
results = results.filter(item => {
|
||||||
|
return item.frontmatter.challenge >= minID && item.frontmatter.challenge <= maxID
|
||||||
|
})
|
||||||
|
|
||||||
// Filter types
|
// Filter types
|
||||||
let selectedTypes = []
|
let selectedTypes = []
|
||||||
for (var i = 0; i < this.types.length; i++) {
|
for (var i = 0; i < this.types.length; i++) {
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,7 @@ Le DD est de 15 pour repérer la plaque de pression et de légères traces de br
|
||||||
|
|
||||||
Le piège s'active quand un poids de 10 kilos ou plus appuie sur la plaque de pression. La statue crache alors un cône de feu de 9 mètres. Chaque créature située dans le cône doit faire un [jet de sauvegarde](/utiliser-les-caracteristiques/#jets-de-sauvegarde) de Dextérité DD 13. Celles qui échouent subissent 22 (4d10) dégâts de feu, les autres la moitié seulement.
|
Le piège s'active quand un poids de 10 kilos ou plus appuie sur la plaque de pression. La statue crache alors un cône de feu de 9 mètres. Chaque créature située dans le cône doit faire un [jet de sauvegarde](/utiliser-les-caracteristiques/#jets-de-sauvegarde) de Dextérité DD 13. Celles qui échouent subissent 22 (4d10) dégâts de feu, les autres la moitié seulement.
|
||||||
|
|
||||||
Il suffit de glisser une pointe de fer ou un autre objet sous la plaque de pression pour empêcher le piège de s'activer. Si quelqu'un lance [_dissipation de la magie_](/grimoire/dissipation-de-la-magie) (DD 13) avec succès sur la (statue, il détruit le piège.
|
Il suffit de glisser une pointe de fer ou un autre objet sous la plaque de pression pour empêcher le piège de s'activer. Si quelqu'un lance [_dissipation de la magie_](/grimoire/dissipation-de-la-magie) (DD 13) avec succès sur la statue, il détruit le piège.
|
||||||
|
|
||||||
### Zone de gravité inversée
|
### Zone de gravité inversée
|
||||||
_Piège magique_
|
_Piège magique_
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue