* Some basic work on connecting modules
This commit is contained in:
parent
810f001901
commit
d1b0663b5d
|
@ -209,7 +209,7 @@ function clearScreen() {
|
|||
}
|
||||
|
||||
function resetScreen() {
|
||||
return exports.goHome() + exports.eraseData(2);
|
||||
return exports.goHome() + exports.reset() + exports.eraseData(2);
|
||||
}
|
||||
|
||||
function normal() {
|
||||
|
|
|
@ -161,11 +161,20 @@ function Client(input, output) {
|
|||
} while(0 !== dsrResponseRe.lastIndex);
|
||||
}
|
||||
});
|
||||
|
||||
self.detachCurrentMenuModule = function() {
|
||||
if(self.currentMenuModule) {
|
||||
self.currentMenuModule.leave();
|
||||
self.currentMenuModule = null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
require('util').inherits(Client, stream);
|
||||
|
||||
Client.prototype.end = function () {
|
||||
this.detachCurrentMenuModule();
|
||||
|
||||
return this.output.end.apply(this.output, arguments);
|
||||
};
|
||||
|
||||
|
@ -193,9 +202,7 @@ Client.prototype.gotoMenuModule = function(name, cb) {
|
|||
// Assign a default missing module handler callback if none was provided
|
||||
cb = miscUtil.valueWithDefault(cb, self.defaultHandlerMissingMod());
|
||||
|
||||
if(self.currentMenuModule) {
|
||||
self.currentMenuModule.leave();
|
||||
}
|
||||
self.detachCurrentMenuModule();
|
||||
|
||||
menuUtil.loadMenu(name, self, function onMenuModuleLoaded(err, modInst) {
|
||||
if(err) {
|
||||
|
|
|
@ -17,26 +17,37 @@ function MenuModule(menuConfig) {
|
|||
|
||||
this.viewControllers = [];
|
||||
|
||||
this.loadArt = function() {
|
||||
this.initSequence = function() {
|
||||
async.waterfall(
|
||||
[
|
||||
function beforeDisplayArt(callback) {
|
||||
self.beforeArt();
|
||||
callback(null);
|
||||
},
|
||||
function displayArt(callback) {
|
||||
theme.displayThemeArt(self.menuConfig.art, self.client, function onArt(err, mciMap) {
|
||||
callback(err, mciMap);
|
||||
// :TODO: If the art simply is not found, or failed to load... we need to continue
|
||||
if(err) {
|
||||
console.log('TODO: log this error properly... maybe handle slightly diff.');
|
||||
}
|
||||
callback(null, mciMap);
|
||||
});
|
||||
},
|
||||
function artDisplayed(mciMap, callback) {
|
||||
if(!mciMap) {
|
||||
callback(null);
|
||||
} else {
|
||||
function afterArtDisplayed(mciMap, callback) {
|
||||
if(mciMap) {
|
||||
self.mciReady(mciMap);
|
||||
}
|
||||
|
||||
callback(null);
|
||||
}
|
||||
],
|
||||
function onComplete(err) {
|
||||
if(err) {
|
||||
// :TODO: Log me!!! ... and what else?
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
self.finishedLoading();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
@ -47,12 +58,16 @@ require('util').inherits(MenuModule, PluginModule);
|
|||
MenuModule.prototype.enter = function(client) {
|
||||
this.client = client;
|
||||
assert(typeof client !== 'undefined');
|
||||
|
||||
this.initSequence();
|
||||
};
|
||||
|
||||
MenuModule.prototype.leave = function() {
|
||||
this.viewControllers.forEach(function onVC(vc) {
|
||||
vc.detachClientEvents();
|
||||
});
|
||||
|
||||
var count = this.viewControllers.length;
|
||||
for(var i = 0; i < count; ++i) {
|
||||
this.viewControllers[i].detachClientEvents();
|
||||
}
|
||||
};
|
||||
|
||||
MenuModule.prototype.addViewController = function(vc) {
|
||||
|
@ -60,5 +75,13 @@ MenuModule.prototype.addViewController = function(vc) {
|
|||
return vc;
|
||||
};
|
||||
|
||||
MenuModule.prototype.mciReady = function(mciMap) {
|
||||
MenuModule.prototype.beforeArt = function() {
|
||||
};
|
||||
|
||||
MenuModule.prototype.mciReady = function(mciMap) {
|
||||
console.log('mciReady')
|
||||
};
|
||||
|
||||
MenuModule.prototype.finishedLoading = function() {
|
||||
console.log('finishedLoading')
|
||||
};
|
|
@ -126,7 +126,7 @@ function displayThemeArt(name, client, cb) {
|
|||
}
|
||||
|
||||
art.display( { art : artInfo.data, client : client, iceColors : iceColors }, function onDisplayed(err, mci) {
|
||||
cb(err, mci);
|
||||
cb(err, mci, artInfo);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
/* jslint node: true */
|
||||
'use strict';
|
||||
|
||||
var MenuModule = require('../core/menu_module.js').MenuModule;
|
||||
var ansi = require('../core/ansi_term.js');
|
||||
|
||||
exports.moduleInfo = {
|
||||
name : 'Goodbye',
|
||||
desc : 'Log off / Goodbye Module',
|
||||
author : 'NuSkooler',
|
||||
};
|
||||
|
||||
exports.getModule = GoodbyeModule;
|
||||
|
||||
function GoodbyeModule(menuConfig) {
|
||||
MenuModule.call(this, menuConfig);
|
||||
}
|
||||
|
||||
require('util').inherits(GoodbyeModule, MenuModule);
|
||||
|
||||
GoodbyeModule.prototype.enter = function(client) {
|
||||
GoodbyeModule.super_.prototype.enter.call(this, client);
|
||||
};
|
||||
|
||||
GoodbyeModule.prototype.beforeArt = function() {
|
||||
GoodbyeModule.super_.prototype.beforeArt.call(this);
|
||||
|
||||
this.client.term.write(ansi.resetScreen());
|
||||
};
|
||||
|
||||
GoodbyeModule.prototype.mciReady = function(mciMap) {
|
||||
GoodbyeModule.super_.prototype.mciReady.call(this, mciMap);
|
||||
};
|
||||
|
||||
GoodbyeModule.prototype.finishedLoading = function() {
|
||||
GoodbyeModule.super_.prototype.finishedLoading.call(this);
|
||||
|
||||
this.client.end();
|
||||
};
|
|
@ -14,13 +14,15 @@ var ViewController = require('../core/view_controller.js').ViewController;
|
|||
|
||||
//var async = require('async');
|
||||
|
||||
// :TODO: clean up requires
|
||||
// :TODO: rename to matrix.js
|
||||
|
||||
exports.moduleInfo = {
|
||||
name : 'Matrix',
|
||||
desc : 'Standardish Matrix',
|
||||
author : 'NuSkooler',
|
||||
};
|
||||
|
||||
//exports.entryPoint = entryPoint;
|
||||
exports.getModule = MatrixModule;
|
||||
|
||||
|
||||
|
@ -32,10 +34,12 @@ require('util').inherits(MatrixModule, MenuModule);
|
|||
|
||||
MatrixModule.prototype.enter = function(client) {
|
||||
MatrixModule.super_.prototype.enter.call(this, client);
|
||||
};
|
||||
|
||||
client.term.write(ansi.resetScreen());
|
||||
MatrixModule.prototype.beforeArt = function() {
|
||||
MatrixModule.super_.prototype.beforeArt.call(this);
|
||||
|
||||
this.loadArt();
|
||||
this.client.term.write(ansi.resetScreen());
|
||||
};
|
||||
|
||||
MatrixModule.prototype.mciReady = function(mciMap) {
|
||||
|
@ -66,6 +70,11 @@ MatrixModule.prototype.mciReady = function(mciMap) {
|
|||
|
||||
vc.on('submit', function onSubmit(form) {
|
||||
console.log(form);
|
||||
|
||||
if(0 === form.id && 1 === form.viewId) {
|
||||
// :TODO: fix me. Need to finalize form data. Current is kinda... meh.
|
||||
self.client.gotoMenuModule('goodbye');
|
||||
}
|
||||
});
|
||||
|
||||
vc.loadFromMCIMap(mciMap);
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"matrix" : {
|
||||
"art" : "matrix",
|
||||
"module" : "matrix"
|
||||
},
|
||||
"login" : {
|
||||
"art" : "login",
|
||||
"module" : "login"
|
||||
},
|
||||
"goodbye" : {
|
||||
"art" : "logoff",
|
||||
"module" : "goodbye"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue