Yoshie Muranaka | b1a7191 | 2020-04-29 10:52:39 -0700 | [diff] [blame] | 1 | <template> |
MichalX Szopinski | 25b631b | 2020-09-24 13:32:31 +0200 | [diff] [blame] | 2 | <b-button |
| 3 | class="d-flex align-items-center" |
| 4 | variant="primary" |
Yoshie Muranaka | b1a7191 | 2020-04-29 10:52:39 -0700 | [diff] [blame] | 5 | :download="download" |
| 6 | :href="href" |
| 7 | > |
| 8 | {{ $t('global.action.export') }} |
MichalX Szopinski | 25b631b | 2020-09-24 13:32:31 +0200 | [diff] [blame] | 9 | </b-button> |
Yoshie Muranaka | b1a7191 | 2020-04-29 10:52:39 -0700 | [diff] [blame] | 10 | </template> |
| 11 | |
| 12 | <script> |
Ed Tanous | dbd37e0 | 2024-03-23 14:56:34 -0700 | [diff] [blame] | 13 | import { useI18n } from 'vue-i18n'; |
Yoshie Muranaka | b1a7191 | 2020-04-29 10:52:39 -0700 | [diff] [blame] | 14 | export default { |
| 15 | props: { |
| 16 | data: { |
| 17 | type: Array, |
Derick Montague | 602e98a | 2020-10-21 16:20:00 -0500 | [diff] [blame] | 18 | default: () => [], |
Yoshie Muranaka | b1a7191 | 2020-04-29 10:52:39 -0700 | [diff] [blame] | 19 | }, |
| 20 | fileName: { |
| 21 | type: String, |
Derick Montague | 602e98a | 2020-10-21 16:20:00 -0500 | [diff] [blame] | 22 | default: 'data', |
| 23 | }, |
Yoshie Muranaka | b1a7191 | 2020-04-29 10:52:39 -0700 | [diff] [blame] | 24 | }, |
Ed Tanous | dbd37e0 | 2024-03-23 14:56:34 -0700 | [diff] [blame] | 25 | data() { |
| 26 | return { |
| 27 | $t: useI18n().t, |
| 28 | }; |
| 29 | }, |
Yoshie Muranaka | b1a7191 | 2020-04-29 10:52:39 -0700 | [diff] [blame] | 30 | computed: { |
| 31 | dataForExport() { |
| 32 | return JSON.stringify(this.data); |
| 33 | }, |
| 34 | download() { |
| 35 | return `${this.fileName}.json`; |
| 36 | }, |
| 37 | href() { |
| 38 | return `data:text/json;charset=utf-8,${this.dataForExport}`; |
Derick Montague | 602e98a | 2020-10-21 16:20:00 -0500 | [diff] [blame] | 39 | }, |
| 40 | }, |
Yoshie Muranaka | b1a7191 | 2020-04-29 10:52:39 -0700 | [diff] [blame] | 41 | }; |
| 42 | </script> |