Add tree class

This commit is contained in:
brunosimon
2016-08-11 19:21:38 +02:00
parent d2df4758df
commit 816c164c8c
10 changed files with 976 additions and 195 deletions
+50 -162
View File
@@ -5,114 +5,15 @@ application.factory(
'$timeout',
function( config, $timeout )
{
// Result
var result = {};
result.name = '';
result.files = {};
result.tree = new Tree( { auto_wash: false } );
// Callback
var update_callback = null;
function update_folders( folder )
{
function recursive_folder_report( new_folder, old_folder )
{
if( typeof old_folder !== 'undefined' && typeof old_folder.active !== 'undefined' )
new_folder.active = old_folder.active;
for( var _folder_key in new_folder.folders )
{
var _new_folder = new_folder.folders[ _folder_key ],
_old_folder = undefined;
if( old_folder )
_old_folder = old_folder.folders[ _folder_key ];
_new_folder = recursive_folder_report( _new_folder, _old_folder );
}
return new_folder;
}
folder = recursive_folder_report( folder, result.data );
result.data.folders = folder.folders;
}
function update_files( files )
{
}
function delete_file( id )
{
delete result.data.files[ id ];
}
// Result
var result = {};
result.data = null;
result.each_folder = function( folder, callback )
{
// Only callback provided
if( typeof folder === 'function' )
{
callback = folder;
folder = result.data;
}
// Apply callback
callback.apply( folder, [ folder ] );
// Each folder
for(var _folder_key in folder.folders)
{
var _folder = folder.folders[ _folder_key ];
result.each_folder( _folder, callback );
}
}
result.each_file = function( folder, callback )
{
// Only callback provided
if( typeof folder === 'function' )
{
callback = folder;
folder = result.data;
}
// Each folder
result.each_folder( folder, function( folder )
{
// Each file
for(var _file_key in folder.files)
{
var _file = folder.files[ _file_key ];
callback.apply( _file, [ _file ] );
}
} );
}
result.each_version = function( folder, callback )
{
// Only callback provided
if( typeof folder === 'function' )
{
callback = folder;
folder = result.data;
}
// Each file
result.each_file( folder, function( file )
{
// Each version
for(var _version_key in file.versions)
{
var _version = file.versions[ _version_key ];
callback.apply( _version, [ _version ] );
}
} );
}
// Update callback
result.on_update = function( callback )
{
update_callback = callback;
@@ -130,73 +31,66 @@ application.factory(
console.log('connected');
} );
socket.on( 'create_file', function( data )
{
console.log('create_file');
console.log(data);
} );
socket.on( 'update_file', function( data )
{
console.log('update_file');
console.log(data);
// console.log('update_file');
// console.log(data);
var existing_file = result.files[ data.path.full ];
// Doesn't exist yet
if( typeof existing_file === 'undefined' )
{
existing_file = Object.assign( {}, data );
existing_file.notif = 0;
result.files[ _file_key ] = existing_file;
result.tree.add_file( _file_key, existing_file )
}
existing_file.notif++;
// Apply callback
if( typeof update_callback === 'function' )
update_callback.apply( this, [ data ] );
} );
socket.on( 'delete_file', function( data )
{
console.log('delete_file');
console.log(data);
delete_file( data );
} );
socket.on( 'update_folders', function( data )
{
console.log('update_folders');
console.log(data);
update_folders( { folders: data } );
} );
// Update project event
socket.on( 'update_project', function( data )
{
console.log('update_project');
console.log(data);
// console.log('update_project');
// console.log(data);
update_folders( data );
update_files( data.files );
// Duplicate files
for( var _file_key in data.files )
{
var data_file = data.files[ _file_key ],
existing_file = result.files[ _file_key ];
// // Reformat versions
// result.each_version( data, function( version )
// {
// // Date
// version.moment_date = moment( version.date );
// version.date_formated = version.moment_date.format( 'LTS' );
// version.time_from_now = version.moment_date.fromNow();
// Doesn't exist yet
if( typeof existing_file === 'undefined' )
{
existing_file = Object.assign( {}, data_file );
existing_file.notif = 0;
result.files[ _file_key ] = existing_file;
// // Differencies
// var count = 0,
// modified = 0;
result.tree.add_file( _file_key, existing_file )
}
// if( !version.diff )
// {
// version.diff_ratio = 1;
// count = 1;
// modified = 1;
// }
// else
// {
// for( var _diff_key in version.diff )
// {
// var _diff = version.diff[ _diff_key ];
// count += _diff.count;
// if( _diff.added /*|| _diff.removed*/ )
// modified += _diff.count;
// }
// version.diff_ratio = modified / count;
// }
// version.diff_percent = Math.round( version.diff_ratio * 100 ) + '%';
// } );
// // Save in results
// result.data = data;
existing_file.notif++;
}
// Apply callback
if( typeof update_callback === 'function' )
@@ -204,12 +98,6 @@ application.factory(
} );
};
result.data = {
name : '',
folders: {},
files : {}
};
return result;
}
]