2 <!-- Application: Evergreen Staff Client -->
6 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
7 <?xml-stylesheet href="/xul/server/skin/global.css" type="text/css"?>
10 <?xul-overlay href="/xul/server/OpenILS/util_overlay.xul"?>
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">
16 <script type="text/javascript">var myPackageDir = 'open_ils_staff_client'; var IAMXUL = true; var g = {};</script>
17 <scripts id="openils_util_scripts"/>
19 <script type="text/javascript" src="/xul/server/main/JSAN.js"/>
21 <script type="text/javascript">
25 'get_list_from_tree_selection' : function() {
26 var d = document; var tree_w;
27 if (arguments.length == 1) {
28 tree_w = arguments[0];
31 tree_w = arguments[1];
34 if (typeof(tree_w) != 'object') {
35 hitlist = d.getElementById(tree_w);
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);
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');
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 ] ); }
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');
77 var tc = window.document.createElement('treecell');
79 tc.setAttribute('label',hint);
80 tc = window.document.createElement('treecell');
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);
102 tree = window.document.getElementById('t');
103 tree.view.selection.select( 0 ); tree.focus();
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 );
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');
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"
127 dump(tb.value + '\n');
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 );
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(
146 return s.substr(0,1).toUpperCase() + s.substr(1);
150 hint + '_' + field + '_label=' + pretty + '\n'
154 dump(tb.value + '\n');
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 );
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');
171 '|' + hint + '|' + field
174 if (treeitems[i].getAttribute('fm_virtual') == '1') text += ' * ';
178 dump(tb.value + '\n');
187 <vbox flex="1" class="my_overflow">
188 <groupbox orient="vertical" flex="1">
189 <caption label="Fieldmapper Class Viewer"/>
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();"/>
195 <tree id="t" flex="1">
197 <treecol id="tcol1" label="opensrf.open-ils.system.fieldmapper" primary="true" flex="0"/>
198 <treecol id="tcol2" label="" flex="1"/>
200 <treechildren id="tc"/>