Skip to content

Commit 5d028b6

Browse files
authored
Export fixes (#169)
1 parent b64823b commit 5d028b6

File tree

3 files changed

+55
-14
lines changed

3 files changed

+55
-14
lines changed

src/components/TaskList.vue

+19-5
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@
4848
</td>
4949

5050
<td v-if="displayColumn('frequency')">
51-
{{ moment.duration(item.frequency).humanize().replace("an ", "1 ").replace("a ", "1 ") }}
51+
{{ moment.duration(item.frequency).humanize() }}
5252
</td>
5353
<td v-if="displayColumn('last_run')">
54-
{{ item.last_run }}
54+
{{ moment(item.last_run).format("YYYY-MM-DD HH:mm:ss") }}
5555
</td>
5656
<td v-if="displayColumn('description')">{{ item.description }}</td>
5757

@@ -73,6 +73,16 @@
7373
<td v-if="displayColumn('refresh')">
7474
<v-btn @click="refresh(item)" icon="mdi-refresh" size="x-small" variant="tonal" :disabled="!item.enabled">
7575
</v-btn>
76+
<v-btn
77+
v-if="downloadableTasks"
78+
class="ml-2"
79+
@click="$emit('taskDownload', item)"
80+
icon="mdi-download"
81+
size="x-small"
82+
variant="tonal"
83+
:disabled="!item.enabled"
84+
>
85+
</v-btn>
7686
</td>
7787
</tr>
7888
</template>
@@ -117,6 +127,10 @@ export default {
117127
selectableTasks: {
118128
type: Boolean,
119129
default: false
130+
},
131+
downloadableTasks: {
132+
type: Boolean,
133+
default: false
120134
}
121135
},
122136
data() {
@@ -128,11 +142,11 @@ export default {
128142
{ key: "name", title: "Name", sortable: true },
129143
{ key: "acts_on", title: "Acts On" },
130144
{ key: "frequency", title: "Runs every", sortable: true },
131-
{ key: "last_run", title: "Last Run", width: "180px", sortable: true },
145+
{ key: "last_run", title: "Last run", width: "180px", sortable: true },
132146
{ key: "description", title: "Description" },
133147
{ key: "status", title: "Status", width: "120px", sortable: true },
134148
{ key: "toggle", title: "Toggle", width: "80px" },
135-
{ key: "refresh", title: "", width: "80px" }
149+
{ key: "refresh", title: "", width: "110px" }
136150
],
137151
sortBy: [{ key: "name", order: "asc" }],
138152
selectedTask: null,
@@ -147,7 +161,7 @@ export default {
147161
this.timer = setInterval(this.listTasks, 5000);
148162
this.$eventBus.on("taskUpdated", this.listTasks);
149163
},
150-
beforeDestroy() {
164+
unmounted() {
151165
clearInterval(this.timer);
152166
},
153167
methods: {

src/views/ExportList.vue

+35-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
<template>
2-
<task-list selectable-tasks task-type="export" ref="exportList" @taskSelected="task => (this.selectedExport = task)">
2+
<task-list
3+
selectable-tasks
4+
downloadable-tasks
5+
task-type="export"
6+
ref="exportList"
7+
@taskSelected="task => selectExport(task)"
8+
@taskDownload="task => downloadExport(task)"
9+
>
310
</task-list>
411

512
<v-navigation-drawer permament location="right" width="400" ref="drawer">
@@ -57,6 +64,17 @@
5764
required
5865
ref="exportTemplate"
5966
></v-autocomplete>
67+
<div class="d-flex">
68+
<v-text-field
69+
class="w-50"
70+
density="compact"
71+
label="Run every"
72+
v-model="selectedExport.human_frequency"
73+
></v-text-field>
74+
<!-- select hours, days, minutes, etc -->
75+
<v-select density="compact" v-model="frequencyUnit" :items="['hours', 'days', 'minutes', 'seconds']"></v-select>
76+
</div>
77+
6078
<v-btn-group rounded="1" density="compact">
6179
<v-btn color="primary" density="compact" v-if="selectedExport.id" @click="updateExport">Save changes</v-btn>
6280
<v-btn color="error" density="compact" v-if="selectedExport.id" @click="confirmDeleteExport">Delete</v-btn>
@@ -81,6 +99,7 @@
8199
import { OBSERVABLE_TYPES } from "@/definitions/observableDefinitions.js";
82100
import axios from "axios";
83101
import TaskList from "@/components/TaskList.vue";
102+
import moment from "moment";
84103
</script>
85104

86105
<script lang="ts">
@@ -97,16 +116,17 @@ export default {
97116
exports: [],
98117
exportTemplates: [],
99118
selectedExport: {},
100-
timerListTemplates: null
119+
timerListTemplates: null,
120+
frequencyUnit: "hours"
101121
};
102122
},
103123
mounted() {
104124
this.listTemplates();
105125
},
106126
created() {
107-
this.timerListTemplates = setInterval(this.listTemplates, 2000);
127+
this.timerListTemplates = setInterval(this.listTemplates, 5000);
108128
},
109-
beforeDestroy() {
129+
unmounted() {
110130
clearInterval(this.timerListTemplates);
111131
},
112132
methods: {
@@ -119,6 +139,11 @@ export default {
119139
})
120140
.finally(() => {});
121141
},
142+
selectExport(task) {
143+
this.selectedExport = task;
144+
this.selectedExport.human_frequency = moment.duration(task.frequency).asHours();
145+
this.frequencyUnit = "hours";
146+
},
122147
updateExport() {
123148
let exportTask = {
124149
id: this.selectedExport.id,
@@ -128,7 +153,8 @@ export default {
128153
ignore_tags: this.selectedExport.ignore_tags,
129154
exclude_tags: this.selectedExport.exclude_tags,
130155
acts_on: this.selectedExport.acts_on,
131-
template_name: this.selectedExport.template_name
156+
template_name: this.selectedExport.template_name,
157+
frequency: moment.duration(this.selectedExport.human_frequency, this.frequencyUnit)
132158
};
133159
134160
axios
@@ -152,7 +178,8 @@ export default {
152178
template_name: this.selectedExport.template_name,
153179
exclude_tags: this.selectedExport.exclude_tags,
154180
ignore_tags: this.selectedExport.ignore_tags,
155-
include_tags: this.selectedExport.include_tags
181+
include_tags: this.selectedExport.include_tags,
182+
frequency: moment.duration(this.selectedExport.human_frequency, this.frequencyUnit)
156183
};
157184
axios
158185
.post(`/api/v2/tasks/export/new`, { export: exportTask })
@@ -192,9 +219,9 @@ export default {
192219
.then(response => {
193220
var fileURL = window.URL.createObjectURL(new Blob([response.data]));
194221
var fileLink = document.createElement("a");
195-
var fileName = response.headers["content-disposition"].split("filename=")[1];
222+
let fileName = `${singleExport.name}_${singleExport.last_run}.txt`;
196223
fileLink.href = fileURL;
197-
fileLink.setAttribute("download", fileName);
224+
fileLink.download = fileName;
198225
document.body.appendChild(fileLink);
199226
fileLink.click();
200227
})

src/views/ExportTemplates.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export default {
6969
templates: [],
7070
defaultTemplate: {
7171
name: "",
72-
template: ""
72+
template: `value,tags\n{% for obj in data %}{{obj.value}},{{";".join(obj.tags.keys())}}\n{% endfor %}`
7373
},
7474
selectedTemplate: null,
7575
headers: [

0 commit comments

Comments
 (0)