Add export feature to the Edit mode - Complete #100

This commit is contained in:
Bubka
2022-12-13 15:57:33 +01:00
parent 2d706e61b7
commit 88195a6afb
9 changed files with 153 additions and 13 deletions

View File

@ -1,4 +1,4 @@
import Vue from 'vue'
import Vue from 'vue'
import { library } from '@fortawesome/fontawesome-svg-core'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
@ -37,7 +37,8 @@ import {
faEye,
faEyeSlash,
faExternalLinkAlt,
faCamera
faCamera,
faFileDownload
} from '@fortawesome/free-solid-svg-icons'
import {
@ -79,7 +80,8 @@ library.add(
faEye,
faEyeSlash,
faExternalLinkAlt,
faCamera
faCamera,
faFileDownload
);
Vue.component('font-awesome-icon', FontAwesomeIcon)

View File

@ -99,20 +99,23 @@
<div v-if="selectedAccounts.length > 0" class="control">
<div tabindex="0" role="button" class="tag-button tag-button-link tags are-medium has-addons is-clickable" @click="showGroupSelector = true" @keyup.enter="showGroupSelector = true">
<span class="tag is-dark mb-0">
{{ $t('groups.change_group') }}
</span>
<span class="tag is-link mb-0">
{{ $t('groups.change_group') }}&nbsp;&nbsp;
<font-awesome-icon :icon="['fas', 'layer-group']" />
</span>
</div>
</div>
<!-- export selected button -->
<div v-if="selectedAccounts.length > 0" class="control">
<div tabindex="0" role="button" class="tag-button tags are-medium has-addons is-clickable" @click="exportAccounts" @keyup.enter="exportAccounts">
<span class="tag is-dark mb-0">
<font-awesome-icon :icon="['fas', 'file-download']" />
</span>
</div>
</div>
<!-- delete selected button -->
<div v-if="selectedAccounts.length > 0" class="control">
<div tabindex="0" role="button" class="tag-button tag-button-danger tags are-medium has-addons is-clickable" @click="destroyAccounts" @keyup.enter="destroyAccounts">
<span class="tag is-dark mb-0">
{{ $t('commons.delete') }}
</span>
<span class="tag is-danger mb-0">
<font-awesome-icon :icon="['fas', 'trash']" />
</span>
</div>
@ -272,6 +275,7 @@
import draggable from 'vuedraggable'
import Form from './../components/Form'
import objectEquals from 'object-equals'
import { saveAs } from 'file-saver';
export default {
data(){
@ -485,6 +489,20 @@
}
},
/**
* Export selected accounts
*/
exportAccounts() {
let ids = []
this.selectedAccounts.forEach(id => ids.push(id))
this.axios.get('/api/v1/twofaccounts/export?ids=' + ids.join(), {responseType: 'blob'})
.then((response) => {
var blob = new Blob([response.data], {type: "application/json;charset=utf-8"});
saveAs.saveAs(blob, "2fauth_export.json");
})
},
/**
* Move accounts selected from the Edit mode to another group or withdraw them
*/