/* This is an example that uses xoslib + marionette to display the developer

   view.


   For an example that uses xoslib + datatables, see xosDeveloper_datatables.js

*/


DeveloperApp = new Marionette.Application();

DeveloperApp.addRegions({
  mainRegion: "#developerView"
});

DeveloperApp.SliceDetailView = Marionette.ItemView.extend({
  template: "#developer-slicedetail-template",
  tagName: 'tr',
  className: 'developer_slicedetail'
});

DeveloperApp.SliceListView = Marionette.CompositeView.extend({
  tagName: "table",
  className: "table table-bordered table-striped",
  template: "#developer-slicetable-template",
  childView: DeveloperApp.SliceDetailView,
  childViewContainer: "tbody",

  events: {"click .sort": "changeSort"},

  initialize: function() {
      this.listenTo(this.collection, 'change', this._renderChildren);
  },

  changeSort: function(e) {
      parts=$(e.currentTarget).attr("id").split('-');
      order=parts[1];
      fieldName=parts[2];
      this.collection.sortVar = fieldName;
      this.collection.sortOrder = order;
      this.collection.sort();
  },

  attachHtml: function(compositeView, childView, index) {
      // The REST API will let admin users see everything. For the developer
      // view we still want to hide slices we are not members of.
      if (childView.model.get("sliceInfo").roles.length == 0) {
          return;
      }
      DeveloperApp.SliceListView.__super__.attachHtml(compositeView, childView, index);
  },
});

DeveloperApp.on("start", function() {
  var developerSliceListView = new DeveloperApp.SliceListView({
    collection: xos.slicesPlus
  });
  DeveloperApp.mainRegion.show(developerSliceListView);
  xos.slicesPlus.startPolling();
});

$(document).ready(function(){
  DeveloperApp.start();
});

