table.js
上传用户:lm2018
上传日期:2015-12-12
资源大小:30449k
文件大小:9k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. /*
  2. *######################################
  3. * eWebEditor v4.00 - Advanced online web based WYSIWYG HTML editor.
  4. * Copyright (c) 2003-2007 eWebSoft.com
  5. *
  6. * For further information go to http://www.ewebsoft.com/
  7. * This copyright notice MUST stay intact for use.
  8. *######################################
  9. */
  10. var selectedTD
  11. var selectedTR
  12. var selectedTBODY
  13. var selectedTable
  14. function TableInsert(){
  15. if (!isTableSelected()){
  16. showDialog('table.htm', true);
  17. }
  18. }
  19. function TableProp(){
  20. if (isTableSelected()||isCursorInTableCell()){
  21. showDialog('table.htm?action=modify', true);
  22. }
  23. }
  24. function TableCellProp(){
  25. if (isCursorInTableCell()){
  26. showDialog('tablecell.htm', true);
  27. }
  28. }
  29. function TableCellSplit(){
  30. if (isCursorInTableCell()){
  31. showDialog('tablecellsplit.htm',true);
  32. }
  33. }
  34. function TableRowProp(){
  35. if (isCursorInTableCell()){
  36. showDialog('tablecell.htm?action=row', true);
  37. }
  38. }
  39. function TableRowInsertAbove() {
  40. if (isCursorInTableCell()){
  41. var numCols = 0
  42. allCells = selectedTR.cells
  43. for (var i=0;i<allCells.length;i++) {
  44.   numCols = numCols + allCells[i].getAttribute('colSpan')
  45. }
  46. var newTR = selectedTable.insertRow(selectedTR.rowIndex)
  47. for (i = 0; i < numCols; i++) {
  48.   newTD = newTR.insertCell()
  49. newTD.innerHTML = "&nbsp;"
  50. if (borderShown == "yes") {
  51. newTD.runtimeStyle.border = "1px dotted #BFBFBF"
  52. }
  53. }
  54. }
  55. }
  56. function TableRowInsertBelow() {
  57. if (isCursorInTableCell()){
  58. var numCols = 0
  59. allCells = selectedTR.cells
  60. for (var i=0;i<allCells.length;i++) {
  61.   numCols = numCols + allCells[i].getAttribute('colSpan')
  62. }
  63. var newTR = selectedTable.insertRow(selectedTR.rowIndex+1)
  64. for (i = 0; i < numCols; i++) {
  65.   newTD = newTR.insertCell()
  66. newTD.innerHTML = "&nbsp;"
  67. if (borderShown == "yes") {
  68. newTD.runtimeStyle.border = "1px dotted #BFBFBF"
  69. }
  70. }
  71. }
  72. }
  73. function TableRowMerge() {
  74. if (isCursorInTableCell()) {
  75. var rowSpanTD = selectedTD.getAttribute('rowSpan')
  76. allRows = selectedTable.rows
  77. if (selectedTR.rowIndex +1 != allRows.length) {
  78. var allCellsInNextRow = allRows[selectedTR.rowIndex+selectedTD.rowSpan].cells
  79. var addRowSpan = allCellsInNextRow[selectedTD.cellIndex].getAttribute('rowSpan')
  80. var moveTo = selectedTD.rowSpan
  81. if (!addRowSpan) addRowSpan = 1;
  82. selectedTD.rowSpan = selectedTD.rowSpan + addRowSpan
  83. allRows[selectedTR.rowIndex + moveTo].deleteCell(selectedTD.cellIndex)
  84. }
  85. }
  86. }
  87. function TableRowSplit(nRows){
  88. if (!isCursorInTableCell()) return;
  89. if (nRows<2) return;
  90. var addRows = nRows - 1;
  91. var addRowsNoSpan = addRows;
  92. var nsLeftColSpan = 0;
  93. for (var i=0; i<selectedTD.cellIndex; i++){
  94. nsLeftColSpan += selectedTR.cells[i].colSpan;
  95. }
  96. var allRows = selectedTable.rows;
  97. // rowspan>1
  98. while (selectedTD.rowSpan > 1 && addRowsNoSpan > 0){
  99. var nextRow = allRows[selectedTR.rowIndex+selectedTD.rowSpan-1];
  100. selectedTD.rowSpan -= 1;
  101. var ncLeftColSpan = 0;
  102. var position = -1;
  103. for (var n=0; n<nextRow.cells.length; n++){
  104. ncLeftColSpan += nextRow.cells[n].getAttribute('colSpan');
  105. if (ncLeftColSpan>nsLeftColSpan){
  106. position = n;
  107. break;
  108. }
  109. }
  110. var newTD=nextRow.insertCell(position);
  111. newTD.innerHTML = "&nbsp;";
  112. if (borderShown == "yes") {
  113. newTD.runtimeStyle.border = "1px dotted #BFBFBF";
  114. }
  115. addRowsNoSpan -= 1;
  116. }
  117. // rowspan=1
  118. for (var n=0; n<addRowsNoSpan; n++){
  119. var numCols = 0
  120. allCells = selectedTR.cells
  121. for (var i=0;i<allCells.length;i++) {
  122. numCols = numCols + allCells[i].getAttribute('colSpan')
  123. }
  124. var newTR = selectedTable.insertRow(selectedTR.rowIndex+1)
  125. for (var j=0; j<selectedTR.rowIndex; j++){
  126. for (var k=0; k<allRows[j].cells.length; k++){
  127. if ((allRows[j].cells[k].rowSpan>1)&&(allRows[j].cells[k].rowSpan>=selectedTR.rowIndex-allRows[j].rowIndex+1)){
  128. allRows[j].cells[k].rowSpan += 1;
  129. }
  130. }
  131. }
  132. for (i = 0; i < allCells.length; i++) {
  133. if (i!=selectedTD.cellIndex){
  134. selectedTR.cells[i].rowSpan += 1;
  135. }else{
  136. newTD = newTR.insertCell();
  137. newTD.colSpan = selectedTD.colSpan;
  138. newTD.innerHTML = "&nbsp;";
  139. if (borderShown == "yes") {
  140. newTD.runtimeStyle.border = "1px dotted #BFBFBF";
  141. }
  142. }
  143. }
  144. }
  145. }
  146. function TableRowDelete() {
  147. if (isCursorInTableCell()) {
  148. selectedTable.deleteRow(selectedTR.rowIndex)
  149. }
  150. }
  151. function TableColInsertLeft() {
  152.     if (isCursorInTableCell()) {
  153. moveFromEnd = (selectedTR.cells.length-1) - (selectedTD.cellIndex)
  154. allRows = selectedTable.rows
  155. for (i=0;i<allRows.length;i++) {
  156. rowCount = allRows[i].cells.length - 1
  157. position = rowCount - moveFromEnd
  158. if (position < 0) {
  159. position = 0
  160. }
  161. newCell = allRows[i].insertCell(position)
  162. newCell.innerHTML = "&nbsp;"
  163. if (borderShown == "yes") {
  164. newCell.runtimeStyle.border = "1px dotted #BFBFBF"
  165. }
  166. }
  167.     }
  168. }
  169. function TableColInsertRight() {
  170.     if (isCursorInTableCell()) {
  171. moveFromEnd = (selectedTR.cells.length-1) - (selectedTD.cellIndex)
  172. allRows = selectedTable.rows
  173. for (i=0;i<allRows.length;i++) {
  174. rowCount = allRows[i].cells.length - 1
  175. position = rowCount - moveFromEnd
  176. if (position < 0) {
  177. position = 0
  178. }
  179. newCell = allRows[i].insertCell(position+1)
  180. newCell.innerHTML = "&nbsp;"
  181. if (borderShown == "yes") {
  182. newCell.runtimeStyle.border = "1px dotted #BFBFBF"
  183. }
  184. }
  185.     }
  186. }
  187. function TableColMerge() {
  188. if (isCursorInTableCell()) {
  189. var colSpanTD = selectedTD.getAttribute('colSpan')
  190. allCells = selectedTR.cells
  191. if (selectedTD.cellIndex + 1 != selectedTR.cells.length) {
  192. var addColspan = allCells[selectedTD.cellIndex+1].getAttribute('colSpan')
  193. selectedTD.colSpan = colSpanTD + addColspan
  194. selectedTR.deleteCell(selectedTD.cellIndex+1)
  195. }
  196. }
  197. }
  198. function TableColDelete() {
  199.     if (isCursorInTableCell()) {
  200. moveFromEnd = (selectedTR.cells.length-1) - (selectedTD.cellIndex)
  201. allRows = selectedTable.rows
  202. for (var i=0;i<allRows.length;i++) {
  203. endOfRow = allRows[i].cells.length - 1
  204. position = endOfRow - moveFromEnd
  205. if (position < 0) {
  206. position = 0
  207. }
  208. allCellsInRow = allRows[i].cells
  209. if (allCellsInRow[position].colSpan > 1) {
  210. allCellsInRow[position].colSpan = allCellsInRow[position].colSpan - 1
  211. } else { 
  212. allRows[i].deleteCell(position)
  213. }
  214. }
  215. }
  216. }
  217. function TableColSplit(nCols){
  218. if (!isCursorInTableCell()) return;
  219. if (nCols<2) return;
  220. var addCols = nCols - 1;
  221. var addColsNoSpan = addCols;
  222. var newCell;
  223. var nsLeftColSpan = 0;
  224. var nsLeftRowSpanMoreOne = 0;
  225. for (var i=0; i<selectedTD.cellIndex; i++){
  226. nsLeftColSpan += selectedTR.cells[i].colSpan;
  227. if (selectedTR.cells[i].rowSpan > 1){
  228. nsLeftRowSpanMoreOne += 1;
  229. }
  230. }
  231. var allRows = selectedTable.rows
  232. // colSpan>1
  233. while (selectedTD.colSpan > 1 && addColsNoSpan > 0) {
  234. newCell = selectedTR.insertCell(selectedTD.cellIndex+1);
  235. newCell.innerHTML = "&nbsp;"
  236. if (borderShown == "yes") {
  237. newCell.runtimeStyle.border = "1px dotted #BFBFBF"
  238. }
  239. selectedTD.colSpan -= 1;
  240. addColsNoSpan -= 1;
  241. }
  242. // colSpan=1
  243. for (i=0;i<allRows.length;i++) {
  244. var ncLeftColSpan = 0;
  245. var position = -1;
  246. for (var n=0; n<allRows[i].cells.length; n++){
  247. ncLeftColSpan += allRows[i].cells[n].getAttribute('colSpan');
  248. if (ncLeftColSpan+nsLeftRowSpanMoreOne>nsLeftColSpan){
  249. position = n;
  250. break;
  251. }
  252. }
  253. if (selectedTR.rowIndex!=i){
  254. if (position!=-1){
  255. allRows[i].cells[position+nsLeftRowSpanMoreOne].colSpan += addColsNoSpan;
  256. }
  257. }else{
  258. for (var n=0; n<addColsNoSpan; n++){
  259. newCell = allRows[i].insertCell(selectedTD.cellIndex+1)
  260. newCell.innerHTML = "&nbsp;"
  261. newCell.rowSpan = selectedTD.rowSpan;
  262. if (borderShown == "yes") {
  263. newCell.runtimeStyle.border = "1px dotted #BFBFBF"
  264. }
  265. }
  266. }
  267. }
  268. }
  269. function isTableSelected() {
  270. if (eWebEditor.document.selection.type == "Control") {
  271. var oControlRange = eWebEditor.document.selection.createRange();
  272. if (oControlRange(0).tagName.toUpperCase() == "TABLE") {
  273. selectedTable = eWebEditor.document.selection.createRange()(0);
  274. return true;
  275. }
  276. }
  277. function isCursorInTableCell() {
  278. if (eWebEditor.document.selection.type != "Control") {
  279. var elem = eWebEditor.document.selection.createRange().parentElement()
  280. while (elem.tagName.toUpperCase() != "TD" && elem.tagName.toUpperCase() != "TH"){
  281. elem = elem.parentElement
  282. if (elem == null)
  283.                 break
  284. }
  285. if (elem) {
  286. selectedTD = elem
  287. selectedTR = selectedTD.parentElement
  288. selectedTBODY =  selectedTR.parentElement
  289. selectedTable = selectedTBODY.parentElement
  290. return true
  291. }
  292. }
  293. }