Version > Only send differences line index

This commit is contained in:
brunosimon
2017-09-03 00:33:57 +02:00
parent 8e68b6ece7
commit e1562cccad
3 changed files with 81 additions and 88 deletions
+6 -79
View File
@@ -24,87 +24,14 @@ export default
return this.$store.state.files.currentVersion
},
lines()
linesCount()
{
const lines = []
const lineBreaks = (this.version.content.match(/\n/g) || []).length + 1
const currentLine = this.$store.state.files.currentLine
return (this.version.content.match(/\n/g) || []).length + 1
},
// Create all lines
for(let i = 0; i < lineBreaks; i++)
{
const line = {}
line.index = lines.length + 1
line.added = false
line.removed = false
line.active = currentLine !== null && i === currentLine - 1
lines.push(line)
}
// Loop through each diff and add line infos
if(this.version.diff)
{
let lineProgress = 0
// Added lines and unchanged lines
for(const diffKey in this.version.diff)
{
const diff = this.version.diff[diffKey]
let lineBreaks = (diff.value.match(/\n/g) || []).length
if(parseInt(diffKey) === this.version.diff.length - 1)
{
lineBreaks += 1
}
if(diff.added)
{
for(let i = 0; i < lineBreaks; i++)
{
const line = lines[lineProgress + i]
line.added = true
}
}
if(!diff.removed)
{
lineProgress += lineBreaks
}
}
lineProgress = 0
// Removed lines
for(const diffKey in this.version.diff)
{
const diff = this.version.diff[diffKey]
let lineBreaks = (diff.value.match(/\n/g) || []).length
if(parseInt(diffKey) === this.version.diff.length - 1)
{
lineBreaks += 1
}
if(diff.removed)
{
const line = lines[lineProgress]
const nextLine = lines[lineProgress + 1]
if(!line.added && (!nextLine || nextLine.added === false))
{
line.removed = true
}
}
if(!diff.removed)
{
lineProgress += lineBreaks
}
}
}
return lines
currentLine()
{
return this.$store.state.files.currentLine
}
},
+5 -5
View File
@@ -1,12 +1,12 @@
<div class="viewer" v-if="version">
<pre class="code" v-highlightjs="version.content" contenteditable @keydown="onCodeKeyDown($event)"><code :class="[ extension ]"></code></pre>
<div class="lines">
<div class="line" v-for="line in lines" @click.prevent="onLineClick(line.index)">
<span class="added" v-if="line.added && differencesActive">+</span>
<span class="removed" v-if="line.removed && differencesActive">-</span>
<span class="index">{{ line.index }}.</span>
<div class="line" v-for="line in linesCount" @click.prevent="onLineClick(line)">
<span class="added" v-if="version.addedLines.indexOf(line - 1) !== -1 && differencesActive">+</span>
<span class="removed" v-if="version.removedLines.indexOf(line - 1) !== -1 && differencesActive">-</span>
<span class="index">{{ line }}.</span>
<span class="question">?</span>
<span class="active" v-if="line.active">!</span>
<span class="active" v-if="line === currentLine">!</span>
</div>
</div>
</div>