From: <tob...@us...> - 2014-04-17 04:24:41
|
Revision: 8124 http://sourceforge.net/p/bigdata/code/8124 Author: tobycraig Date: 2014-04-17 04:24:36 +0000 (Thu, 17 Apr 2014) Log Message: ----------- Reduced export buttons to just one, with all RDF/non-RDF options in the dropdown Modified Paths: -------------- branches/RDR/bigdata-war/src/html/index.html branches/RDR/bigdata-war/src/html/js/workbench.js Modified: branches/RDR/bigdata-war/src/html/index.html =================================================================== --- branches/RDR/bigdata-war/src/html/index.html 2014-04-15 17:08:37 UTC (rev 8123) +++ branches/RDR/bigdata-war/src/html/index.html 2014-04-17 04:24:36 UTC (rev 8124) @@ -107,20 +107,20 @@ </div> <div class="bottom"> - <button id="query-export-rdf">Export RDF</button> - <button id="query-export-csv">Export CSV</button> - <button id="query-export-json">Export JSON</button> - <button id="query-export-xml">Export XML</button> + <button id="query-export">Export</button> <button id="query-response-clear">Clear</button> </div> </div> - <div id="query-export" class="modal"> + <div id="query-export-modal" class="modal"> <h1>Export</h1> <p> <label for="export-format">Format: </label> - <select id="export-format"></select> + <select id="export-format"> + <optgroup id="rdf-formats" label="RDF"></optgroup> + <optgroup id="non-rdf-formats" label="Other"></optgroup> + </select> </p> <p> <label for="export-filename">Filename: </label> @@ -128,7 +128,7 @@ .<span id="export-filename-extension"></span> </p> <p> - <button id="query-download-rdf">Export</button> + <button id="query-download">Export</button> <button class="modal-cancel">Cancel</button> </p> </div> Modified: branches/RDR/bigdata-war/src/html/js/workbench.js =================================================================== --- branches/RDR/bigdata-war/src/html/js/workbench.js 2014-04-15 17:08:37 UTC (rev 8123) +++ branches/RDR/bigdata-war/src/html/js/workbench.js 2014-04-17 04:24:36 UTC (rev 8124) @@ -478,58 +478,66 @@ $('#query-response, #query-explanation, #query-tab .bottom *').hide(); }); -$('#query-export-rdf').click(function() { updateExportFileExtension(); showModal('query-export'); }); -$('#query-export-csv').click(exportCSV); -$('#query-export-json').click(exportJSON); -$('#query-export-xml').click(exportXML); +$('#query-export').click(function() { updateExportFileExtension(); showModal('query-export-modal'); }); -var rdf_extensions = { - "application/rdf+xml": ['RDF/XML', 'rdf'], - "application/x-turtle": ['N-Triples', 'nt'], - "application/x-turtle": ['Turtle', 'ttl'], - "text/rdf+n3": ['N3', 'n3'], - "application/trix": ['TriX', 'trix'], - "application/x-trig": ['TRIG', 'trig'], - "text/x-nquads": ['NQUADS', 'nq'] +var export_extensions = { + "application/rdf+xml": ['RDF/XML', 'rdf', true], + "application/x-turtle": ['N-Triples', 'nt', true], + "application/x-turtle": ['Turtle', 'ttl', true], + "text/rdf+n3": ['N3', 'n3', true], + "application/trix": ['TriX', 'trix', true], + "application/x-trig": ['TRIG', 'trig', true], + "text/x-nquads": ['NQUADS', 'nq', true], + + "text/csv": ['CSV', 'csv', false, exportCSV], + "application/sparql-results+json": ['JSON', 'json', false, exportJSON], + // "text/tab-separated-values": ['TSV', 'tsv', false, exportTSV], + "application/sparql-results+xml": ['XML', 'xml', false, exportXML] }; -for(var contentType in rdf_extensions) { - $('#export-format').append('<option value="' + contentType + '">' + rdf_extensions[contentType][0] + '</option>'); +for(var contentType in export_extensions) { + var optgroup = export_extensions[contentType][2] ? '#rdf-formats' : '#non-rdf-formats'; + $(optgroup).append('<option value="' + contentType + '">' + export_extensions[contentType][0] + '</option>'); } +$('#export-format option:first').prop('selected', true); + $('#export-format').change(updateExportFileExtension); function updateExportFileExtension() { - $('#export-filename-extension').html(rdf_extensions[$('#export-format').val()][1]); + $('#export-filename-extension').html(export_extensions[$('#export-format').val()][1]); } -$('#query-download-rdf').click(function() { +$('#query-download').click(function() { var dataType = $('#export-format').val(); - var settings = { - type: 'POST', - data: JSON.stringify(QUERY_RESULTS), - contentType: 'application/sparql-results+json', - headers: { 'Accept': dataType }, - success: function(data) { downloadRDFSuccess(data, dataType, $('#export-filename').val()); }, - error: downloadRDFError - }; - $.ajax('/bigdata/sparql?workbench&convert', settings); - $(this).siblings('.modal-cancel').click(); -}); - -function downloadRDFSuccess(data, dataType, filename) { + var filename = $('#export-filename').val(); if(filename == '') { filename = 'export'; } - filename += '.' + rdf_extensions[dataType][1]; - downloadFile(data, dataType, filename); -} + filename += '.' + export_extensions[dataType][1]; + if(export_extensions[dataType][2]) { + // RDF + var settings = { + type: 'POST', + data: JSON.stringify(QUERY_RESULTS), + contentType: 'application/sparql-results+json', + headers: { 'Accept': dataType }, + success: function() { downloadFile(data, dataType, filename); }, + error: downloadRDFError + }; + $.ajax('/bigdata/sparql?workbench&convert', settings); + } else { + // not RDF + export_extensions[dataType][3](filename); + } + $(this).siblings('.modal-cancel').click(); +}); function downloadRDFError(jqXHR, textStatus, errorThrown) { alert(errorThrown); } -function exportXML() { +function exportXML(filename) { var xml = '<?xml version="1.0"?>\n<sparql xmlns="http://www.w3.org/2005/sparql-results#">\n\t<head>\n'; var bindings = []; $('#query-response thead tr td').each(function(i, td) { @@ -561,27 +569,32 @@ xml += '\t\t</result>\n'; }); xml += '\t</results>\n</sparql>\n'; - downloadFile(xml, 'application/sparql-results+xml', 'export.xml'); + downloadFile(xml, 'application/sparql-results+xml', filename); } -function exportJSON() { +function exportJSON(filename) { var json = JSON.stringify(QUERY_RESULTS); - downloadFile(json, 'application/sparql-results+json', 'export.json'); + downloadFile(json, 'application/sparql-results+json', filename); } -function exportCSV() { - // FIXME: escape commas +function exportCSV(filename) { var csv = ''; $('#query-response table tr').each(function(i, tr) { $(tr).find('td').each(function(j, td) { if(j > 0) { csv += ','; } - csv += td.textContent; + var val = td.textContent; + // quote value if it contains " , \n or \r + // replace " with "" + if(val.match(/[",\n\r]/)) { + val = '"' + val.replace('"', '""') + '"'; + } + csv += val; }); csv += '\n'; }); - downloadFile(csv, 'application/csv', 'export.csv'); + downloadFile(csv, 'text/csv', filename); } function downloadFile(data, type, filename) { @@ -680,9 +693,12 @@ // remove (unused) c variable from JSON QUERY_RESULTS.head.vars.pop() } - $('#query-export-rdf').show(); + $('#rdf-formats').prop('disabled', false); } else { - $('#query-export-rdf').hide(); + $('#rdf-formats').prop('disabled', true); + if($('#rdf-formats option:selected').length == 1) { + $('#non-rdf-formats option:first').prop('selected', true); + } } $('#query-response a').click(function(e) { @@ -1048,6 +1064,16 @@ return '<' + uri + '>'; } +function unabbreviate(uri) { + if(uri.charAt(0) == '<') { + // not abbreviated + return uri; + } + // get namespace + var namespace = uri.split(':', 1)[0]; + return '<' + uri.replace(namespace, NAMESPACE_SHORTCUTS[namespace]) + '>'; +} + function parseSID(sid) { // var re = /<< <([^<>]*)> <([^<>]*)> <([^<>]*)> >>/; var re = /<< *([^ ]+) +([^ ]+) +([^ ]+) *>>/; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |