tfp
Version:
A Web UI framework for TaskBuilder
243 lines (228 loc) • 9.28 kB
JavaScript
import { VisibleComponent } from "../controller.js";
/**
* 按钮组件
* @param {[type]} dataModel [description]
*/
export default class Button extends VisibleComponent {
constructor(__tfp, dataModel, parent) {
super(__tfp, "Button", dataModel, parent);
}
//属性
get value() { return this.dataModel.value }
set value(value) {
this.dataModel.value = value;
if (this._jqObj) {
this._jqObj.find("label").text(value);
this.exeEventHandler("onChange");
}
}
get buttonType() { return this.dataModel.buttonType }
set buttonType(value) {
let buttonType = "default";
if (value) buttonType = value;
if (!this.checkAttrOption("buttonType", buttonType)) {
this._tfp.showMsg("按钮组件不支持类型:" + buttonType + "!");
return;
}
this.dataModel.buttonType = buttonType;
if (this._jqObj) {
this._jqObj.removeClass("tfp-button-default tfp-button-primary tfp-button-info"
+ " tfp-button-warning tfp-button-success tfp-button-danger");
this._jqObj.removeClass("tfp-button-default-plain tfp-button-primary-plain tfp-button-info-plain"
+ " tfp-button-warning-plain tfp-button-success-plain tfp-button-danger-plain");
if (this.plain) {
this._jqObj.addClass("tfp-button-" + buttonType + "-plain");
} else {
this._jqObj.addClass("tfp-button-" + buttonType);
}
}
}
get theme() { return this.dataModel.theme }
set theme(value) {
let theme = "rect";
if (value) theme = value;
if (!this.checkAttrOption("theme", theme)) {
this._tfp.showMsg("按钮组件不支持风格:" + theme + "!");
return;
}
this.dataModel.theme = theme;
if (this._jqObj) {
this._jqObj.removeClass("tfp-button-round tfp-button-rect tfp-button-circle");
this._jqObj.addClass("tfp-button-" + theme);
}
}
get plain() { return this.dataModel.plain }
set plain(value) {
this.dataModel.plain = value ? true : false;
if (this._jqObj) {
this._jqObj.removeClass("tfp-button-default tfp-button-primary tfp-button-info"
+ " tfp-button-warning tfp-button-success tfp-button-danger");
this._jqObj.removeClass("tfp-button-default-plain tfp-button-primary-plain tfp-button-info-plain"
+ " tfp-button-warning-plain tfp-button-success-plain tfp-button-danger-plain");
var buttonType = this.buttonType;
if (!buttonType) buttonType = "default";
if (this.dataModel.plain) {
this._jqObj.addClass("tfp-button-" + buttonType + "-plain");
} else {
this._jqObj.addClass("tfp-button-" + buttonType);
}
}
}
get showImage() { return this.dataModel.showImage }
set showImage(value) {
this.dataModel.showImage = value ? true : false;
if (this._jqObj) {
if (value) {
if (this._jqObj.find("img").length > 0) {
this._jqObj.find("img").parent().show();
return;
}
if (this._tfp.isDesigning) {
uiDesigner.showAttrSettingRow("imageUrl");
uiDesigner.showAttrSettingRow("imageWidth");
uiDesigner.showAttrSettingRow("imageHeight");
uiDesigner.showAttrSettingRow("portrait");
uiDesigner.showAttrSettingRow("hiddenText");
}
let imgUrl = this.dataModel.imageUrl;
if (!imgUrl) {
imgUrl = this._tfp.rootPath + "/src/components/button/images/default-photo.png";
} else if (this._tfp.isDesigning) {
imgUrl = this._tfp.getUrlRealPath(imgUrl);
}
let imgWidth = 24;
if (this.dataModel.imageWidth) imgWidth = this.dataModel.imageWidth;
if ((imgWidth + "").indexOf("px") < 0) imgWidth += "px";
let imgHeight = 24;
if (this.dataModel.imageHeight) imgHeight = this.dataModel.imageHeight;
if ((imgHeight + "").indexOf("px") < 0) imgHeight += "px";
let imgHtml = "<img src=\"" + imgUrl + "\" style=\"width:" + imgWidth
+ ";height:" + imgHeight + ";margin-top:3px;margin-bottom:3px;\" />";
$("<div style=\"float:left;display:block;\">" + imgHtml
+ "</div>").insertBefore(this._jqObj.find("label"));
this._jqObj.find("label").css("margin-left", "7px");
this._jqObj.find("label").css("line-height", this._jqObj.height() + "px");
} else {
this._jqObj.find("img").parent().remove();
this.dataModel.portrait = false;
this.dataModel.hiddenText = false;
this.dataModel.imageUrl = "";
this.dataModel.imageWidth = 24;
this.dataModel.imageHeight = 24;
this._jqObj.find("label").css("margin-left", "0");
this._jqObj.find("label").css("line-height", "30px");
this._jqObj.find("label").show();
if (this._tfp.isDesigning) {
uiDesigner.hideAttrSettingRow("imageUrl");
uiDesigner.hideAttrSettingRow("imageWidth");
uiDesigner.hideAttrSettingRow("imageHeight");
uiDesigner.setCurCptAttrSettingVal("imageWidth", "24");
uiDesigner.setCurCptAttrSettingVal("imageHeight", "24");
//window.parent.$("[attr-name=imageWidth]").find("input").val("24");
//window.parent.$("[attr-name=imageHeight]").find("input").val("24");
uiDesigner.setCurCptAttrSettingVal("portrait", false);
uiDesigner.hideAttrSettingRow("portrait");
uiDesigner.setCurCptAttrSettingVal("hiddenText", false);
uiDesigner.hideAttrSettingRow("hiddenText");
}
}
}
}
get imageUrl() { return this.dataModel.imageUrl }
set imageUrl(value) {
this.dataModel.imageUrl = value;
if (this._jqObj) {
if (this._tfp.isDesigning && value) {
this._jqObj.find("img").attr("src", this._tfp.getUrlRealPath(value));
} else {
this._jqObj.find("img").attr("src", value);
}
}
}
get imageWidth() { return this.dataModel.imageWidth }
set imageWidth(value) {
this.dataModel.imageWidth = value;
if (this._jqObj) {
this._jqObj.find("img").attr("width", value);
}
}
get imageHeight() { return this.dataModel.imageHeight }
set imageHeight(value) {
this.dataModel.imageHeight = value;
if (this._jqObj) {
this._jqObj.find("img").attr("height", value);
if (!this.portrait) this._jqObj.find("label").css("line-height",
(this._jqObj.find("img").height() + 6) + "px");
}
}
get hiddenText() { return this.dataModel.hiddenText }
set hiddenText(value) {
this.dataModel.hiddenText = value ? true : false;
if (this._jqObj) {
if (this._jqObj.find("label").length == 0) return;
if (value) {
this.portrait = false;
uiDesigner.setCurCptAttrSettingVal("portrait", false);
uiDesigner.hideAttrSettingRow("portrait");
this._jqObj.find("img").css("margin-top", "3px");
this._jqObj.find("label").hide();
} else {
this._jqObj.find("label").show();
this._jqObj.find("div").css("float", "left");
this._jqObj.find("div").css("width", "");
this._jqObj.find("img").css("margin-top", "3px");
this._jqObj.find("label").css("margin-left", "7px");
this._jqObj.find("label").css("line-height", (this._jqObj.find("img").height() + 6) + "px");
uiDesigner.showAttrSettingRow("portrait");
}
}
}
get portrait() { return this.dataModel.portrait }
set portrait(value) {
this.dataModel.portrait = value ? true : false;
if (this._jqObj) {
if (this._jqObj.find("div").length == 0) return;
if (value) {
this._jqObj.find("div").css("float", "none");
this._jqObj.find("div").css("width", "100%");
this._jqObj.find("img").css("margin-top", "10px");
this._jqObj.find("label").css("margin-left", "0");
this._jqObj.find("label").css("line-height", "30px");
} else {
this._jqObj.find("div").css("float", "left");
this._jqObj.find("div").css("width", "");
this._jqObj.find("img").css("margin-top", "3px");
this._jqObj.find("label").css("margin-left", "7px");
this._jqObj.find("label").css("line-height", (this._jqObj.find("img").height() + 6) + "px");
}
}
}
get title() { return this.dataModel.title }
set title(value) {
this.dataModel.title = value;
if (this._jqObj) {
this._jqObj.attr("title", value);
}
}
get labelHeight() {
if (this.dataModel.labelHeight) return this._tfp.getPixel(this.dataModel.labelHeight);
return 30;
}
set labelHeight(value) {
this.dataModel.labelHeight = value;
if (this._jqObj) {
let height = value;
if ((height + "").indexOf("px") < 0) height += "px";
this._jqObj.find("label").css("line-height", height);
}
}
css(styleName, styleValue) {
super.css(styleName, styleValue);
if (styleName == "height") {
if (this._jqObj && !this.showImage) {
//this._jqObj.css("line-height", styleValue);
this._jqObj.find("label").css("line-height", styleValue);
}
}
}
}