index-controller.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /** Controller for the main index.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. sprintf = require( "sprintf" ),
  9. DatasetSelectionListView = require( "app/views/dataset-selection-list" );
  10. var IndexController = function() {
  11. this.initEvents();
  12. };
  13. // add the behaviours defined on the controller
  14. _.extend( IndexController.prototype, {
  15. initEvents: function() {
  16. _.bindAll( this, "onServerModelReady" );
  17. fui.vent.on( "models.fuseki-server.ready", this.onServerModelReady );
  18. },
  19. onServerModelReady: function() {
  20. new DatasetSelectionListView( {model: fui.models.fusekiServer} ).render();
  21. this.displayVersion();
  22. },
  23. /** Display the fuseki software version */
  24. displayVersion: function() {
  25. var sd = fui.models.fusekiServer.get( "serverDescription" );
  26. var version = sd.version;
  27. var uptime = sd.uptime;
  28. var s = uptime % 60;
  29. var m = Math.floor( (uptime / 60) % 60 );
  30. var h = Math.floor( (uptime / (60 * 60)) % 24 );
  31. var d = Math.floor( (uptime / (60 * 60 * 24)) );
  32. var status = sprintf( "Version %s. Uptime: %s %s %dm %02ds",
  33. version,
  34. (d > 0 ? d + "d" : ""),
  35. (h > 0 ? h + "h" : ""),
  36. m, s );
  37. $('.host-details').html( status );
  38. }
  39. } );
  40. return IndexController;
  41. }
  42. );