/** Controller for the dataset.html page */
define(
function( require ) {
var Marionette = require( "marionette" ),
Backbone = require( "backbone" ),
_ = require( "underscore" ),
fui = require( "app/fui" ),
DatasetSelectorView = require( "app/views/dataset-selector" ),
TabbedViewManagerView = require( "app/views/tabbed-view-manager" ),
FileUploadView = require( "app/views/file-upload" ),
DatasetInfoView = require( "app/views/dataset-info" ),
DatasetEditView = require( "app/views/dataset-edit" ),
QueryController = require( "app/controllers/query-controller" ),
UploadController = require( "app/controllers/upload-controller" );
var DatasetController = function() {
this.initEvents();
};
// add the behaviours defined on the controller
_.extend( DatasetController.prototype, {
initEvents: function() {
_.bindAll( this, "onServerModelReady", "onDatasetChanged" );
if (fui.models.fusekiServer && fui.models.fusekiServer.get( "ready" )) {
this.onServerModelReady();
}
else {
fui.vent.on( "models.fuseki-server.ready", this.onServerModelReady );
}
fui.vent.on( "dataset.changed", this.onDatasetChanged );
},
/**
* When the fuseki server is ready, we can list the initial datasets, and
* start the tab manager to manage the tabbed content.
**/
onServerModelReady: function() {
fui.views.datasetSelectorView = new DatasetSelectorView( {model: fui.models.fusekiServer} )
fui.views.datasetSelectorView.render();
fui.views.tabbedViewManagerView = new TabbedViewManagerView();
fui.views.tabbedViewManagerView.render();
fui.controllers.queryController = new QueryController();
fui.controllers.uploadController = new UploadController();
},
/** Dataset has changed */
onDatasetChanged: function( dsName ) {
var dataset = fui.models.fusekiServer.dataset( dsName );
fui.views.datasetInfoView = new DatasetInfoView( {model: dataset} );
fui.views.datasetInfoView.render();
fui.views.datasetEditView = new DatasetEditView( {model: dataset} );
fui.views.datasetEditView.render();
}
} );
return DatasetController;
}
);