diffido/dist/index.html

108 lines
4.5 KiB
HTML
Raw Normal View History

2018-01-16 22:24:30 +01:00
{% extends "base.html" %}
{% block body %}
2018-01-17 22:54:06 +01:00
<div id="app">
<div class="md-layout">
2018-01-23 18:22:08 +01:00
<div class="md-layout-item">
<md-card id="main-card">
<md-card-header>
<div class="md-title">
2018-01-23 22:41:32 +01:00
<md-button href="/" class="md-icon-button md-primary">
<md-icon>home</md-icon>
</md-button>
2018-01-23 18:45:41 +01:00
Diffido
2018-01-23 18:22:08 +01:00
<md-button href="/schedule.html" class="md-icon-button md-primary">
<md-icon>add_circle_outline</md-icon>
</md-button>
</div>
</md-card-header>
<md-card-content>
<md-table id="schedules-table" v-model="schedules">
<md-table-row slot="md-table-row" slot-scope="{item}">
<md-table-cell md-label="#" md-sort-by="id" md-numeric><a :href="'/schedule.html?id=' + item.id">${ item.id }</a></md-table-cell>
2018-01-26 11:10:02 +01:00
<md-table-cell md-label="enabled" md-sort-by="enabled">
<md-icon v-if="item.enabled">check_box</md-icon>
<md-icon v-if="!item.enabled">check_box_outline_blank</md-icon>
</md-table-cell>
2018-01-23 18:22:08 +01:00
<md-table-cell md-label="title" md-sort-by="title"><a :href="'/schedule.html?id=' + item.id">${ item.title }</a></md-table-cell>
2018-01-26 11:10:02 +01:00
<md-table-cell md-label="url" md-sort-by="url"><a :href="item.url" target="_new">${ item.url }</a></md-table-cell>
2018-01-24 18:45:13 +01:00
<md-table-cell md-label="trigger" md-sort-by="trigger">${ triggerString(item) }</md-table-cell>
2018-01-26 11:10:02 +01:00
<md-table-cell md-label="last check" md-sort-by="last_history">${ item.last_history && item.last_history.message }</md-table-cell>
<md-table-cell md-label="history">
2018-01-23 22:41:32 +01:00
<md-button :href="'/history.html?id=' + item.id" class="md-icon-button md-primary">
<md-icon>history</md-icon>
</md-button>
</md-table-cell>
2018-01-26 11:10:02 +01:00
<md-table-cell md-label="run now">
<md-button class="md-icon-button md-primary" @click="runSchedule(item.id)">
<md-icon>play_circle_outline</md-icon>
</md-button>
</md-table-cell>
2018-01-23 18:22:08 +01:00
</md-table-row>
</md-table>
</md-card-content>
</md-card>
2018-01-17 22:54:06 +01:00
</div>
</div>
</div>
<script>
Vue.use(VueMaterial.default);
var app = new Vue({
2018-01-18 22:46:48 +01:00
el: '#app',
delimiters: ['${', '}'],
data: {
schedules: []
},
mounted: function() {
this.getSchedules();
},
methods: {
getSchedules: function() {
2018-01-26 11:10:02 +01:00
var self = this;
2018-01-18 22:46:48 +01:00
var data = axios.get('/api/schedules').then(function(response) {
2018-01-20 14:56:34 +01:00
var schedules = [];
_.forEach(response.data.schedules || {}, function(value, key) {
value.id = key;
schedules.push(value);
});
self.schedules = schedules;
2018-01-18 22:46:48 +01:00
});
2018-01-24 18:45:13 +01:00
},
triggerString: function(item) {
if (item.trigger == 'cron') {
return 'cron: ' + item.cron_crontab;
}
if (item.trigger == 'interval') {
2018-01-26 11:10:02 +01:00
var text = 'interval: ';
var pieces = [];
2018-01-24 18:45:13 +01:00
_.each(['weeks', 'days', 'hours', 'minutes', 'seconds'], function(value, key) {
2018-01-26 11:10:02 +01:00
var int_val = item['interval_' + value];
if (int_val && parseInt(int_val)) {
var unit = value;
if (int_val == 1) {
unit = unit.slice(0, -1);
2018-01-24 18:45:13 +01:00
}
2018-01-26 11:10:02 +01:00
pieces.push('' + int_val + ' ' + unit);
2018-01-24 18:45:13 +01:00
}
});
2018-01-26 11:10:02 +01:00
text = text + _.join(pieces, ', ');
return text;
2018-01-24 18:45:13 +01:00
}
return '';
2018-01-26 11:10:02 +01:00
},
runSchedule: function(id) {
var self = this;
var data = axios.post('/api/schedules/' + id + '/run').then(function(response) {
setTimeout(self.getSchedules, 2500);
});
2018-01-18 22:46:48 +01:00
}
}
2018-01-17 22:54:06 +01:00
});
</script>
2018-01-16 22:24:30 +01:00
{% end %}