Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/html/filter.js
diff options
context:
space:
mode:
Diffstat (limited to 'html/filter.js')
-rw-r--r--html/filter.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/html/filter.js b/html/filter.js
new file mode 100644
index 0000000..d1c9a49
--- /dev/null
+++ b/html/filter.js
@@ -0,0 +1,78 @@
+
+
+// Filter popup
+enyo.kind({
+ name: "Abcd.FilterPopup",
+ kind: "onyx.Popup",
+ classes: "filter-popup",
+ centered: true,
+ modal: true,
+ floating: true,
+ published: {
+ filter: null,
+ },
+ events: {
+ onFilterChanged: ""
+ },
+ components: [
+ {name: "box", classes: "filterBox", components: [
+ ]},
+ {name: "trash", kind: "Image", src: "images/trashcan.png", classes: "trashButton", ontap: "trashTaped"},
+ ],
+
+ // Constructor
+ create: function() {
+ this.inherited(arguments);
+ this.filterChanged();
+ },
+
+ rendered: function() {
+ // Delete all
+ var items = [];
+ enyo.forEach(this.$.box.getControls(), function(item) {
+ items.push(item);
+ });
+ for (var i = 0 ; i < items.length ; i++) {
+ items[i].destroy();
+ }
+
+ // Display themes
+ var length = Abcd.themes.length;
+ for (var i = 0 ; i < length ; i++) {
+ this.$.box.createComponent(
+ { kind: "Abcd.Theme", index: i, ontap: "displayCollections" },
+ { owner: this }
+ ).render();
+ }
+
+ // Display letters
+ for (var i = 0 ; i < 26 ; i++) {
+ var letter = String.fromCharCode(65+i).toLowerCase();
+ this.$.box.createComponent(
+ { kind: "Abcd.Letter", letter: letter,
+ selected: (this.filter != null&&this.filter.letter == letter), ontap: "filterOnLetter" },
+ { owner: this }
+ ).render();
+ }
+ },
+
+ filterChanged: function() {
+ this.render();
+ },
+
+ // Trash taped, remove filter
+ trashTaped: function() {
+ this.hide();
+ this.filter = null;
+ this.doFilterChanged();
+ },
+
+ // Tap on a letter, filter on this letter
+ filterOnLetter: function(l, e) {
+ if (!Abcd.letters.hasOwnProperty(l.letter) || Abcd.letters[l.letter].length < 3)
+ return;
+ this.hide();
+ this.filter = l;
+ this.doFilterChanged();
+ }
+}); \ No newline at end of file