/[pub]/test/html-whatpm/table-script.js
Suika

Diff of /test/html-whatpm/table-script.js

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by wakaba, Sun May 27 10:00:48 2007 UTC revision 1.6 by wakaba, Mon May 5 06:56:01 2008 UTC
# Line 1  Line 1 
1  function tableToCanvas (table) {  function tableToCanvas (table, parent, idPrefix) {
2    var canvas = document.createElement ('canvas');    var canvas = document.createElement ('canvas');
3    document.body.appendChild (canvas);    parent.appendChild (canvas);
4    if (window.G_vmlCanvasManager) {    if (window.G_vmlCanvasManager) {
5      canvas = G_vmlCanvasManager.initElement (canvas);      canvas = G_vmlCanvasManager.initElement (canvas);
6    }    }
# Line 16  function tableToCanvas (table) { Line 16  function tableToCanvas (table) {
16      rowHeight: 20,      rowHeight: 20,
17      rowSpacing: 5,      rowSpacing: 5,
18      rowGroupLeft: 10,      rowGroupLeft: 10,
19        rowGroupFillLeft: 20, /* Must be same as columnLeft */
20      rowLeft: 15,      rowLeft: 15,
21      cellTop: 20,      cellTop: 20,
22      cellLeft: 20,      cellLeft: 20, /* Must be same as columnLeft */
23      cellBottom: 20,      cellBottom: 20,
24      cellRight: 20,      cellRight: 20,
25      explicitColumnGroupStrokeStyle: 'black',      explicitColumnGroupStrokeStyle: 'black',
# Line 43  function tableToCanvas (table) { Line 44  function tableToCanvas (table) {
44  var columnNumber = table.column.length;  var columnNumber = table.column.length;
45  if (columnNumber < table.cell.length) columnNumber = table.cell.length;  if (columnNumber < table.cell.length) columnNumber = table.cell.length;
46  var rowNumber = 0;  var rowNumber = 0;
47  for (var i = 1; i < table.cell.length; i++) {  for (var i = 0; i < table.cell.length; i++) {
48    if (table.cell[i] && rowNumber < table.cell[i].length) {    if (table.cell[i] && rowNumber < table.cell[i].length) {
49      rowNumber = table.cell[i].length;      rowNumber = table.cell[i].length;
50    }    }
# Line 60  canvas.height = param.cellTop Line 61  canvas.height = param.cellTop
61      + param.cellBottom;      + param.cellBottom;
62    
63  var y = param.rowTop;  var y = param.rowTop;
64  for (var i = 1; i < table.row_group.length; i++) {  for (var i = 0; i < table.row_group.length; i++) {
65    var rg = table.row_group[i];    var rg = table.row_group[i];
66    c2d.beginPath ();    c2d.beginPath ();
67    if (rg.type == 'thead') {    if (rg.type == 'thead') {
# Line 79  for (var i = 1; i < table.row_group.leng Line 80  for (var i = 1; i < table.row_group.leng
80    c2d.stroke ();    c2d.stroke ();
81    c2d.closePath ();    c2d.closePath ();
82    c2d.beginPath ();    c2d.beginPath ();
83    c2d.rect (param.rowGroupLeft,    c2d.rect (param.rowGroupFillLeft,
84              y,              y,
85              (param.columnWidth + param.columnSpacing) * columnNumber - param.columnSpacing,              (param.columnWidth + param.columnSpacing) * columnNumber - param.columnSpacing,
86              dy - param.rowSpacing);              dy - param.rowSpacing);
# Line 92  for (var i = 1; i < table.row_group.leng Line 93  for (var i = 1; i < table.row_group.leng
93  c2d.beginPath ();  c2d.beginPath ();
94  c2d.strokeStyle = param.explicitColumnGroupStrokeStyle;  c2d.strokeStyle = param.explicitColumnGroupStrokeStyle;
95  var x = param.columnLeft;  var x = param.columnLeft;
96  for (var i = 1; i < table.column_group.length; i++) {  for (var i = 0; i < table.column_group.length; i++) {
97    var cg = table.column_group[i];    var cg = table.column_group[i];
98    c2d.moveTo (x, param.columnGroupTop);    c2d.moveTo (x, param.columnGroupTop);
99    x += (param.columnWidth + param.columnSpacing) * cg.width;    x += (param.columnWidth + param.columnSpacing) * cg.width;
# Line 103  c2d.stroke (); Line 104  c2d.stroke ();
104  c2d.closePath ();  c2d.closePath ();
105    
106  var x = param.columnLeft;  var x = param.columnLeft;
107  for (var i = 1; i < columnNumber; i++) {  for (var i = 0; i < columnNumber; i++) {
108    var c = table.column[i];    var c = table.column[i];
109    c2d.beginPath ();    c2d.beginPath ();
110    c2d.moveTo (x, param.columnTop);    c2d.moveTo (x, param.columnTop);
# Line 118  for (var i = 1; i < columnNumber; i++) { Line 119  for (var i = 1; i < columnNumber; i++) {
119    c2d.closePath ();    c2d.closePath ();
120  }  }
121    
122    var map = document.createElement ('map');
123  var x = param.cellLeft;  var x = param.cellLeft;
124  for (var i = 1; i < table.cell.length; i++) {  for (var i = 0; i < table.cell.length; i++) {
125    var y = param.cellTop;    var y = param.cellTop;
126    if (!table.cell[i]) continue;    if (!table.cell[i]) continue;
127    for (var j = 1; j < table.cell[i].length; j++) {    for (var j = 0; j < table.cell[i].length; j++) {
128      var c = table.cell[i][j];      var c = table.cell[i][j];
129      if (c && ((c[0].x == i && c[0].y == j) || c.length > 1)) {      if (c && ((c[0].x == i && c[0].y == j) || c.length > 1)) {
130        c2d.beginPath ();        c2d.beginPath ();
# Line 136  for (var i = 1; i < table.cell.length; i Line 138  for (var i = 1; i < table.cell.length; i
138              ? param.headerCellFillStyle : param.dataCellFillStyle;              ? param.headerCellFillStyle : param.dataCellFillStyle;
139          c2d.strokeStyle = c[0].is_header          c2d.strokeStyle = c[0].is_header
140              ? param.headerCellStrokeStyle : param.dataCellStrokeStyle;              ? param.headerCellStrokeStyle : param.dataCellStrokeStyle;
141            if (c[0].id) {
142              var area = document.createElement ('area');
143              area.shape = 'rect';
144              area.coords = [x, y, x + width, y + height].join (',');
145              area.alt = 'Cell (' + c[0].x + ', ' + c[0].y + ')';
146              area.href = '#' + idPrefix + 'node-' + c[0].id;
147              area.id = idPrefix + 'cell-' + c[0].id;
148              map.appendChild (area);
149            }
150        } else {        } else {
151          c2d.rect (x, y, param.columnWidth, param.rowHeight);          c2d.rect (x, y, param.columnWidth, param.rowHeight);
152          c2d.fillStyle = param.overlappingCellFillStyle;          c2d.fillStyle = param.overlappingCellFillStyle;
# Line 151  for (var i = 1; i < table.cell.length; i Line 162  for (var i = 1; i < table.cell.length; i
162  }  }
163    
164  var y = param.rowTop;  var y = param.rowTop;
165  for (var i = 1; i < rowNumber; i++) {  for (var i = 0; i < rowNumber; i++) {
166    c2d.beginPath ();    c2d.beginPath ();
167    c2d.moveTo (param.rowLeft, y);    c2d.moveTo (param.rowLeft, y);
168    y += param.rowHeight + param.rowSpacing;    y += param.rowHeight + param.rowSpacing;
# Line 164  for (var i = 1; i < rowNumber; i++) { Line 175  for (var i = 1; i < rowNumber; i++) {
175    c2d.stroke ();    c2d.stroke ();
176    c2d.closePath ();    c2d.closePath ();
177  }  }
178    
179      if (map.hasChildNodes ()) {
180        var mapid = /* idPrefix + */ 'table-map-' + ++document.TableMapId;
181        map.name = mapid;
182        parent.appendChild (map);
183        var img = document.createElement ('img');
184        img.src = canvas.toDataURL ();
185        img.useMap = '#' + mapid;
186        parent.appendChild (img);
187        canvas.style.display = 'none';
188      }
189  } // tableToCanvas  } // tableToCanvas
190    
191    if (!document.TableMapId) document.TableMapId = 0;
192    
193  /*  /*
194    
195  Copyright 2007 Wakaba <w@suika.fam.cx>  Copyright 2007-2008 Wakaba <w@suika.fam.cx>
196    
197  This library is free software; you can redistribute it  This library is free software; you can redistribute it
198  and/or modify it under the same terms as Perl itself.  and/or modify it under the same terms as Perl itself.

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.6

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24