[962] | 1 | <!doctype html> |
---|
| 2 | #import zoo |
---|
| 3 | #import html,os |
---|
| 4 | #set removeCacheFile=False |
---|
| 5 | #set strUrl=$inputs["tmpl"]["xlink:href"] |
---|
| 6 | #set currentUrl=$strUrl.replace($openapi["openapi"]["rootUrl"],"") |
---|
| 7 | #if $currentUrl=="/" |
---|
| 8 | #set currentKey="root" |
---|
| 9 | #set $currentUrl="/index" |
---|
| 10 | #else |
---|
| 11 | #set currentKey=$currentUrl |
---|
| 12 | #end if |
---|
| 13 | #set urlCompnents=$currentUrl.split('/') |
---|
| 14 | #* |
---|
| 15 | * Load the JSON content from the API |
---|
| 16 | *# |
---|
| 17 | #try |
---|
| 18 | #import json |
---|
| 19 | #if "cache_file" in $inputs["tmpl"] |
---|
[984] | 20 | #set values=json.load(open($inputs["tmpl"]["cache_file"], encoding='utf-8')) |
---|
[962] | 21 | #else |
---|
[984] | 22 | #set values=json.loads($inputs["tmpl"]["value"]) |
---|
[962] | 23 | #end if |
---|
| 24 | #except Exception as e |
---|
| 25 | $e |
---|
[984] | 26 | #set values={} |
---|
[962] | 27 | #end try |
---|
[986] | 28 | #def findLink($val,$key) |
---|
| 29 | #if "links" in $val |
---|
| 30 | #for i in range(len($val["links"])) |
---|
| 31 | #if $val["links"][$i]["rel"]==$key |
---|
| 32 | #return $val["links"][$i]["href"] |
---|
| 33 | #end if |
---|
| 34 | #end for |
---|
| 35 | #return None |
---|
| 36 | #else |
---|
| 37 | #return None |
---|
| 38 | #end if |
---|
| 39 | #end def |
---|
[962] | 40 | <html lang="en"> |
---|
| 41 | <head> |
---|
| 42 | <!-- Required meta tags --> |
---|
| 43 | <meta charset="utf-8"> |
---|
| 44 | <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
---|
| 45 | |
---|
| 46 | <!-- Bootstrap CSS --> |
---|
| 47 | <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous"> |
---|
| 48 | |
---|
| 49 | <!-- Custom styles for this template --> |
---|
| 50 | <link href="$openapi["openapi"]["rootUrl"]/../static/openapi.css" rel="stylesheet"> |
---|
| 51 | |
---|
| 52 | <title>#if "id" in $values#$values["id"]#else##if $currentKey in $openapi and "title" in $openapi[$currentKey]#$openapi[$currentKey]["title"]#else#Landing Page#end if##end if#</title> |
---|
| 53 | </head> |
---|
| 54 | <body itemscope itemtype="https://schema.org/DataCatalog"> |
---|
| 55 | <header> |
---|
| 56 | <!-- Fixed navbar --> |
---|
| 57 | <nav |
---|
| 58 | class="navbar navbar-expand-md navbar-dark fixed-top bg-dark" |
---|
| 59 | itemprop="creator" |
---|
| 60 | itemscope itemtype="https://schema.org/Organization" > |
---|
| 61 | <a class="navbar-brand" href="#"> |
---|
| 62 | <img itemprop="logo" src="http://zoo-project.org/img/zoo-sun-logo.png" width="55" height="30" class="d-inline-block align-top" alt=""> |
---|
| 63 | <span itemprop="name">$conf["provider"]["providerName"]</span> |
---|
| 64 | </a> |
---|
| 65 | <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation"> |
---|
| 66 | <span class="navbar-toggler-icon"></span> |
---|
| 67 | </button> |
---|
| 68 | <div class="collapse navbar-collapse" id="navbarCollapse"> |
---|
| 69 | <ul class="navbar-nav mr-auto" |
---|
| 70 | itemscope itemtype="https://schema.org/BreadcrumbList"> |
---|
| 71 | <li class="nav-item #if $currentKey=="root"# active#end if#" |
---|
| 72 | itemprop="itemListElement" itemscope |
---|
| 73 | itemtype="https://schema.org/ListItem"> |
---|
| 74 | <a itemprop="item" class="nav-link" |
---|
| 75 | href="$openapi["openapi"]["rootUrl"]/index.html"> |
---|
| 76 | <span itemprop="name">Home #if $currentKey=="root"# <span class="sr-only">(current)</span>#end if#</span> |
---|
| 77 | <meta itemprop="position" content="1" /> |
---|
| 78 | </a> |
---|
| 79 | </li> |
---|
| 80 | #if $currentKey!="root" |
---|
| 81 | #for i in range(1,len($urlCompnents)) |
---|
| 82 | <li |
---|
| 83 | itemprop="itemListElement" itemscope |
---|
| 84 | itemtype="https://schema.org/ListItem" |
---|
| 85 | class="nav-item #if $i+1==len($urlCompnents)#active#end if#"> |
---|
| 86 | #set prefix="" |
---|
| 87 | #for j in range(1,$i) |
---|
| 88 | #set $prefix+="/"+$urlCompnents[$j] |
---|
| 89 | #end for |
---|
| 90 | <a itemprop="item" class="nav-link" href="$openapi["openapi"]["rootUrl"]$(prefix)/$(urlCompnents[$i]).html"> |
---|
| 91 | <span itemprop="name"> |
---|
| 92 | #if $i==2 |
---|
| 93 | $(urlCompnents[$i]) |
---|
| 94 | #else |
---|
| 95 | $(urlCompnents[$i].title()) |
---|
| 96 | #end if |
---|
| 97 | #if $i+1==len($urlCompnents) |
---|
| 98 | <span class="sr-only">(current)</span> |
---|
| 99 | #end if |
---|
| 100 | <meta itemprop="position" content="$(i+1)" /> |
---|
| 101 | </span> |
---|
| 102 | </a> |
---|
| 103 | </li> |
---|
| 104 | #end for |
---|
| 105 | #end if |
---|
| 106 | </ul> |
---|
| 107 | </div> |
---|
| 108 | </nav> |
---|
| 109 | </header> |
---|
| 110 | <script> |
---|
| 111 | var System={}; |
---|
| 112 | </script> |
---|
| 113 | |
---|
| 114 | #def printRel($o,$v) |
---|
| 115 | #if $v in $o |
---|
| 116 | $o[$v] |
---|
| 117 | #else |
---|
| 118 | View default (no title found for $v). |
---|
| 119 | #end if |
---|
| 120 | #end def |
---|
| 121 | #* |
---|
| 122 | |
---|
| 123 | *# |
---|
| 124 | #def printControl(obj) |
---|
| 125 | #if "type" not in $obj |
---|
| 126 | #set oType="format" |
---|
| 127 | #else |
---|
| 128 | #set oType=$obj["type"] |
---|
| 129 | #end if |
---|
| 130 | <div class="input-group"> |
---|
| 131 | <div class="input-group-prepend"> |
---|
| 132 | <div class="input-group-text">$obj["title"]</div> |
---|
| 133 | </div> |
---|
| 134 | #if "ph" in $obj |
---|
| 135 | <input type="text" |
---|
| 136 | #if "value" in $obj#value="$obj["value"]""#end if# |
---|
| 137 | #if "id" in $obj#data-id="$obj["id"]"#end if# |
---|
| 138 | class="form-control" data-name="$obj["title"]" name="$(oType)_$obj["name"]" placeholder="$obj["ph"]" #if "required" in $obj#required#end if#/> |
---|
| 139 | #else |
---|
| 140 | <select name="$(oType)_$obj["name"]" class="form-control" #if "required" in $obj#required#end if#> |
---|
| 141 | #for i in range(len($obj["options"])) |
---|
| 142 | <option>$obj["options"][$i]</option> |
---|
| 143 | #end for |
---|
| 144 | </select> |
---|
| 145 | #end if |
---|
| 146 | #if "required" in $obj |
---|
| 147 | <div class="invalid-feedback"> |
---|
| 148 | Please set a value for $obj["id"]. |
---|
| 149 | </div> |
---|
| 150 | #end if |
---|
| 151 | </div> |
---|
| 152 | #end def |
---|
| 153 | #def printCard(obj) |
---|
| 154 | <div class="card" #if "attrs" in $obj#$obj["attrs"]#end if#> |
---|
| 155 | <div class="card-header" id="heading$(obj["id"])"> |
---|
| 156 | <h4 class="mb-0"> |
---|
| 157 | <button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#collapse$(obj["id"])" aria-expanded="true" aria-controls="collapse$(obj["id"])"> |
---|
| 158 | $obj["title"] |
---|
| 159 | </button> |
---|
| 160 | </h4> |
---|
| 161 | </div> |
---|
| 162 | <div id="collapse$(obj["id"])" class="collapse #if "class" in $obj#$obj["class"]#end if#" aria-labelledby="heading$(obj["id"])"> |
---|
| 163 | <div class="card-body"> |
---|
| 164 | $obj["content"] |
---|
| 165 | </div> |
---|
| 166 | </div> |
---|
| 167 | </div> |
---|
| 168 | #end def |
---|
| 169 | #def printInputContent($obj) |
---|
| 170 | #set cName=$obj["id"].replace(".","_") |
---|
| 171 | #if "formats" in $obj["input"] |
---|
| 172 | #set cFormats=[] |
---|
| 173 | #for j in range(len($obj["input"]["formats"])) |
---|
[985] | 174 | #set $cFormats+=[$obj["input"]["formats"][$j]["mediaType"]] |
---|
[962] | 175 | #end for |
---|
| 176 | $printControl({"title": "format","type": "input_format","name": $cName,"options":$cFormats}) |
---|
| 177 | #set largs={"id": $obj["id"],"title": "href","type": "input_value","name": $cName,"ph":"URL"} |
---|
| 178 | #if $obj["minOccurs"]>0 |
---|
| 179 | #set $largs["required"]=True |
---|
| 180 | #end if |
---|
| 181 | $printControl($largs) |
---|
| 182 | #else |
---|
| 183 | #if "literalDataDomains" in $obj["input"] |
---|
| 184 | #set cDataDomain=$obj["input"]["literalDataDomains"][0] |
---|
| 185 | #set largs={"id": $obj["id"],"title": $cDataDomain["dataType"]["name"],"type": "input_value", "name": $cName,} |
---|
| 186 | #if $obj["minOccurs"]>0 |
---|
| 187 | #set $largs["required"]=True |
---|
| 188 | #end if |
---|
| 189 | #if "anyValue" in $cDataDomain["valueDefinition"] |
---|
| 190 | #set $largs["ph"]="Value" |
---|
| 191 | $printControl($largs) |
---|
| 192 | #else |
---|
| 193 | #if "allowedValues" in $cDataDomain["valueDefinition"] |
---|
| 194 | #set $largs["options"]=$cDataDomain["valueDefinition"]["allowedValues"] |
---|
| 195 | $printControl($largs) |
---|
| 196 | #else |
---|
| 197 | ELSE |
---|
| 198 | $obj |
---|
| 199 | #end if |
---|
| 200 | #end if |
---|
| 201 | #if "defaultValue" in $cDataDomain |
---|
| 202 | <script> |
---|
| 203 | System["function_$cName"]=function(){ |
---|
| 204 | try{ |
---|
| 205 | jQuery("input[name='input_value_$cName'],select[name='input_value_$cName]']").val($cDataDomain["defaultValue"]); |
---|
| 206 | }catch(e){ |
---|
| 207 | jQuery("input[name='input_value_$cName'],select[name='input_value_$cName']").val("$cDataDomain["defaultValue"]"); |
---|
| 208 | } |
---|
| 209 | } |
---|
| 210 | </script> |
---|
| 211 | #end if |
---|
| 212 | #else |
---|
| 213 | $obj |
---|
| 214 | ELSE |
---|
| 215 | #end if |
---|
| 216 | #end if |
---|
[984] | 217 | #if $obj["maxOccurs"]=="unbounded" or $obj["maxOccurs"]>1 |
---|
[965] | 218 | <div class="btn-group" role="group" aria-label="Basic example"> |
---|
| 219 | <button type="button" class="btn btn-secondary" onclick="addElementToList(\$(this));">Add</button> |
---|
| 220 | <button type="button" class="btn btn-secondary" onclick="delElementToList(\$(this));">Delete</button> |
---|
| 221 | </div> |
---|
| 222 | #end if |
---|
[962] | 223 | #end def |
---|
| 224 | #def printProvider(conf) |
---|
| 225 | #set provider=$conf["provider"] |
---|
| 226 | <b itemprop="name">$provider["providerName"]</b> |
---|
| 227 | <p><a itemprop="url" href="$provider["providerSite"]">$provider["providerSite"]</a></p> |
---|
| 228 | #end def |
---|
| 229 | #def printContact(conf) |
---|
| 230 | #set provider=$conf["provider"] |
---|
| 231 | #set alt=$openapi["provider_alt"] |
---|
| 232 | #set elements=list($alt.keys()) |
---|
| 233 | <b>Address</b> |
---|
| 234 | #for i in ["addressDeliveryPoint","addressCity","addressAdministrativeArea","addressPostalCode","addressCountry","addressElectronicMailAddress","phoneVoice","phoneFacsimile"] |
---|
| 235 | #if i!="addressElectronicMailAddress" and $provider[$i]!="False" |
---|
| 236 | <p itemprop="$(alt[$i.lower()])"> |
---|
| 237 | #if i=="phoneVoice" |
---|
| 238 | Phone |
---|
| 239 | <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-telephone" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> |
---|
| 240 | <path fill-rule="evenodd" d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.568 17.568 0 0 0 4.168 6.608 17.569 17.569 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.678.678 0 0 0-.58-.122l-2.19.547a1.745 1.745 0 0 1-1.657-.459L5.482 8.062a1.745 1.745 0 0 1-.46-1.657l.548-2.19a.678.678 0 0 0-.122-.58L3.654 1.328zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511z"/> |
---|
| 241 | </svg> |
---|
| 242 | #end if |
---|
| 243 | $provider[$i] |
---|
| 244 | </p> |
---|
| 245 | #else |
---|
| 246 | #if i=="addressElectronicMailAddress" |
---|
| 247 | <b>Email</b> |
---|
| 248 | <p itemprop="$(alt[$i.lower()])"> |
---|
| 249 | $provider[$i] |
---|
| 250 | </p> |
---|
| 251 | #end if |
---|
| 252 | #end if |
---|
| 253 | #end for |
---|
| 254 | #end def |
---|
| 255 | #def printIndentification(conf) |
---|
| 256 | #set provider=$conf["provider"] |
---|
| 257 | $printCard({"id": "provider","title": "Provider","content": $printProvider($conf),"class": "show"}) |
---|
| 258 | $printCard({"id": "contact","title": "Contact","content": $printContact($conf),"class": "show","attrs":'itemprop="address" itemscope itemtype="https://schema.org/PostalAddress"'}) |
---|
| 259 | #end def |
---|
| 260 | |
---|
| 261 | #if $currentKey=="root" |
---|
| 262 | <div class="container-fluid"> |
---|
| 263 | <div class="row"> |
---|
| 264 | <div class="col-sm-8"> |
---|
| 265 | #end if |
---|
| 266 | <!-- $currentUrl --> |
---|
| 267 | <!-- Begin page content --> |
---|
| 268 | <main #if $currentKey!="root"#class="container-fluid"#end if#> |
---|
| 269 | <h1 itemprop="name">#if "id" in $values#$values["id"]: #end if##if "title" in $values#$html.escape($values["title"])#else##if len($urlCompnents)==2#$currentUrl[1:].title()#else#$currentUrl[1:]#end if##end if#</h1> |
---|
| 270 | #if "description" in $values#<p itemprop="description">$html.escape($values["description"])</p>#end if# |
---|
| 271 | #if $currentKey=="root" |
---|
| 272 | <div class="keywords"> |
---|
| 273 | #for i in $conf["identification"]["keywords"].split(',') |
---|
| 274 | <button type="button" |
---|
| 275 | class="btn btn-outline-info">$i</button> |
---|
| 276 | #end for |
---|
| 277 | </div> |
---|
| 278 | License: |
---|
| 279 | <a itemprop="license" href="$openapi["openapi"]["license_url"]">$openapi["openapi"]["license_name"]</a> |
---|
| 280 | #end if |
---|
| 281 | #if "inputs" in $values |
---|
| 282 | #set $cid="JOBSOCKET-"+$conf["lenv"]["usid"] |
---|
| 283 | <form class="needs-validation" data-id="$cid" novalidate> |
---|
[967] | 284 | <input type="hidden" name="oapi_ioAsArray" value="#if "io_as_array" in $openapi["openapi"]#$openapi["openapi"]["io_as_array"]#else#false#end if#" /> |
---|
| 285 | <input type="hidden" name="oapi_wsUrl" value="$openapi["openapi"]["wsurl"]" /> |
---|
[986] | 286 | <input type="hidden" name="oapi_jobUrl" value="$findLink($values,"execute")" /> |
---|
[967] | 287 | <input type="hidden" name="oapi_reqID" value="$cid" /> |
---|
| 288 | <h3>Inputs</h3> |
---|
| 289 | <div class="accordion" id="accordionInputExample"> |
---|
| 290 | #for i in range(len(values["inputs"])) |
---|
| 291 | #set cInput=$values["inputs"][$i] |
---|
| 292 | #set cName=$cInput["id"].replace(".","_") |
---|
| 293 | $printCard({"id": $cName, "title": $cInput["id"],"content":'<p>'+$cInput["description"]+'</p>'+$printInputContent($cInput)}) |
---|
| 294 | #end for |
---|
| 295 | </div> |
---|
[962] | 296 | |
---|
[967] | 297 | <h3>Outputs</h3> |
---|
| 298 | <div class="accordion" id="accordionOutputExample"> |
---|
| 299 | #for i in range(len(values["outputs"])) |
---|
| 300 | #set cOutput=$values["outputs"][$i] |
---|
| 301 | #set cName=$cOutput["id"].replace(".","_") |
---|
| 302 | #set cFormats=[] |
---|
| 303 | #if "formats" in $cOutput["output"] |
---|
| 304 | #for j in range(len($cOutput["output"]["formats"])) |
---|
[985] | 305 | #set cFormats+=[$cOutput["output"]["formats"][$j]["mediaType"]] |
---|
[967] | 306 | #end for |
---|
| 307 | #end if |
---|
| 308 | #set cTransmissions=[] |
---|
| 309 | #for j in range(len($values["outputTransmission"])) |
---|
| 310 | #set cTransmissions+=[$values["outputTransmission"][$j]] |
---|
| 311 | #end for |
---|
| 312 | #set cContent="<p>"+$cOutput["description"]+"</p>" |
---|
| 313 | #if len(cFormats)>0 |
---|
| 314 | #set $cContent+=$printControl({"id": $cOutput["id"], "title": "format","type": "format","name": $cName,"options":$cFormats}) |
---|
| 315 | #end if |
---|
| 316 | #if len(cTransmissions)>0 |
---|
| 317 | #set $cContent+=$printControl({"id": $cOutput["id"], "title": "transmission","type": "transmission","name": $cName,"options":$cTransmissions}) |
---|
| 318 | #end if |
---|
| 319 | $printCard({"id": $cName+"_"+str($i),"title": $cOutput["id"],"content": $cContent}) |
---|
| 320 | #end for |
---|
| 321 | </div> |
---|
[962] | 322 | |
---|
[967] | 323 | <h3>Execution options</h3> |
---|
| 324 | <div class="accordion" id="accordionExampleExecutionMode"> |
---|
| 325 | #set cContent="" |
---|
| 326 | #set cUrl=$openapi["openapi"]["publisherurl"]+cid+"&type=" |
---|
| 327 | #for a in ["successUri","inProgressUri","failedUri"] |
---|
| 328 | #set $cContent+=$printControl({"title": $a,"type": "main_value","name": $a,"ph":"URL","value":$cUrl+$a.replace("Uri","")}) |
---|
| 329 | #end for |
---|
| 330 | $printCard({"id":"ModeOne","title":"Subscribers","content": $cContent}) |
---|
| 331 | $printCard({"id":"ModeTwo","title":"Response","content": $printControl({"title":"format","type": "main_value","name": "format","options":["document","raw"]})}) |
---|
| 332 | $printCard({"id":"ModeThree","title":"Mode","content": $printControl({"title":"mode","type": "main_value","name": "mode","options":["async","sync"]})}) |
---|
| 333 | </div> |
---|
| 334 | |
---|
| 335 | <button type="submit" class="btn btn-primary" >Submit</button> |
---|
| 336 | </form> |
---|
[962] | 337 | <div class="modal" tabindex="-1" id="exampleModal"> |
---|
| 338 | <div class="modal-dialog modal-xl"> |
---|
| 339 | <div class="modal-content"> |
---|
| 340 | <div class="modal-header"> |
---|
| 341 | <h5 class="modal-title">Your request</h5> |
---|
| 342 | <button type="button" class="close" data-dismiss="modal" aria-label="Close"> |
---|
| 343 | <span aria-hidden="true">×</span> |
---|
| 344 | </button> |
---|
| 345 | </div> |
---|
| 346 | <div class="modal-body"> |
---|
| 347 | <textarea name="modalText" class="form-control" style="min-height:300px"></textarea> |
---|
| 348 | <pre id="result"></pre> |
---|
| 349 | <div id="progress_details" style="display:none"> |
---|
| 350 | <p id="prgress_description"></p> |
---|
| 351 | <div class="progress"> |
---|
| 352 | <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%"></div> |
---|
| 353 | </div> |
---|
| 354 | </div> |
---|
| 355 | </div> |
---|
| 356 | <div class="modal-footer"> |
---|
| 357 | <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> |
---|
| 358 | <button type="button" class="btn btn-primary">Submit Job</button> |
---|
| 359 | </div> |
---|
| 360 | </div> |
---|
| 361 | </div> |
---|
| 362 | </div> |
---|
[967] | 363 | <script src="$openapi["openapi"]["rootUrl"]/../static/openapi.js"></script> |
---|
[962] | 364 | #end if |
---|
| 365 | |
---|
| 366 | #try |
---|
| 367 | #if "links" in $values |
---|
| 368 | #for i in range(len($values["links"])) |
---|
| 369 | #if $i%2==0 |
---|
| 370 | <h2>$values["links"][$i]["title"]</h2> |
---|
| 371 | <p> |
---|
| 372 | <a href="$values["links"][$i]["href"]">$printRel($openapi["links_title"],$values["links"][$i]["rel"])</a> |
---|
| 373 | </p> |
---|
[986] | 374 | #if $i+1<=len($values["links"]) and len($values["links"])>1 and ($values["links"][$i+1]["rel"]=="alternate" or $values["links"][$i+1]["rel"]=="service-doc") |
---|
[962] | 375 | <p><a href="$values["links"][$i+1]["href"]">$printRel($openapi["links_title"],$values["links"][$i+1]["rel"])</a></p> |
---|
| 376 | #end if |
---|
| 377 | #end if |
---|
| 378 | #end for |
---|
| 379 | #end if |
---|
| 380 | #except Exception as e |
---|
| 381 | $e |
---|
| 382 | #end try |
---|
| 383 | #if "conformsTo" in $values |
---|
| 384 | <ul> |
---|
| 385 | #for i in range(len($values["conformsTo"])) |
---|
| 386 | <li> |
---|
| 387 | <a href="$values["conformsTo"][$i]">$values["conformsTo"][$i]</a> |
---|
| 388 | </li> |
---|
| 389 | #end for |
---|
| 390 | </ul> |
---|
| 391 | #end if |
---|
| 392 | #if "jobs" in $urlCompnents |
---|
| 393 | #set $removeCacheFile=True |
---|
| 394 | #end if |
---|
| 395 | #if hasattr($values, "__len__") and isinstance($values,list) and len($values)>0 |
---|
| 396 | <table class="table table-striped"> |
---|
| 397 | <thead> |
---|
| 398 | <tr> |
---|
| 399 | #if "jobs" not in $urlCompnents |
---|
| 400 | #* |
---|
| 401 | * Processes list |
---|
| 402 | *# |
---|
| 403 | <th scope="col">#</th> |
---|
| 404 | <th scope="col">Title</th> |
---|
| 405 | <th scope="col">Version</th> |
---|
| 406 | #else |
---|
| 407 | #* |
---|
| 408 | * Jobs list |
---|
| 409 | *# |
---|
| 410 | <th scope="col">#</th> |
---|
| 411 | <th scope="col">Message</th> |
---|
| 412 | <th scope="col">Links</th> |
---|
| 413 | #end if |
---|
| 414 | </tr> |
---|
| 415 | </thead> |
---|
| 416 | <tbody> |
---|
| 417 | #for i in range(len($values)) |
---|
| 418 | <tr> |
---|
| 419 | #if "jobs" not in $urlCompnents |
---|
| 420 | #* |
---|
| 421 | * Processes list |
---|
| 422 | *# |
---|
| 423 | <th scope="row"> |
---|
[986] | 424 | <a href="$(values[$i]["links"][0]["href"]).html"> |
---|
[962] | 425 | <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-link-45deg" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> |
---|
| 426 | <path d="M4.715 6.542L3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 5.5L8 6.086a1.001 1.001 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4.018 4.018 0 0 1-.128-1.287z"/> |
---|
| 427 | <path d="M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 0 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 0 0-4.243-4.243L6.586 4.672z"/> |
---|
| 428 | </svg> |
---|
| 429 | $values[$i]["id"] |
---|
| 430 | </a> |
---|
| 431 | </th> |
---|
| 432 | <td>$values[$i]["title"]</td> |
---|
| 433 | <td>#if "version" in $values[$i]#$values[$i]["version"]#else#1.0.0#end if#</td> |
---|
| 434 | #else |
---|
| 435 | #* |
---|
| 436 | * Jobs list |
---|
| 437 | *# |
---|
[985] | 438 | #set cValue=$values[$i] |
---|
[962] | 439 | <th scope="row"> |
---|
| 440 | #if "status" in $cValue and $cValue["status"]=="successful" |
---|
| 441 | <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-check-circle-fill text-success" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> |
---|
| 442 | <path fill-rule="evenodd" d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/> |
---|
| 443 | </svg> |
---|
| 444 | #else |
---|
| 445 | #if "status" in $cValue and $cValue["status"]=="failed" |
---|
| 446 | <svg width="1.0625em" height="1em" viewBox="0 0 17 16" class="bi bi-exclamation-triangle-fill text-error" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> |
---|
| 447 | <path fill-rule="evenodd" d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 5zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/> |
---|
| 448 | </svg> |
---|
| 449 | #end if |
---|
| 450 | #end if |
---|
| 451 | $cValue["jobID"] |
---|
| 452 | </th> |
---|
| 453 | <td>$cValue["message"]</td> |
---|
| 454 | <td> |
---|
| 455 | <div class="dropdown"> |
---|
| 456 | <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
---|
| 457 | Action |
---|
| 458 | </button> |
---|
| 459 | <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> |
---|
| 460 | #for j in range(len($cValue["links"])) |
---|
| 461 | #set $cValueLink=$cValue["links"][$j] |
---|
| 462 | #if $cValueLink["href"].count("result")==0 |
---|
| 463 | <a class="dropdown-item delete" |
---|
| 464 | href="#" |
---|
| 465 | data-value="$(cValueLink["href"])">Delete</a> |
---|
| 466 | #end if |
---|
| 467 | <a class="dropdown-item" href="$(cValueLink["href"]).html">$cValueLink["title"]</a> |
---|
| 468 | #end for |
---|
| 469 | </div> |
---|
| 470 | </div> |
---|
| 471 | </td> |
---|
| 472 | #end if |
---|
| 473 | </tr> |
---|
| 474 | #end for |
---|
| 475 | </tbody> |
---|
| 476 | </table> |
---|
| 477 | <script> |
---|
| 478 | System["jobListDelete"]=function(){ |
---|
| 479 | \$(".delete").each(function(){ |
---|
| 480 | \$(this).off("click"); |
---|
| 481 | \$(this).click(function(){ |
---|
| 482 | console.log("OK"); |
---|
| 483 | \$.ajax({ |
---|
| 484 | url: \$(this).data("value"), |
---|
| 485 | type: "DELETE", |
---|
| 486 | success: function(){ |
---|
| 487 | console.log(arguments); |
---|
| 488 | } |
---|
| 489 | }); |
---|
| 490 | }); |
---|
| 491 | }); |
---|
| 492 | } |
---|
| 493 | </script> |
---|
| 494 | #end if |
---|
| 495 | |
---|
| 496 | <div class="microlight">$json.dumps(values)</div> |
---|
| 497 | <textarea class="form-control" style="height: 300px;"></textarea> |
---|
| 498 | <script> |
---|
| 499 | window.onload = function(){ |
---|
| 500 | var jsContent=\$(".microlight").html(); |
---|
| 501 | var tmpStr=js_beautify(jsContent); |
---|
| 502 | \$("textarea").last().val(tmpStr); |
---|
| 503 | \$(".microlight").remove(); |
---|
| 504 | for(var i in System){ |
---|
| 505 | System[i](); |
---|
| 506 | } |
---|
[964] | 507 | System["JSON_STR"]=JSON.parse(tmpStr); |
---|
| 508 | var forms = document.getElementsByClassName('needs-validation'); |
---|
| 509 | // Loop over them and prevent submission |
---|
| 510 | var validation = Array.prototype.filter.call(forms, function(form) { |
---|
| 511 | form.addEventListener('submit', function(event) { |
---|
| 512 | event.preventDefault(); |
---|
| 513 | event.stopPropagation(); |
---|
| 514 | if (form.checkValidity() === false) { |
---|
| 515 | event.preventDefault(); |
---|
| 516 | event.stopPropagation(); |
---|
| 517 | for(var i=0;i<System["JSON_STR"]["inputs"].length;i++){ |
---|
| 518 | var cName=System["JSON_STR"]["inputs"][i]["id"].replace(/\./g,"_"); |
---|
| 519 | var selector= |
---|
| 520 | 'input[name="input_value_'+cName+'"]:invalid,'+ |
---|
| 521 | 'select[name="input_value_'+cName+'"]:invalid'; |
---|
| 522 | if(\$(selector).length>0){ |
---|
| 523 | \$(selector).each(function(){ |
---|
[965] | 524 | if(!\$(this).parent().parent().parent().hasClass("show")) |
---|
| 525 | \$(this).parent().parent().parent().parent().find(".btn").first().click(); |
---|
[964] | 526 | }); |
---|
| 527 | } |
---|
| 528 | } |
---|
| 529 | }else{ |
---|
| 530 | loadRequest(); |
---|
| 531 | } |
---|
| 532 | form.classList.add('was-validated'); |
---|
| 533 | }, false); |
---|
| 534 | }); |
---|
[962] | 535 | |
---|
| 536 | } |
---|
| 537 | </script> |
---|
| 538 | <hr> |
---|
| 539 | <address>$openapi["openapi"]["rootUrl"]$(currentUrl).html</address> |
---|
[986] | 540 | <!-- hhmts start -->Last modified: Tue Mar 9 16:33:11 CET 2021 <!-- hhmts end --> |
---|
[962] | 541 | </main> |
---|
| 542 | #if $currentKey=="root" |
---|
| 543 | </div> |
---|
| 544 | <div class="col-sm-4" |
---|
| 545 | itemprop="provider" |
---|
| 546 | itemscope itemtype="https://schema.org/Organization"> |
---|
| 547 | $printIndentification($conf) |
---|
| 548 | </div> |
---|
| 549 | </div> |
---|
| 550 | </div> |
---|
| 551 | #end if |
---|
| 552 | |
---|
| 553 | |
---|
| 554 | <footer class="footer" itemscope itemtype="https://schema.org/SoftwareApplication"> |
---|
| 555 | <div class="container-fluid"> |
---|
| 556 | <span class="text-muted"> |
---|
| 557 | Powered by |
---|
| 558 | <a target="_blank" itemprop="url" |
---|
| 559 | href="http://www.zoo-project.org/"><span itemprop="name">ZOO-Project</span></a> |
---|
| 560 | <span itemprop="version">$zoo.VERSION</span>. |
---|
| 561 | <meta itemprop="applicationCategory" content="WebService" /> |
---|
| 562 | #try |
---|
| 563 | #set sysname=$os.uname() |
---|
| 564 | #except Exception as e |
---|
| 565 | #set sysname=["Unknown"] |
---|
| 566 | #end try |
---|
| 567 | <meta itemprop="operatingSystem" content="$sysname[0]" /> |
---|
| 568 | </span> |
---|
| 569 | </div> |
---|
| 570 | </footer> |
---|
| 571 | |
---|
| 572 | <!-- JS, Popper.js, and jQuery --> |
---|
| 573 | <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script> |
---|
| 574 | <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script> |
---|
| 575 | <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script> |
---|
| 576 | <script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.13.0/beautify.min.js" integrity="sha512-84xqGKD+OW9ElGeIq5RkXhsKveQx+kAjahn9r7f/Vm9J0bDrwEabW3MQNgYdTzLBnwfrTGs0nuPx3pZxh6itNg==" crossorigin="anonymous"></script> |
---|
| 577 | </body> |
---|
| 578 | </html> |
---|
| 579 | #if "cache_file" in $inputs["tmpl"] and $removeCacheFile |
---|
| 580 | <!-- REMOVED ! --> |
---|
| 581 | #import os |
---|
| 582 | $(os.remove($inputs["tmpl"]["cache_file"])) |
---|
| 583 | #end if |
---|