]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/evergreen/util/controller.js
*** empty log message ***
[Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / evergreen / util / controller.js
1 dump('entering util/controller.js\n');
2
3 if (typeof util == 'undefined') util = {};
4 util.controller = function () {
5
6         JSAN.use('util.error'); this.error = new util.error();
7
8         return this;
9 };
10
11 util.controller.prototype = {
12
13         'cmds' : {},
14
15         'init' : function (params) {
16
17                 if (typeof params.control_map == 'undefined') throw('util.controller.init: No control_map');
18
19                 this.control_map = params.control_map;
20                 this.window_knows_me_by = params.window_knows_me_by;
21                 this.render_list = [];
22                 this.view = {};
23                 
24                 for (var i in this.control_map) {
25                         var cmd = document.getElementById(i);
26                         if (cmd) {
27                                 for (var j in this.control_map[i][0]) {
28                                         if (this.control_map[i][1]) {
29                                                 var ev_type = this.control_map[i][0][j];
30                                                 switch(ev_type) {
31                                                         case 'render':
32                                                                 this.render_list.push( [i, this.control_map[i][1](cmd)] ); 
33                                                         break;
34                                                         case 'on_command':
35                                                                 if (!this.window_knows_me_by) 
36                                                                         throw('util.controller: on_command requires window_knows_me_by');
37                                                                 var s = this.window_knows_me_by + ".cmds." + i + "()";
38                                                                 cmd.setAttribute(ev_type, s);   
39                                                         break;
40                                                         default: cmd.addEventListener(ev_type,this.control_map[i][1],false);
41                                                 }
42                                         }
43                                 }
44                         }
45                         this.view[i] = cmd;
46                 }
47         },
48
49         'render' : function(id) {
50                 for (var i in this.render_list) {
51                         try {
52                                 if (id) {
53                                         if (id == this.render_list[i][0]) this.render_list[i][1]();
54                                 } else {
55                                         this.render_list[i][1]();
56                                 }
57                         } catch(E) {
58                                 var error = 'Problem in circ.checkout.render with\n' 
59                                         + this.render_list[i] + '\n\n' + js2JSON(E);
60                                 this.error.sdump('D_ERROR',error);
61                         }
62                 }
63         }
64 }
65 dump('exiting util/controller.js\n');