[update] Show difference between versions + [update] button
This commit is contained in:
@@ -50,6 +50,10 @@ class App
|
|||||||
// Some file
|
// Some file
|
||||||
project.files.create_version( './folder-test/test-4.css', fs.readFileSync( '../test-folder/folder-1/test-4.css', 'utf8' ) )
|
project.files.create_version( './folder-test/test-4.css', fs.readFileSync( '../test-folder/folder-1/test-4.css', 'utf8' ) )
|
||||||
project.files.create_version( './folder-test/depth-test/test-3.js', fs.readFileSync( '../test-folder/folder-2/test-3.js', 'utf8' ) )
|
project.files.create_version( './folder-test/depth-test/test-3.js', fs.readFileSync( '../test-folder/folder-2/test-3.js', 'utf8' ) )
|
||||||
|
project.files.create_version( './folder-test/depth-test/test-3.js', fs.readFileSync( '../test-folder/folder-2/test-3-diff-1.js', 'utf8' ) )
|
||||||
|
project.files.create_version( './folder-test/depth-test/test-3.js', fs.readFileSync( '../test-folder/folder-2/test-3-diff-2.js', 'utf8' ) )
|
||||||
|
project.files.create_version( './folder-test/depth-test/test-3.js', fs.readFileSync( '../test-folder/folder-2/test-3-diff-3.js', 'utf8' ) )
|
||||||
|
project.files.create_version( './folder-test/depth-test/test-3.js', fs.readFileSync( '../test-folder/folder-2/test-3-diff-4.js', 'utf8' ) )
|
||||||
project.files.create_version( './folder-test/test-1.html', fs.readFileSync( '../test-folder/test-1.html', 'utf8' ) )
|
project.files.create_version( './folder-test/test-1.html', fs.readFileSync( '../test-folder/test-1.html', 'utf8' ) )
|
||||||
project.files.create_version( './folder-test/test-2.php', fs.readFileSync( '../test-folder/test-2.php', 'utf8' ) )
|
project.files.create_version( './folder-test/test-2.php', fs.readFileSync( '../test-folder/test-2.php', 'utf8' ) )
|
||||||
project.files.create_version( './folder-test/big-one.txt', 'content 4\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline' )
|
project.files.create_version( './folder-test/big-one.txt', 'content 4\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline\nline' )
|
||||||
|
|||||||
@@ -37,7 +37,17 @@ class File
|
|||||||
|
|
||||||
version.date = new Date()
|
version.date = new Date()
|
||||||
version.content = content
|
version.content = content
|
||||||
version.diff = last_version ? diff.diffChars( last_version.content, version.content ) : false
|
|
||||||
|
if( !last_version )
|
||||||
|
version.diff = false
|
||||||
|
else
|
||||||
|
version.diff = diff.diffLines(
|
||||||
|
last_version.content,
|
||||||
|
version.content,
|
||||||
|
{
|
||||||
|
// ignoreWhitespace: true
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
// Emit
|
// Emit
|
||||||
this.socket.emit( 'create_version', { file: this.path.full, version: version } )
|
this.socket.emit( 'create_version', { file: this.path.full, version: version } )
|
||||||
|
|||||||
@@ -29,6 +29,18 @@ application.controller(
|
|||||||
$scope.always_last_version = !$scope.always_last_version;
|
$scope.always_last_version = !$scope.always_last_version;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$scope.mark_all_as_read = function()
|
||||||
|
{
|
||||||
|
// Each file
|
||||||
|
for( var _file_key in project.files )
|
||||||
|
{
|
||||||
|
var _file = project.files[ _file_key ];
|
||||||
|
|
||||||
|
_file.notif = 0
|
||||||
|
_file.new = false
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
$scope.folder_click = function( folder )
|
$scope.folder_click = function( folder )
|
||||||
{
|
{
|
||||||
// console.log('folder click');
|
// console.log('folder click');
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ application.factory(
|
|||||||
// Connect event
|
// Connect event
|
||||||
socket.on( 'connect', function()
|
socket.on( 'connect', function()
|
||||||
{
|
{
|
||||||
console.log('connected');
|
|
||||||
} );
|
} );
|
||||||
|
|
||||||
socket.on( 'create_file', function( data )
|
socket.on( 'create_file', function( data )
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
body {background:#24262e;font-size:14px;font-family:Helvetica,Arial;color:#f1f5ff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}
|
body {background:#24262e;font-size:14px;font-family:Helvetica,Arial;color:#f1f5ff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}
|
||||||
a {text-decoration:none;}
|
a {text-decoration:none;}
|
||||||
|
* {padding:0;margin:0;box-sizing:border-box;}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main header
|
* Main header
|
||||||
@@ -44,7 +45,11 @@ section.page-project section.file .code pre {position:relative;overflow:hidden;}
|
|||||||
section.page-project section.file .code pre code {line-height:20px;font-family:monospace;}
|
section.page-project section.file .code pre code {line-height:20px;font-family:monospace;}
|
||||||
section.page-project section.file .code pre code.lines {position:absolute;top:0;left:0;width:38px;padding:0.5em;opacity:0.2;}
|
section.page-project section.file .code pre code.lines {position:absolute;top:0;left:0;width:38px;padding:0.5em;opacity:0.2;}
|
||||||
section.page-project section.file .code pre code.hljs {margin-left:38px;}
|
section.page-project section.file .code pre code.hljs {margin-left:38px;}
|
||||||
// section.page-project section.file .code pre code {position:absolute;top:0;left:20px;}
|
section.page-project section.file .code pre code.differences {position:absolute;top:0;left:38px;padding:0.5em;}
|
||||||
|
section.page-project section.file .code pre code.differences .value {opacity:0.4;}
|
||||||
|
section.page-project section.file .code pre code.differences span.removed {display:none;border:1px solid red;}
|
||||||
|
section.page-project section.file .code pre code.differences span.removed .value {display:none;}
|
||||||
|
section.page-project section.file .code pre code.differences span.added {border:1px solid #b0ea23;background:rgba(176, 234, 35, 0.1);}
|
||||||
|
|
||||||
.hljs-line-numbers {text-align:right;border-right:1px solid #ccc;color:#999;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}
|
.hljs-line-numbers {text-align:right;border-right:1px solid #ccc;color:#999;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ section.page-project(ng-controller="ProjectController as controller",ng-init="in
|
|||||||
div.always-last-version-toggle(ng-click="always_last_version_toggle_click()",ng-class="always_last_version ? 'active' : 'inactive'")
|
div.always-last-version-toggle(ng-click="always_last_version_toggle_click()",ng-class="always_last_version ? 'active' : 'inactive'")
|
||||||
.switch
|
.switch
|
||||||
| always last version
|
| always last version
|
||||||
|
div.mark-all-as-read(ng-click="mark_all_as_read()")
|
||||||
|
| Mark all as read
|
||||||
.aside-tree
|
.aside-tree
|
||||||
nav.files-tree-nav
|
nav.files-tree-nav
|
||||||
ul
|
ul
|
||||||
@@ -54,6 +56,10 @@ section.page-project(ng-controller="ProjectController as controller",ng-init="in
|
|||||||
.line= line_index++
|
.line= line_index++
|
||||||
code(hljs,hljs-source="version.content")
|
code(hljs,hljs-source="version.content")
|
||||||
| {{ version.content }}
|
| {{ version.content }}
|
||||||
|
code.differences(ng-if="version.diff")
|
||||||
|
span(ng-repeat="_difference in version.diff",ng-class="{removed: _difference.removed, added: _difference.added}")
|
||||||
|
span.value
|
||||||
|
| {{ _difference.value }}
|
||||||
|
|
||||||
|
|
||||||
include ../../partials/footer.jade
|
include ../../partials/footer.jade
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test
|
||||||
|
*/
|
||||||
|
class Pwet extends AnotherClass
|
||||||
|
{
|
||||||
|
constructor( argument )
|
||||||
|
{
|
||||||
|
console.log('Hello')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let pwet = new Pwet()
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test
|
||||||
|
*/
|
||||||
|
class Pwet extends AnotherClass
|
||||||
|
{
|
||||||
|
constructor( argument )
|
||||||
|
{
|
||||||
|
console.log('Hello')
|
||||||
|
console.log('World')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let pwet = new Pwet()
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test
|
||||||
|
*/
|
||||||
|
class Pwet extends AnotherClass
|
||||||
|
{
|
||||||
|
constructor( argument )
|
||||||
|
{
|
||||||
|
console.log('Hello')
|
||||||
|
console.log('World')
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let pwet = new Pwet()
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test
|
||||||
|
*/
|
||||||
|
class Pwet extends AnotherClass
|
||||||
|
{
|
||||||
|
constructor( argument )
|
||||||
|
{
|
||||||
|
console.log('Hell')
|
||||||
|
console.log('World')
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let pwet = new Pwet()
|
||||||
Reference in New Issue
Block a user