const episodepublishform = { template: '

Publish Episode

' } const episodemanagement = { template: '
TitleURLActions
{{ item.title }}{{ item.url }}Edit
', data() { return { loading: false, items: null, error: null } }, created() { // fetch the data when the view is created and the data is // already being observed this.fetchData() }, watch: { // call again the method if the route changes '$route': 'fetchData' }, methods: { fetchData() { this.error = this.items = [] this.loading = true getEpisodes((err, items) => { this.loading = false if (err) { this.error = err.toString() } else { console.log(items); var t = JSON.parse(items).items for (var i = t.length - 1; i >= 0; i--) { this.items.push({ title: t[i].title, url: t[i].url, id: t[i].id }) } } }) } } } const episodeedit = { template: '

Edit Episode

', data() { return { loading: false, episode: null, error: null } }, created() { // fetch the data when the view is created and the data is // already being observed this.fetchData() }, watch: { // call again the method if the route changes '$route': 'fetchData' }, methods: { fetchData() { this.error = this.items = [] this.loading = true getEpisodes((err, items) => { this.loading = false if (err) { this.error = err.toString() } else { var t = JSON.parse(items).items for (var i = t.length - 1; i >= 0; i--) { if (t[i].id == route.params.id) this.items.push({ title: t[i].title, url: t[i].url }) } } console.log(this.items) }) } } } const customcss = { template: '

Edit CSS


', data() { return { loading: false, css: null, error: null } }, created() { // fetch the data when the view is created and the data is // already being observed this.fetchData() }, watch: { // call again the method if the route changes '$route': 'fetchData' }, methods: { fetchData() { this.error = this.css = null this.loading = true getCss((err, css) => { this.loading = false if (err) { this.error = err.toString() } else { this.css = css } }) } } } const routes = [ { path: '/publish', component: episodepublishform }, { path: '/manage', component: episodemanagement }, { path: '/theme', component: customcss }, { path: '/edit/:id', component: episodeedit} ] const router = new VueRouter({ routes }) const app = new Vue({ router, data: { header: 'Pogo Admin', } }).$mount('#app') function getCss(callback) { var xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) callback(null, xmlHttp.responseText) } xmlHttp.open("GET", "/admin/css", true); xmlHttp.send(null); } function getEpisodes(callback) { var xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) callback(null, xmlHttp.responseText) } xmlHttp.open("GET", "/json", true); xmlHttp.send(null); }