teleport/client/tp_assist_macos/site/js/config.js

154 lines
3.8 KiB
JavaScript
Raw Normal View History

2017-10-10 09:31:50 +00:00
"use strict";
var g_url_base = 'http://127.0.0.1:50022';
var g_cfg = null;
var dom = {
term_type: $('#term-type'),
term_profile: $('#term-profile'),
btn_save: $('#btn-save')
};
var get_config = function () {
$.ajax({
type: 'GET',
timeout: 5000,
url: g_url_base + '/api/get_config',
jsonp: 'callback',
dataType: 'json',
success: function (ret) {
if (ret.code == 0) {
g_cfg = ret.data;
update_dom();
} else {
notify_error("获取配置信息失败!");
}
},
error: function (jqXhr, _error, _e) {
console.log('state:', jqXhr.state());
notify_error("获取配置信息失败!");
}
});
}
function update_dom() {
console.log('---', g_cfg, g_cfg.term, g_cfg.term.available);
dom.term_type.html('');
if (!_.isUndefined(g_cfg.term)) {
if (_.isUndefined(g_cfg.term.selected)) {
g_cfg.term.selected = '';
}
if (!_.isUndefined(g_cfg.term.available) && g_cfg.term.available.length > 0) {
var selected = '';
var profile = '';
var html = [];
for (var i = 0; i < g_cfg.term.available.length; i++) {
var item = g_cfg.term.available[i];
if (selected === '' || item.name === g_cfg.term.selected) {
selected = item.name;
profile = item.profile;
}
html.push('<option id="term-' + item.name + '" value="' + item.name + '">' + item.display + '</option>');
}
dom.term_type.html(html.join(''));
dom.term_type.val(selected);
dom.term_profile.val(profile);
}
}
}
function on_term_change() {
g_cfg.term.selected = dom.term_type.val();
for (var i = 0; i < g_cfg.term.available.length; i++) {
var item = g_cfg.term.available[i];
if (item.name === g_cfg.term.selected) {
dom.term_profile.val(item.profile);
return;
}
}
notify_error('所选的终端配置项并不存在!');
}
function on_save() {
if (g_cfg === null)
return;
for (var i = 0; i < g_cfg.term.available.length; i++) {
var item = g_cfg.term.available[i];
if (item.name === g_cfg.term.selected) {
item.profile = dom.term_profile.val();
break;
}
}
var args_ = encodeURIComponent(JSON.stringify(g_cfg));
$.ajax({
type: 'GET',
timeout: 5000,
url: g_url_base + '/api/set_config/' + args_,
jsonp: 'callback',
dataType: 'json',
success: function (ret) {
if (ret.code == 0) {
notify_success('设置保存成功!');
} else {
notify_error('设置保存失败!' + ret.code);
}
},
error: function () {
notify_error('网络故障,设置保存失败');
}
});
}
function notify_error(message_, title_) {
var _title = title_ || '';
$.gritter.add({
class_name: 'gritter-error',
time: 10000,
title: '<i class="fa fa-warning fa-fw"></i> 错误:' + _title,
text: message_
});
console.error('错误', _title, message_);
};
function notify_success(message_, title_) {
var _title = title_ || null;
if (_title !== null)
_title = '<i class="fa fa-check-square fa-fw"></i> ' + _title;
$.gritter.add({
class_name: 'gritter-success',
time: 5000,
title: _title,
text: message_
});
};
$(document).ready(function () {
get_config();
dom.term_type.change(function () {
on_term_change();
});
dom.btn_save.click(function () {
on_save();
});
});