Connect data

This commit is contained in:
brunosimon
2016-06-05 01:14:23 +02:00
parent b61ddb5967
commit c8d111cf5c
10 changed files with 261 additions and 164 deletions
+6 -6
View File
@@ -77,7 +77,7 @@ class App
set_socket() set_socket()
{ {
// Set up // Set up
this.socket = socket_io_client( `http://${this.options.domain}:${this.options.port}` ) this.socket = socket_io_client( `http://${this.options.domain}:${this.options.port}/app` )
// Connect event // Connect event
this.socket.on( 'connect', () => this.socket.on( 'connect', () =>
@@ -106,7 +106,7 @@ class App
this.watcher.on( 'add', ( _path ) => this.watcher.on( 'add', ( _path ) =>
{ {
// Set up // Set up
let relative_path = _path.replace( process.cwd() + '/', '' ) let relative_path = _path.replace( process.cwd(), '.' )
console.log( 'add:'.green.bold, relative_path ) console.log( 'add:'.green.bold, relative_path )
@@ -122,7 +122,7 @@ class App
this.watcher.on( 'change', ( _path ) => this.watcher.on( 'change', ( _path ) =>
{ {
// Set up // Set up
let relative_path = _path.replace( process.cwd() + '/', '' ) let relative_path = _path.replace( process.cwd(), '.' )
console.log( 'change:'.green.bold, relative_path ) console.log( 'change:'.green.bold, relative_path )
@@ -138,7 +138,7 @@ class App
this.watcher.on( 'unlink', ( _path ) => this.watcher.on( 'unlink', ( _path ) =>
{ {
// Set up // Set up
let relative_path = _path.replace( process.cwd() + '/', '' ) let relative_path = _path.replace( process.cwd(), '.' )
console.log( 'unlink:'.green.bold, relative_path ) console.log( 'unlink:'.green.bold, relative_path )
@@ -150,7 +150,7 @@ class App
this.watcher.on( 'addDir', ( _path ) => this.watcher.on( 'addDir', ( _path ) =>
{ {
// Set up // Set up
let relative_path = _path.replace( process.cwd() + '/', '' ) let relative_path = _path.replace( process.cwd(), '.' )
console.log( 'addDir:'.green.bold, relative_path ) console.log( 'addDir:'.green.bold, relative_path )
@@ -162,7 +162,7 @@ class App
this.watcher.on( 'unlinkDir', ( _path ) => this.watcher.on( 'unlinkDir', ( _path ) =>
{ {
// Set up // Set up
let relative_path = _path.replace( process.cwd() + '/', '' ) let relative_path = _path.replace( process.cwd(), '.' )
console.log( 'unlinkDir:'.green.bold, relative_path ) console.log( 'unlinkDir:'.green.bold, relative_path )
+40 -14
View File
@@ -36,16 +36,16 @@ class App
// Set up // Set up
this.projects = new Projects() this.projects = new Projects()
// // Tests // Tests
// var project = this.projects.create_project( 'test' ) // var project = this.projects.create_project( 'test' )
// project.create_folder( 'toto' ) // project.create_folder( './toto' )
// project.get_folder( 'toto//tutu/tete', true ) // project.get_folder( './toto//tutu/tete', true )
// project.create_file( 'coucou/coco.txt', 'content 0' ) // project.create_file( './coucou/coco.txt', 'content 0' )
// project.update_file( 'toto/tutu/tete/tutu.txt', 'content 1' ) // project.create_file( './test-1.txt', 'content 1' )
// project.update_file( 'toto/tata/lorem.txt', 'content 2' ) // project.update_file( './toto/tata/lorem.txt', 'content 2' )
// project.update_file( 'toto/tata/ipsum.txt', 'content 3' ) // project.update_file( './toto/tata/ipsum.txt', 'content 3' )
// project.delete_folder( 'toto/tutu', true ) // project.delete_folder( './toto/tutu', true )
// project.delete_file( 'toto/tata/ipsum.txt' ) // project.delete_file( './toto/tata/ipsum.txt' )
// console.log( util.inspect( project, { depth: null, colors: true } ) ) // console.log( util.inspect( project, { depth: null, colors: true } ) )
} }
@@ -108,51 +108,77 @@ class App
set_socket() set_socket()
{ {
// Set up // Set up
this.io = socket_io.listen( this.server ) this.sockets = {}
this.sockets.main = socket_io.listen( this.server )
this.sockets.app = this.sockets.main.of( '/app' )
this.sockets.site = this.sockets.main.of( '/site' )
let project = null
// Connection event // Connection event
this.io.on( 'connection', ( socket ) => this.sockets.app.on( 'connection', ( socket ) =>
{ {
console.log( 'socket'.green.bold + ' - ' + 'connect'.cyan + ' - ' + socket.id.cyan ) console.log( 'socket app'.green.bold + ' - ' + 'connect'.cyan + ' - ' + socket.id.cyan )
let project = null
socket.on( 'start_project', ( data ) => socket.on( 'start_project', ( data ) =>
{ {
project = this.projects.create_project( data.slug ) project = this.projects.create_project( data.slug )
console.log( util.inspect( project, { depth: null, colors: true } ) ) console.log( util.inspect( project, { depth: null, colors: true } ) )
} ) } )
socket.on( 'update_file', ( data ) => socket.on( 'update_file', ( data ) =>
{ {
project.update_file( data.path, data.content ) project.update_file( data.path, data.content )
this.sockets.site.emit( 'update_project', project )
console.log( util.inspect( project, { depth: null, colors: true } ) ) console.log( util.inspect( project, { depth: null, colors: true } ) )
} ) } )
socket.on( 'create_file', ( data ) => socket.on( 'create_file', ( data ) =>
{ {
project.create_file( data.path, data.content ) project.create_file( data.path, data.content )
this.sockets.site.emit( 'update_project', project )
console.log( util.inspect( project, { depth: null, colors: true } ) ) console.log( util.inspect( project, { depth: null, colors: true } ) )
} ) } )
socket.on( 'delete_file', ( data ) => socket.on( 'delete_file', ( data ) =>
{ {
project.delete_file( data.path ) project.delete_file( data.path )
this.sockets.site.emit( 'update_project', project )
console.log( util.inspect( project, { depth: null, colors: true } ) ) console.log( util.inspect( project, { depth: null, colors: true } ) )
} ) } )
socket.on( 'create_folder', ( data ) => socket.on( 'create_folder', ( data ) =>
{ {
project.create_folder( data.path, data.content ) project.create_folder( data.path, data.content )
this.sockets.site.emit( 'update_project', project )
console.log( util.inspect( project, { depth: null, colors: true } ) ) console.log( util.inspect( project, { depth: null, colors: true } ) )
} ) } )
socket.on( 'delete_folder', ( data ) => socket.on( 'delete_folder', ( data ) =>
{ {
project.delete_folder( data.path ) project.delete_folder( data.path )
this.sockets.site.emit( 'update_project', project )
console.log( util.inspect( project, { depth: null, colors: true } ) ) console.log( util.inspect( project, { depth: null, colors: true } ) )
} ) } )
} ) } )
this.sockets.site.on( 'connection', ( socket ) =>
{
console.log( 'socket site'.green.bold + ' - ' + 'connect'.cyan + ' - ' + socket.id.cyan )
socket.emit( 'update_project', project )
} )
} }
} }
+33 -35
View File
@@ -1,9 +1,9 @@
'use strict' 'use strict'
// Dependencies // Dependencies
let path = require( 'path' ), let paths = require( '../utils/paths.class.js' ),
util = require( 'util' ), util = require( 'util' ),
File = require( './file.class.js' ) File = require( './file.class.js' )
class Project class Project
{ {
@@ -23,11 +23,11 @@ class Project
create_file( _path, _content ) create_file( _path, _content )
{ {
// Set up // Set up
let normalize_path = path.normalize( _path ), let normalized_path = paths.normalize( _path ),
parsed_path = path.parse( normalize_path ) parsed_path = paths.parse( normalized_path )
// Retrieve file // Retrieve file
let file = this.get_file( normalize_path ) let file = this.get_file( normalized_path )
// File already exist // File already exist
if( file ) if( file )
@@ -54,8 +54,8 @@ class Project
_force_creation = false _force_creation = false
// Set up // Set up
let normalize_path = path.normalize( _path ), let normalized_path = paths.normalize( _path ),
parsed_path = path.parse( normalize_path ) parsed_path = paths.parse( normalized_path )
// Retrieve folder // Retrieve folder
let folder = this.get_folder( parsed_path.dir, _force_creation ) let folder = this.get_folder( parsed_path.dir, _force_creation )
@@ -75,7 +75,7 @@ class Project
if( _force_creation ) if( _force_creation )
{ {
// Create folders // Create folders
file = this.create_file( normalize_path ) file = this.create_file( normalized_path )
return file return file
} }
@@ -87,10 +87,10 @@ class Project
update_file( _path, _content ) update_file( _path, _content )
{ {
// Set up // Set up
let normalize_path = path.normalize( _path ) let normalized_path = paths.normalize( _path )
// Retrieve file // Retrieve file
let file = this.get_file( normalize_path, true ) let file = this.get_file( normalized_path, true )
// Create version // Create version
file.create_version( _content ) file.create_version( _content )
@@ -99,8 +99,7 @@ class Project
delete_file( _path ) delete_file( _path )
{ {
// Set up // Set up
let normalize_path = path.normalize( _path ), let parsed_path = paths.parse( _path )
parsed_path = path.parse( normalize_path )
// Retrieve folder // Retrieve folder
let folder = this.get_folder( parsed_path.dir ) let folder = this.get_folder( parsed_path.dir )
@@ -122,27 +121,27 @@ class Project
create_folder( _path ) create_folder( _path )
{ {
// Set up // Set up
let normalize_path = path.normalize( _path ), let normalized_path = paths.normalize( _path ),
path_parts = normalize_path.split( path.sep ), path_folders = normalized_path.split( paths.separator ),
folder = this folder = this
for( let _path_part of path_parts ) for( let _path_folder of path_folders )
{ {
// Temporary folder // Temporary folder
let __folder = folder.folders[ _path_part ] let _folder = folder.folders[ _path_folder ]
// Folder doesn't exist // Folder doesn't exist
if( typeof __folder === 'undefined' ) if( typeof _folder === 'undefined' )
{ {
__folder = {} _folder = {}
__folder.name = _path_part _folder.name = _path_folder
__folder.files = {} _folder.files = {}
__folder.folders = {} _folder.folders = {}
folder.folders[ _path_part ] = __folder folder.folders[ _path_folder ] = _folder
} }
folder = __folder folder = _folder
} }
return folder return folder
@@ -154,14 +153,14 @@ class Project
if( typeof _force_creation === 'undefined' ) if( typeof _force_creation === 'undefined' )
_force_creation = false _force_creation = false
let normalize_path = path.normalize( _path ), let normalized_path = paths.normalize( _path ),
path_parts = normalize_path.split( path.sep ), path_folders = normalized_path.split( paths.separator ),
folder = this, folder = this,
found = true found = true
for( let _path_part of path_parts ) for( let _path_folder of path_folders )
{ {
folder = folder.folders[ _path_part ] folder = folder.folders[ _path_folder ]
// Folder not found // Folder not found
if(typeof folder === 'undefined') if(typeof folder === 'undefined')
@@ -179,7 +178,7 @@ class Project
if( _force_creation ) if( _force_creation )
{ {
// Create folders // Create folders
folder = this.create_folder( normalize_path ) folder = this.create_folder( normalized_path )
return folder return folder
} }
@@ -191,9 +190,8 @@ class Project
delete_folder( _path ) delete_folder( _path )
{ {
// Set up // Set up
let normalize_path = path.normalize( _path ), let normalized_path = paths.normalize( _path ),
path_parts = _path.split( path.sep ), folder = this.get_folder( normalized_path )
folder = this.get_folder( normalize_path )
// Folder not found // Folder not found
if( !folder ) if( !folder )
@@ -4,17 +4,20 @@ angular_module.controller(
'ApplicationController', 'ApplicationController',
[ [
'$scope', '$scope',
'data', 'project',
function( $scope, data ) function( $scope, project )
{ {
console.log(data); var that = this;
this.pwet = 'uh'; project.on_update( function( data )
this.codes = {
[ $scope.$apply( function()
{ title: 'Title 1' }, {
{ title: 'Title 2' } that.project = data;
]; } );
} );
this.project = project.data;
} }
] ]
); );
-12
View File
@@ -1,12 +0,0 @@
angular_module.factory(
'data',
[
function()
{
return function()
{
console.log( 'data' );
}
}
]
);
@@ -0,0 +1,37 @@
angular_module.factory(
'project',
[
'$timeout',
'$rootScope',
function( $timeout, $rootScope )
{
update_callback = null;
var result = {};
result.data = null;
result.on_update = function( callback )
{
update_callback = callback;
};
var socket = io( 'http://192.168.1.4:3000/site' );
socket.on( 'connect', function()
{
console.log('connected');
} );
socket.on( 'update_project', function( data )
{
result.data = data;
if( typeof update_callback === 'function' )
update_callback.apply( this, [ data ] );
} );
result.data = {"name":"pwet","folders":{".":{"name":".","files":{"test-1.txt":{"name":"test-1.txt","versions":[{"date":"2016-06-03T21:16:35.574Z","content":"dsfsdf\n\naaaa\n\ndsfsdf\n\nbbbb\n\ndsfsdf\nsodifja\n","diff":false}]},"test-2.txt":{"name":"test-2.txt","versions":[{"date":"2016-06-03T21:16:38.667Z","content":"kqsdqsdjn\niudfgdfg\n\nqsdiuhqsdiuqhsd\n","diff":false}]}},"folders":{}},"folder-2":{"name":"folder-2","files":{"hey.txt":{"name":"hey.txt","versions":[{"date":"2016-06-03T21:16:32.742Z","content":"qdsqsdsq\n","diff":false}]}},"folders":{}}}};
return result;
}
]
);
+34
View File
@@ -0,0 +1,34 @@
'use strict'
// Dependencies
let path = require( 'path' )
class Paths
{
constructor()
{
this.separator = path.sep
}
normalize( _path )
{
if( _path === '.' || _path === '' )
return '.';
let normalized_path = './' + path.normalize( _path )
return normalized_path
}
parse( _path )
{
let normalized_path = this.normalize( _path ),
parsed_path = path.parse( normalized_path )
return parsed_path
}
}
let paths = new Paths()
module.exports = paths
+95 -86
View File
@@ -1,86 +1,95 @@
html(ng-app="application") html(ng-app="application",ng-controller="ApplicationController as controller")
head head
title title
| Code Spectat | Code Spectat
script(src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js") script(src="/socket.io/socket.io.js")
script(src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-route.js") script(src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js")
script(src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-resource.js") script(src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-route.js")
script(src="/javascript/application/application.js") script(src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-resource.js")
script(src="/javascript/services/data.js") script(src="/javascript/application/application.js")
body script(src="/javascript/services/project.js")
header.main-header body
h1
| Code Spectat script(type="text/ng-template",id="tree_item_renderer.html")
aside | {{data.name}}
header.aside-header ul
| Project name li(ng-repeat="data in data.folders",ng-include="'tree_item_renderer.html'")
nav.aside-nav li(ng-repeat="file in data.files")
ul | {{file.name}}
li
a(href="#") header.main-header
| folder-1 h1
ul | Code Spectat
li aside
a(href="#") header.aside-header
| folder-1-1 | {{ controller.project.name }}
li nav.aside-nav
a(href="#") ul
| folder-1-2 li(ng-repeat="data in controller.project.folders",ng-include="'tree_item_renderer.html'")
li
a(href="#") //- ul
| file-1-1 //- li
li //- a(href="#")
a(href="#") //- | folder-1
| file-1-2 //- ul
li //- li
a(href="#") //- a(href="#")
| folder-2 //- | folder-1-1
ul //- li
li //- a(href="#")
a(href="#") //- | folder-1-2
| folder-2-1 //- li
ul //- a(href="#")
li //- | file-1-1
a(href="#") //- li
| folder-2-1-1 //- a(href="#")
li //- | file-1-2
a(href="#") //- li
| file-2-1-1 //- a(href="#")
li //- | folder-2
a(href="#") //- ul
| file-2-1-2 //- li
li //- a(href="#")
a(href="#") //- | folder-2-1
| file-2-1-3 //- ul
li //- li
a(href="#") //- a(href="#")
| file-2-1 //- | folder-2-1-1
li //- li
a(href="#") //- a(href="#")
| file-2-2 //- | file-2-1-1
li //- li
a(href="#") //- a(href="#")
| file-2-3 //- | file-2-1-2
section.file //- li
section.historic //- a(href="#")
a.version(href="#") //- | file-2-1-3
div.date //- li
| 14:23:14 //- a(href="#")
div.differences //- | file-2-1
| Différences //- li
a.version(href="#") //- a(href="#")
div.date //- | file-2-2
| 14:24:01 //- li
div.differences //- a(href="#")
| Différences //- | file-2-3
a.version(href="#") section.file
div.date section.historic
| 14:27:42 a.version(href="#")
div.differences div.date
| Différences | 14:23:14
section.code div.differences
pre | Différences
| <html> a.version(href="#")
div(ng-controller="ApplicationController as hoy") div.date
span | 14:24:01
{{ hoy.pwet }} div.differences
| Différences
a.version(href="#")
div.date
| 14:27:42
div.differences
| Différences
section.code
pre
| <html>
+1
View File
@@ -0,0 +1 @@
sdnufoisdf
+2 -1
View File
@@ -4,7 +4,8 @@ aaaa
dsfsdf dsfsdf
bbbb bbbbiuhsdfiuhsdfdsf
dsfsdf dsfsdf
sodifja sodifja