feat: externalized tool configuration

This commit is contained in:
Corentin Thomasset 2021-05-28 19:44:27 +02:00
parent c3adfe30ec
commit 690bd099ef
No known key found for this signature in database
GPG key ID: DBD997E935996158
31 changed files with 387 additions and 300 deletions

View file

@ -1,6 +1,6 @@
<template>
<div class="memo">
<ToolHeader :config="memoConfig" />
<ToolHeader :config="$toolConfig" />
Warning: le style/aspect est toujours en wip, so focus on content <br><br>

View file

@ -5,8 +5,8 @@
append-icon="mdi-magnify"
color="white"
hide-details
:items="toolRoutesFlat"
:item-text="item => item.config.title"
:items="$toolListFlat"
:item-text="item => item.title"
item-value="path"
solo-inverted
dense
@ -26,12 +26,11 @@
</template>
<script lang="ts">
import {Component, mixins} from 'nuxt-property-decorator'
import {ToolRoutesMixin} from '@/mixins/tool-routes.mixin'
import {Component, Vue} from 'nuxt-property-decorator'
import {ToolRouteConfig} from '~/types/ToolConfig'
@Component
export default class SearchBar extends mixins(ToolRoutesMixin) {
export default class SearchBar extends Vue {
choose(path:string) {
this.$router.push({path})
}
@ -39,7 +38,7 @@ export default class SearchBar extends mixins(ToolRoutesMixin) {
filterItems(item:ToolRouteConfig, queryText:string, itemText:string) {
const query = queryText.trim().toLowerCase()
const nameContainsText = itemText.toLowerCase().includes(query)
const keywordContainsText = item?.config?.keywords.join(' ').toLowerCase().includes(query) ?? false
const keywordContainsText = item?.keywords.join(' ').toLowerCase().includes(query) ?? false
return nameContainsText || keywordContainsText
}
}

View file

@ -1,16 +1,21 @@
<script lang="ts">
import {Component, Vue} from 'nuxt-property-decorator'
import {Component, mixins} from 'nuxt-property-decorator'
import ToolWrapper from '~/components/ToolWrapper.vue'
import type {ToolConfig} from '~/types/ToolConfig'
import {ToolConfigMixin} from '~/mixins/tool-config.mixin'
@Component({components: {ToolWrapper}})
export default class Tool extends Vue {
@Component({
components: {ToolWrapper}
})
export default class Tool extends mixins(ToolConfigMixin) {
config(): ToolConfig {
throw new Error('You need to specify a config() method your custom Tool.')
return {
title: 'ADD A <tool> TAG'
} as unknown as ToolConfig
};
public head() {
const {title, description, keywords} = this.config()
const {title, description, keywords} = this.$toolConfig
const uniqueKeywordsCleaned = [...new Set([...keywords, ...title.split(/\s+/)].map(s => s.trim().toLowerCase()))]