tijian_tieying/web/Web/UEditor/dialogs/table/table.js
2025-02-20 12:14:39 +08:00

187 lines
5.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Created by JetBrains PhpStorm.
* User: taoqili
* Date: 12-2-23
* Time: 上午11:32
* To change this template use File | Settings | File Templates.
*/
var init = function(){
addColorPickListener();
addPxChangeListener();
addFloatListener();
addBorderTypeChangeListener();
};
function addBorderTypeChangeListener(){
domUtils.on($G("borderType"),"change",createTable);
}
function addFloatListener(){
domUtils.on($G("align"),"change",function(){
setTablePosition(this.value);
})
}
/**
* 根据传入的value值变更table的位置
* @param value
*/
function setTablePosition(value){
var table = $G("preview").children[0],
margin = (table.parentNode.offsetWidth - table.offsetWidth)/2;
if(value=="center"){
table.style.marginLeft = margin +"px";
}else if(value=="right"){
table.style.marginLeft = 2*margin +"px";
}else{
table.style.marginLeft = "5px";
}
}
/**
* 绑定border、spaceing等更改事件
*/
function addPxChangeListener(){
var ids = ["border","cellPadding","cellSpacing"];
for(var i=0,ci;ci=$G(ids[i++]);){
domUtils.on(ci,"keyup",function(){
$G("message").style.display="none";
switch(this.id){
case "border":
$G("border").value = filter(this.value,"border","边框");
break;
case "cellPadding":
$G("cellPadding").value = filter(this.value,"cellPadding","边距");
break;
case "cellSpacing":
$G("cellSpacing").value = filter(this.value,"cellSpacing","间距");
break;
default:
}
createTable();
//setTablePosition($G("align").value);
});
}
}
function isNum(str){
return /^(0|[1-9][0-9]*)$/.test( str );
}
/**
* 依据属性框中的属性值创建table对象
*/
function createTable(){
var border=$G("border").value || 1,
borderColor=$G("borderColor").value || "#000000",
cellPadding=$G("cellPadding").value || 0,
cellSpacing=$G("cellSpacing").value || 0,
bgColor=$G("bgColor").value || "#FFFFFF",
align=$G("align").value || "",
borderType=$G("borderType").value || 0;
border = setMax(border,5);
cellPadding = setMax(cellPadding,5);
cellSpacing = setMax(cellSpacing,5);
var html = ["<table "];
if(cellSpacing>0){
html.push(' style="border-collapse:separate;" ')
}else{
html.push(' style="border-collapse:collapse;" ')
}
cellSpacing>0 && html.push(' cellSpacing="' + cellSpacing + '" ');
html.push(' border="' + (border||1) +'" borderColor="' + (borderColor||'#000000') +'"');
bgColor && html.push(' bgColor="' + bgColor + '"');
html.push(' ><tr><td>这</td><td>是</td><td>用</td></tr><tr><td>来</td><td>预</td><td>览</td></tr><tr><td>的</td><td></td><td></td></tr></table>');
var preview = $G("preview");
preview.innerHTML = html.join("");
//如果针对每个单元格
var table = preview.firstChild;
if(borderType=="1"){
for(var i =0,td,tds = domUtils.getElementsByTagName(table,"td");td = tds[i++];){
td.style.border = border + "px solid " + borderColor;
}
}
for(var i =0,td,tds = domUtils.getElementsByTagName(table,"td");td = tds[i++];){
td.style.padding = cellPadding + "px";
}
}
function setMax(value,max){
return value>max? max:value;
}
function filter(value,property,des){
var maxPreviewValue = 5,
maxValue = 10;
if(!isNum(value) && value!=""){
$G(property).value = "";
$G("message").style.display ="";
$G("messageContent").innerHTML= "请输入正确的数值!";
return property=="border"?1:0;
}
if(value > maxPreviewValue){
$G("message").style.display ="";
$G("messageContent").innerHTML= des+"超过" + maxPreviewValue+"px时不再提供实时预览";
if(value>maxValue){
$G("messageContent").innerHTML = des+"最大值不能超过"+maxValue+"px!";
$G(property).value = maxValue;
return maxValue;
}
}
return value;
}
/**
* 绑定取色器监听事件
*/
function addColorPickListener(){
var colorPicker = getColorPicker(),
ids = ["bgColor","borderColor"];
for(var i=0,ci;ci = $G(ids[i++]); ){
domUtils.on(ci,"click",function(){
var me = this;
showColorPicker(colorPicker,me);
colorPicker.content.onpickcolor = function(t, color){
me.value = color.toUpperCase();
colorPicker.hide();
createTable();
};
colorPicker.content.onpicknocolor = function(){
me.value = '';
colorPicker.hide();
createTable();
};
});
domUtils.on(ci,"keyup",function(){
colorPicker.hide();
createTable();
});
}
domUtils.on(document, 'mousedown', function (){
UE.ui.Popup.postHide(this);
});
}
/**
* 实例化一个colorpicker对象
*/
function getColorPicker(){
return new UE.ui.Popup({
content: new UE.ui.ColorPicker({
noColorText: '清除颜色'
})
});
}
/**
* 在anchorObj上显示colorpicker
* @param anchorObj
*/
function showColorPicker(colorPicker,anchorObj){
colorPicker.showAnchor(anchorObj);
}