Skip to content

Instantly share code, notes, and snippets.

@ctataryn
Last active November 17, 2017 17:30
Show Gist options
  • Save ctataryn/58ed333e4d810073e7b766425889b325 to your computer and use it in GitHub Desktop.
Save ctataryn/58ed333e4d810073e7b766425889b325 to your computer and use it in GitHub Desktop.
var term = require( 'terminal-kit' ).terminal ;
var Menu = {
MONGO : {idx: 0, name: 'Mongo Query'},
RABBIT: {idx: 1, name: 'Rabbit Queue'},
GO : {idx: 2, name: 'Initiate Transfer'},
EXIT : {idx: 3, name: 'Exit.'}
};
var items = Object.values(Menu).map((item) => item.name);
var itemValues = {};
term.saveCursor();
start();
var menu, inputField, selected;
function start() {
displayMenu(items);
}
function eraseMenu() {
var position = menu.getPosition() ;
term.moveTo( position.x , position.y ) ;
term.eraseDisplayBelow();
}
function eraseInputField() {
var position = inputField.getPosition();
term.moveTo(1, position.y - 1);
term.eraseLineAfter();
term.eraseDisplayBelow();
}
function displayMenu(items) {
menu = term.singleColumnMenu( items, ( error, response ) => {
//menu.on('submit', (response) => {
eraseMenu();
switch (response.selectedIndex) {
case Menu.MONGO.idx: { displayInput(' Enter a Mongo Query: ', 'MONGO'); break; }
case Menu.EXIT.idx: { menu.abort(); process.exit(); }
default: displayInput(' Enter some text: ');
}
});
}
function displayInput(label, itemKey) {
term(label);
inputField = term.inputField(function( error, input ) {
eraseInputField();
if (itemKey) {
itemValues[itemKey] = input;
const item = Menu[itemKey];
items[item.idx] = `${item.name} [${input}]`;
}
displayMenu(items);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment