1 SliceEditorApp = new Marionette.Application();
3 SliceEditorApp.addRegions({
\r
4 sliceList: "#sliceEditorList",
\r
5 sliceDetail: "#sliceEditorDetail",
\r
8 SliceEditorApp.SliceListItemView = Marionette.ItemView.extend({
9 template: "#sliceeditor-listitem-template",
\r
11 className: 'sliceeditor-listitem',
\r
13 events: {"click": "changeSlice"},
\r
15 changeSlice: function(e) {
\r
17 e.stopPropagation();
\r
19 if (SliceEditorApp.sliceDetail.currentView && SliceEditorApp.sliceDetail.currentView.dirty) {
\r
20 if (!confirm("discard current changes?")) {
\r
25 var sliceDetailView = new SliceEditorApp.SliceDetailView({
\r
28 SliceEditorApp.sliceDetail.show(sliceDetailView);
\r
32 SliceEditorApp.SliceListView = Marionette.CollectionView.extend({
34 childView: SliceEditorApp.SliceListItemView,
\r
36 modelEvents: {"sync": "render"},
\r
38 initialize: function() {
\r
40 this.listenTo(this.collection, 'change', this._renderChildren);
\r
43 attachHtml: function(compositeView, childView, index) {
\r
44 // The REST API will let admin users see everything. For the developer
\r
45 // view we still want to hide slices we are not members of.
\r
46 if (childView.model.get("sliceInfo").roles.length == 0) {
\r
49 SliceEditorApp.SliceListView.__super__.attachHtml(compositeView, childView, index);
\r
53 SliceEditorApp.SliceDetailView = Marionette.ItemView.extend({
\r
54 template: "#sliceeditor-sliceedit-template",
\r
57 events: {"click button.js-submit": "submitClicked",
\r
58 "change input": "inputChanged"},
\r
60 inputChanged: function(e) {
\r
64 submitClicked: function(e) {
\r
66 var data = Backbone.Syphon.serialize(this);
\r
67 this.model.save(data);
\r
72 SliceEditorApp.on("start", function() {
73 var sliceListView = new SliceEditorApp.SliceListView({
74 collection: xos.slicesPlus
\r
76 SliceEditorApp.sliceList.show(sliceListView);
\r
77 xos.slicesPlus.startPolling();
\r
80 $(document).ready(function(){
81 SliceEditorApp.start();