levelui
Version:
A LevelDB GUI based on atom-shell.
75 lines (58 loc) • 1.99 kB
JavaScript
var dom = require('dom-events');
var cm = require('codemirror');
var js = require('codemirror/mode/javascript/javascript')
var css = require('codemirror/mode/css/css.js')
var xtend = require('xtend');
var query = require('../lib/query');
var lint = require('codemirror/addon/lint/lint');
var jslint = require('codemirror/addon/lint/javascript-lint');
var jsonlint = require('codemirror/addon/lint/json-lint');
var remote = require('remote');
var dialog = remote.require('dialog');
var keyEditor;
var valueEditor;
exports.init = function(database, config) {
var win = remote.getCurrentWindow();
var dialogOpts = {
buttons: ['OK']
};
var editorOpts = {
lineNumbers: true,
mode: 'application/json',
gutters: ['CodeMirror-lint-markers'],
lintWith: cm.jsonValidator,
viewportMargin: Infinity
};
var section = document.querySelector('section.put');
keyEl = section.querySelector('.key textarea');
valueEl = section.querySelector('.value textarea');
saveBtn = section.querySelector('.save');
keyEncodingInput = section.querySelector('.keyEncoding');
valueEncodingInput = section.querySelector('.valueEncoding');
keyEditor = cm.fromTextArea(keyEl, editorOpts);
valueEditor = cm.fromTextArea(valueEl, editorOpts);
dom.on(saveBtn, 'click', function() {
var key = keyEditor.doc.getValue();
var value = valueEditor.doc.getValue();
var putOpts = {
keyEncoding: keyEncodingInput.value || null,
valueEncoding: valueEncodingInput.value || null
};
database.handle.put(key, value, putOpts, function(err) {
if (err) {
dialogOpts.title = 'Error';
dialogOpts.message = err;
}
else {
dialogOpts.title = 'Success';
dialogOpts.message = 'Key added to the database';
}
dialog.showMessageBox(win, dialogOpts);
query.getKeys(database, config);
});
});
};
exports.onShow = function() {
keyEditor.refresh();
valueEditor.refresh();
};