aboutsummaryrefslogtreecommitdiffstats
path: root/source/bcSelector.js
blob: 6b28ee6a2fca0289f692103ea6234912d694e23e (plain) (blame)
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
enyo.kind({
    name: "biblez.bcSelector",
    kind: "enyo.FittableRows",
    events: {
        onSelect: "",
        onBack: ""
    },
    classes: "enyo-fit",
    published: {
        module: null
    },
    components: [
        {name: "bcPanel", kind: "Panels", arrangerKind: "CardArranger", fit: true, animate: false, components: [
            {name: "bookPanel", kind: "enyo.FittableRows", components: [
                {kind: "onyx.Toolbar", components: [
                    {kind: "onyx.IconButton", src: "assets/back.png", ontap: "doBack"},
                    {content: $L("Books")}
                ]},
                {kind: "enyo.Scroller", fit: true, touch: true, components: [
                    {name: "bookRepeater", kind: "Repeater", count: 0, onSetupItem: "setBookItems", components: [
                        {name: "bookItem", kind: "onyx.Button", classes: "bc-item", ontap: "handleBook"}
                    ]}
                ]}
            ]},
            {name: "chapterPanel", kind: "enyo.FittableRows", components: [
                {name: "tbChapter", kind: "onyx.Toolbar", components: [
                    {kind: "onyx.IconButton", src: "assets/back.png", ontap: "handleBack"},
                    {name: "chapterLabel", content: $L("Chapters"), classes: "text-ellipsis"}
                ]},
                {kind: "enyo.Scroller", fit: true, touch: true, components: [
                    {name: "chapterRepeater", kind: "Repeater", count: 0, onSetupItem: "setChapterItems", components: [
                        {name: "chapterItem", kind: "onyx.Button", classes: "bc-item", ontap: "handleChapter"}
                    ]}
                ]}
            ]}
        ]}

    ],

    books: [],
    currentBook: null,

    setPanel: function (index) {
        this.$.bcPanel.setIndex(index);
    },

    handleBack: function (inSender, inEvent) {
        this.$.bcPanel.setIndex(0);
    },

    moduleChanged: function (inSender, inEvent) {
        this.books = this.module.getAllBooks();
        this.$.bookRepeater.setCount(this.books.length);
    },

    setBookItems: function (inSender, inEvent) {
        if (inEvent.index === 39) {
            inEvent.item.$.bookItem.addStyles("clear: both;");
        }
        if (inEvent.index >= 39) {
            inEvent.item.$.bookItem.addClass("books-nt");
        } else {
            inEvent.item.$.bookItem.addClass("books-ot");
        }
        inEvent.item.$.bookItem.setContent(this.books[inEvent.index].abbrev.slice(0,4));
    },

    handleBook: function (inSender, inEvent) {
        this.currentBook = this.books[inEvent.index];
        this.$.chapterRepeater.setCount(this.currentBook.maxChapter);
        this.$.chapterLabel.setContent($L("Chapters in ") + this.currentBook.name);
        this.$.bcPanel.setIndex(1);
        //truncate text if the label's width is longer than window.innerWidth
        if(window.innerWidth - 60 < this.$.chapterLabel.hasNode().clientWidth) {
            var w = this.$.tbChapter.hasNode().clientWidth - 60 + "px";
            this.$.chapterLabel.applyStyle("width", w);
        }

    },

    setChapterItems: function (inSender, inEvent) {
        inEvent.item.$.chapterItem.setContent(inEvent.index+1);
    },

    handleChapter: function (inSender, inEvent) {
        this.doSelect({book: this.currentBook.abbrev, chapter: inEvent.index+1, osisRef: this.currentBook.abbrev + "." + (inEvent.index+1), label: this.currentBook.abbrev + " " + (inEvent.index+1)});
        this.$.bcPanel.setIndex(0);
    },

    resizeHandler: function () {
        this.inherited(arguments);
        var w = this.$.tbChapter.hasNode().clientWidth - 60 + "px";
        this.$.chapterLabel.applyStyle("width", w);
    }
});