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