123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- <template lang="pug">
- .container.is-fluid
- .columns.is-gapless
- .column.is-narrow.is-hidden-touch.sidebar
- aside.stickyscroll
- .sidebar-label
- span {{ $t('history.pastversions') }}
- ul.sidebar-menu
- li(v-for='item in versions')
- a.is-multiline(:title='item.dateFull', @click='changeCommit(item)', :class='{ "is-active": item.commit === current.commit }')
- span {{ item.dateCalendar }}
- span.is-small {{ item.commitAbbr }}
- .column
- .history
- .history-title {{ currentPath }}
- .history-info
- .columns
- .column.history-info-meta
- p
- i.nc-icon-outline.ui-1_calendar-check-62
- span {{ $t('history.timestamp') }}: #[strong {{ current.dateFull }}]
- p
- i.nc-icon-outline.i.nc-icon-outline.users_man-23
- span {{ $t('history.author') }}: #[strong {{ current.name }} <{{ current.email }}>]
- p
- i.nc-icon-outline.media-1_flash-21
- span {{ $t('history.commit') }}: #[strong {{ current.commit }}]
- .column.history-info-actions
- .button-group
- button.button.is-blue-grey(@click='compareWith')
- i.nc-icon-outline.design_path-intersect
- span {{ $t('history.comparewith') }}
- button.button.is-blue-grey(@click='view')
- i.nc-icon-outline.ui-1_eye-17
- span {{ $t('history.view') }}
- button.button.is-blue-grey(@click='revertToVersion')
- i.nc-icon-outline.arrows-4_undo-29
- span {{ $t('history.reverttoversion') }}
- toggle.is-dark(v-model='sidebyside', :desc='$t("history.sidebyside")')
- .history-diff#diff
- </template>
- <script>
- /* global wiki, Diff2HtmlUI */
- let diffui
- let diffuiIsReady = false
- export default {
- name: 'history',
- props: ['currentPath', 'historyData'],
- data() {
- return {
- versions: [],
- current: {},
- diffui: {},
- sidebyside: true
- }
- },
- watch: {
- sidebyside() {
- this.draw()
- }
- },
- methods: {
- compareWith() {
- this.$store.dispatch('alert', {
- style: 'purple',
- icon: 'objects_astronaut',
- msg: 'Sorry, this function is not available. Coming soon!'
- })
- },
- view() {
- this.$store.dispatch('alert', {
- style: 'purple',
- icon: 'objects_astronaut',
- msg: 'Sorry, this function is not available. Coming soon!'
- })
- },
- revertToVersion() {
- this.$store.dispatch('alert', {
- style: 'purple',
- icon: 'objects_astronaut',
- msg: 'Sorry, this function is not available. Coming soon!'
- })
- },
- draw() {
- if (diffuiIsReady) {
- diffui.draw('#diff', {
- inputFormat: 'diff',
- outputFormat: this.sidebyside ? 'side-by-side' : 'line-by-line',
- matching: 'words',
- synchronisedScroll: true
- })
- }
- },
- changeCommit(cm) {
- let self = this
- diffuiIsReady = false
- self.current = cm
- self.$http.post(wiki.siteRoot + '/hist', {
- path: self.currentPath,
- commit: cm.commit
- }).then(resp => {
- return resp.json()
- }).then(resp => {
- diffui = new Diff2HtmlUI({ diff: resp.diff })
- diffuiIsReady = true
- self.draw()
- }).catch(err => {
- console.log(err)
- self.$store.dispatch('alert', {
- style: 'red',
- icon: 'ui-2_square-remove-09',
- msg: 'Error: ' + err.body.error
- })
- })
- }
- },
- mounted() {
- this.versions = JSON.parse(this.historyData)
- this.changeCommit(this.versions[0])
- }
- }
- </script>
|