* pipeWrite() can now parse Renegade via spec='renegade'

* WIP on user config
This commit is contained in:
Bryan Ashby 2015-10-13 00:35:37 -06:00
parent ea8061ae85
commit 171ee75043
5 changed files with 72 additions and 4 deletions

View File

@ -4,6 +4,7 @@
// ENiGMA½
var Log = require('./logger.js').log;
var enigmaToAnsi = require('./color_codes.js').enigmaToAnsi;
var renegadeToAnsi = require('./color_codes.js').renegadeToAnsi;
var iconv = require('iconv-lite');
var assert = require('assert');
@ -137,8 +138,15 @@ ClientTerminal.prototype.rawWrite = function(s) {
this.output.write(s);
};
ClientTerminal.prototype.pipeWrite = function(s) {
this.write(enigmaToAnsi(s, this));
ClientTerminal.prototype.pipeWrite = function(s, spec) {
spec = spec || 'enigma';
var conv = {
enigma : enigmaToAnsi,
renegade : renegadeToAnsi,
}[spec] || enigmaToAnsi;
this.write(conv(s, this));
};
ClientTerminal.prototype.encode = function(s, convertLineFeeds) {

View File

@ -7,6 +7,7 @@ var ViewController = require('./view_controller.js').ViewController;
var async = require('async');
var assert = require('assert');
var _ = require('lodash');
var moment = require('moment');
exports.getModule = UserConfigModule;
@ -16,11 +17,30 @@ exports.moduleInfo = {
author : 'NuSkooler',
};
var MciCodeIds = {
Email : 1,
Loc : 2,
Web : 3,
Affils : 4,
BirthDate : 5,
Sex : 6,
Theme : 10,
ScreenSize : 11,
};
function UserConfigModule(options) {
MenuModule.call(this, options);
var self = this;
self.setViewText = function(viewId, text) {
var v = self.viewControllers.menu.getView(viewId);
if(v) {
v.setText(text);
}
};
}
@ -28,12 +48,26 @@ require('util').inherits(UserConfigModule, MenuModule);
UserConfigModule.prototype.mciReady = function(mciData, cb) {
var self = this;
var vc = self.viewControllers.allViews = new ViewController( { client : self.client} );
var vc = self.viewControllers.menu = new ViewController( { client : self.client} );
async.series(
[
function callParentMciReady(callback) {
UserConfigModule.super_.prototype.mciReady.call(self, mciData, callback);
},
function loadFromConfig(callback) {
vc.loadFromMenuConfig( { callingMenu : self, mciMap : mciData.menu }, callback);
},
function populateViews(callback) {
var user = self.client.user;
self.setViewText(MciCodeIds.Email, user.properties.email_address);
self.setViewText(MciCodeIds.Loc, user.properties.location);
self.setViewText(MciCodeIds.Web, user.properties.web_address);
self.setViewText(MciCodeIds.Affils, user.properties.affiliation);
self.setViewText(MciCodeIds.BirthDate, moment(user.properties.birthdate).format('YYYYMMDD'));
self.setViewText(MciCodeIds.Sex, user.properties.sex);
}
]
);

View File

@ -559,7 +559,7 @@ ViewController.prototype.loadFromMenuConfig = function(options, cb) {
if(err) {
// non-fatal
self.client.log.trace(
{ error : err, mci : Object.keys(options.mciMap), formId : formIdKey },
{ error : err.toString(), mci : Object.keys(options.mciMap), formId : formIdKey },
'Unable to find matching form configuration');
}

View File

@ -460,6 +460,32 @@
mainMenuUserConfig: {
module: @systemModule:user_config
art: CONFSCR
form: {
0: {
mci: {
ET1: {
argName: email
}
ET2: {
argName: location
}
ET3: {
argName: webAddress
}
ET4: {
argName: affils
}
ME5: {
maskPattern: "####/##/##"
argName: birthdate
}
ME11: {
maskPattern: "##x##"
argName: termSize
}
}
}
}
}
///////////////////////////////////////////////////////////////////////
// Message Area Related