source: trunk/zoo-project/zoo-services/utils/open-api/static/openapi.js @ 967

Last change on this file since 967 was 967, checked in by djay, 3 years ago

Add support for the two inputs / outputs syntaxes discussed in SWG in both the ZOO-Kernel and the HTML basic UI. Update documentation, add a section for the ZOO-API in Python language section. Rename variables in service.c to ease readabiliy.

File size: 7.7 KB
Line 
1var socket;
2function addElementToList(){
3    var lClosure=arguments[0];
4    var isOver=false;
5    var cnt=0;
6    lClosure.parent().parent().find("div").each(function(){
7        if(isOver) return;
8        if($(this).hasClass("btn-group")) isOver=true;
9        if($(this).hasClass("input-group")){
10            lClosure.parent().parent().append($(this)[0].outerHTML);
11            cnt++;
12        }
13    });
14    if(lClosure.parent().parent().find(".input-group").length>cnt)
15        lClosure.next().attr("disabled",false);
16    else
17        lClosure.next().attr("disabled",true);
18}
19function delElementToList(){
20    var lClosure=arguments[0];
21    var isOver=false;
22    var cnt=0;
23    lClosure.parent().parent().find("div").each(function(){
24        if(isOver) return;
25        if($(this).hasClass("btn-group")) isOver=true;
26        if($(this).hasClass("input-group")) cnt++;
27    });
28    if(lClosure.parent().parent().find(".input-group").length>cnt)
29        for(var i=0;i<cnt;i++)
30            lClosure.parent().parent().find(".input-group").last().remove();
31    if(lClosure.parent().parent().find(".input-group").length==cnt)
32        lClosure.attr("disabled",true);
33    else
34        lClosure.attr("disabled",false);
35}
36
37function loadRequest(){
38    var requestObject={
39        "inputs":{},
40        "outputs":{},
41        "subscriber":{},
42        "mode": $("select[name='main_value_mode']").val(),
43        "response": $("select[name='main_value_format']").val()
44    };
45    if($('input[name="oapi_ioAsArray"]').val()=="true"){
46        requestObject["inputs"]=[];
47        requestObject["outputs"]=[];
48    }
49    for(var i=0;i < System["JSON_STR"]["inputs"].length;i++){
50        var cName=System["JSON_STR"]["inputs"][i]["id"].replace(".","_");
51        var selector="input[name='input_value_"+cName+"'],"+
52            "select[name='input_value_"+cName+"']";
53        if($(selector).val()!=""){
54            $(selector).each(function(){
55                var cInput={};
56                if($('input[name="oapi_ioAsArray"]').val()=="true")
57                    cInput={"id": System["JSON_STR"]["inputs"][i]["id"], "input": {}};
58                if(System["JSON_STR"]["inputs"][i]["input"]["formats"]){
59                    var selector1="input[name='input_format_"+cName+"'],"+
60                        "select[name='input_format_"+cName+"']";
61                    console.log($(this).parent().prev().find("select").val());
62                    if($('input[name="oapi_ioAsArray"]').val()=="true"){
63                        cInput["input"]["format"]={
64                            "mimeType": $(this).parent().prev().find("select").val()
65                        };
66                        cInput["input"]["href"]=$(this).val();
67                    }else{
68                        cInput["format"]={
69                            "mimeType": $(this).parent().prev().find("select").val()
70                        };
71                        cInput["href"]=$(this).val();
72                    }
73                }
74                else{
75                    if(System["JSON_STR"]["inputs"][i]["input"]["literalDataDomains"]){
76                        console.log(System["JSON_STR"]["inputs"][i]["input"]["literalDataDomains"]);
77                        if($('input[name="oapi_ioAsArray"]').val()=="true"){
78                            cInput["input"]["dataType"]={
79                                "name": System["JSON_STR"]["inputs"][i]["input"]["literalDataDomains"][0]["dataType"]["name"]
80                            };
81                            cInput["input"]["value"]=$(this).val();
82                        }else{
83                            cInput["dataType"]={
84                                "name": System["JSON_STR"]["inputs"][i]["input"]["literalDataDomains"][0]["dataType"]["name"]
85                            };
86                            cInput["value"]=$(this).val();
87                        }                           
88                    }
89                }
90                console.log(cInput);
91                if($('input[name="oapi_ioAsArray"]').val()=="true")
92                    requestObject["inputs"].push(cInput);
93                else{
94                    if(!requestObject["inputs"][System["JSON_STR"]["inputs"][i]["id"]])
95                        requestObject["inputs"][System["JSON_STR"]["inputs"][i]["id"]]=cInput;
96                    else{
97                        if(!requestObject["inputs"][System["JSON_STR"]["inputs"][i]["id"]].length){
98                            var saveObject=requestObject["inputs"][System["JSON_STR"]["inputs"][i]["id"]];
99                            requestObject["inputs"][System["JSON_STR"]["inputs"][i]["id"]]=[saveObject];
100                        }
101                        requestObject["inputs"][System["JSON_STR"]["inputs"][i]["id"]].push(cInput);
102                    }
103                }
104            });
105        }
106    }
107    console.log(System["JSON_STR"]["outputs"]);
108    for(var i=0;i < System["JSON_STR"]["outputs"].length;i++){
109        var cOutput={};
110        if($('input[name="oapi_ioAsArray"]').val()=="true")
111            cOutputs={"id": System["JSON_STR"]["outputs"][i]["id"]};
112        var cName=System["JSON_STR"]["outputs"][i]["id"].replace(/\./g,"_");
113        if(System["JSON_STR"]["outputs"][i]["output"]["formats"]){
114            var selector="select[name='format_"+cName+"']";
115            cOutput["format"]={
116                "mimeType": $(selector).val()
117            };
118        }
119        else{
120            if(System["JSON_STR"]["outputs"][i]["output"]["literalDataDomains"]){
121                cOutput["dataType"]={
122                    "name": System["JSON_STR"]["outputs"][i]["output"]["literalDataDomains"][0]["dataType"]["name"]
123                };
124            }
125        }
126        var selector1="select[name='transmission_"+cName+"']";
127        cOutput["transmissionMode"]=$(selector1).val();
128        if($('input[name="oapi_ioAsArray"]').val()=="true")
129            requestObject["outputs"].push(cOutput);
130        else
131            requestObject["outputs"][System["JSON_STR"]["outputs"][i]["id"]]=cOutput;
132    }
133   
134    if($("input[name='main_value_successUri']").val()!="")
135        requestObject["subscriber"]["successUri"]=$("input[name='main_value_successUri']").val();
136    if($("input[name='main_value_inProgressUri']").val()!="")
137        requestObject["subscriber"]["inProgressUri"]=$("input[name='main_value_inProgressUri']").val();
138    if($("input[name='main_value_failedUri']").val()!="")
139        requestObject["subscriber"]["failedUri"]=$("input[name='main_value_failedUri']").val();
140    $(".modal").find("textarea").first().val(js_beautify(JSON.stringify(requestObject)));
141    $("#exampleModal").modal('toggle');
142    $('#result').html("");
143    $("#exampleModal").find(".btn-primary").off('click');
144    $("#exampleModal").find(".btn-primary").click(function(){
145        $('#result').html("");
146        if(!socket && requestObject["mode"]!="sync")
147            socket = new WebSocket($('input[name="oapi_wsUrl"]').val());
148        else
149            $.ajax({
150                contentType: "application/json",
151                data: $("textarea").val(),
152                type: "POST",
153                url: $('input[name="oapi_jobUrl"]').val(),
154                success: function (msg) {
155                    console.log(msg);
156                    var cObj=msg;
157                    $('#result').html(js_beautify(JSON.stringify(msg)));
158                },
159                error: function(){
160                    console.log(arguments);
161                    $('#result').html(js_beautify(JSON.stringify(arguments[0].responseJSON)));
162                },
163            });
164        if(requestObject["mode"]=="sync"){
165            return;
166        }
167        socket.onopen = function () {
168            console.log('Connected!');
169            socket.send("SUB "+$('input[name="oapi_reqID"]').val());
170        };
171        socket.onmessage = function(event) {
172            console.log('MESSAGE: ' + event.data);
173            if(event.data=="1")
174                $.ajax({
175                    contentType: "application/json",
176                    data: $("textarea").val(),
177                    type: "POST",
178                    url: $('input[name="oapi_jobUrl"]').val(),
179                    success: function (msg) {
180                        console.log(msg);
181                    },
182                    error: function(){
183                        console.log(arguments);
184                    },
185                });
186            else{
187                //progressBar
188                $("#progress_details").show();
189                var cObj=JSON.parse(event.data);
190                if(cObj["jobID"]){
191                    $("#prgress_description").html(cObj["jobID"]+": "+cObj["message"]);
192                    $(".progress-bar").attr("aria-valuenow",cObj["progress"]);
193                    $(".progress-bar").css("width",cObj["progress"]+"%");
194                }else{
195                    $("#progress_details").hide();
196                    if(cObj["outputs"])
197                        $('#result').html(js_beautify(JSON.stringify(cObj["outputs"])));
198                    else
199                        $('#result').html(cObj["message"]);
200                }
201            }
202        };
203    });
204}
Note: See TracBrowser for help on using the repository browser.

Search

Context Navigation

ZOO Sponsors

http://www.zoo-project.org/trac/chrome/site/img/geolabs-logo.pnghttp://www.zoo-project.org/trac/chrome/site/img/neogeo-logo.png http://www.zoo-project.org/trac/chrome/site/img/apptech-logo.png http://www.zoo-project.org/trac/chrome/site/img/3liz-logo.png http://www.zoo-project.org/trac/chrome/site/img/gateway-logo.png

Become a sponsor !

Knowledge partners

http://www.zoo-project.org/trac/chrome/site/img/ocu-logo.png http://www.zoo-project.org/trac/chrome/site/img/gucas-logo.png http://www.zoo-project.org/trac/chrome/site/img/polimi-logo.png http://www.zoo-project.org/trac/chrome/site/img/fem-logo.png http://www.zoo-project.org/trac/chrome/site/img/supsi-logo.png http://www.zoo-project.org/trac/chrome/site/img/cumtb-logo.png

Become a knowledge partner

Related links

http://zoo-project.org/img/ogclogo.png http://zoo-project.org/img/osgeologo.png