dataset-controller.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /** Controller for the dataset.html page */
  2. define(
  3. function( require ) {
  4. var Marionette = require( "marionette" ),
  5. Backbone = require( "backbone" ),
  6. _ = require( "underscore" ),
  7. fui = require( "app/fui" ),
  8. DatasetSelectorView = require( "app/views/dataset-selector" ),
  9. TabbedViewManagerView = require( "app/views/tabbed-view-manager" ),
  10. FileUploadView = require( "app/views/file-upload" ),
  11. DatasetInfoView = require( "app/views/dataset-info" ),
  12. DatasetEditView = require( "app/views/dataset-edit" ),
  13. QueryController = require( "app/controllers/query-controller" ),
  14. UploadController = require( "app/controllers/upload-controller" );
  15. var DatasetController = function() {
  16. this.initEvents();
  17. };
  18. // add the behaviours defined on the controller
  19. _.extend( DatasetController.prototype, {
  20. initEvents: function() {
  21. _.bindAll( this, "onServerModelReady", "onDatasetChanged" );
  22. if (fui.models.fusekiServer && fui.models.fusekiServer.get( "ready" )) {
  23. this.onServerModelReady();
  24. }
  25. else {
  26. fui.vent.on( "models.fuseki-server.ready", this.onServerModelReady );
  27. }
  28. fui.vent.on( "dataset.changed", this.onDatasetChanged );
  29. },
  30. /**
  31. * When the fuseki server is ready, we can list the initial datasets, and
  32. * start the tab manager to manage the tabbed content.
  33. **/
  34. onServerModelReady: function() {
  35. fui.views.datasetSelectorView = new DatasetSelectorView( {model: fui.models.fusekiServer} )
  36. fui.views.datasetSelectorView.render();
  37. fui.views.tabbedViewManagerView = new TabbedViewManagerView();
  38. fui.views.tabbedViewManagerView.render();
  39. fui.controllers.queryController = new QueryController();
  40. fui.controllers.uploadController = new UploadController();
  41. },
  42. /** Dataset has changed */
  43. onDatasetChanged: function( dsName ) {
  44. var dataset = fui.models.fusekiServer.dataset( dsName );
  45. fui.views.datasetInfoView = new DatasetInfoView( {model: dataset} );
  46. fui.views.datasetInfoView.render();
  47. fui.views.datasetEditView = new DatasetEditView( {model: dataset} );
  48. fui.views.datasetEditView.render();
  49. }
  50. } );
  51. return DatasetController;
  52. }
  53. );