diff --git a/senpy/api.py b/senpy/api.py
index 886901b..14ad069 100644
--- a/senpy/api.py
+++ b/senpy/api.py
@@ -39,6 +39,14 @@ API_PARAMS = {
"required": True,
"options": ["filtered", "nested", "full"],
"default": "full"
+ },
+ "help": {
+ "@id": "help",
+ "description": "Show additional help to know more about the possible parameters",
+ "aliases": ["help", "h"],
+ "required": True,
+ "options": ["True", "False"],
+ "default": "False"
}
}
diff --git a/senpy/blueprints.py b/senpy/blueprints.py
index 4dcc9ce..3462b84 100644
--- a/senpy/blueprints.py
+++ b/senpy/blueprints.py
@@ -20,7 +20,7 @@ Blueprints for Senpy
from flask import (Blueprint, request, current_app, render_template, url_for,
jsonify)
from .models import Error, Response, Plugins, read_schema
-from .api import WEB_PARAMS, API_PARAMS, parse_params
+from .api import WEB_PARAMS, API_PARAMS, CLI_PARAMS, NIF_PARAMS, parse_params
from .version import __version__
from functools import wraps
@@ -43,7 +43,6 @@ def get_params(req):
raise Error(message="Invalid data")
return indict
-
@demo_blueprint.route('/')
def index():
return render_template("index.html", version=__version__)
@@ -117,8 +116,14 @@ def basic_api(f):
@api_blueprint.route('/', methods=['POST', 'GET'])
@basic_api
def api():
- response = current_app.senpy.analyse(**request.params)
- return response
+ phelp = request.params.get('help')
+ if phelp == "True":
+ dic = dict(API_PARAMS, **NIF_PARAMS)
+ response = Response(dic)
+ return response
+ else:
+ response = current_app.senpy.analyse(**request.params)
+ return response
@api_blueprint.route('/plugins/', methods=['POST', 'GET'])
diff --git a/senpy/static/js/main.js b/senpy/static/js/main.js
index cf9f2f1..330dc95 100644
--- a/senpy/static/js/main.js
+++ b/senpy/static/js/main.js
@@ -1,7 +1,7 @@
var ONYX = "http://www.gsi.dit.upm.es/ontologies/onyx/ns#";
var RDF_TYPE = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
var plugins_params={};
-
+var default_params = JSON.parse($.ajax({type: "GET", url: "/api?help=True" , async: false}).responseText);
function replaceURLWithHTMLLinks(text) {
console.log('Text: ' + text);
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
@@ -28,54 +28,68 @@ function hashchanged(){
$(document).ready(function() {
var response = JSON.parse($.ajax({type: "GET", url: "/api/plugins/" , async: false}).responseText);
var defaultPlugin= JSON.parse($.ajax({type: "GET", url: "/api/plugins/default" , async: false}).responseText);
- html="";
+ html="";
var availablePlugins = document.getElementById('availablePlugins');
plugins = response.plugins;
- for (r in plugins){
- plugin = plugins[r]
- if (plugin["name"]){
- if (plugin["name"] == defaultPlugin["name"]){
- if (plugin["is_activated"]){
- html+= ""
- }else{
- html+= ""
- }
- }
- else{
- if (plugin["is_activated"]){
- html+= ""
- }
- else{
- html+= ""
- }
- }
- }
- if (plugin["extra_params"]){
- plugins_params[plugin["name"]]={};
- for (param in plugin["extra_params"]){
- if (typeof plugin["extra_params"][param] !="string"){
- var params = new Array();
- var alias = plugin["extra_params"][param]["aliases"][0];
- params[alias]=new Array();
- for (option in plugin["extra_params"][param]["options"]){
- params[alias].push(plugin["extra_params"][param]["options"][option])
- }
- plugins_params[plugin["name"]][alias] = (params[alias])
- }
- }
- }
- var pluginList = document.createElement('li');
-
- newHtml = ""
- if(plugin.url) {
- newHtml= "" + plugin.name + "";
- }else {
- newHtml= plugin["name"];
- }
- newHtml += ": " + replaceURLWithHTMLLinks(plugin.description);
- pluginList.innerHTML = newHtml;
- availablePlugins.appendChild(pluginList)
- }
+ gplugins = {};
+ for (r in plugins){
+ ptype = plugins[r]['@type'];
+ if(gplugins[ptype] == undefined){
+ gplugins[ptype] = [r]
+ }else{
+ gplugins[ptype].push(r)
+ }
+ }
+ for (g in gplugins){
+ html += ""
+ }
document.getElementById('plugins').innerHTML = html;
change_params();
@@ -88,8 +102,23 @@ $(document).ready(function() {
function change_params(){
var plugin = document.getElementById("plugins").options[document.getElementById("plugins").selectedIndex].value;
-
html=""
+ for (param in default_params){
+ if ((default_params[param]['options']) && (['help','conversion'].indexOf(param) < 0)){
+ html+= ""
+ html+= "
"
+ }
+ }
for (param in plugins_params[plugin]){
if (param || plugins_params[plugin][param].length > 1){
html+= ""
@@ -120,15 +149,32 @@ function load_JSON(){
}
}
}
- var response = JSON.parse($.ajax({type: "GET", url: url , async: false}).responseText);
+
+ for (param in default_params){
+ if ((param != null) && (default_params[param]['options']) && (['help','conversion'].indexOf(param) < 0)){
+ var param_value = encodeURIComponent(document.getElementById(param).options[document.getElementById(param).selectedIndex].text);
+ if (param_value){
+ url+="&"+param+"="+param_value
+ }
+ }
+ }
+
+ var response = $.ajax({type: "GET", url: url , async: false}).responseText;
+ rawcontainer.innerHTML = replaceURLWithHTMLLinks(response)
+
+ document.getElementById("input_request").innerHTML = ""+url+""
+ document.getElementById("results-div").style.display = 'block';
+ try {
+ response = JSON.parse(response);
var options = {
mode: 'view'
};
var editor = new JSONEditor(container, options, response);
editor.expandAll();
- rawcontainer.innerHTML = replaceURLWithHTMLLinks(JSON.stringify(response, undefined, 2))
- document.getElementById("input_request").innerHTML = ""+url+""
- document.getElementById("results-div").style.display = 'block';
+ }
+ catch(err){
+ console.log("Error decoding JSON (got turtle?)");
+ }
}