diff.html 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. {% extends "base.html" %}
  2. {% block head %}
  3. <link rel="stylesheet" href="/static/css/diff2html.min.css">
  4. <script src="/static/js/diff2html.min.js"></script>
  5. {% end %}
  6. {% block body %}
  7. <div id="app">
  8. <div class="md-layout">
  9. <div class="md-layout-item">
  10. <md-card id="main-card">
  11. <md-card-header>
  12. <div class="md-title">
  13. <md-button href="/" class="md-icon-button md-primary">
  14. <md-icon>home</md-icon>
  15. </md-button>
  16. Diffido: ${schedule && schedule.title} diff
  17. </div>
  18. </md-card-header>
  19. <md-card-content id="diffpanel-container">
  20. <div id="diffpanel"></div>
  21. </md-card-content>
  22. </md-card>
  23. </div>
  24. </div>
  25. </div>
  26. <script>
  27. Vue.use(VueMaterial.default);
  28. var app = new Vue({
  29. el: '#app',
  30. delimiters: ['${', '}'],
  31. data: {
  32. schedule: {},
  33. history: [],
  34. difftext: '',
  35. id: "{{id}}",
  36. {% try %}
  37. {% if diff %}
  38. diff: "{{diff}}",
  39. {% end %}
  40. {% except %}
  41. diff: null,
  42. {% end %}
  43. {% try %}
  44. {% if oldid %}
  45. oldid: "{{oldid}}",
  46. {% end %}
  47. {% except %}
  48. oldid: null,
  49. {% end %}
  50. },
  51. mounted: function() {
  52. this.getDiff();
  53. },
  54. methods: {
  55. getDiff: function() {
  56. self = this;
  57. var data = axios.get('/api/schedules/' + this.id + '/diff/' + this.diff + '/' + (this.oldid || '')).then(function(response) {
  58. self.schedule = response.data.schedule;
  59. self.difftext = response.data.diff;
  60. var current_size = document.getElementById('diffpanel').offsetWidth;
  61. var pretty_diff = Diff2Html.getPrettyHtml(self.difftext, {showFiles: true, matching: 'none'});
  62. document.getElementById('diffpanel').innerHTML = pretty_diff;
  63. document.getElementById('diffpanel').style['max-width'] = (current_size - 20) + 'px';
  64. });
  65. }
  66. }
  67. });
  68. </script>
  69. {% end %}