| 
									
										
										
										
											2020-03-26 19:04:23 +01:00
										 |  |  | <template> | 
					
						
							|  |  |  |   <div class="spells"> | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-05 14:38:20 +02:00
										 |  |  |     <Breadcrumb /> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-17 17:04:03 +02:00
										 |  |  |     <h1>Grimoire</h1> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |     <v-data-table | 
					
						
							| 
									
										
										
										
											2020-04-05 14:38:20 +02:00
										 |  |  |       class="data-table" | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |       :headers="headers" | 
					
						
							|  |  |  |       :items="spells" | 
					
						
							|  |  |  |       item-key="key" | 
					
						
							|  |  |  |       :sort-by.sync="sortBy" | 
					
						
							|  |  |  |       :sort-desc.sync="sortDesc" | 
					
						
							| 
									
										
										
										
											2020-04-16 16:08:44 +02:00
										 |  |  |       must-sort | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |       :search="search" | 
					
						
							|  |  |  |     > | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <template v-slot:item.title="{ item }"> | 
					
						
							| 
									
										
										
										
											2020-04-02 14:20:33 +02:00
										 |  |  |         <router-link :to="{ path: item.path }" class="subtitle-2">{{ item.title }}</router-link> | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |       </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <template v-slot:item.frontmatter.level="{ item }"> | 
					
						
							|  |  |  |         <span v-if="item.frontmatter.level == 0">Tour de magie</span> | 
					
						
							|  |  |  |         <span v-else>{{ item.frontmatter.level }}</span> | 
					
						
							|  |  |  |       </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <template v-slot:item.frontmatter.concentration="{ item }"> | 
					
						
							|  |  |  |         <span v-if="item.frontmatter.concentration">concentration</span> | 
					
						
							|  |  |  |       </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <template v-slot:item.frontmatter.ritual="{ item }"> | 
					
						
							|  |  |  |         <span v-if="item.frontmatter.ritual">rituel</span> | 
					
						
							|  |  |  |       </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <template v-slot:item.frontmatter.components="{ item }"> | 
					
						
							| 
									
										
										
										
											2020-04-08 16:41:31 +02:00
										 |  |  |         <template v-if="item.frontmatter.components"> | 
					
						
							|  |  |  |           <template v-if="item.frontmatter.components.verbal">V</template><template v-if="item.frontmatter.components.verbal && (item.frontmatter.components.somatic || item.frontmatter.components.material)">,</template> | 
					
						
							|  |  |  |           <template v-if="item.frontmatter.components.somatic">S</template><template v-if="item.frontmatter.components.somatic && item.frontmatter.components.material">,</template> | 
					
						
							|  |  |  |           <template v-if="item.frontmatter.components.material">M</template> | 
					
						
							|  |  |  |         </template> | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |       </template> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-08 16:41:31 +02:00
										 |  |  |       <!-- <template v-slot:item.frontmatter.classes="{ item }"> | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |         <span v-for="(c, idx) in item.frontmatter.classes" :key="idx">{{c}}<template v-if="idx != item.frontmatter.classes.length-1">, </template></span> | 
					
						
							| 
									
										
										
										
											2020-04-08 16:41:31 +02:00
										 |  |  |       </template> --> | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     </v-data-table> | 
					
						
							| 
									
										
										
										
											2020-03-26 19:04:23 +01:00
										 |  |  |   </div> | 
					
						
							|  |  |  | </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script> | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  | import { mapState } from 'vuex' | 
					
						
							| 
									
										
										
										
											2020-04-05 14:38:20 +02:00
										 |  |  | import Breadcrumb from '@theme/components/Breadcrumb' | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-26 19:04:23 +01:00
										 |  |  | export default { | 
					
						
							| 
									
										
										
										
											2020-04-05 14:38:20 +02:00
										 |  |  |   components: { Breadcrumb }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |   data () { | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       sortBy: 'title', | 
					
						
							|  |  |  |       sortDesc: false, | 
					
						
							|  |  |  |       headers: [ | 
					
						
							|  |  |  |         { text: "Nom", align: 'start', sortable: true, value: 'title' }, | 
					
						
							|  |  |  |         { text: "Niveau", align: 'center', sortable: true, value: 'frontmatter.level' }, | 
					
						
							|  |  |  |         { text: "École", align: 'start', sortable: false, value: 'frontmatter.school' }, | 
					
						
							|  |  |  |         { text: "Temps d'incantation", align: 'start', sortable: false, value: 'frontmatter.casting_time' }, | 
					
						
							|  |  |  |         { text: "Durée", align: 'start', sortable: false, value: 'frontmatter.duration' }, | 
					
						
							|  |  |  |         { text: "Concentration", align: 'center', sortable: false, value: 'frontmatter.concentration' }, | 
					
						
							|  |  |  |         { text: "Rituel", align: 'center', sortable: false, value: 'frontmatter.ritual' }, | 
					
						
							|  |  |  |         { text: "Composantes", align: 'center', sortable: false, value: 'frontmatter.components' }, | 
					
						
							| 
									
										
										
										
											2020-04-08 16:41:31 +02:00
										 |  |  |         // { text: "Classes", align: 'start', sortable: false, value: 'frontmatter.classes' }
 | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |       ], | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-26 19:04:23 +01:00
										 |  |  |   computed: { | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |     ...mapState({ | 
					
						
							|  |  |  |       search: state => state.spellFilters.search, | 
					
						
							|  |  |  |       classes: state => state.spellFilters.classes, | 
					
						
							|  |  |  |       levels: state => state.spellFilters.levels, | 
					
						
							|  |  |  |       schools: state => state.spellFilters.schools, | 
					
						
							|  |  |  |       mustBeConcentration: state => state.spellFilters.mustBeConcentration, | 
					
						
							|  |  |  |       mustBeRitual: state => state.spellFilters.mustBeRitual, | 
					
						
							|  |  |  |       componentVerbal: state => state.spellFilters.componentVerbal, | 
					
						
							|  |  |  |       componentSomatic: state => state.spellFilters.componentSomatic, | 
					
						
							|  |  |  |       componentMaterial: state => state.spellFilters.componentMaterial, | 
					
						
							|  |  |  |     }), | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     spells() { | 
					
						
							|  |  |  |       let results = this.$pagination.pages | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // Filter concetration
 | 
					
						
							|  |  |  |       if (this.mustBeConcentration !== undefined) { | 
					
						
							|  |  |  |         results = results.filter(item => { | 
					
						
							|  |  |  |           return item.frontmatter.concentration === this.mustBeConcentration | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // Filter ritual
 | 
					
						
							|  |  |  |       if (this.mustBeRitual !== undefined) { | 
					
						
							|  |  |  |         results = results.filter(item => { | 
					
						
							|  |  |  |           return item.frontmatter.ritual === this.mustBeRitual | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // Filter components
 | 
					
						
							|  |  |  |       if (this.componentVerbal !== undefined) { | 
					
						
							|  |  |  |         results = results.filter(item => { | 
					
						
							|  |  |  |           return item.frontmatter.components.verbal === this.componentVerbal | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       if (this.componentSomatic !== undefined) { | 
					
						
							|  |  |  |         results = results.filter(item => { | 
					
						
							|  |  |  |           return item.frontmatter.components.somatic === this.componentSomatic | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       if (this.componentMaterial !== undefined) { | 
					
						
							|  |  |  |         results = results.filter(item => { | 
					
						
							|  |  |  |           return item.frontmatter.components.material === this.componentMaterial | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // Filter classes
 | 
					
						
							|  |  |  |       let selectedClasses = [] | 
					
						
							|  |  |  |       for (var i = 0; i < this.classes.length; i++) { | 
					
						
							|  |  |  |         if (this.classes[i].value) { | 
					
						
							|  |  |  |           selectedClasses.push(this.classes[i].label) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       if (selectedClasses.length) { | 
					
						
							| 
									
										
										
										
											2020-04-08 16:41:31 +02:00
										 |  |  |         let classFiltered = [] | 
					
						
							|  |  |  |         for (var i = 0; i < selectedClasses.length; i++) { | 
					
						
							|  |  |  |           for (var j = 0; j < results.length; j++) { | 
					
						
							|  |  |  |             if (results[j].frontmatter.classes.indexOf(selectedClasses[i]) > -1) { | 
					
						
							|  |  |  |               if (classFiltered.indexOf(results[j]) < 0) { | 
					
						
							|  |  |  |                 classFiltered.push(results[j]) | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |           } | 
					
						
							| 
									
										
										
										
											2020-04-08 16:41:31 +02:00
										 |  |  |         } | 
					
						
							|  |  |  |         results = classFiltered | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // Filter levels
 | 
					
						
							|  |  |  |       let selectedLevels = [] | 
					
						
							|  |  |  |       for (var i = 0; i < this.levels.length; i++) { | 
					
						
							|  |  |  |         if (this.levels[i].value) { | 
					
						
							|  |  |  |           selectedLevels.push(this.levels[i].level) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       if (selectedLevels.length) { | 
					
						
							|  |  |  |         results = results.filter(item => { | 
					
						
							|  |  |  |           return selectedLevels.indexOf(item.frontmatter.level) > -1 | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // Filter schools
 | 
					
						
							|  |  |  |       let selectedSchools = [] | 
					
						
							|  |  |  |       for (var i = 0; i < this.schools.length; i++) { | 
					
						
							|  |  |  |         if (this.schools[i].value) { | 
					
						
							|  |  |  |           selectedSchools.push(this.schools[i].label) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       if (selectedSchools.length) { | 
					
						
							|  |  |  |         results = results.filter(item => { | 
					
						
							|  |  |  |           return selectedSchools.indexOf(item.frontmatter.school) > -1 | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return results | 
					
						
							| 
									
										
										
										
											2020-03-26 19:04:23 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   mounted () { | 
					
						
							| 
									
										
										
										
											2020-04-11 18:01:59 +02:00
										 |  |  |     this.$store.commit('setDrawer', this.$vuetify.breakpoint.lgAndUp) | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |     this.$store.commit('setHasRightDrawer', true) | 
					
						
							| 
									
										
										
										
											2020-04-11 18:01:59 +02:00
										 |  |  |     this.$store.commit('setRightDrawer', this.$vuetify.breakpoint.lgAndUp) | 
					
						
							| 
									
										
										
										
											2020-04-01 19:34:06 +02:00
										 |  |  |     this.$store.commit('setInRightDrawer', 'spellFilters') | 
					
						
							| 
									
										
										
										
											2020-03-26 19:04:23 +01:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-02 14:20:33 +02:00
										 |  |  | <style lang="scss"> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-26 19:04:23 +01:00
										 |  |  | </style> |