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.add_rows = function paged_tree_add_rows_indirect(ids) {
44 sdump('D_TRACE_ENTER',arg_dump(arguments));
45 sdump('D_TRACE_EXIT',arg_dump(arguments));
46 return paged_tree_add_rows(p,p.w.tc,ids);
49 p.w.register_flesh_row_function = function paged_tree_register_flesh_row_function(f) {
50 sdump('D_PAGED_TREE',arg_dump(arguments));
51 sdump('D_TRACE_ENTER',arg_dump(arguments));
52 p.w._flesh_row_function = f;
53 sdump('D_TRACE_EXIT',arg_dump(arguments));
56 p.w.register_select_callback = function paged_tree_register_select_callback(f) {
57 sdump('D_PAGED_TREE',arg_dump(arguments));
58 sdump('D_TRACE_ENTER',arg_dump(arguments));
59 p.w._select_callback = f;
60 sdump('D_TRACE_EXIT',arg_dump(arguments));
63 p.w.map_cols_to_treeitem = map_array_to_treecells_via_treeitem;
67 sdump('D_TRACE','trying psuedo-onload: ' + p.onload + '\n');
70 sdump('D_ERROR', js2JSON(E) + '\n' );
73 sdump('D_TRACE_EXIT',arg_dump(arguments));
77 function paged_tree_make_columns( p, treecols, cols ) {
78 sdump('D_PAGED_TREE',arg_dump(arguments,{2:'.length'}));
79 sdump('D_TRACE_ENTER',arg_dump(arguments));
81 // cols[ idx ] = { 'id':???, 'label':???, 'primary':???, 'flex':??? }
82 for (var i = 0; i < cols.length; i++) {
84 sdump('D_PAGED_TREE','Col ' + i + ' : ' + js2JSON( col ) + '\n');
85 var treecol = d.createElement( 'treecol' );
86 treecols.appendChild( treecol );
88 treecol.setAttribute( j, col[j] );
91 sdump('D_TRACE_EXIT',arg_dump(arguments));
95 function paged_tree_add_rows( p, tc, ids ) {
96 sdump('D_PAGED_TREE',arg_dump(arguments,{2:'.length'}));
97 sdump('D_TRACE_ENTER',arg_dump(arguments));
100 if (tc.childNodes.length > 0) { offset = tc.lastChild.id; }
101 for (var i = 0; i < ids.length; i++) {
104 var treeitem = d.createElement( 'treeitem' );
105 treeitem.setAttribute( 'id', i+offset+1 );
106 treeitem.setAttribute( 'record_id', id );
107 treeitem.setAttribute( 'retrieved', 'false' );
108 if ( (i+offset) < (p.w.display_count + p.w.current_idx) ) {
109 treeitem.setAttribute( 'hidden', 'false' );
111 treeitem.setAttribute( 'hidden', 'true' );
113 tc.appendChild( treeitem );
115 var treerow = d.createElement( 'treerow' );
116 treeitem.appendChild( treerow );
118 for (var j = 0; j < p.w.treecols.childNodes.length; j++) {
119 var treecell = d.createElement( 'treecell' );
121 treecell.setAttribute('label', getString('retrieving.record') );
123 treecell.setAttribute('label', '' );
124 treerow.appendChild( treecell );
127 paged_tree_update_visibility( p );
128 paged_tree_update_nav( p );
129 paged_tree_flesh_records( p );
130 sdump('D_TRACE_EXIT',arg_dump(arguments));
133 function paged_tree_flesh_record(p,treeitem) {
134 sdump('D_TRACE_ENTER',arg_dump(arguments));
135 treeitem.setAttribute('retrieved','true');
136 if (p.w._flesh_row_function) {
137 p.w._flesh_row_function( treeitem );
139 sdump('D_TRACE_EXIT',arg_dump(arguments));
142 function paged_tree_flesh_records(p) {
143 sdump('D_TRACE_ENTER',arg_dump(arguments));
144 for (var i = 0; i < p.w.tc.childNodes.length; i++) {
145 var treeitem = p.w.tc.childNodes[i];
146 if ( (treeitem.hidden == false) && (treeitem.getAttribute('retrieved')=='false') ) {
147 paged_tree_flesh_record(p,treeitem);
150 sdump('D_TRACE_EXIT',arg_dump(arguments));
153 function paged_tree_update_nav(p) {
154 sdump('D_TRACE_ENTER',arg_dump(arguments));
155 if (p.w.results_label)
156 p.w.results_label.setAttribute('value', p.w.tc.childNodes.length );
158 var min = p.w.current_idx + 1;
159 var max = p.w.current_idx + p.w.display_count;
160 if (max > p.w.tc.childNodes.length)
161 max = p.w.tc.childNodes.length;
163 p.w.range_label.setAttribute('value', min + ' - ' + max );
165 if (p.w.next_button) {
166 if (max < p.w.tc.childNodes.length)
167 p.w.next_button.disabled = false;
169 p.w.next_button.disabled = true;
172 if (p.w.prev_button) {
174 p.w.prev_button.disabled = true;
176 p.w.prev_button.disabled = false;
178 sdump('D_TRACE_EXIT',arg_dump(arguments));
181 function paged_tree_update_visibility(p) {
182 sdump('D_TRACE_ENTER',arg_dump(arguments));
183 for (var i = 0; i < p.w.tc.childNodes.length; i++) {
184 var treeitem = p.w.tc.childNodes[i];
185 if ( (i >= p.w.current_idx) && (i < (p.w.current_idx+p.w.display_count)) )
186 treeitem.hidden = false;
188 treeitem.hidden = true;
190 sdump('D_TRACE_EXIT',arg_dump(arguments));
193 function paged_tree_nav_next(p) {
194 sdump('D_TRACE_ENTER',arg_dump(arguments));
195 var proposed_idx = p.w.current_idx + p.w.display_count;
196 if (proposed_idx >= p.w.tc.childNodes.length)
197 proposed_idx = p.w.tc.childNodes.length - 1;
198 p.w.current_idx = proposed_idx;
199 paged_tree_update_visibility(p);
200 paged_tree_update_nav(p);
201 paged_tree_flesh_records(p);
202 sdump('D_TRACE_EXIT',arg_dump(arguments));
205 function paged_tree_nav_prev(p) {
206 sdump('D_TRACE_ENTER',arg_dump(arguments));
207 var proposed_idx = p.w.current_idx - p.w.display_count;
208 if (proposed_idx < 0)
210 p.w.current_idx = proposed_idx;
211 paged_tree_update_visibility(p);
212 paged_tree_update_nav(p);
213 paged_tree_flesh_records(p);
214 sdump('D_TRACE_EXIT',arg_dump(arguments));