app.js 1.8 KB

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