1 sdump('D_TRACE','Loading paged_tree.js\n');
3 function paged_tree_init(p) {
4 sdump('D_PAGED_TREE',"TESTING: paged_tree.js: " + mw.G['main_test_variable'] + '\n');
5 sdump('D_TRACE_ENTER',arg_dump(arguments));
7 p.w.display_count = 10;
10 p.w.results_label = get_widget( p.w.document, p.nav_results );
11 p.w.range_label = get_widget( p.w.document, p.nav_range );
12 p.w.next_button = get_widget( p.w.document, p.nav_next );
13 p.w.prev_button = get_widget( p.w.document, p.nav_prev );
15 var cmd_next = get_widget( p.w.document, 'cmd_next' );
16 cmd_next.addEventListener(
19 sdump('D_TRACE_ENTER',arg_dump(arguments));
20 sdump('D_TRACE_EXIT',arg_dump(arguments));
21 return paged_tree_nav_next(p);
26 var cmd_prev = get_widget( p.w.document, 'cmd_prev' );
27 cmd_prev.addEventListener(
30 sdump('D_TRACE_ENTER',arg_dump(arguments));
31 sdump('D_TRACE_EXIT',arg_dump(arguments));
32 return paged_tree_nav_prev(p);
37 p.w.tree = get_widget(p.w.document,p.paged_tree);
38 p.w.treecols = p.w.tree.firstChild;
39 p.w.tc = p.w.tree.lastChild;
41 paged_tree_make_columns( p, p.w.treecols, p.cols )
43 p.w.clear_tree = function () {
44 empty_widget( p.w.document, p.w.tc );
46 paged_tree_update_nav(p);
49 p.w.add_rows = function (ids) {
50 sdump('D_TRACE_ENTER',arg_dump(arguments));
51 sdump('D_TRACE_EXIT',arg_dump(arguments));
52 return paged_tree_add_rows(p,p.w.tc,ids);
55 p.w.register_flesh_row_function = function (f) {
56 sdump('D_PAGED_TREE',arg_dump(arguments));
57 sdump('D_TRACE_ENTER',arg_dump(arguments));
58 p.w._flesh_row_function = f;
59 sdump('D_TRACE_EXIT',arg_dump(arguments));
62 p.w.register_select_callback = function (f) {
63 sdump('D_PAGED_TREE',arg_dump(arguments));
64 sdump('D_TRACE_ENTER',arg_dump(arguments));
65 p.w._select_callback = f;
66 sdump('D_TRACE_EXIT',arg_dump(arguments));
69 p.w.map_cols_to_treeitem = map_array_to_treecells_via_treeitem;
73 sdump('D_TRACE','trying psuedo-onload: ' + p.onload + '\n');
76 sdump('D_ERROR', js2JSON(E) + '\n' );
79 sdump('D_TRACE_EXIT',arg_dump(arguments));
83 function paged_tree_make_columns( p, treecols, cols ) {
84 sdump('D_PAGED_TREE',arg_dump(arguments,{2:'.length'}));
85 sdump('D_TRACE_ENTER',arg_dump(arguments));
87 // cols[ idx ] = { 'id':???, 'label':???, 'primary':???, 'flex':??? }
88 for (var i = 0; i < cols.length; i++) {
90 sdump('D_PAGED_TREE','Col ' + i + ' : ' + js2JSON( col ) + '\n');
91 var treecol = d.createElement( 'treecol' );
92 treecols.appendChild( treecol );
94 treecol.setAttribute( j, col[j] );
97 sdump('D_TRACE_EXIT',arg_dump(arguments));
101 function paged_tree_add_rows( p, tc, ids ) {
102 sdump('D_PAGED_TREE',arg_dump(arguments,{2:'.length'}));
103 sdump('D_TRACE_ENTER',arg_dump(arguments));
104 var d = p.w.document;
106 if (tc.childNodes.length > 0) { offset = tc.lastChild.id; }
107 for (var i = 0; i < ids.length; i++) {
110 var treeitem = d.createElement( 'treeitem' );
111 treeitem.setAttribute( 'id', i+offset+1 );
112 treeitem.setAttribute( 'record_id', id );
113 treeitem.setAttribute( 'retrieved', 'false' );
114 if ( (i+offset) < (p.w.display_count + p.w.current_idx) ) {
115 treeitem.setAttribute( 'hidden', 'false' );
117 treeitem.setAttribute( 'hidden', 'true' );
119 tc.appendChild( treeitem );
121 var treerow = d.createElement( 'treerow' );
122 treeitem.appendChild( treerow );
124 for (var j = 0; j < p.w.treecols.childNodes.length; j++) {
125 var treecell = d.createElement( 'treecell' );
127 treecell.setAttribute('label', getString('retrieving.record') );
129 treecell.setAttribute('label', '' );
130 treerow.appendChild( treecell );
133 paged_tree_update_visibility( p );
134 paged_tree_update_nav( p );
135 paged_tree_flesh_records( p );
136 sdump('D_TRACE_EXIT',arg_dump(arguments));
139 function paged_tree_flesh_record(p,treeitem) {
140 sdump('D_TRACE_ENTER',arg_dump(arguments));
141 treeitem.setAttribute('retrieved','true');
142 if (p.w._flesh_row_function) {
143 p.w._flesh_row_function( treeitem );
145 sdump('D_TRACE_EXIT',arg_dump(arguments));
148 function paged_tree_flesh_records(p) {
149 sdump('D_TRACE_ENTER',arg_dump(arguments));
150 for (var i = 0; i < p.w.tc.childNodes.length; i++) {
151 var treeitem = p.w.tc.childNodes[i];
152 if ( (treeitem.hidden == false) && (treeitem.getAttribute('retrieved')=='false') ) {
153 paged_tree_flesh_record(p,treeitem);
156 sdump('D_TRACE_EXIT',arg_dump(arguments));
159 function paged_tree_update_nav(p) {
160 sdump('D_TRACE_ENTER',arg_dump(arguments));
161 if (p.w.results_label)
162 p.w.results_label.setAttribute('value', p.w.tc.childNodes.length );
164 var min = p.w.current_idx + 1;
165 var max = p.w.current_idx + p.w.display_count;
166 if (max > p.w.tc.childNodes.length)
167 max = p.w.tc.childNodes.length;
169 p.w.range_label.setAttribute('value', min + ' - ' + max );
171 if (p.w.next_button) {
172 if (max < p.w.tc.childNodes.length)
173 p.w.next_button.disabled = false;
175 p.w.next_button.disabled = true;
178 if (p.w.prev_button) {
180 p.w.prev_button.disabled = true;
182 p.w.prev_button.disabled = false;
184 sdump('D_TRACE_EXIT',arg_dump(arguments));
187 function paged_tree_update_visibility(p) {
188 sdump('D_TRACE_ENTER',arg_dump(arguments));
189 for (var i = 0; i < p.w.tc.childNodes.length; i++) {
190 var treeitem = p.w.tc.childNodes[i];
191 if ( (i >= p.w.current_idx) && (i < (p.w.current_idx+p.w.display_count)) )
192 treeitem.hidden = false;
194 treeitem.hidden = true;
196 sdump('D_TRACE_EXIT',arg_dump(arguments));
199 function paged_tree_nav_next(p) {
200 sdump('D_TRACE_ENTER',arg_dump(arguments));
201 var proposed_idx = p.w.current_idx + p.w.display_count;
202 if (proposed_idx >= p.w.tc.childNodes.length)
203 proposed_idx = p.w.tc.childNodes.length - 1;
204 p.w.current_idx = proposed_idx;
205 paged_tree_update_visibility(p);
206 paged_tree_update_nav(p);
207 paged_tree_flesh_records(p);
208 sdump('D_TRACE_EXIT',arg_dump(arguments));
211 function paged_tree_nav_prev(p) {
212 sdump('D_TRACE_ENTER',arg_dump(arguments));
213 var proposed_idx = p.w.current_idx - p.w.display_count;
214 if (proposed_idx < 0)
216 p.w.current_idx = proposed_idx;
217 paged_tree_update_visibility(p);
218 paged_tree_update_nav(p);
219 paged_tree_flesh_records(p);
220 sdump('D_TRACE_EXIT',arg_dump(arguments));