|
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.
|