You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by ij...@apache.org on 2014/01/22 15:24:57 UTC
svn commit: r1560358 - in /jena/branches/jena-fuseki-new-ui/pages:
css/fui.css js/app/main.dataset-details.js js/app/models/dataset.js
js/app/models/fuseki-server.js js/app/templates/dataset-details.tpl
js/app/views/dataset-details.js
Author: ijd
Date: Wed Jan 22 14:24:56 2014
New Revision: 1560358
URL: http://svn.apache.org/r1560358
Log:
Basic process of adding a new dataset now working
Modified:
jena/branches/jena-fuseki-new-ui/pages/css/fui.css
jena/branches/jena-fuseki-new-ui/pages/js/app/main.dataset-details.js
jena/branches/jena-fuseki-new-ui/pages/js/app/models/dataset.js
jena/branches/jena-fuseki-new-ui/pages/js/app/models/fuseki-server.js
jena/branches/jena-fuseki-new-ui/pages/js/app/templates/dataset-details.tpl
jena/branches/jena-fuseki-new-ui/pages/js/app/views/dataset-details.js
Modified: jena/branches/jena-fuseki-new-ui/pages/css/fui.css
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/pages/css/fui.css?rev=1560358&r1=1560357&r2=1560358&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/pages/css/fui.css (original)
+++ jena/branches/jena-fuseki-new-ui/pages/css/fui.css Wed Jan 22 14:24:56 2014
@@ -62,3 +62,11 @@ a.navbar-brand {
.options-list {
margin-bottom: 5px;
}
+
+# validation
+.validation-warning {
+ display:none;
+}
+.has-error .validation-warning, .has-warning .validation-warning {
+ display:block;
+}
\ No newline at end of file
Modified: jena/branches/jena-fuseki-new-ui/pages/js/app/main.dataset-details.js
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/pages/js/app/main.dataset-details.js?rev=1560358&r1=1560357&r2=1560358&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/pages/js/app/main.dataset-details.js (original)
+++ jena/branches/jena-fuseki-new-ui/pages/js/app/main.dataset-details.js Wed Jan 22 14:24:56 2014
@@ -10,11 +10,7 @@ define( ['require', '../common-config'],
'lib/jquery.xdomainrequest'
],
function( _, $, Backbone, Marionette, fui, DatasetDetailsController ) {
-
- // TODO: these variables need to be set dynamically based on the current server config
var options = {
- serverPort: 3030,
- managementPort: 3131
};
// initialise the backbone application
Modified: jena/branches/jena-fuseki-new-ui/pages/js/app/models/dataset.js
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/pages/js/app/models/dataset.js?rev=1560358&r1=1560357&r2=1560358&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/pages/js/app/models/dataset.js (original)
+++ jena/branches/jena-fuseki-new-ui/pages/js/app/models/dataset.js Wed Jan 22 14:24:56 2014
@@ -58,22 +58,8 @@ define(
queryURL: function() {
var qurl = this.endpointOfType( "query" );
return qurl ? sprintf( "%s%s/%s", this.baseURL(), this.name(), qurl ) : null;
- },
-
- /**
- * Get the given relative path from the server, and return a promise object which will
- * complete with the JSON object denoted by the path.
- */
- getJSON: function( path, data ) {
- // TODO: will need to know the dataset UUID
-// var url = this.managementURL();
-// if (url) {
-// return $.getJSON( sprintf( url, path, data ) );
-// }
-// else {
-// return new $.Deferred().rejectWith( this, [{unavailable: true}] );
-// }
}
+
} );
return Dataset;
Modified: jena/branches/jena-fuseki-new-ui/pages/js/app/models/fuseki-server.js
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/pages/js/app/models/fuseki-server.js?rev=1560358&r1=1560357&r2=1560358&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/pages/js/app/models/fuseki-server.js (original)
+++ jena/branches/jena-fuseki-new-ui/pages/js/app/models/fuseki-server.js Wed Jan 22 14:24:56 2014
@@ -21,13 +21,7 @@ define(
/** This initializer occurs when the module starts, not when the constructor is invoked */
init: function( options ) {
this._baseURL = sprintf( "http://%s:%s", window.location.hostname, window.location.port );
- if (options.managementPort) {
- this._managementURL = sprintf( "http://%s:%s%s", window.location.hostname,
- options.managementPort, window.location.pathname );
- }
- else {
- this._managementURL = null;
- }
+ this._managementURL = null;
},
baseURL: function() {
@@ -59,11 +53,11 @@ define(
saveServerDescription: function( serverDesc ) {
// wrap each dataset JSON description as a dataset model
var bURL = this.baseURL();
-// var mgmtURL = sprintf( "%s/%s", this.managementURL(), "/$/status" );
var mgmtURL = bURL;
if (serverDesc.admin) {
mgmtURL = bURL.replace( ":" + window.location.port, ":" + serverDesc.admin.port );
+ this._managementURL = mgmtURL;
}
var datasets = _.map( serverDesc.datasets, function( d ) {
@@ -79,6 +73,19 @@ define(
*/
getJSON: function( path, data ) {
return $.getJSON( path, data );
+ },
+
+ /** Update or create a dataset by posting to its endpoint */
+ updateOrCreateDataset: function( datasetId, data ) {
+ var url = sprintf( "%s/$/datasets%s", this.managementURL(),
+ datasetId ? ("/" + datasetId) : ""
+ );
+
+ return $.ajax( url,
+ { data: data,
+ method: "post"
+ }
+ );
}
} );
Modified: jena/branches/jena-fuseki-new-ui/pages/js/app/templates/dataset-details.tpl
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/pages/js/app/templates/dataset-details.tpl?rev=1560358&r1=1560357&r2=1560358&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/pages/js/app/templates/dataset-details.tpl (original)
+++ jena/branches/jena-fuseki-new-ui/pages/js/app/templates/dataset-details.tpl Wed Jan 22 14:24:56 2014
@@ -14,7 +14,8 @@
<div class="form-group">
<label for="datasetName" class="col-sm-2 control-label">Dataset name</label>
<div class="col-sm-10">
- <input type="text" class="form-control" id="datasetName" placeholder="dataset name"
+ <div class="validation-warning dbNameValidation">A name for the dataset is required</div>
+ <input type="text" class="form-control" name="dbName" placeholder="dataset name"
<%= newDataset ? "" : ( "value='" + datasetId + "'") %>
/>
</div>
@@ -24,23 +25,27 @@
<div class="col-sm-10">
<div class="radio">
<label>
- <input type="radio" name="optionsDatasetType" id="optionsDatasetTypeMem" value="mem" checked>
+ <input type="radio" name="dbType" value="mem" checked>
In-memory – dataset will be recreated when Fuseki restarts, but contents will be lost
</label>
</div>
<div class="radio">
<label>
- <input type="radio" name="optionsDatasetType" id="optionsDatasetTypeTDB" value="tdb">
+ <input type="radio" name="dbType" value="tdb">
Persistent – dataset will persist across Fuseki restarts
</label>
</div>
</div>
</div>
+ <div class="row">
+ <div class="errorOutput"></div>
+ </div>
+
<div class="row controls">
<div class="col-md-3">
<a href="admin-data-management.html" class="btn btn-sm btn-default"><i class="fa fa-mail-reply"></i> cancel</a>
- <a href="#" class="btn btn-sm btn-primary"><i class="fa fa-check"></i> <%= commitAction %></a>
+ <a href="#" class="btn btn-sm btn-primary action commit simple"><i class="fa fa-check"></i> <%= commitAction %></a>
</div>
</div>
</form>
@@ -53,7 +58,7 @@
<div class="row controls">
<div class="col-md-3">
<a href="admin-data-management.html" class="btn btn-sm btn-default"><i class="fa fa-mail-reply"></i> cancel</a>
- <a href="#" class="btn btn-sm btn-primary"><i class="fa fa-check"></i> <%= commitAction %></a>
+ <a href="#" class="btn btn-sm btn-primary action commit advanced"><i class="fa fa-check"></i> <%= commitAction %></a>
</div>
</div>
</div>
@@ -66,7 +71,7 @@
<div class="row controls">
<div class="col-md-3">
<a href="admin-data-management.html" class="btn btn-sm btn-default"><i class="fa fa-mail-reply"></i> cancel</a>
- <a href="#" class="btn btn-sm btn-primary"><i class="fa fa-upload"></i> upload config file</a>
+ <a href="#" class="btn btn-sm btn-primary action upload"><i class="fa fa-upload"></i> upload config file</a>
</div>
</div>
</div>
@@ -75,3 +80,4 @@
</div><!-- /.col-md-span-12 -->
</div><!-- /.row -->
+
Modified: jena/branches/jena-fuseki-new-ui/pages/js/app/views/dataset-details.js
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/pages/js/app/views/dataset-details.js?rev=1560358&r1=1560357&r2=1560358&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/pages/js/app/views/dataset-details.js (original)
+++ jena/branches/jena-fuseki-new-ui/pages/js/app/views/dataset-details.js Wed Jan 22 14:24:56 2014
@@ -17,6 +17,7 @@ define(
el: "#dataset-details",
events: {
+ "click a.action.commit.simple": "onCommitSimple"
// "change #independent-variable-selection": "selectVariable",
// "click a.action.filter": "onFilter"
},
@@ -26,8 +27,49 @@ define(
serializeData: function() {
return this.model;
- }
+ },
+
+ // event handlers
+
+ onCommitSimple: function( e ) {
+ e.preventDefault();
+
+ if (this.validateSimpleForm()) {
+ var options = $("#simple-edit form").serializeArray();
+ fui.models.fusekiServer.updateOrCreateDataset( this.model.name, options )
+ .success( this.onUpdateOrCreateSuccess )
+ .fail( this.onUpdateOrCreateFail );
+ }
+ },
+
+ onUpdateOrCreateSuccess: function( e ) {
+ location = "admin-data-management.html";
+ },
+ /** Todo: need to do a better job of responding to errors */
+ onUpdateOrCreateFail: function( jqXHR, textStatus, errorThrown ) {
+ $(".errorOutput").html( sprintf( "<p class='has-error'>Sorry, that didn't work because:</p><pre>%s</pre>", errorThrown || textStatus ) );
+ },
+
+ // validation
+
+ validateSimpleForm: function() {
+ this.clearValidation();
+
+ if (! $("input[name=dbName]").val()) {
+ $(".dbNameValidation").removeClass("hidden")
+ .parents(".form-group" )
+ .addClass( "has-error" );
+ return false;
+ }
+
+ return true;
+ },
+
+ clearValidation: function() {
+ $(".has-error").removeClass( "has-error" );
+ $(".has-warning").removeClass( "has-warning" );
+ }
});