forked from rc/aircox
84 lines
2.2 KiB
JavaScript
84 lines
2.2 KiB
JavaScript
/**
|
|
* This module includes code available for both the public website and
|
|
* administration interface)
|
|
*/
|
|
//-- vendor
|
|
import Vue from 'vue';
|
|
|
|
import '@fortawesome/fontawesome-free/css/all.min.css';
|
|
import '@fortawesome/fontawesome-free/css/fontawesome.min.css';
|
|
|
|
|
|
//-- aircox
|
|
import App from './app';
|
|
import Sound from './sound';
|
|
import {Set} from './model';
|
|
|
|
import './styles.scss';
|
|
|
|
import Autocomplete from './autocomplete';
|
|
import Episode from './episode';
|
|
import Player from './player';
|
|
import Playlist from './playlist';
|
|
import SoundItem from './soundItem';
|
|
|
|
Vue.component('a-autocomplete', Autocomplete)
|
|
Vue.component('a-episode', Episode)
|
|
Vue.component('a-player', Player)
|
|
Vue.component('a-playlist', Playlist)
|
|
Vue.component('a-sound-item', SoundItem)
|
|
|
|
|
|
window.aircox = {
|
|
// main application
|
|
app: null,
|
|
|
|
// main application config
|
|
appConfig: {},
|
|
|
|
// player application
|
|
playerApp: null,
|
|
|
|
// player component
|
|
get player() {
|
|
return this.playerApp && this.playerApp.$refs.player
|
|
},
|
|
|
|
loadPage(url) {
|
|
fetch(url).then(response => response.text())
|
|
.then(response => {
|
|
let doc = new DOMParser().parseFromString(response, 'text/html');
|
|
|
|
aircox.app && aircox.app.$destroy();
|
|
document.getElementById('app').innerHTML = doc.getElementById('app').innerHTML;
|
|
App(() => window.aircox.appConfig, true).then(app => {
|
|
aircox.app = app;
|
|
document.title = doc.title;
|
|
})
|
|
});
|
|
},
|
|
|
|
Set: Set, Sound: Sound,
|
|
};
|
|
window.Vue = Vue;
|
|
|
|
|
|
App({el: '#player'}).then(app => window.aircox.playerApp = app);
|
|
App(() => window.aircox.appConfig).then(app => {
|
|
window.aircox.app = app;
|
|
window.addEventListener('click', event => {
|
|
let target = event.target.tagName == 'A' ? event.target : event.target.closest('a');
|
|
if(!target || !target.hasAttribute('href'))
|
|
return;
|
|
|
|
let href = target.getAttribute('href');
|
|
if(href && href !='#') {
|
|
window.aircox.loadPage(href);
|
|
event.preventDefault();
|
|
event.stopPropagation();
|
|
}
|
|
}, true);
|
|
})
|
|
|
|
|