]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/util/fm_view.xul
Improve Firefox/XULRunner Support
[Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / util / fm_view.xul
1 <?xml version="1.0"?>
2 <!-- Application: Evergreen Staff Client -->
3 <!-- Screen: About -->
4
5 <!-- Stylesheets -->
6 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
7 <?xml-stylesheet href="/xul/server/skin/global.css" type="text/css"?>
8
9 <!-- OVERLAYS -->
10 <?xul-overlay href="/xul/server/OpenILS/util_overlay.xul"?>
11
12 <window id="fm_view_win" 
13     onload="try { my_init(); font_helper(); } catch(E) { dump(E+'\n'); alert(E); }"
14     xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
15
16     <script type="text/javascript">var myPackageDir = 'open_ils_staff_client'; var IAMXUL = true; var g = {};</script>
17     <scripts id="openils_util_scripts"/>
18
19     <script type="text/javascript" src="/xul/server/main/JSAN.js"/>
20
21     <script type="text/javascript">
22     <![CDATA[
23         var tree;
24         var mw = {
25             'get_list_from_tree_selection' : function() {
26                 var d = document; var tree_w;
27                 if (arguments.length == 1) {
28                     tree_w = arguments[0];
29                 } else {
30                     d = arguments[0];
31                     tree_w = arguments[1];
32                 }
33                 var hitlist;
34                 if (typeof(tree_w) != 'object') {
35                     hitlist = d.getElementById(tree_w);
36                 } else {
37                     hitlist = tree_w;
38                 }
39                 var list = [];
40                 var start = new Object();
41                 var end = new Object();
42                 var numRanges = hitlist.view.selection.getRangeCount();
43                 for (var t=0; t<numRanges; t++){
44                     hitlist.view.selection.getRangeAt(t,start,end);
45                     for (var v=start.value; v<=end.value; v++){
46                         var i = hitlist.contentView.getItemAtIndex(v);
47                         list.push( i );
48                     }
49                 }
50                 return list;
51             }
52         };
53
54         function my_init() {
55             try {
56                         if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
57                 JSAN.errorLevel = "die"; // none, warn, or die
58                 JSAN.addRepository('/xul/server/');
59                 JSAN.use('util.error'); g.error = new util.error();
60                 JSAN.use('util.network'); g.network = new util.network();
61                 JSAN.use('util.window'); g.window = new util.window();
62                 JSAN.use('util.functional');
63                 g.error.sdump('D_TRACE','my_init() for fm_view.xul');
64
65                 var treechildren = window.document.getElementById('tc');
66                 var fm = g.network.request('open-ils.actor','opensrf.open-ils.system.fieldmapper',[]);
67                 var fma = []; var fmh = {} ; 
68                 for (var i in fm) { fmh[ fm[i].hint ] = fm[i]; fma.push( [ fm[i].hint, i ] ); }
69                 fma.sort();
70                 for (var i = 0; i < fma.length; i++) {
71                     var hint = fma[i][0]; var name = fma[i][1]; var o = fmh[ hint ];
72                     var ti = window.document.createElement('treeitem');
73                     treechildren.appendChild( ti );
74                     ti.setAttribute( 'container', 'true' );
75                     var tr = window.document.createElement('treerow');
76                     ti.appendChild( tr );
77                     var tc = window.document.createElement('treecell');
78                     tr.appendChild( tc );
79                     tc.setAttribute('label',hint);
80                     tc = window.document.createElement('treecell');
81                     tr.appendChild( tc );
82                     tc.setAttribute('label', name );
83                     var _treechildren = window.document.createElement( 'treechildren' );
84                     ti.appendChild( _treechildren );
85                     for (var j in o.fields) {
86                         var _ti = window.document.createElement( 'treeitem' );
87                         _treechildren.appendChild( _ti );
88                         _ti.setAttribute('fm_class',hint);
89                         _ti.setAttribute('fm_field',j);
90                         _ti.setAttribute('fm_virtual',o.fields[j].virtual);
91                         _ti.setAttribute('fm_position',o.fields[j].position);
92                         var _tr = window.document.createElement( 'treerow' );
93                         _ti.appendChild( _tr );
94                         var _tc = window.document.createElement( 'treecell' );
95                         _tr.appendChild( _tc );
96                         _tc.setAttribute('label',j);
97                         _tc = window.document.createElement( 'treecell' );
98                         _tr.appendChild( _tc );
99                         _tc.setAttribute('label','\t         Position: ' + o.fields[j].position + '  Virtual: ' + o.fields[j].virtual);
100                     }
101                 }
102                 tree = window.document.getElementById('t');
103                 tree.view.selection.select( 0 ); tree.focus();
104             } catch(E) {
105             }
106         }
107
108         function gen_cols() {
109             var data_url = 'data:application/vnd.mozilla.xul+xml,<?xml version="1.0"?><window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"><?xml-stylesheet href="chrome://global/skin" type="text/css"?><vbox flex="1"><textbox id="desc" multiline="true" flex="1"/></vbox></window>';
110             var w = g.window.SafeWindowOpen(data_url,'paged_tree cols','chrome,resizable,width=800,height=600');
111             var css = '<?xml-stylesheet href="data:text/css,#a{-moz-box-flex:1;}"?>';
112             var treeitems = mw.get_list_from_tree_selection( tree );
113             setTimeout(
114                 function() {
115                     var tb = w.document.getElementById('desc');
116                     for (var i = 0; i < treeitems.length; i++) {
117                         var hint = treeitems[i].getAttribute('fm_class');
118                         var field = treeitems[i].getAttribute('fm_field');
119                         var text = (
120                             "{\n\t'id' : '" + field + "', 'label' : getString('" + hint + "_" + 
121                             field + "_label'), 'flex' : 1,\n" + 
122                             "\t'primary' : false, 'hidden' : false, 'fm_class' : '" + hint + 
123                             "', 'fm_field_render' : '." + field + "()'\n},\n"
124                         );
125                         tb.value += text;
126                     }
127                     dump(tb.value + '\n');
128                 }, 0
129             );
130         }
131
132         function gen_properties() {
133             var data_url = 'data:application/vnd.mozilla.xul+xml,<?xml version="1.0"?><window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"><?xml-stylesheet href="chrome://global/skin" type="text/css"?><vbox flex="1"><textbox id="desc" multiline="true" flex="1"/></vbox></window>';
134             var w = g.window.SafeWindowOpen(data_url,'paged_tree cols','chrome,resizable,width=800,height=600');
135             var css = '<?xml-stylesheet href="data:text/css,#a{-moz-box-flex:1;}"?>';
136             var treeitems = mw.get_list_from_tree_selection( tree );
137             setTimeout(
138                 function() {
139                     var tb = w.document.getElementById('desc');
140                     for (var i = 0; i < treeitems.length; i++) {
141                         var hint = treeitems[i].getAttribute('fm_class');
142                         var field = treeitems[i].getAttribute('fm_field');
143                         var pretty = util.functional.map_list(
144                             field.split('_'),
145                             function (s) {
146                                 return s.substr(0,1).toUpperCase() + s.substr(1);
147                             }
148                         ).join(' ');
149                         var text = (
150                             hint + '_' + field + '_label=' + pretty + '\n'
151                         );
152                         tb.value += text;
153                     }
154                     dump(tb.value + '\n');
155                 }, 0
156             );
157         }
158
159         function gen_wikitable() {
160             var data_url = 'data:application/vnd.mozilla.xul+xml,<?xml version="1.0"?><window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"><?xml-stylesheet href="chrome://global/skin" type="text/css"?><vbox flex="1"><textbox id="desc" multiline="true" flex="1"/></vbox></window>';
161             var w = g.window.SafeWindowOpen(data_url,'paged_tree cols','chrome,resizable,width=800,height=600');
162             var css = '<?xml-stylesheet href="data:text/css,#a{-moz-box-flex:1;}"?>';
163             var treeitems = mw.get_list_from_tree_selection( tree );
164             setTimeout(
165                 function() {
166                     var tb = w.document.getElementById('desc');
167                     for (var i = 0; i < treeitems.length; i++) {
168                         var hint = treeitems[i].getAttribute('fm_class');
169                         var field = treeitems[i].getAttribute('fm_field');
170                         var text = (
171                             '|' + hint + '|' + field
172                         );
173                     
174                         if (treeitems[i].getAttribute('fm_virtual') == '1') text += ' * ';
175                         text +=    '|\n'
176                         tb.value += text;
177                     }
178                     dump(tb.value + '\n');
179                 }, 0
180             );
181         }
182
183
184     ]]>
185     </script>
186
187     <vbox flex="1" class="my_overflow">
188         <groupbox orient="vertical" flex="1">
189             <caption label="Fieldmapper Class Viewer"/>
190             <hbox>
191                 <button label="Generate paged_tree cols for selected fields" accesskey="G" oncommand="gen_cols();"/>
192                 <button label="Generate string bundle properties for selected fields" accesskey="P" oncommand="gen_properties();"/>
193                 <button label="Generate dokuwiki table for selected fields" accesskey="P" oncommand="gen_wikitable();"/>
194             </hbox>
195             <tree id="t" flex="1">
196                 <treecols>
197                     <treecol id="tcol1" label="opensrf.open-ils.system.fieldmapper" primary="true" flex="0"/>
198                     <treecol id="tcol2" label="" flex="1"/>
199                 </treecols>
200                 <treechildren id="tc"/>
201             </tree>
202         </groupbox>
203     </vbox>
204
205 </window>
206