osb/spark/resources/assets/js/kiosk/announcements.js
2017-11-03 16:26:07 +11:00

117 lines
2.9 KiB
JavaScript
Vendored

var announcementsCreateForm = function () {
return {
body: '',
action_text: '',
action_url: ''
};
};
module.exports = {
/**
* The component's data.
*/
data() {
return {
announcements: [],
updatingAnnouncement: null,
deletingAnnouncement: null,
createForm: new SparkForm(announcementsCreateForm()),
updateForm: new SparkForm(announcementsCreateForm()),
deleteForm: new SparkForm({})
};
},
/**
* The component has been created by Vue.
*/
created() {
var self = this;
Bus.$on('sparkHashChanged', function (hash, parameters) {
if (hash == 'announcements' && self.announcements.length === 0) {
self.getAnnouncements();
}
});
},
methods: {
/**
* Get all of the announcements.
*/
getAnnouncements() {
axios.get('/spark/kiosk/announcements')
.then(response => {
this.announcements = response.data;
});
},
/**
* Create a new announcement.
*/
create() {
Spark.post('/spark/kiosk/announcements', this.createForm)
.then(() => {
this.createForm = new SparkForm(announcementsCreateForm());
this.getAnnouncements();
});
},
/**
* Edit the given announcement.
*/
editAnnouncement(announcement) {
this.updatingAnnouncement = announcement;
this.updateForm.icon = announcement.icon;
this.updateForm.body = announcement.body;
this.updateForm.action_text = announcement.action_text;
this.updateForm.action_url = announcement.action_url;
$('#modal-update-announcement').modal('show');
},
/**
* Update the specified announcement.
*/
update() {
Spark.put('/spark/kiosk/announcements/' + this.updatingAnnouncement.id, this.updateForm)
.then(() => {
this.getAnnouncements();
$('#modal-update-announcement').modal('hide');
});
},
/**
* Show the approval dialog for deleting an announcement.
*/
approveAnnouncementDelete(announcement) {
this.deletingAnnouncement = announcement;
$('#modal-delete-announcement').modal('show');
},
/**
* Delete the specified announcement.
*/
deleteAnnouncement() {
Spark.delete('/spark/kiosk/announcements/' + this.deletingAnnouncement.id, this.deleteForm)
.then(() => {
this.getAnnouncements();
$('#modal-delete-announcement').modal('hide');
});
}
}
};