source: Dev/branches/Cartis/Tiles preview/Tests/js/menu.js @ 276

Last change on this file since 276 was 276, checked in by tjcschipper, 13 years ago

Laatste versie van de 'oude' dashboard interface.

File size: 5.5 KB
Line 
1(function(){
2       
3    function QuestionMenu() {
4       
5        var self = this;
6        var _element;
7       
8        this.init = function() {
9            if (self._element == null || self._element == undefined) {
10                self._element = $("<div>").attr("id","menuContainer");
11                $("#content").append(self._element);
12            }
13        };
14        this.init();
15       
16        this.loadContents = function (data) {
17            // IN this function we are going to load the mock database, and create instances of the various classes where appropriate, then initialize them.
18            var _subcatCount = 0;
19            for (var key in data) {
20                if (!(data[key] instanceof Function)) {
21                    // This is a subcat!!
22                    debugger;
23                    var subcat = new Subcat(key);
24                    var header = new SubcatHeader(key);
25                    // Add a header
26                    subcat.addHeader(header);
27                    self._element.append(subcat.header().element());
28                    for (var n = 0; n < data[key].length; n++) {
29                        //Add question displays to the subcat container
30                        var qData = data[key][n];
31                        var question = new Question(qData.text, qData.type, qData.uid);
32                        var display = new QuestionDisplay(question, true); // True means full mode, for display in menu, not in header.
33                        subcat.addDisplay(display);
34                    }
35                    self._element.append(subcat.element());
36                }
37            }   
38        }
39    }
40    window.QuestionMenu = QuestionMenu;
41   
42   
43    function Subcat(title) {
44        var self = this;
45        var _title, _displays, _header, _containerElement;
46       
47        this.init = function(title){
48            self._title = title;
49            self._displays = [];
50            self._containerElement = $("<div>").attr("id", "subcat_"+title).addClass("subcatContainer collapsed");
51        };
52        self.init(title);
53       
54        this.addDisplay = function(display) {
55            self._displays.push(display);
56            self._containerElement.append(display.element());
57        }
58       
59        this.addHeader = function(header) {
60            self._header = header;
61        }
62       
63        this.element = function() {
64            return self._containerElement;
65        }
66       
67        this.header = function() {
68            return self._header;
69        }
70    }
71    window.Subcat = Subcat;
72   
73    function SubcatHeader(title) {
74        var _element;
75        var self = this;
76        var _title = title;
77        var _template = '<p class="subcatTitle">_TITLE</p><div class="questionDisplay"><img class="icon_small left" src="images/questionIconS3.png"/><span class="questionTitle">_QTITLE</span><div class="smallButton right">Add ></div><img class="icon_small right" src="images/inspectIconS.png"/></div><img class="arrowIcon open" src="images/arrow_closed.png"/>';
78       
79        this.init = function(id) {
80            var markup = _template;
81            markup = markup.replace("_TITLE", _title);
82            markup = markup.replace("_QTITLE", "derpaderp");
83            self._element = $("<div>").addClass("subcatHeader").attr("id", "subcatHeader_"+id).html(markup);
84            self._element.children().filter(".arrowIcon").bind("click", self.toggleState);
85        };
86       
87       
88        this.element = function () {
89            return self._element;
90        }
91       
92        this.toggleState = function(event) {
93            debugger;
94            var id = event.target.parentNode.id.toString().split("subcatHeader_")[1];
95            var el = $("#subcat_"+id);
96            if (el.hasClass("collapsed")) el.removeClass("collapsed").addClass("open");
97            else if (el.hasClass("open")) el.removeClass("open").addClass("collapsed");
98        }
99        self.init(_title);   
100    }
101    window.SubcatHeader = SubcatHeader;
102   
103    function Question(text, type, uid) {
104        var self = this;
105        var _uid;
106        var _text;
107        var _type;
108       
109        this.init = function(text, type, uid) {
110            self._text = text;
111            self._type = type;
112            self._uid = uid;
113        }
114        self.init(text, type, uid);
115       
116        this.getUid = function() {
117            return self._uid;
118        }
119        this.getText = function() {
120            return self._text;
121        }
122       
123        this.getType = function() {
124            return self._type;
125        }
126    }
127    window.Question = Question;
128   
129    function QuestionDisplay(question, fullMode) {
130        var self = this;
131        var _fullMode, _question, _element;
132        var _template = '<img class="icon_small left" src="images/questionIconS3.png"/><span class="questionTitle">_TITLE</span><span class="questionAnswers">_ANSWERS</span><img class="icon_small right" src="images/inspectIconS.png"/>';
133       
134        this.init = function(q, fM) {
135            debugger;
136            self._question = q;
137            self._fullMode = fM;
138            var markup = _template;
139            markup = markup.replace("_TITLE", self._question._text);
140            markup = markup.replace("_ANSWERS", "802 answers");
141            self._element = $("<div>").attr("id", question.getUid()).addClass("questionDisplay").html(markup);
142        };
143        self.init(question, fullMode);
144       
145        this.element = function() {
146            return self._element;
147        }
148    }
149    window.QuestionDisplay = QuestionDisplay;
150
151
152})();
Note: See TracBrowser for help on using the repository browser.