From bdda23cc43a7dddfa97b203323379d059ee273b5 Mon Sep 17 00:00:00 2001 From: brunosimon Date: Thu, 11 Aug 2016 21:28:39 +0200 Subject: [PATCH] Handle project destruct --- site/app.class.js | 51 +++++++++++++--------- site/models/project.class.js | 5 +++ site/models/projects.class.js | 17 ++++++++ site/public/javascript/services/project.js | 6 +++ 4 files changed, 59 insertions(+), 20 deletions(-) diff --git a/site/app.class.js b/site/app.class.js index 47993dc..e6c4931 100644 --- a/site/app.class.js +++ b/site/app.class.js @@ -37,31 +37,33 @@ class App */ set_dummy() { - // Default project - let project = this.projects.create_project( 'dummy' ) + // // Default project + // let project = this.projects.create_project( 'dummy' ) - // Same name projects + // // Same name projects // 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( './test-1.txt', 'content 1' ) - project.files.update( './test-1.txt', 'content 2' ) - project.files.update( './test-1.txt', 'content 31298' ) - project.files.update( './toto/tata/lorem.txt', '123456789' ) - project.files.update( './toto/tata/lorem.txt', '1aze' ) - 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' ) + // // Some file + // project.files.create( './coucou/coco.txt', '1234' ) + // project.files.create( './test-1.txt', 'content 1' ) + // project.files.update( './test-1.txt', 'content 2' ) + // project.files.update( './test-1.txt', 'content 31298' ) + // project.files.update( './toto/tata/lorem.txt', '123456789' ) + // project.files.update( './toto/tata/lorem.txt', '1aze' ) + // 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' ) + + // // Adding file versions + // let counting = 0 + // setInterval( function() + // { + // project.files.update( './coucou/coco.txt', 'test: ' + counting++ ) + // }, 2000 ) + - // Incrementing - let counting = 0 - setInterval( function() - { - project.files.update( './coucou/coco.txt', 'test: ' + counting++ ) - }, 2000 ) // Log // console.log( util.inspect( project.files.describe(), { depth: null, colors: true } ) ) @@ -150,20 +152,20 @@ class App // Start project socket.on( 'start_project', ( data ) => { - // Create project project = this.projects.create_project( data.name ) console.log( util.inspect( project.files.describe(), { depth: null, colors: true } ) ) } ) + // Update file socket.on( 'update_file', ( data ) => { - console.log(data); project.files.update( data.path, data.content ) console.log( util.inspect( project.files.describe(), { depth: null, colors: true } ) ) } ) + // Create file socket.on( 'create_file', ( data ) => { project.files.create( data.path, data.content ) @@ -171,12 +173,21 @@ class App console.log( util.inspect( project.files.describe(), { depth: null, colors: true } ) ) } ) + // Delete file socket.on( 'delete_file', ( data ) => { project.files.delete( data.path ) console.log( util.inspect( project.files.describe(), { depth: null, colors: true } ) ) } ) + + // Disconnect + socket.on( 'disconnect', () => + { + console.log( 'socket app'.green.bold + ' - ' + 'disconnect'.cyan + ' - ' + socket.id.cyan ) + + this.projects.delete_project( project.slug ) + } ); } ) } } diff --git a/site/models/project.class.js b/site/models/project.class.js index a8455c0..aac32dd 100644 --- a/site/models/project.class.js +++ b/site/models/project.class.js @@ -44,6 +44,11 @@ class Project return result } + + destructor() + { + this.socket.emit( 'destruct' ) + } } module.exports = Project diff --git a/site/models/projects.class.js b/site/models/projects.class.js index b7579ed..de6e40e 100644 --- a/site/models/projects.class.js +++ b/site/models/projects.class.js @@ -63,6 +63,23 @@ class Projects return project } + delete_project( _slug ) + { + // Set up + let project = this.all[ _slug ] + + // Project found + if( typeof project !== 'undefined' ) + { + // Delete + delete this.all[ _slug ] + project.destructor(); + + // Emit + this.socket.emit( 'update_projects', this.describe() ) + } + } + get_project_by_slug( _slug ) { // Find project diff --git a/site/public/javascript/services/project.js b/site/public/javascript/services/project.js index 4ad7c9b..000b3db 100644 --- a/site/public/javascript/services/project.js +++ b/site/public/javascript/services/project.js @@ -96,6 +96,12 @@ application.factory( if( typeof update_callback === 'function' ) update_callback.apply( this, [ data ] ); } ); + + // Destruct event + socket.on( 'destruct', function( data ) + { + alert( 'destruct' ); + } ); }; return result;