arrow-admin
Version:
Arrow Admin Website
66 lines (59 loc) • 2.29 kB
JavaScript
/* global LANGUAGES */
/* global ace */
/* global APPC_SESSION */
define(['toc', 'jquery'], function (TOC, $) {
var config_editor;
return function (sub) {
var loadingHTML = '<div id="loader"><i class="icon-spin5 animate-spin"></i> Loading...</div>';
$('#mainContent').html(loadingHTML);
var user = APPC_SESSION && APPC_SESSION.valid && APPC_SESSION.user || {},
auth = 'org_id=' + user.org_id + '&user_id=' + user.user_id + '&username=' + user.username,
configsURL = 'configurations?' + auth;
$.get(configsURL, function (evt) {
var content = $('#mainContent'),
body = $('body');
body.removeClass('error-tpl');
body.addClass('has-nav-secondary');
TOC.renderMenu(false, evt.results.map(function (config) {
return {
title: config,
url: config
};
}));
if (sub) {
var configURL = 'configurations/' + sub + '?' + auth;
$.get(configURL, function (evt) {
// TODO: Handle errors.
content.removeClass('panel content');
content.html('<div class="full-editor">' +
'<div class="pull-left"><button id="save_config_changes" class="btn btn-primary" data-saving-text="Saving Changes..." data-saved-text="Changes saved! Server reloading...">Save Changes</button></div>' +
'<textarea id="config_editor">' + evt.results + '</textarea></div>');
config_editor = ace.edit("config_editor");
config_editor.setTheme("ace/theme/monokai");
config_editor.getSession().setMode("ace/mode/javascript");
var saveButton = $('#save_config_changes');
saveButton.click(function () {
var annotations = config_editor.getSession().getAnnotations();
if (annotations && annotations.length > 0) {
alert('Please correct all annotations before trying to save this config file!');
return;
}
saveButton.button('saving');
var code = config_editor.getValue();
$.post(configURL, {code: code}, function (evt) {
// TODO: Handle errors.
saveButton.button('saved');
setTimeout(function () {
saveButton.button('reset');
}, 2000);
});
});
});
}
else {
content.addClass('panel content');
content.html('<div class="jumbotron"><p>Select a config file in the menu to get started</p></div>');
}
});
};
});