Handle same name projects

This commit is contained in:
brunosimon
2016-08-11 21:04:35 +02:00
parent 816c164c8c
commit 2bd36abac6
3 changed files with 56 additions and 13 deletions
+25 -8
View File
@@ -29,18 +29,24 @@ class App
this.set_server() this.set_server()
this.set_socket() this.set_socket()
this.set_models() this.set_models()
this.set_dummy()
} }
/** /**
* Set models * Set Dummy
*/ */
set_models() set_dummy()
{ {
// Set up // Default project
this.projects = new Projects( { socket: this.sockets.main } ) let project = this.projects.create_project( 'dummy' )
// Tests // Same name projects
var project = this.projects.create_project( 'dummy' ) // let project_2 = this.projects.create_project( 'dummy' )
// let project_3 = this.projects.create_project( 'dummy' )
// let project_4 = this.projects.create_project( 'dummy' )
// let project_5 = this.projects.create_project( 'dummy' )
// Some file
project.files.create( './coucou/coco.txt', '1234' ) project.files.create( './coucou/coco.txt', '1234' )
project.files.create( './test-1.txt', 'content 1' ) project.files.create( './test-1.txt', 'content 1' )
project.files.update( './test-1.txt', 'content 2' ) project.files.update( './test-1.txt', 'content 2' )
@@ -50,13 +56,24 @@ class App
project.files.update( './toto/tata/ipsum.txt', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia asperiores iure, animi voluptatibus ut officiis. Molestias, quod perferendis hic totam doloremque, porro aperiam enim tenetur, maxime inventore consequuntur nisi in?' ) project.files.update( './toto/tata/ipsum.txt', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia asperiores iure, animi voluptatibus ut officiis. Molestias, quod perferendis hic totam doloremque, porro aperiam enim tenetur, maxime inventore consequuntur nisi in?' )
project.files.delete( './toto/tata/ipsum.txt' ) project.files.delete( './toto/tata/ipsum.txt' )
var counting = 0 // Incrementing
let counting = 0
setInterval( function() setInterval( function()
{ {
project.files.update( './coucou/coco.txt', 'test: ' + counting++ ) project.files.update( './coucou/coco.txt', 'test: ' + counting++ )
}, 2000 ) }, 2000 )
console.log( util.inspect( project.files.describe(), { depth: null, colors: true } ) ) // Log
// console.log( util.inspect( project.files.describe(), { depth: null, colors: true } ) )
}
/**
* Set models
*/
set_models()
{
// Set up
this.projects = new Projects( { socket: this.sockets.main } )
} }
/** /**
+7 -3
View File
@@ -8,14 +8,18 @@ class Project
{ {
constructor( options ) constructor( options )
{ {
this.name = options.name this.set_name( options.name )
this.slug = slug( this.name )
this.set_socket( options.socket ) this.set_socket( options.socket )
this.files = new Files( { socket: this.socket } ) this.files = new Files( { socket: this.socket } )
} }
set_name( _name )
{
this.name = _name
this.slug = slug( this.name )
}
set_socket( socket ) set_socket( socket )
{ {
// Set up // Set up
+24 -2
View File
@@ -23,13 +23,35 @@ class Projects
console.log( 'socket projects'.green.bold + ' - ' + 'connect'.cyan + ' - ' + socket.id.cyan ) console.log( 'socket projects'.green.bold + ' - ' + 'connect'.cyan + ' - ' + socket.id.cyan )
this.socket.emit( 'update_projects', this.describe() ) this.socket.emit( 'update_projects', this.describe() )
} ); } )
} }
create_project( _name ) create_project( _name )
{ {
// Create project // Create project
let project = new Project( { name: _name, socket: this.original_socket } ) let project = new Project( { name: _name, socket: this.original_socket } ),
same_name_project = this.all[ project.slug ]
// Try to found same name project
while( typeof same_name_project !== 'undefined' )
{
// Found new number
let last_number = same_name_project.name.match(/\d+$/),
new_number = 2
if( last_number && last_number.length )
{
last_number = ~~last_number[ 0 ]
new_number = last_number + 1
}
// Update project name
project.set_name( _name + ' ' + new_number )
// Try to found
same_name_project = this.all[ project.slug ]
}
// Save // Save
this.all[ project.slug ] = project this.all[ project.slug ] = project