]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/util/fm_utils.js
first cut and bill details
[Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / util / fm_utils.js
1 sdump('D_TRACE','Loading fm_utils.js\n');
2
3 function get_my_orgs(user_ou) {
4
5         // self and ancestors
6         var current_item_id = user_ou.id();
7         //sdump('D_FM_UTILS','mw.G[user_ou] = ' + js2JSON(mw.G['user_ou']) + '\n');
8         //sdump('D_FM_UTILS','current_item_id = ' + current_item_id + '\n');
9         var item_ou; var my_orgs = {}; var other_orgs = {};
10         while( item_ou = find_ou(mw.G['org_tree'],current_item_id) ) {
11                 //sdump('D_FM_UTILS','\titem_ou = ' + js2JSON(item_ou) + '\n');
12                 my_orgs[ item_ou.id() ] = item_ou;
13                 current_item_id = item_ou.parent_ou();
14                 if (!current_item_id) { break; }
15         }
16
17         current_item_id = user_ou.id();
18         //sdump('D_FM_UTILS','self & ancestors : my_orgs = <<<'+js2JSON(my_orgs)+'>>>\n');
19         // descendants
20         var my_children;
21         var find_ou_result = find_ou(mw.G['org_tree'],current_item_id);
22         if (find_ou_result) { 
23                 my_children = find_ou_result.children() } 
24         else {
25                 sdump('D_FM_UTILS','ERROR: find_ou(org_tree,'+current_item_id+') returned with no properties\n');
26         };
27         //sdump('D_FM_UTILS','my_children: ' + my_children + ' : ' + js2JSON(my_children) + '\n');
28         if (my_children) {
29                 for (var i = 0; i < my_children.length; i++) {
30                         var my_child = my_children[i];
31                         my_orgs[ my_child.id() ] = my_child;
32                         //sdump('D_FM_UTILS','my_child.children(): ' + my_child.children() + ' : ' + js2JSON(my_child.children()) + '\n');
33                         if (my_child.children() != null) {
34                                 for (var j = 0; j < my_child.children().length; j++) {
35                                         var my_gchild = my_child.children()[j];
36                                         my_orgs[ my_gchild.id() ] = my_gchild;
37                                 }
38                         }
39                 }
40         }
41         //sdump('D_FM_UTILS','& descendants : my_orgs = <<<'+js2JSON(my_orgs)+'>>>\n');
42         return my_orgs;
43 }
44
45 function get_other_orgs(org,other_orgs) {
46 }
47
48 function flatten_ou_branch(branch) {
49         //sdump('D_FM_UTILS','flatten: branch = ' + js2JSON(branch) + '\n');
50         var my_array = new Array();
51         my_array.push( branch );
52         for (var i in branch.children() ) {
53                 var child = branch.children()[i];
54                 if (child != null) {
55                         var temp_array = flatten_ou_branch(child);
56                         for (var j in temp_array) {
57                                 my_array.push( temp_array[j] );
58                         }
59                 }
60         }
61         return my_array;
62 }
63
64 /*
65 function findOrgUnit(id) {
66         return find_ou(globalOrgTree, id);
67 }
68 */
69
70 function find_ou(tree,id) {
71         if (typeof(id)=='object') { id = id.id(); }
72         if (tree.id()==id) {
73                 return tree;
74         }
75         for (var i in tree.children()) {
76                 var child = tree.children()[i];
77                 ou = find_ou( child, id );
78                 if (ou) { return ou; }
79         }
80         return null;
81 }
82
83 function find_ou_by_shortname(tree,sn) {
84         var ou = new aou();
85         if (tree.shortname()==sn) {
86                 return tree;
87         }
88         for (var i in tree.children()) {
89                 var child = tree.children()[i];
90                 ou = find_ou_by_shortname( child, sn );
91                 if (ou) { return ou; }
92         }
93         return null;
94 }
95
96 function render_fm(d,obj) {
97         sdump('D_FM_UTILS',arg_dump(arguments,{1:true}));
98         var nl = d.getElementsByAttribute('render','true');
99         for (var i = 0; i < nl.length; i++) {
100                 var node = nl[i];
101                 var fm_class = node.getAttribute('fm_class');
102                 var render_value = node.getAttribute('render_value');
103                 var render_css_style = node.getAttribute('render_css_style');
104                 var render_css_class = node.getAttribute('render_css_class');
105                 if ( !fm_class ) continue;
106                 if ( obj[ fm_class ] ) {
107                         sdump('D_FM_UTILS',"We're in:\n\trender_value = " + render_value + "\n\trender_css_style = " + render_css_style + "\n\trender_css_class = " + render_css_class + "\n");
108                         if (render_value) {
109                                 var result = ''; var cmd = '';
110                                 cmd = parse_render_string( 'obj[ fm_class ]', render_value );
111                                 try { result = eval( cmd ); } catch(E) { sdump('D_ERROR',E); }
112                                 set_widget_value_for_display( node, result );
113                                 sdump('D_FM_UTILS','\t<'+cmd+'> renders <'+result+'>\n');
114                         }
115                         if (render_css_style) {
116                                 var result = ''; var cmd = '';
117                                 cmd = parse_render_string( 'obj[ fm_class ]', render_css_style );
118                                 cmd = parse_render_string( 'result', cmd, /\%\%/g );
119                                 try { result = eval(cmd); } catch(E) { sdump('D_ERROR',E); }
120                                 node.setAttribute('style',result);
121                                 sdump('D_FM_UTILS','\t<'+cmd+'> renders <'+result+'>\n');
122                         }
123                         if (render_css_class) {
124                                 var result = ''; var cmd = '';
125                                 cmd = parse_render_string( 'obj[ fm_class ]', render_css_class );
126                                 cmd = cmd.replace( /\%\%/g, 'result' );
127                                 try { result = eval(cmd); } catch(E) { sdump('D_ERROR',E); }
128                                 node.setAttribute('class',result);
129                                 sdump('D_FM_UTILS','\t<'+cmd+'> renders <'+result+'>\n');
130                         }
131                 }
132         }
133 }