displayArtAndPrepViewController() is now available in MenuModule and derived classes
* This functionality was common enough to move to MenuModule and can shorthand a good amount of boilerplate code. See code for usage.
This commit is contained in:
parent
f02624c14d
commit
2e4df79d52
|
@ -306,68 +306,17 @@ exports.getModule = class FileAreaList extends MenuModule {
|
||||||
return this.updateCustomViewTextsWithFilter(category, startId, this.currentFileEntry.entryInfo);
|
return this.updateCustomViewTextsWithFilter(category, startId, this.currentFileEntry.entryInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
displayArtAndPrepViewController(name, options, cb) {
|
displayArtDataPrepCallback(name, artData, viewController) {
|
||||||
const self = this;
|
if ('details' === name) {
|
||||||
const config = this.menuConfig.config;
|
try {
|
||||||
|
this.detailsInfoArea = {
|
||||||
async.waterfall(
|
top: artData.mciMap.XY2.position,
|
||||||
[
|
bottom: artData.mciMap.XY3.position,
|
||||||
function readyAndDisplayArt(callback) {
|
};
|
||||||
if(options.clearScreen) {
|
} catch(e) {
|
||||||
self.client.term.rawWrite(ansi.resetScreen());
|
throw Errors.DoesNotExist('Missing XY2 and XY3 position indicators!');
|
||||||
}
|
|
||||||
|
|
||||||
theme.displayThemedAsset(
|
|
||||||
config.art[name],
|
|
||||||
self.client,
|
|
||||||
{ font : self.menuConfig.font, trailingLF : false },
|
|
||||||
(err, artData) => {
|
|
||||||
return callback(err, artData);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
function prepeareViewController(artData, callback) {
|
|
||||||
if(_.isUndefined(self.viewControllers[name])) {
|
|
||||||
const vcOpts = {
|
|
||||||
client : self.client,
|
|
||||||
formId : FormIds[name],
|
|
||||||
};
|
|
||||||
|
|
||||||
if(!_.isUndefined(options.noInput)) {
|
|
||||||
vcOpts.noInput = options.noInput;
|
|
||||||
}
|
|
||||||
|
|
||||||
const vc = self.addViewController(name, new ViewController(vcOpts));
|
|
||||||
|
|
||||||
if('details' === name) {
|
|
||||||
try {
|
|
||||||
self.detailsInfoArea = {
|
|
||||||
top : artData.mciMap.XY2.position,
|
|
||||||
bottom : artData.mciMap.XY3.position,
|
|
||||||
};
|
|
||||||
} catch(e) {
|
|
||||||
return callback(Errors.DoesNotExist('Missing XY2 and XY3 position indicators!'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const loadOpts = {
|
|
||||||
callingMenu : self,
|
|
||||||
mciMap : artData.mciMap,
|
|
||||||
formId : FormIds[name],
|
|
||||||
};
|
|
||||||
|
|
||||||
return vc.loadFromMenuConfig(loadOpts, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
self.viewControllers[name].setFocus(true);
|
|
||||||
return callback(null);
|
|
||||||
|
|
||||||
},
|
|
||||||
],
|
|
||||||
err => {
|
|
||||||
return cb(err);
|
|
||||||
}
|
}
|
||||||
);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
displayBrowsePage(clearScreen, cb) {
|
displayBrowsePage(clearScreen, cb) {
|
||||||
|
@ -388,7 +337,12 @@ exports.getModule = class FileAreaList extends MenuModule {
|
||||||
return callback(null);
|
return callback(null);
|
||||||
},
|
},
|
||||||
function prepArtAndViewController(callback) {
|
function prepArtAndViewController(callback) {
|
||||||
return self.displayArtAndPrepViewController('browse', { clearScreen : clearScreen }, callback);
|
return self.displayArtAndPrepViewController(
|
||||||
|
'browse',
|
||||||
|
FormIds.browse,
|
||||||
|
{ clearScreen : clearScreen, artDataPrep: self.displayArtDataPrepCallback.bind(self) },
|
||||||
|
callback
|
||||||
|
);
|
||||||
},
|
},
|
||||||
function loadCurrentFileInfo(callback) {
|
function loadCurrentFileInfo(callback) {
|
||||||
self.currentFileEntry = new FileEntry();
|
self.currentFileEntry = new FileEntry();
|
||||||
|
@ -457,12 +411,17 @@ exports.getModule = class FileAreaList extends MenuModule {
|
||||||
}
|
}
|
||||||
|
|
||||||
displayDetailsPage(cb) {
|
displayDetailsPage(cb) {
|
||||||
const self = this;
|
const self = this;
|
||||||
|
|
||||||
async.series(
|
async.series(
|
||||||
[
|
[
|
||||||
function prepArtAndViewController(callback) {
|
function prepArtAndViewController(callback) {
|
||||||
return self.displayArtAndPrepViewController('details', { clearScreen : true }, callback);
|
return self.displayArtAndPrepViewController(
|
||||||
|
'details',
|
||||||
|
FormIds.details,
|
||||||
|
{ clearScreen : true, artDataPrep: self.displayArtDataPrepCallback.bind(self) },
|
||||||
|
callback
|
||||||
|
);
|
||||||
},
|
},
|
||||||
function populateViews(callback) {
|
function populateViews(callback) {
|
||||||
self.populateCustomLabels('details', MciViewIds.details.customRangeStart);
|
self.populateCustomLabels('details', MciViewIds.details.customRangeStart);
|
||||||
|
@ -678,7 +637,16 @@ exports.getModule = class FileAreaList extends MenuModule {
|
||||||
gotoTopPos();
|
gotoTopPos();
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.displayArtAndPrepViewController(name, { clearScreen : false, noInput : true }, callback);
|
return self.displayArtAndPrepViewController(
|
||||||
|
name,
|
||||||
|
FormIds[name],
|
||||||
|
{
|
||||||
|
clearScreen : false,
|
||||||
|
noInput : true,
|
||||||
|
artDataPrep: self.displayArtDataPrepCallback.bind(self)
|
||||||
|
},
|
||||||
|
callback
|
||||||
|
);
|
||||||
},
|
},
|
||||||
function populateViews(callback) {
|
function populateViews(callback) {
|
||||||
self.lastDetailsViewController = self.viewControllers[name];
|
self.lastDetailsViewController = self.viewControllers[name];
|
||||||
|
|
|
@ -168,7 +168,11 @@ exports.getModule = class FileBaseDownloadQueueManager extends MenuModule {
|
||||||
async.series(
|
async.series(
|
||||||
[
|
[
|
||||||
function prepArtAndViewController(callback) {
|
function prepArtAndViewController(callback) {
|
||||||
return self.displayArtAndPrepViewController('queueManager', { clearScreen : clearScreen }, callback);
|
return self.displayArtAndPrepViewController(
|
||||||
|
'queueManager', FormIds.queueManager,
|
||||||
|
{ clearScreen : clearScreen },
|
||||||
|
callback
|
||||||
|
);
|
||||||
},
|
},
|
||||||
function populateViews(callback) {
|
function populateViews(callback) {
|
||||||
return self.updateDownloadQueueView(callback);
|
return self.updateDownloadQueueView(callback);
|
||||||
|
@ -181,57 +185,4 @@ exports.getModule = class FileBaseDownloadQueueManager extends MenuModule {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
displayArtAndPrepViewController(name, options, cb) {
|
|
||||||
const self = this;
|
|
||||||
const config = this.menuConfig.config;
|
|
||||||
|
|
||||||
async.waterfall(
|
|
||||||
[
|
|
||||||
function readyAndDisplayArt(callback) {
|
|
||||||
if(options.clearScreen) {
|
|
||||||
self.client.term.rawWrite(ansi.resetScreen());
|
|
||||||
}
|
|
||||||
|
|
||||||
theme.displayThemedAsset(
|
|
||||||
config.art[name],
|
|
||||||
self.client,
|
|
||||||
{ font : self.menuConfig.font, trailingLF : false },
|
|
||||||
(err, artData) => {
|
|
||||||
return callback(err, artData);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
function prepeareViewController(artData, callback) {
|
|
||||||
if(_.isUndefined(self.viewControllers[name])) {
|
|
||||||
const vcOpts = {
|
|
||||||
client : self.client,
|
|
||||||
formId : FormIds[name],
|
|
||||||
};
|
|
||||||
|
|
||||||
if(!_.isUndefined(options.noInput)) {
|
|
||||||
vcOpts.noInput = options.noInput;
|
|
||||||
}
|
|
||||||
|
|
||||||
const vc = self.addViewController(name, new ViewController(vcOpts));
|
|
||||||
|
|
||||||
const loadOpts = {
|
|
||||||
callingMenu : self,
|
|
||||||
mciMap : artData.mciMap,
|
|
||||||
formId : FormIds[name],
|
|
||||||
};
|
|
||||||
|
|
||||||
return vc.loadFromMenuConfig(loadOpts, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
self.viewControllers[name].setFocus(true);
|
|
||||||
return callback(null);
|
|
||||||
|
|
||||||
},
|
|
||||||
],
|
|
||||||
err => {
|
|
||||||
return cb(err);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -173,7 +173,12 @@ exports.getModule = class FileBaseWebDownloadQueueManager extends MenuModule {
|
||||||
async.series(
|
async.series(
|
||||||
[
|
[
|
||||||
function prepArtAndViewController(callback) {
|
function prepArtAndViewController(callback) {
|
||||||
return self.displayArtAndPrepViewController('queueManager', { clearScreen : clearScreen }, callback);
|
return self.displayArtAndPrepViewController(
|
||||||
|
'queueManager',
|
||||||
|
FormIds.queueManager,
|
||||||
|
{ clearScreen : clearScreen },
|
||||||
|
callback
|
||||||
|
);
|
||||||
},
|
},
|
||||||
function prepareQueueDownloadLinks(callback) {
|
function prepareQueueDownloadLinks(callback) {
|
||||||
const webDlExpireTimeFormat = self.menuConfig.config.webDlExpireTimeFormat || 'YYYY-MMM-DD @ h:mm';
|
const webDlExpireTimeFormat = self.menuConfig.config.webDlExpireTimeFormat || 'YYYY-MMM-DD @ h:mm';
|
||||||
|
@ -226,57 +231,4 @@ exports.getModule = class FileBaseWebDownloadQueueManager extends MenuModule {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
displayArtAndPrepViewController(name, options, cb) {
|
|
||||||
const self = this;
|
|
||||||
const config = this.menuConfig.config;
|
|
||||||
|
|
||||||
async.waterfall(
|
|
||||||
[
|
|
||||||
function readyAndDisplayArt(callback) {
|
|
||||||
if(options.clearScreen) {
|
|
||||||
self.client.term.rawWrite(ansi.resetScreen());
|
|
||||||
}
|
|
||||||
|
|
||||||
theme.displayThemedAsset(
|
|
||||||
config.art[name],
|
|
||||||
self.client,
|
|
||||||
{ font : self.menuConfig.font, trailingLF : false },
|
|
||||||
(err, artData) => {
|
|
||||||
return callback(err, artData);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
function prepeareViewController(artData, callback) {
|
|
||||||
if(_.isUndefined(self.viewControllers[name])) {
|
|
||||||
const vcOpts = {
|
|
||||||
client : self.client,
|
|
||||||
formId : FormIds[name],
|
|
||||||
};
|
|
||||||
|
|
||||||
if(!_.isUndefined(options.noInput)) {
|
|
||||||
vcOpts.noInput = options.noInput;
|
|
||||||
}
|
|
||||||
|
|
||||||
const vc = self.addViewController(name, new ViewController(vcOpts));
|
|
||||||
|
|
||||||
const loadOpts = {
|
|
||||||
callingMenu : self,
|
|
||||||
mciMap : artData.mciMap,
|
|
||||||
formId : FormIds[name],
|
|
||||||
};
|
|
||||||
|
|
||||||
return vc.loadFromMenuConfig(loadOpts, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
self.viewControllers[name].setFocus(true);
|
|
||||||
return callback(null);
|
|
||||||
|
|
||||||
},
|
|
||||||
],
|
|
||||||
err => {
|
|
||||||
return cb(err);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,6 +11,7 @@ const stringFormat = require('../core/string_format.js');
|
||||||
const MultiLineEditTextView = require('../core/multi_line_edit_text_view.js').MultiLineEditTextView;
|
const MultiLineEditTextView = require('../core/multi_line_edit_text_view.js').MultiLineEditTextView;
|
||||||
const Errors = require('../core/enig_error.js').Errors;
|
const Errors = require('../core/enig_error.js').Errors;
|
||||||
const { getPredefinedMCIValue } = require('../core/predefined_mci.js');
|
const { getPredefinedMCIValue } = require('../core/predefined_mci.js');
|
||||||
|
const EnigAssert = require('./enigma_assert');
|
||||||
|
|
||||||
// deps
|
// deps
|
||||||
const async = require('async');
|
const async = require('async');
|
||||||
|
@ -563,6 +564,66 @@ exports.MenuModule = class MenuModule extends PluginModule {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
displayArtAndPrepViewController(name, formId, options, cb) {
|
||||||
|
const config = this.menuConfig.config;
|
||||||
|
EnigAssert(_.isObject(config));
|
||||||
|
|
||||||
|
async.waterfall(
|
||||||
|
[
|
||||||
|
(callback) => {
|
||||||
|
if(options.clearScreen) {
|
||||||
|
this.client.term.rawWrite(ansi.resetScreen());
|
||||||
|
}
|
||||||
|
|
||||||
|
theme.displayThemedAsset(
|
||||||
|
config.art[name],
|
||||||
|
this.client,
|
||||||
|
{ font : this.menuConfig.font, trailingLF : false },
|
||||||
|
(err, artData) => {
|
||||||
|
return callback(err, artData);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
(artData, callback) => {
|
||||||
|
if(_.isUndefined(this.viewControllers[name])) {
|
||||||
|
const vcOpts = {
|
||||||
|
client : this.client,
|
||||||
|
formId : formId,
|
||||||
|
};
|
||||||
|
|
||||||
|
if(!_.isUndefined(options.noInput)) {
|
||||||
|
vcOpts.noInput = options.noInput;
|
||||||
|
}
|
||||||
|
|
||||||
|
const vc = this.addViewController(name, new ViewController(vcOpts));
|
||||||
|
|
||||||
|
if (_.isFunction(options.artDataPrep)) {
|
||||||
|
try {
|
||||||
|
options.artDataPrep(name, artData, vc);
|
||||||
|
} catch(e) {
|
||||||
|
return callback(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const loadOpts = {
|
||||||
|
callingMenu : this,
|
||||||
|
mciMap : artData.mciMap,
|
||||||
|
formId : formId,
|
||||||
|
};
|
||||||
|
|
||||||
|
return vc.loadFromMenuConfig(loadOpts, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.viewControllers[name].setFocus(true);
|
||||||
|
return callback(null);
|
||||||
|
},
|
||||||
|
],
|
||||||
|
err => {
|
||||||
|
return cb(err);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
setViewText(formName, mciId, text, appendMultiLine) {
|
setViewText(formName, mciId, text, appendMultiLine) {
|
||||||
const view = this.getView(formName, mciId);
|
const view = this.getView(formName, mciId);
|
||||||
if(!view) {
|
if(!view) {
|
||||||
|
|
Loading…
Reference in New Issue