Site > Viewer > Add line modifications

This commit is contained in:
brunosimon
2017-08-30 22:02:48 +02:00
parent fccffc2a2b
commit 5d745928ee
7 changed files with 154 additions and 24 deletions
@@ -0,0 +1,7 @@
.file-tree
position absolute
top 80px
bottom 0px
left 0
width 25%
overflow-y scroll
+2 -2
View File
@@ -1,7 +1,7 @@
<div>
<div class="file-tree">
<input type="text" v-model="searchValue">
<files-tree-folder v-for="folder of files.folders" :key="+ new Date()" :content="folder" :depth="0"></files-tree-folder>
<div>
<a href="#" class="all-read" @click.prevent="onAllReadClick">Mark all as read</a>
<a href="#" class="all-read" @click.prevent="onAllReadClick">Mark all as read</a>
</div>
</div>
+1
View File
@@ -4,4 +4,5 @@
left 0
width 25%
height 100%
overflow-y scroll
background rgba(255, 0, 0, 0.3)
+78 -2
View File
@@ -23,9 +23,85 @@ export default
return this.$store.state.files.currentVersion
},
linesCount()
lines()
{
return (this.$store.state.files.currentVersion.content.match(/\n/g) || []).length + 1
const lines = []
const lineBreaks = (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
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
}
},
+17 -4
View File
@@ -4,7 +4,7 @@
font-weight normal
font-style normal
src url('../../../static/fonts/Inconsolata-Regular.ttf')
@font-face
font-family 'Inconsolata'
font-weight bold
@@ -24,19 +24,32 @@
font-size 15px
background #2d2d49
overflow scroll
.lines
position absolute
top 0
left 0
pointer-events none
.line
position relative
color #abb2bf
opacity 0.75
letter-spacing -1px
padding-left 25px
.added
position absolute
top 0
left 9px
color #00ffa5
.removed
top -10px
left 9px
position absolute
color #ff8157
.code
position absolute
top 0
+5 -1
View File
@@ -1,6 +1,10 @@
<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="i in linesCount">{{ i }}.</div>
<div class="line" v-for="line in lines">
<div class="added" v-if="line.added">+</div>
<div class="removed" v-if="line.removed">-</div>
<span class="index">{{ line.index }}.</span>
</div>
</div>
</div>