|
From: <tob...@us...> - 2014-02-11 23:29:46
|
Revision: 7845
http://bigdata.svn.sourceforge.net/bigdata/?rev=7845&view=rev
Author: tobycraig
Date: 2014-02-11 23:29:39 +0000 (Tue, 11 Feb 2014)
Log Message:
-----------
Added form at bottom of index page to accept file selection or drag/drops, and detect file type.
Modified Paths:
--------------
branches/RDR/bigdata-war/src/html/index.html
Added Paths:
-----------
branches/RDR/bigdata-war/src/html/jquery.min.js
branches/RDR/bigdata-war/src/html/workbench.js
Modified: branches/RDR/bigdata-war/src/html/index.html
===================================================================
--- branches/RDR/bigdata-war/src/html/index.html 2014-02-05 20:10:41 UTC (rev 7844)
+++ branches/RDR/bigdata-war/src/html/index.html 2014-02-11 23:29:39 UTC (rev 7845)
@@ -39,6 +39,13 @@
which this page was accessed.
</p>
+<h2>Linked Data Navigation</h2>
+<form action="navigate" method="get">
+ <p>Enter a URI to navigate to <input type="text" name="uri"></p>
+ <p>Tenant Namespace <input type="text" name="namespace" title="Tenant namespace."> (leave empty for default KB)</p>
+ <input type="submit" value="Send" title="Submit query.">
+</form>
+
<!-- Note: Some applications (firefox 7) can not handle a GET with a very long
URL. For that reason ONLY this operation defaults to a POST. You SHOULD
use GET for database queries since they are, by and large, idempotent.
@@ -136,5 +143,32 @@
</p>
</form>
-->
+
+<h2>Multi-purpose textarea</h2>
+<form method="post" id="mp-form" enctype="multipart/form-data">
+<input id="mp-file" type="file" name="file">
+<input id="mp-hidden" type="hidden" name="large-file-contents">
+<textarea id="mp-box" name="textarea"></textarea>
+<select id="mp-type">
+<option value="sparql" selected="selected">SPARQL</option>
+<option value="rdf">RDF</option>
+<option value="path">File path</option>
+</select>
+<select id="rdf-type" style="display: none;">
+<option value="">Select RDF format</option>
+<option value="n-quads">N-Quads</option>
+<option value="n-triples">N-Triples</option>
+<option value="n3">Notation3</option>
+<option value="rdf/xml">RDF/XML</option>
+<option value="trig">TriG</option>
+<option value="trix">TriX</option>
+<option value="turtle">Turtle</option>
+</select>
+<input type="submit">
+</form>
+
+<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
+<script>window.jQuery || document.write('<script src="/jquery.min.js"><\/script>')</script>
+<script src="/workbench.js"></script>
</body>
</html>
\ No newline at end of file
Added: branches/RDR/bigdata-war/src/html/jquery.min.js
===================================================================
Added: branches/RDR/bigdata-war/src/html/workbench.js
===================================================================
--- branches/RDR/bigdata-war/src/html/workbench.js (rev 0)
+++ branches/RDR/bigdata-war/src/html/workbench.js 2014-02-11 23:29:39 UTC (rev 7845)
@@ -0,0 +1,114 @@
+function handleFile(e) {
+ e.stopPropagation();
+ e.preventDefault();
+
+ if(e.type == 'drop') {
+ var files = e.originalEvent.dataTransfer.files;
+ } else {
+ var files = e.originalEvent.target.files;
+ }
+
+ // only one file supported
+ if(files.length > 1) {
+ alert('Ignoring all but first file');
+ }
+
+ var f = files[0];
+
+ // if file is too large, tell user to supply local path
+ if(f.size > 100 * 1048576) {
+ alert('File too large, enter local path to file');
+ $('#mp-box').val('/path/to/' + f.name);
+ setType('path');
+ $('#mp-file').val('');
+ return;
+ }
+
+ // if file is small enough, populate the textarea with it
+ var holder;
+ if(f.size < 10 * 1024) {
+ holder = '#mp-box';
+ $('#mp-hidden').val('');
+ } else {
+ // store file contents in hidden input and clear textarea
+ holder = '#mp-hidden';
+ $('#mp-box').val('');
+ }
+ var fr = new FileReader();
+ fr.onload = function(e2) {
+ $(holder).val(e2.target.result);
+ guessType(f.name.split('.').pop().toLowerCase(), e2.target.result);
+ };
+ fr.readAsText(f);
+ $('#mp-file').val('');
+}
+
+function guessType(extension, content) {
+ // try to guess type
+ if(extension == 'rq') {
+ // SPARQL
+ setType('sparql');
+ } else if(extension in rdf_types) {
+ // RDF
+ setType('rdf', rdf_types[extension]);
+ } else {
+ // extension is no help, see if we can find some SPARQL commands
+ content = content.toUpperCase();
+ for(var i=0, found=false; i<sparql_update_commands.length; i++) {
+ if(content.indexOf(sparql_update_commands[i]) != -1) {
+ setType('sparql');
+ found = true;
+ break;
+ }
+ }
+ if(!found) {
+ setType('rdf', '');
+ }
+ }
+}
+
+function handlePaste(e) {
+ alert('pasted!');
+ e.stopPropagation();
+ e.preventDefault();
+}
+
+function handleTypeChange(e) {
+ $('#rdf-type').toggle($(this).val() == 'rdf');
+}
+
+function setType(type, format) {
+ $('#mp-type').val(type);
+ if(type == 'rdf') {
+ $('#rdf-type').show();
+ $('#rdf-type').val(format);
+ } else {
+ $('#rdf-type').hide();
+ }
+}
+
+// .xml is used for both RDF and TriX, assume it's RDF
+// We could check the parent element to see which it is
+var rdf_types = {'nq': 'n-quads',
+ 'nt': 'n-triples',
+ 'n3': 'n3',
+ 'rdf': 'rdf/xml',
+ 'rdfs': 'rdf/xml',
+ 'owl': 'rdf/xml',
+ 'xml': 'rdf/xml',
+ 'trig': 'trig',
+ 'trix': 'trix',
+ //'xml': 'trix',
+ 'ttl': 'turtle'};
+
+var sparql_update_commands = ['INSERT', 'DELETE'];
+
+$('#mp-file').change(handleFile);
+$('#mp-box').on('drop', handleFile);
+$('#mp-box').on('paste', handlePaste);
+$('#mp-type').change(handleTypeChange);
+
+$('#mp-form').submit(function() {
+ // determine action based on type
+
+});
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|