Vue.filter('cleanupURL', function (value) { value = value.replace(/^(?:https?:\/\/)?(?:www\.)?/i, "").split('/')[0]; return value; }) Vue.component('RaspberryDisplay', { //language=Vue template: `

8322 Studenzen NOC Displays

{{ display['display_url'] | cleanupURL }}
|
`, data() { return { loading: false, displaysURLEditMode: null, displays: null, window: window } }, mounted() { this.fetchDisplays().then() }, methods: { async rebootRaspberry(displayID) { this.loading = true; await axios.get(`${window['TT_CONFIG']["BASE_URL"]}/api?do=reboot`, { params: { displayID: displayID } }); this.loading = false; }, async fetchDisplays() { this.loading = true; const response = await axios.get(`${window['TT_CONFIG']["BASE_URL"]}/api?do=getDisplays`); this.displays = response.data.result; this.loading = false; Vue.nextTick(() => { $('[data-toggle="tooltip"]').tooltip('dispose'); $('[data-toggle="tooltip"]').tooltip(); }); }, enableDisplayURLEditMode(displayID) { this.displaysURLEditMode = displayID; const _this = this; // wait for the DOM to update Vue.nextTick(() => { _this.$refs['displayURLEditInput'][0].focus(); }); }, disableDisplayURLEditMode(displayID, displayURL) { this.displaysURLEditMode = null; this.submitChanges(displayID, 'display_url', displayURL); }, async submitChanges(displayID, field, value) { this.loading = true; await axios.get(`${window['TT_CONFIG']["BASE_URL"]}/api?do=change`, { params: { displayID: displayID, field: field, value: value, } }); await this.fetchDisplays(); this.loading = false; } }, })