]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/util/controller.js
some error logging tweaks. D_ERROR to D_WARN for util/controller.js, and make D_ERRO...
[working/Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / 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 'oncommand':
35                                 if (!this.window_knows_me_by) 
36                                     throw('util.controller: on_command requires window_knows_me_by');
37                                 var s = 'try{'+this.window_knows_me_by+".cmds."+i+"();}catch(E){alert(E);}";
38                                 cmd.setAttribute(ev_type, s);
39                                 this.cmds[i] = this.control_map[i][1];
40                             break;
41                             default: cmd.addEventListener(ev_type,this.control_map[i][1],false);
42                         }
43                     }
44                 }
45             }
46             this.view[i] = cmd;
47         }
48     },
49
50     'render' : function(id,param) {
51         for (var i in this.render_list) {
52             try {
53                 if (id) {
54                     if (id == this.render_list[i][0]) this.render_list[i][1](param);
55                 } else {
56                     this.render_list[i][1](param);
57                 }
58             } catch(E) {
59                 var error = 'Problem in util.controller.render with\n' 
60                     + this.render_list[i] + '\n\n' + js2JSON(E);
61                 this.error.sdump('D_WARN',error);
62             }
63         }
64     }
65 }
66 dump('exiting util/controller.js\n');