app/scripts/controllers/dialog/widgetGallery.js (49 lines of code) (raw):
App.WidgetGalleryController = Ember.ObjectController.extend({
availableWidgets : [],
configuredWidgets : [],
templateName : "widgetGallery",
localizeConfig: function(arrayOfWidgets) {
$.each(arrayOfWidgets, function(index, widget) {
if(!Ember.isNone(widget)) {
widget.title_localized = Ember.I18n.translate(widget.title);
widget.description_localized = Ember.I18n.translate(widget.description);
widget.documentation_localized = Ember.I18n.translate(widget.documentation);
}
});
return arrayOfWidgets;
},
actions : {
addWidget : function(widgetId) {
var configuredWidgets = $.parseJSON(localStorage.getItem("configuredWidgets")),
availableWidgets = $.parseJSON(localStorage.getItem("availableWidgets")),
addedWidgets = availableWidgets.filter(function(item, itemIndex, enumerable) {
return item.information.id === widgetId;
});
if(configuredWidgets.contains(addedWidgets[0]) || addedWidgets.length === 0) {
this.send("deleteWidget", widgetId);
} else {
configuredWidgets.push(addedWidgets[0]);
localStorage.setItem("configuredWidgets", JSON.stringify(configuredWidgets));
localStorage.setItem("availableWidgets", JSON.stringify(availableWidgets.without(addedWidgets[0])));
}
},
deleteWidget : function(widgetId) {
var configuredWidgets = $.parseJSON(localStorage.getItem("configuredWidgets")),
availableWidgets = $.parseJSON(localStorage.getItem("availableWidgets")),
deletedWidgets = configuredWidgets.filter(function(item, index, enumerable) {
return item.information.id === widgetId;
});
if(availableWidgets.contains(deletedWidgets[0]) || deletedWidgets.length === 0) {
this.send("addWidget", widgetId);
} else {
availableWidgets.push(deletedWidgets[0]);
localStorage.setItem("configuredWidgets", JSON.stringify(configuredWidgets.without(deletedWidgets[0])));
localStorage.setItem("availableWidgets", JSON.stringify(availableWidgets));
}
},
initModel : function() {
this.set("availableWidgets", this.localizeConfig($.parseJSON(localStorage.getItem("availableWidgets"))) );
this.set("configuredWidgets", this.localizeConfig($.parseJSON(localStorage.getItem("configuredWidgets"))) );
}
}
});