* Some basic work on connecting modules
This commit is contained in:
parent
810f001901
commit
d1b0663b5d
|
@ -209,7 +209,7 @@ function clearScreen() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function resetScreen() {
|
function resetScreen() {
|
||||||
return exports.goHome() + exports.eraseData(2);
|
return exports.goHome() + exports.reset() + exports.eraseData(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
function normal() {
|
function normal() {
|
||||||
|
|
|
@ -161,11 +161,20 @@ function Client(input, output) {
|
||||||
} while(0 !== dsrResponseRe.lastIndex);
|
} while(0 !== dsrResponseRe.lastIndex);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
self.detachCurrentMenuModule = function() {
|
||||||
|
if(self.currentMenuModule) {
|
||||||
|
self.currentMenuModule.leave();
|
||||||
|
self.currentMenuModule = null;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
require('util').inherits(Client, stream);
|
require('util').inherits(Client, stream);
|
||||||
|
|
||||||
Client.prototype.end = function () {
|
Client.prototype.end = function () {
|
||||||
|
this.detachCurrentMenuModule();
|
||||||
|
|
||||||
return this.output.end.apply(this.output, arguments);
|
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
|
// Assign a default missing module handler callback if none was provided
|
||||||
cb = miscUtil.valueWithDefault(cb, self.defaultHandlerMissingMod());
|
cb = miscUtil.valueWithDefault(cb, self.defaultHandlerMissingMod());
|
||||||
|
|
||||||
if(self.currentMenuModule) {
|
self.detachCurrentMenuModule();
|
||||||
self.currentMenuModule.leave();
|
|
||||||
}
|
|
||||||
|
|
||||||
menuUtil.loadMenu(name, self, function onMenuModuleLoaded(err, modInst) {
|
menuUtil.loadMenu(name, self, function onMenuModuleLoaded(err, modInst) {
|
||||||
if(err) {
|
if(err) {
|
||||||
|
|
|
@ -17,26 +17,37 @@ function MenuModule(menuConfig) {
|
||||||
|
|
||||||
this.viewControllers = [];
|
this.viewControllers = [];
|
||||||
|
|
||||||
this.loadArt = function() {
|
this.initSequence = function() {
|
||||||
async.waterfall(
|
async.waterfall(
|
||||||
[
|
[
|
||||||
|
function beforeDisplayArt(callback) {
|
||||||
|
self.beforeArt();
|
||||||
|
callback(null);
|
||||||
|
},
|
||||||
function displayArt(callback) {
|
function displayArt(callback) {
|
||||||
theme.displayThemeArt(self.menuConfig.art, self.client, function onArt(err, mciMap) {
|
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) {
|
function afterArtDisplayed(mciMap, callback) {
|
||||||
if(!mciMap) {
|
if(mciMap) {
|
||||||
callback(null);
|
|
||||||
} else {
|
|
||||||
self.mciReady(mciMap);
|
self.mciReady(mciMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
callback(null);
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
function onComplete(err) {
|
function onComplete(err) {
|
||||||
if(err) {
|
if(err) {
|
||||||
// :TODO: Log me!!! ... and what else?
|
// :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) {
|
MenuModule.prototype.enter = function(client) {
|
||||||
this.client = client;
|
this.client = client;
|
||||||
assert(typeof client !== 'undefined');
|
assert(typeof client !== 'undefined');
|
||||||
|
|
||||||
|
this.initSequence();
|
||||||
};
|
};
|
||||||
|
|
||||||
MenuModule.prototype.leave = function() {
|
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) {
|
MenuModule.prototype.addViewController = function(vc) {
|
||||||
|
@ -60,5 +75,13 @@ MenuModule.prototype.addViewController = function(vc) {
|
||||||
return 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) {
|
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');
|
//var async = require('async');
|
||||||
|
|
||||||
|
// :TODO: clean up requires
|
||||||
|
// :TODO: rename to matrix.js
|
||||||
|
|
||||||
exports.moduleInfo = {
|
exports.moduleInfo = {
|
||||||
name : 'Matrix',
|
name : 'Matrix',
|
||||||
desc : 'Standardish Matrix',
|
desc : 'Standardish Matrix',
|
||||||
author : 'NuSkooler',
|
author : 'NuSkooler',
|
||||||
};
|
};
|
||||||
|
|
||||||
//exports.entryPoint = entryPoint;
|
|
||||||
exports.getModule = MatrixModule;
|
exports.getModule = MatrixModule;
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,10 +34,12 @@ require('util').inherits(MatrixModule, MenuModule);
|
||||||
|
|
||||||
MatrixModule.prototype.enter = function(client) {
|
MatrixModule.prototype.enter = function(client) {
|
||||||
MatrixModule.super_.prototype.enter.call(this, 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) {
|
MatrixModule.prototype.mciReady = function(mciMap) {
|
||||||
|
@ -66,6 +70,11 @@ MatrixModule.prototype.mciReady = function(mciMap) {
|
||||||
|
|
||||||
vc.on('submit', function onSubmit(form) {
|
vc.on('submit', function onSubmit(form) {
|
||||||
console.log(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);
|
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