diff options
Diffstat (limited to '')
-rw-r--r-- | third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_data/move_to.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_data/move_to.js b/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_data/move_to.js new file mode 100644 index 0000000000..46f248540b --- /dev/null +++ b/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_data/move_to.js @@ -0,0 +1,52 @@ +'use strict'; + +define( + + [ + 'flight/lib/component', + 'components/mustache/mustache', + 'app/data', + 'app/templates' + ], + + function(defineComponent, Mustache, dataStore, templates) { + return defineComponent(moveTo); + + function moveTo() { + + this.defaultAttrs({ + dataStore: dataStore + }); + + this.serveAvailableFolders = function(ev, data) { + this.trigger("dataMoveToItemsServed", { + markup: this.renderFolderSelector(this.getOtherFolders(data.folder)) + }) + }; + + this.renderFolderSelector = function(items) { + return Mustache.render(templates.moveToSelector, {moveToItems: items}); + }; + + this.moveItems = function(ev, data) { + var itemsToMoveIds = data.itemIds + this.attr.dataStore.mail.forEach(function(item) { + if (itemsToMoveIds.indexOf(item.id) > -1) { + item.folders = [data.toFolder]; + } + }); + this.trigger('dataMailItemsRefreshRequested', {folder: data.fromFolder}); + }; + + this.getOtherFolders = function(folder) { + return this.attr.dataStore.folders.filter(function(e) {return e != folder}); + }; + + this.after("initialize", function() { + this.on("uiAvailableFoldersRequested", this.serveAvailableFolders); + this.on("uiMoveItemsRequested", this.moveItems); + }); + } + + } +); |