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 &ndash; 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 &ndash; 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" );
+      }
 
     });