vue2/examples/commits/app.js

65 lines
2.1 KiB
JavaScript
Raw Normal View History

2014-09-24 09:36:49 +08:00
var apiURL = 'https://api.github.com/repos/yyx990803/vue/commits?per_page=3&sha='
2014-10-21 13:38:19 +08:00
var isPhantom = navigator.userAgent.indexOf('PhantomJS') > -1
2014-10-15 23:50:01 +08:00
/**
* Test mocks
*/
var mocks = {
master: [{sha:'111111111111', commit: {message:'one', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}},{sha:'111111111111', commit: {message:'hi', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}},{sha:'111111111111', commit: {message:'hi', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}}],
dev: [{sha:'222222222222', commit: {message:'two', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}},{sha:'111111111111', commit: {message:'hi', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}},{sha:'111111111111', commit: {message:'hi', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}}],
next: [{sha:'333333333333', commit: {message:'three', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}},{sha:'111111111111', commit: {message:'hi', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}},{sha:'111111111111', commit: {message:'hi', author:{name:'Evan',date:'2014-10-15T13:52:58Z'}}}]
}
function mockData () {
this.commits = mocks[this.currentBranch]
}
/**
* Actual demo
*/
2014-09-24 09:36:49 +08:00
var demo = new Vue({
el: '#demo',
data: {
branches: ['master', 'dev', 'next'],
currentBranch: 'master',
commits: null
},
created: function () {
this.fetchData()
this.$watch('currentBranch', function () {
this.fetchData()
})
},
filters: {
truncate: function (v) {
var newline = v.indexOf('\n')
return newline > 0 ? v.slice(0, newline) : v
},
formatDate: function (v) {
return v.replace(/T|Z/g, ' ')
}
},
methods: {
fetchData: function () {
2014-10-15 23:50:01 +08:00
// CasperJS fails at cross-domain XHR even with
// --web-security=no, have to mock data here.
if (isPhantom) {
return mockData.call(this)
}
2014-09-24 09:36:49 +08:00
var xhr = new XMLHttpRequest()
var self = this
xhr.open('GET', apiURL + self.currentBranch)
xhr.onload = function () {
self.commits = JSON.parse(xhr.responseText)
}
xhr.send()
}
}
})