1
0
mirror of https://github.com/gusaul/grpcox.git synced 2024-12-26 10:50:11 +00:00
grpcox/index/js/style.js
2018-11-05 02:56:06 +07:00

181 lines
4.6 KiB
JavaScript

var target, use_tls, editor;
$('#get-services').click(function(){
var t = get_valid_target();
if (target != t) {
target = t;
use_tls = $('#use-tls').is(":checked");
} else {
return false;
}
$('.other-elem').hide();
var button = $(this).html();
$.ajax({
url: "server/"+target+"/services",
global: true,
method: "GET",
success: function(res){
if (res.error) {
target = "";
use_tls = "";
alert(res.error);
return;
}
$("#select-service").html(new Option("Choose Service", ""));
$.each(res.data, (_, item) => $("#select-service").append(new Option(item, item)));
$('#choose-service').show();
},
error: function(_, _, errorThrown) {
target = "";
use_tls = "";
alert(errorThrown);
},
beforeSend: function(xhr){
xhr.setRequestHeader('use_tls', use_tls);
$(this).html("Loading...");
},
complete: function(){
$(this).html(button);
}
});
});
$('#select-service').change(function(){
var selected = $(this).val();
if (selected == "") {
return false;
}
$('#body-request').hide();
$('#response').hide();
$.ajax({
url: "server/"+target+"/service/"+selected+"/functions",
global: true,
method: "GET",
success: function(res){
if (res.error) {
alert(res.error);
return;
}
$("#select-function").html(new Option("Choose Methods", ""));
$.each(res.data, (_, item) => $("#select-function").append(new Option(item.substr(selected.length) , item)));
$('#choose-function').show();
},
error: err,
beforeSend: function(xhr){
xhr.setRequestHeader('use_tls', use_tls);
show_loading();
},
complete: function(){
hide_loading();
}
});
});
$('#select-function').change(function(){
var selected = $(this).val();
if (selected == "") {
return false;
}
$('#response').hide();
$.ajax({
url: "server/"+target+"/function/"+selected+"/describe",
global: true,
method: "GET",
success: function(res){
if (res.error) {
alert(res.error);
return;
}
generate_editor(res.data.template);
$("#schema-proto").html(PR.prettyPrintOne(res.data.schema));
$('#body-request').show();
},
error: err,
beforeSend: function(xhr){
xhr.setRequestHeader('use_tls', use_tls);
show_loading();
},
complete: function(){
hide_loading();
}
});
});
$('#invoke-func').click(function(){
var func = $('#select-function').val();
if (func == "") {
return false;
}
var body = editor.getValue();
var button = $(this).html();
$.ajax({
url: "server/"+target+"/function/"+func+"/invoke",
global: true,
method: "POST",
data: body,
dataType: "json",
success: function(res){
if (res.error) {
alert(res.error);
return;
}
$("#json-response").html(PR.prettyPrintOne(res.data.result));
$("#timer-resp span").html(res.data.timer);
$('#response').show();
},
error: err,
beforeSend: function(xhr){
xhr.setRequestHeader('use_tls', use_tls);
$(this).html("Loading...");
},
complete: function(){
$(this).html(button);
}
});
});
function generate_editor(content) {
if(editor) {
editor.setValue(content);
return true;
}
$("#editor").html(content);
editor = ace.edit("editor");
editor.setOptions({
maxLines: Infinity
});
editor.renderer.setScrollMargin(10, 10, 10, 10);
editor.setTheme("ace/theme/github");
editor.session.setMode("ace/mode/json");
editor.renderer.setShowGutter(false);
}
function get_valid_target() {
t = $('#server-target').val().trim();
if (t == "") {
return target;
}
ts = t.split("://");
if (ts.length > 1) {
$('#server-target').val(ts[1]);
return ts[1];
}
return ts[0];
}
function err(_, _, errorThrown) {
alert(errorThrown);
}
function show_loading() {
$('.loading-overlay').show();
}
function hide_loading() {
$('.loading-overlay').hide();
}