server/src/resources/assets/js/sparqlclient.js
author ymh <ymh.work@gmail.com>
Mon, 31 Oct 2016 14:24:23 +0100
changeset 386 c731ab9b934d
child 387 7fba86fa8604
permissions -rw-r--r--
implement first version of sparql client interface
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
386
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
// sparql edit function
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
// ASK, null
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
const ASK_RESULT_FORMAT = [
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
    ["HTML", "text/html"]
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
// SELECT
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
const SELECT_RESULT_FORMAT = [
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
    ["HTML", "text/html"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
    ["SPARQL/CSV", "text/csv"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
    ["SPARQL/JSON", "application/sparql-results+json"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
    ["SPARQL/XML", "application/sparql-results+xml"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
    ["SPARQL/TSV", "text/tab-separated-values"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
    ["BINARY", "application/x-binary-rdf-results-table"]
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
// DESCRIBE,CONSTRUCT
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
const GRAPH_RESULT_FORMAT = [
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
    ["HTML", "text/html"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
    ["N-Triples", "application/n-triples"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
    ["RDF/XML", "application/rdf+xml"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
    ["Turtle", "text/turtle"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    ["N3", "text/n3"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    ["RDF/JSON", "application/rdf+json"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
    ["TriG", "application/trig"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
    ["N-Quads", "application/n-quads"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
    ["BinaryRDF", "application/x-binary-rdf"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
    ["TriX", "application/trix"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
    ["JSON-LD", "application/ld+json"]
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
];
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
function setOutputFormatSelect(selectElt, optionsList) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
    var keys = $.map(optionsList, function(o) { return o[0];});
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
    var selectedKey = $(":selected",selectElt).text();
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
    if(!selectedKey || $.inArray(selectedKey, keys) === -1) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
        selectedKey = "HTML";
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
    }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
    selectElt.empty();
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
    var innerHtml = "";
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
    $.each(optionsList, function(i, o) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
        innerHtml += "<option value=\""+o[1]+"\""+ ((o[0]==selectedKey)?" selected=\"selected\" ":"") +">"+o[0]+"<options>";
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
    });
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
    selectElt.append(innerHtml);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
}
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
var currentQueryType = null;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
function updateQueryType(queryType) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
    var resultFormats = ASK_RESULT_FORMAT;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
    if(currentQueryType != queryType) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
        if(queryType == "SELECT") {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
            resultFormats = SELECT_RESULT_FORMAT;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
        } else if (queryType == "DESCRIBE" || queryType == "CONSTRUCT") {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
            resultFormats = GRAPH_RESULT_FORMAT;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
        }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
        setOutputFormatSelect($("#format"),resultFormats);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
        currentQueryType = queryType;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
    }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
}
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
function getSubmitState(editor) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
    var parseErrors = $(".parseErrorIcon").length;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
    return editor.getQueryMode() === 'query' && parseErrors == 0 && !/^\s*$/.test(editor.getValue());
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
}
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
function initSparqlEditor() {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
    var yasqe = YASQE.fromTextArea($('#query').get(0), {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
        sparql: {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
            showQueryButton: false,
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
            //endpoint: "{{ route('sparql_proxy') }}",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
            //requestMethod: "GET",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
            //acceptHeaderGraph: "application/rdf+json,/;q=0.9"
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
            //acceptHeaderGraph: "text/turtle,/;q=0.9",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
            //acceptHeaderSelect: "application/x-turtle,/;q=0.9",
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
        }
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
    });
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
    yasqe.on("update", function(instance) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
        var queryType = instance.getQueryType();
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
        updateQueryType(queryType);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
        var submitState = getSubmitState(instance);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
        $("#submit-query-form").prop('disabled', !submitState );
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
        $("#format").prop('disabled', !submitState );
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
        $("#timeout").prop('disabled', !submitState );
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
    });
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
    $("#query-form").submit(function() {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
        return getSubmitState(yasqe);
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
    });
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
    $("#limits-choices a").click(function(e) {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
        e.preventDefault();
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
        $('#limit').val($(e.target).text());
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
    });
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
    // var yasr = YASR($('#results').get(0), {
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
    //     getUsedPrefixes: yasqe.getPrefixesFromQuery,
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
    //     useGoogleCharts: false,
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
    //     outputPlugins: ["table", "error", "boolean", "rawResponse", "pivot"],
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
    // });
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
    // yasqe.options.sparql.callbacks.complete = yasr.setResponse;
c731ab9b934d implement first version of sparql client interface
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
}