|
|
<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> 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(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>
|