test: 1
This commit is contained in:
241
public/UEditorPlus/dialogs/table/edittable.js
Normal file
241
public/UEditorPlus/dialogs/table/edittable.js
Normal file
@ -0,0 +1,241 @@
|
||||
/**
|
||||
* Created with JetBrains PhpStorm.
|
||||
* User: xuheng
|
||||
* Date: 12-12-19
|
||||
* Time: 下午4:55
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
(function () {
|
||||
var title = $G("J_title"),
|
||||
titleCol = $G("J_titleCol"),
|
||||
caption = $G("J_caption"),
|
||||
sorttable = $G("J_sorttable"),
|
||||
autoSizeContent = $G("J_autoSizeContent"),
|
||||
autoSizePage = $G("J_autoSizePage"),
|
||||
tone = $G("J_tone"),
|
||||
me,
|
||||
preview = $G("J_preview");
|
||||
|
||||
var editTable = function () {
|
||||
me = this;
|
||||
me.init();
|
||||
};
|
||||
editTable.prototype = {
|
||||
init: function () {
|
||||
var colorPiker = new UE.ui.ColorPicker({
|
||||
editor: editor
|
||||
}),
|
||||
colorPop = new UE.ui.Popup({
|
||||
editor: editor,
|
||||
content: colorPiker
|
||||
});
|
||||
|
||||
title.checked = editor.queryCommandState("inserttitle") == -1;
|
||||
titleCol.checked = editor.queryCommandState("inserttitlecol") == -1;
|
||||
caption.checked = editor.queryCommandState("insertcaption") == -1;
|
||||
sorttable.checked = editor.queryCommandState("enablesort") == 1;
|
||||
|
||||
var enablesortState = editor.queryCommandState("enablesort"),
|
||||
disablesortState = editor.queryCommandState("disablesort");
|
||||
|
||||
sorttable.checked = !!(enablesortState < 0 && disablesortState >= 0);
|
||||
sorttable.disabled = !!(enablesortState < 0 && disablesortState < 0);
|
||||
sorttable.title = enablesortState < 0 && disablesortState < 0 ? lang.errorMsg : '';
|
||||
|
||||
me.createTable(title.checked, titleCol.checked, caption.checked);
|
||||
me.setAutoSize();
|
||||
me.setColor(me.getColor());
|
||||
|
||||
domUtils.on(title, "click", me.titleHanler);
|
||||
domUtils.on(titleCol, "click", me.titleColHanler);
|
||||
domUtils.on(caption, "click", me.captionHanler);
|
||||
domUtils.on(sorttable, "click", me.sorttableHanler);
|
||||
domUtils.on(autoSizeContent, "click", me.autoSizeContentHanler);
|
||||
domUtils.on(autoSizePage, "click", me.autoSizePageHanler);
|
||||
|
||||
domUtils.on(tone, "click", function () {
|
||||
colorPop.showAnchor(tone);
|
||||
});
|
||||
domUtils.on(document, 'mousedown', function () {
|
||||
colorPop.hide();
|
||||
});
|
||||
colorPiker.addListener("pickcolor", function () {
|
||||
me.setColor(arguments[1]);
|
||||
colorPop.hide();
|
||||
});
|
||||
colorPiker.addListener("picknocolor", function () {
|
||||
me.setColor("");
|
||||
colorPop.hide();
|
||||
});
|
||||
},
|
||||
|
||||
createTable: function (hasTitle, hasTitleCol, hasCaption) {
|
||||
var arr = [],
|
||||
sortSpan = '<span>^</span>';
|
||||
arr.push("<table id='J_example'>");
|
||||
if (hasCaption) {
|
||||
arr.push("<caption>" + lang.captionName + "</caption>")
|
||||
}
|
||||
if (hasTitle) {
|
||||
arr.push("<tr>");
|
||||
if (hasTitleCol) {
|
||||
arr.push("<th>" + lang.titleName + "</th>");
|
||||
}
|
||||
for (var j = 0; j < 5; j++) {
|
||||
arr.push("<th>" + lang.titleName + "</th>");
|
||||
}
|
||||
arr.push("</tr>");
|
||||
}
|
||||
for (var i = 0; i < 6; i++) {
|
||||
arr.push("<tr>");
|
||||
if (hasTitleCol) {
|
||||
arr.push("<th>" + lang.titleName + "</th>")
|
||||
}
|
||||
for (var k = 0; k < 5; k++) {
|
||||
arr.push("<td>" + lang.cellsName + "</td>")
|
||||
}
|
||||
arr.push("</tr>");
|
||||
}
|
||||
arr.push("</table>");
|
||||
preview.innerHTML = arr.join("");
|
||||
this.updateSortSpan();
|
||||
},
|
||||
titleHanler: function () {
|
||||
var example = $G("J_example"),
|
||||
frg = document.createDocumentFragment(),
|
||||
color = domUtils.getComputedStyle(domUtils.getElementsByTagName(example, "td")[0], "border-color"),
|
||||
colCount = example.rows[0].children.length;
|
||||
|
||||
if (title.checked) {
|
||||
example.insertRow(0);
|
||||
for (var i = 0, node; i < colCount; i++) {
|
||||
node = document.createElement("th");
|
||||
node.innerHTML = lang.titleName;
|
||||
frg.appendChild(node);
|
||||
}
|
||||
example.rows[0].appendChild(frg);
|
||||
|
||||
} else {
|
||||
domUtils.remove(example.rows[0]);
|
||||
}
|
||||
me.setColor(color);
|
||||
me.updateSortSpan();
|
||||
},
|
||||
titleColHanler: function () {
|
||||
var example = $G("J_example"),
|
||||
color = domUtils.getComputedStyle(domUtils.getElementsByTagName(example, "td")[0], "border-color"),
|
||||
colArr = example.rows,
|
||||
colCount = colArr.length;
|
||||
|
||||
if (titleCol.checked) {
|
||||
for (var i = 0, node; i < colCount; i++) {
|
||||
node = document.createElement("th");
|
||||
node.innerHTML = lang.titleName;
|
||||
colArr[i].insertBefore(node, colArr[i].children[0]);
|
||||
}
|
||||
} else {
|
||||
for (var i = 0; i < colCount; i++) {
|
||||
domUtils.remove(colArr[i].children[0]);
|
||||
}
|
||||
}
|
||||
me.setColor(color);
|
||||
me.updateSortSpan();
|
||||
},
|
||||
captionHanler: function () {
|
||||
var example = $G("J_example");
|
||||
if (caption.checked) {
|
||||
var row = document.createElement('caption');
|
||||
row.innerHTML = lang.captionName;
|
||||
example.insertBefore(row, example.firstChild);
|
||||
} else {
|
||||
domUtils.remove(domUtils.getElementsByTagName(example, 'caption')[0]);
|
||||
}
|
||||
},
|
||||
sorttableHanler: function () {
|
||||
me.updateSortSpan();
|
||||
},
|
||||
autoSizeContentHanler: function () {
|
||||
var example = $G("J_example");
|
||||
example.removeAttribute("width");
|
||||
},
|
||||
autoSizePageHanler: function () {
|
||||
var example = $G("J_example");
|
||||
var tds = example.getElementsByTagName(example, "td");
|
||||
utils.each(tds, function (td) {
|
||||
td.removeAttribute("width");
|
||||
});
|
||||
example.setAttribute('width', '100%');
|
||||
},
|
||||
updateSortSpan: function () {
|
||||
var example = $G("J_example"),
|
||||
row = example.rows[0];
|
||||
|
||||
var spans = domUtils.getElementsByTagName(example, "span");
|
||||
utils.each(spans, function (span) {
|
||||
span.parentNode.removeChild(span);
|
||||
});
|
||||
if (sorttable.checked) {
|
||||
utils.each(row.cells, function (cell, i) {
|
||||
var span = document.createElement("span");
|
||||
span.innerHTML = "^";
|
||||
cell.appendChild(span);
|
||||
});
|
||||
}
|
||||
},
|
||||
getColor: function () {
|
||||
var start = editor.selection.getStart(), color,
|
||||
cell = domUtils.findParentByTagName(start, ["td", "th", "caption"], true);
|
||||
color = cell && domUtils.getComputedStyle(cell, "border-color");
|
||||
if (!color) color = "#DDDDDD";
|
||||
return color;
|
||||
},
|
||||
setColor: function (color) {
|
||||
var example = $G("J_example"),
|
||||
arr = domUtils.getElementsByTagName(example, "td").concat(
|
||||
domUtils.getElementsByTagName(example, "th"),
|
||||
domUtils.getElementsByTagName(example, "caption")
|
||||
);
|
||||
|
||||
tone.value = color;
|
||||
utils.each(arr, function (node) {
|
||||
node.style.borderColor = color;
|
||||
});
|
||||
|
||||
},
|
||||
setAutoSize: function () {
|
||||
var me = this;
|
||||
autoSizePage.checked = true;
|
||||
me.autoSizePageHanler();
|
||||
}
|
||||
};
|
||||
|
||||
new editTable;
|
||||
|
||||
dialog.onok = function () {
|
||||
editor.__hasEnterExecCommand = true;
|
||||
|
||||
var checks = {
|
||||
title: "inserttitle deletetitle",
|
||||
titleCol: "inserttitlecol deletetitlecol",
|
||||
caption: "insertcaption deletecaption",
|
||||
sorttable: "enablesort disablesort"
|
||||
};
|
||||
editor.fireEvent('saveScene');
|
||||
for (var i in checks) {
|
||||
var cmds = checks[i].split(" "),
|
||||
input = $G("J_" + i);
|
||||
if (input["checked"]) {
|
||||
editor.queryCommandState(cmds[0]) != -1 && editor.execCommand(cmds[0]);
|
||||
} else {
|
||||
editor.queryCommandState(cmds[1]) != -1 && editor.execCommand(cmds[1]);
|
||||
}
|
||||
}
|
||||
|
||||
editor.execCommand("edittable", tone.value);
|
||||
autoSizeContent.checked ? editor.execCommand('adaptbytext') : "";
|
||||
autoSizePage.checked ? editor.execCommand("adaptbywindow") : "";
|
||||
editor.fireEvent('saveScene');
|
||||
|
||||
editor.__hasEnterExecCommand = false;
|
||||
};
|
||||
})();
|
Reference in New Issue
Block a user