summaryrefslogtreecommitdiffstats
path: root/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_data/move_to.js
blob: 46f248540b584a0f90df27ae4628cfa53d4cc73e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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);
      });
    }

  }
);