app.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. var apiURL = 'https://api.github.com/repos/yyx990803/vue/commits?per_page=3&sha='
  2. var isPhantom = navigator.userAgent.indexOf('PhantomJS') > -1
  3. /**
  4. * Test mocks
  5. */
  6. var mocks = {
  7. 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'}}}],
  8. 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'}}}],
  9. '1.0.0-alpha': [{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'}}}]
  10. }
  11. function mockData () {
  12. this.commits = mocks[this.currentBranch]
  13. }
  14. /**
  15. * Actual demo
  16. */
  17. var demo = new Vue({
  18. el: '#demo',
  19. data: {
  20. branches: ['master', 'dev', '1.0.0-alpha'],
  21. currentBranch: 'master',
  22. commits: null
  23. },
  24. created: function () {
  25. this.fetchData()
  26. this.$watch('currentBranch', function () {
  27. this.fetchData()
  28. })
  29. },
  30. filters: {
  31. truncate: function (v) {
  32. var newline = v.indexOf('\n')
  33. return newline > 0 ? v.slice(0, newline) : v
  34. },
  35. formatDate: function (v) {
  36. return v.replace(/T|Z/g, ' ')
  37. }
  38. },
  39. methods: {
  40. fetchData: function () {
  41. // CasperJS fails at cross-domain XHR even with
  42. // --web-security=no, have to mock data here.
  43. if (isPhantom) {
  44. return mockData.call(this)
  45. }
  46. var xhr = new XMLHttpRequest()
  47. var self = this
  48. xhr.open('GET', apiURL + self.currentBranch)
  49. xhr.onload = function () {
  50. self.commits = JSON.parse(xhr.responseText)
  51. console.log(self.commits[0].html_url)
  52. }
  53. xhr.send()
  54. }
  55. }
  56. })