2020-11-03 22:48:40 +00:00
|
|
|
<template lang="html">
|
2021-01-08 06:47:06 +00:00
|
|
|
<b-dropdown-item v-b-modal.notes>
|
2021-01-25 22:19:26 +00:00
|
|
|
<i class="far fa-sticky-note fa-fw" /> {{ localNote ? 'Edit note' : 'Add note' }}
|
2020-11-03 22:48:40 +00:00
|
|
|
|
|
|
|
<b-modal
|
|
|
|
id="notes"
|
2021-01-25 23:59:36 +00:00
|
|
|
:header-bg-variant="nightMode ? 'dark' : null"
|
|
|
|
:header-text-variant="nightMode ? 'white' : null"
|
2020-11-03 22:48:40 +00:00
|
|
|
:body-bg-variant="nightMode ? 'dark' : null"
|
|
|
|
:body-text-variant="nightMode ? 'white' : null"
|
2021-01-27 23:49:10 +00:00
|
|
|
hide-footer
|
2020-11-03 22:48:40 +00:00
|
|
|
@show="show"
|
|
|
|
>
|
|
|
|
<template v-slot:modal-header="{ close }">
|
|
|
|
<modal-header
|
|
|
|
title="Game notes"
|
2021-01-25 22:19:26 +00:00
|
|
|
:subtitle="game.name"
|
2020-11-03 22:48:40 +00:00
|
|
|
@close="close"
|
2021-01-27 23:49:10 +00:00
|
|
|
>
|
|
|
|
<b-button
|
|
|
|
variant="danger"
|
|
|
|
v-if="notes[game.id]"
|
|
|
|
:disabled="deleting"
|
|
|
|
@click="deleteNote"
|
|
|
|
>
|
|
|
|
<b-spinner small v-if="deleting" />
|
|
|
|
<span v-else>{{ $t('global.delete') }}</span>
|
|
|
|
</b-button>
|
|
|
|
|
|
|
|
<b-button
|
|
|
|
variant="primary"
|
|
|
|
:disabled="saving"
|
|
|
|
@click="saveNote"
|
|
|
|
>
|
|
|
|
<b-spinner small v-if="saving" />
|
|
|
|
<span v-else>{{ $t('global.save') }}</span>
|
|
|
|
</b-button>
|
|
|
|
</modal-header>
|
2020-11-03 22:48:40 +00:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<b-form-textarea
|
|
|
|
v-model.trim="localNote"
|
|
|
|
placeholder="Type note here"
|
|
|
|
rows="3"
|
|
|
|
max-rows="20"
|
|
|
|
/>
|
|
|
|
|
|
|
|
<b-form-text id="input-live-help">
|
|
|
|
<a href="https://www.markdownguide.org/cheat-sheet/" target="_blank">
|
2021-01-25 22:19:26 +00:00
|
|
|
<i class="fab fa-markdown"></i>
|
2020-11-03 22:48:40 +00:00
|
|
|
Markdown supported
|
|
|
|
</a>
|
|
|
|
</b-form-text>
|
|
|
|
</b-modal>
|
2021-01-08 06:47:06 +00:00
|
|
|
</b-dropdown-item>
|
2020-11-03 22:48:40 +00:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import { mapState, mapGetters } from 'vuex';
|
|
|
|
|
|
|
|
export default {
|
|
|
|
props: {
|
|
|
|
game: Object,
|
|
|
|
},
|
|
|
|
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
localNote: '',
|
|
|
|
deleting: false,
|
|
|
|
saving: false,
|
|
|
|
};
|
|
|
|
},
|
|
|
|
|
|
|
|
computed: {
|
|
|
|
...mapState(['notes']),
|
|
|
|
...mapGetters(['nightMode']),
|
|
|
|
},
|
|
|
|
|
|
|
|
methods: {
|
|
|
|
show() {
|
|
|
|
this.deleting = false;
|
|
|
|
this.saving = false;
|
|
|
|
|
|
|
|
const { id } = this.game;
|
|
|
|
|
2021-01-10 18:01:49 +00:00
|
|
|
if (this.notes[id]) {
|
|
|
|
this.localNote = typeof this.notes[id] === 'object' && this.notes[id].text
|
|
|
|
? this.notes[id].text
|
|
|
|
: JSON.parse(JSON.stringify(this.notes[id]));
|
|
|
|
}
|
2020-11-03 22:48:40 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
async saveNote() {
|
|
|
|
this.saving = true;
|
|
|
|
|
|
|
|
this.$store.commit('SET_GAME_NOTE', {
|
|
|
|
note: this.localNote,
|
|
|
|
gameId: this.game.id,
|
|
|
|
});
|
|
|
|
|
|
|
|
await this.$store.dispatch('SAVE_NOTES')
|
|
|
|
.catch(() => {
|
|
|
|
this.saving = false;
|
2020-12-10 05:26:57 +00:00
|
|
|
this.$bvToast.toast('There was an error saving your note', { variant: 'danger' });
|
2020-11-03 22:48:40 +00:00
|
|
|
});
|
|
|
|
|
2020-12-10 05:26:57 +00:00
|
|
|
this.$bvToast.toast('Note saved');
|
2020-11-03 22:48:40 +00:00
|
|
|
|
|
|
|
this.$bvModal.hide('notes');
|
|
|
|
},
|
|
|
|
|
|
|
|
async deleteNote() {
|
|
|
|
this.deleting = true;
|
2021-01-25 21:14:07 +00:00
|
|
|
this.localNote = '';
|
2020-11-03 22:48:40 +00:00
|
|
|
|
|
|
|
this.$store.commit('REMOVE_GAME_NOTE', this.game.id);
|
|
|
|
|
|
|
|
await this.$store.dispatch('SAVE_NOTES_NO_MERGE')
|
|
|
|
.catch(() => {
|
|
|
|
this.deleting = false;
|
2020-12-10 05:26:57 +00:00
|
|
|
this.$bvToast.toast('There was an error deleting your note', { variant: 'danger' });
|
2020-11-03 22:48:40 +00:00
|
|
|
});
|
|
|
|
|
2020-12-10 05:26:57 +00:00
|
|
|
this.$bvToast.toast('Note deleted');
|
2020-11-03 22:48:40 +00:00
|
|
|
this.$bvModal.hide('notes');
|
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
|
|
|
</script>
|