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