* WIP on standard menu and menu.json MCI / form mapping. Much to do...
This commit is contained in:
parent
4c4b0de54c
commit
cca9334bd3
|
@ -9,9 +9,12 @@ var conf = require('./config.js');
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var paths = require('path');
|
var paths = require('path');
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
|
var assert = require('assert');
|
||||||
|
|
||||||
var stripJsonComments = require('strip-json-comments');
|
var stripJsonComments = require('strip-json-comments');
|
||||||
|
|
||||||
exports.loadMenu = loadMenu;
|
exports.loadMenu = loadMenu;
|
||||||
|
exports.getFormConfig = getFormConfig;
|
||||||
|
|
||||||
function loadMenu(name, client, cb) {
|
function loadMenu(name, client, cb) {
|
||||||
/*
|
/*
|
||||||
|
@ -58,4 +61,53 @@ function loadMenu(name, client, cb) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function getFormConfig(menuConfig, mciMap, cb) {
|
||||||
|
async.filter(
|
||||||
|
menuConfig.form,
|
||||||
|
function check(form, callback) {
|
||||||
|
if(!form.mciReq || form.mciReq.length <= 0) {
|
||||||
|
callback(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var count = form.mciReq.length;
|
||||||
|
for(var i = 0; i < count; ++i) {
|
||||||
|
if(!mciMap[form.mciReq[i]]) {
|
||||||
|
callback(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
callback(true);
|
||||||
|
},
|
||||||
|
function filtered(form) {
|
||||||
|
if(form.length > 0) {
|
||||||
|
assert(1 === form.length);
|
||||||
|
cb(form[0]);
|
||||||
|
} else {
|
||||||
|
cb(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
function getFormConfig(menuConfig, mciMap) {
|
||||||
|
var count = menuConfig.form ? menuConfig.form.length : 0;
|
||||||
|
var mciReq;
|
||||||
|
for(var i = 0; i < count; ++i) {
|
||||||
|
mciReq = menuConfig.form[i].mciReq;
|
||||||
|
if(mciReq) {
|
||||||
|
if(mciReq.length === mciMap.length) {
|
||||||
|
for(var m = 0; m < mciReq.length; ++m) {
|
||||||
|
if(!mciMap[mciReq[m]]) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
|
@ -34,6 +34,8 @@ LogOffModule.prototype.mciReady = function(mciMap) {
|
||||||
|
|
||||||
LogOffModule.prototype.finishedLoading = function() {
|
LogOffModule.prototype.finishedLoading = function() {
|
||||||
LogOffModule.super_.prototype.finishedLoading.call(this);
|
LogOffModule.super_.prototype.finishedLoading.call(this);
|
||||||
|
|
||||||
|
this.client.term.write(ansi.normal() + '\nATH0\n');
|
||||||
|
|
||||||
this.client.end();
|
this.client.end();
|
||||||
};
|
};
|
|
@ -4,7 +4,17 @@
|
||||||
*/
|
*/
|
||||||
"matrix" : {
|
"matrix" : {
|
||||||
"art" : "matrix",
|
"art" : "matrix",
|
||||||
"module" : "matrix"
|
"form" : [
|
||||||
|
{
|
||||||
|
"mciReq" : [ "VM1" ],
|
||||||
|
"VM1" : {
|
||||||
|
"submit" : true,
|
||||||
|
"focus" : true,
|
||||||
|
"items" : [ "Login", "Apply", "Log Off" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
//"module" : "matrix"
|
||||||
},
|
},
|
||||||
"login" : {
|
"login" : {
|
||||||
"art" : "login",
|
"art" : "login",
|
||||||
|
|
|
@ -0,0 +1,114 @@
|
||||||
|
/* jslint node: true */
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var ansi = require('../core/ansi_term.js');
|
||||||
|
var MenuModule = require('../core/menu_module.js').MenuModule;
|
||||||
|
var ViewController = require('../core/view_controller.js').ViewController;
|
||||||
|
var menuUtil = require('../core/menu_util.js');
|
||||||
|
|
||||||
|
exports.getModule = StandardMenuModule;
|
||||||
|
|
||||||
|
exports.moduleInfo = {
|
||||||
|
name : 'Standard Menu Module',
|
||||||
|
desc : 'Menu module handling most standard stuff',
|
||||||
|
author : 'NuSkooler',
|
||||||
|
};
|
||||||
|
|
||||||
|
function StandardMenuModule(menuConfig) {
|
||||||
|
MenuModule.call(this, menuConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
require('util').inherits(StandardMenuModule, MenuModule);
|
||||||
|
|
||||||
|
|
||||||
|
StandardMenuModule.prototype.enter = function(client) {
|
||||||
|
StandardMenuModule.super_.prototype.enter.call(this, client);
|
||||||
|
};
|
||||||
|
|
||||||
|
StandardMenuModule.prototype.beforeArt = function() {
|
||||||
|
StandardMenuModule.super_.prototype.beforeArt.call(this);
|
||||||
|
|
||||||
|
this.client.term.write(ansi.resetScreen()); // :TODO: this should be optional
|
||||||
|
};
|
||||||
|
|
||||||
|
StandardMenuModule.prototype.mciReady = function(mciMap) {
|
||||||
|
StandardMenuModule.super_.prototype.mciReady.call(this, mciMap);
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
menuUtil.getFormConfig(self.menuConfig, mciMap, function onFormConfig(formConfig) {
|
||||||
|
console.log(formConfig);
|
||||||
|
var vc = self.addViewController(new ViewController(self.client));
|
||||||
|
vc.loadFromMCIMap(mciMap);
|
||||||
|
vc.setViewOrder();
|
||||||
|
|
||||||
|
vc.getView(1).setItems(['Login', 'New User', 'Goodbye!']);
|
||||||
|
vc.getView(1).submit = true;
|
||||||
|
vc.switchFocus(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
"menuName" : {
|
||||||
|
"form" : [
|
||||||
|
{
|
||||||
|
"mciReq" : [ "MC1", "MC2", ... ],
|
||||||
|
"MC1" : {
|
||||||
|
"text" : "...",
|
||||||
|
"focus" : true,
|
||||||
|
"submit" : true,
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
if(mciMap.ET1 && mciMap.ET2 && mciMap.BN1 && mciMap.BN2 && mciMap.BN3) {
|
||||||
|
//
|
||||||
|
// Form via EditTextViews and ButtonViews
|
||||||
|
// * ET1 - userName
|
||||||
|
// * ET2 - password
|
||||||
|
// * BN1 - Login
|
||||||
|
// * BN2 - New
|
||||||
|
// * BN3 - Bye!
|
||||||
|
//
|
||||||
|
} else if(mciMap.VM1) {
|
||||||
|
//
|
||||||
|
// Menu via VerticalMenuView
|
||||||
|
//
|
||||||
|
// * VM1 - menu with the following items:
|
||||||
|
// 0 - Login
|
||||||
|
// 1 - New
|
||||||
|
// 2 - Bye!
|
||||||
|
//
|
||||||
|
//var vc = new ViewController(client);
|
||||||
|
var vc = self.addViewController(new ViewController(self.client));
|
||||||
|
|
||||||
|
vc.on('submit', function onSubmit(form) {
|
||||||
|
console.log(form);
|
||||||
|
|
||||||
|
var viewModuleMap = {
|
||||||
|
'0' : 'login',
|
||||||
|
'1' : 'new',
|
||||||
|
'2' : 'logoff',
|
||||||
|
};
|
||||||
|
|
||||||
|
if(0 === form.id && 1 === form.submitId) {
|
||||||
|
console.log(viewModuleMap[form.values[1]]);
|
||||||
|
self.client.gotoMenuModule(viewModuleMap[form.values[1]]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
vc.loadFromMCIMap(mciMap);
|
||||||
|
vc.setViewOrder();
|
||||||
|
// :TODO: Localize
|
||||||
|
vc.getView(1).setItems(['Login', 'New User', 'Goodbye!']);
|
||||||
|
vc.getView(1).submit = true;
|
||||||
|
vc.switchFocus(1);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
};
|
Loading…
Reference in New Issue