123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- MWF.xDesktop.requireApp("process.Xform", "$Input", null, false);
- /** @class Textarea 多行文本组件。
- * @o2cn 多行文本输入
- * @example
- * //可以在脚本中获取该组件
- * //方法1:
- * var field = this.form.get("fieldId"); //获取组件对象
- * //方法2
- * var field = this.target; //在组件本身的脚本中获取,比如事件脚本、默认值脚本、校验脚本等等
- *
- * var data = field.getData(); //获取值
- * field.setData("字符串值"); //设置值
- * field.hide(); //隐藏字段
- * var id = field.json.id; //获取字段标识
- * var flag = field.isEmpty(); //字段是否为空
- * @extends MWF.xApplication.process.Xform.$Input
- * @o2category FormComponents
- * @o2range {Process|CMS|Portal}
- * @hideconstructor
- */
- MWF.xApplication.process.Xform.Textarea = MWF.APPTextarea = new Class({
- Implements: [Events],
- Extends: MWF.APP$Input,
- _loadNode: function(){
- if (this.isReadonly()){
- this._loadNodeRead();
- }else{
- this._loadNodeEdit();
- }
- },
- _loadNodeRead: function(){
- this.node.empty();
- this.node.set({
- "nodeId": this.json.id,
- "MWFType": this.json.type
- });
- },
- _loadMergeEditNodeByDefault: function(){
- var data = this.getSortedSectionData();
- data = data.map(function(d){ return d.data; });
- this._setBusinessData( data.join("\n") );
- this._loadNode();
- },
- getInputData: function(){
- if( this.isReadonly()) {
- return this._getBusinessData();
- }else if (this.node.getFirst()){
- return this.node.getFirst().get("value");
- }else{
- return this._getBusinessData();
- }
- },
- toHtml: function(value){
- var reg = new RegExp("\n","g");
- var reg2 = new RegExp("\u003c","g"); //尖括号转义,否则内容会截断
- var reg3 = new RegExp("\u003e","g");
- return ( value || "").replace(reg2,"<").replace(reg3,">").replace(reg,"<br/>");
- },
- __setData: function(data){
- var old = this.getInputData();
- this._setBusinessData(data);
- if( this.isReadonly()){
- this.node.set("html", this.toHtml(data));
- }else if (this.node.getFirst()){
- this.node.getFirst().set("value", data);
- this.checkDescription();
- this.validationMode();
- }else{
- this.node.set("html", this.toHtml(data));
- }
- if (old!==data) this.fireEvent("change");
- this.moduleValueAG = null;
- },
- _setValue: function(value){
- if (!value) value = "";
- var p = o2.promiseAll(value).then(function(v){
- if (o2.typeOf(v)=="array") v = v[0];
- this._setBusinessData(v);
- if (this.node.getFirst()) this.node.getFirst().set("value", v || "");
- if (this.isReadonly()){
- this.node.set("html", this.toHtml(value));
- }
- this.fieldModuleLoaded = true;
- //this.__setValue(v);
- }.bind(this), function(){});
- this.moduleValueAG = p;
- p.then(function(){
- this.moduleValueAG = null;
- }.bind(this), function(){
- this.moduleValueAG = null;
- }.bind(this));
- // this.moduleValueAG = o2.AG.all(value).then(function(v){
- // this.moduleValueAG = null;
- // if (o2.typeOf(v)=="array") v = v[0];
- // this._setBusinessData(v);
- // if (this.node.getFirst()) this.node.getFirst().set("value", v || "");
- // if (this.readonly || this.json.isReadonly){
- // var reg = new RegExp("\n","g");
- // var reg2 = new RegExp("\u003c","g"); //尖括号转义,否则内容会截断
- // var reg3 = new RegExp("\u003e","g");
- // var text = value.replace(reg2,"<").replace(reg3,">").replace(reg,"<br/>");
- // this.node.set("html", text);
- // }
- // }.bind(this));
- //
- // if (this.moduleValueAG) this.moduleValueAG.then(function(){
- // this.moduleValueAG = null;
- // }.bind(this));
- return value;
- // if (value && value.isAG){
- // this.moduleValueAG = value;
- // value.addResolve(function(v){
- // this._setValue(v);
- // }.bind(this));
- // }else{
- // this._setBusinessData(value);
- // if (this.node.getFirst()) this.node.getFirst().set("value", value || "");
- // if (this.readonly || this.json.isReadonly){
- // var reg = new RegExp("\n","g");
- // var reg2 = new RegExp("\u003c","g"); //尖括号转义,否则内容会截断
- // var reg3 = new RegExp("\u003e","g");
- // var text = value.replace(reg2,"<").replace(reg3,">").replace(reg,"<br/>");
- // this.node.set("html", text);
- // }
- // return value;
- // }
- },
- getTextData: function(){
- //var value = this.node.get("value");
- //var text = this.node.get("text");
- if (this.isReadonly()){
- var value = this._getBusinessData();
- return {"value": [value || ""] , "text": [value || ""]};
- }else{
- var value = (this.node.getFirst()) ? this.node.getFirst().get("value") : this.node.get("text");
- var text = (this.node.getFirst()) ? this.node.getFirst().get("text") : this.node.get("text");
- return {"value": [value || ""] , "text": [text || value || ""]};
- }
- },
- // _setValue: function(value){
- // this._setBusinessData(value);
- // if (this.node.getFirst()) this.node.getFirst().set("value", value || "");
- // if (this.readonly || this.json.isReadonly){
- // var reg = new RegExp("\n","g");
- // var reg2 = new RegExp("\u003c","g"); //尖括号转义,否则内容会截断
- // var reg3 = new RegExp("\u003e","g");
- // var text = value.replace(reg2,"<").replace(reg3,">").replace(reg,"<br/>");
- // this.node.set("html", text);
- // }
- // },
- _resetNodeEdit: function(){
- var input = new Element("textarea", {"styles": {
- "background": "transparent",
- "width": (this.json.inputStyles && this.json.inputStyles.width) ? this.json.inputStyles.width : "100%",
- "border": "0px"
- }});
- var node = new Element("div", {"styles": {
- // "ovwrflow": (this.json.styles && this.json.styles.overflow) ? this.json.styles.overflow : "hidden",
- "position": "relative",
- "padding-right": "2px"
- }}).inject(this.node, "after");
- input.inject(node);
- this.node.destroy();
- this.node = node;
- },
- _loadNodeEdit: function(){
- if (!this.json.preprocessing) this._resetNodeEdit();
- var input = this.node.getFirst();
- if( !input && this.nodeHtml ){
- this.node.set("html", this.nodeHtml);
- input = this.node.getFirst();
- }
- input.set(this.json.properties);
- if( this.form.json.textareaDisableResize )input.setStyle("resize","none");
- this.node.set({
- "id": this.json.id,
- "MWFType": this.json.type
- });
- this.node.addEvent("change", function(){
- this._setBusinessData(this.getInputData());
- this.fireEvent("change");
- }.bind(this));
- this.node.addEvent("input", function(e){
- var v=e.target.get("value");
- this._setBusinessData(v);
- }.bind(this));
- this.node.getFirst().addEvent("blur", function(){
- this.validation();
- }.bind(this));
- this.node.getFirst().addEvent("keyup", function(){
- this.validationMode();
- }.bind(this));
- },
- _afterLoaded: function(){
- if (!this.readonly){
- this.loadDescription();
- }
- },
- loadDescription: function(){
- if (this.isReadonly())return;
- var v = this._getBusinessData();
- if (!v){
- if (this.json.description){
- var size, w;
- if( this.node.offsetParent === null ){ //隐藏
- size = { y: 26 }
- }else{
- size = this.node.getFirst().getSize();
- w = size.x-3;
- if( this.json.showIcon!='no' && !this.form.json.hideModuleIcon ){
- w = size.x-23;
- }
- }
- this.descriptionNode = new Element("div", {"styles": this.form.css.descriptionNode, "text": this.json.description}).inject(this.node);
- this.descriptionNode.setStyles({
- "height": ""+size.y+"px",
- "line-height": ""+size.y+"px"
- });
- if( w )this.descriptionNode.setStyles({
- "width": ""+w+"px"
- });
- this.setDescriptionEvent();
- }
- }
- },
- setDescriptionEvent: function(){
- if (this.descriptionNode){
- if (COMMON.Browser.Platform.name==="ios"){
- this.descriptionNode.addEvents({
- "click": function(){
- this.descriptionNode.setStyle("display", "none");
- this.node.getFirst().focus();
- }.bind(this)
- });
- }else if (COMMON.Browser.Platform.name==="android"){
- this.descriptionNode.addEvents({
- "click": function(){
- this.descriptionNode.setStyle("display", "none");
- this.node.getFirst().focus();
- }.bind(this)
- });
- }else{
- this.descriptionNode.addEvents({
- "click": function(){
- this.descriptionNode.setStyle("display", "none");
- this.node.getFirst().focus();
- }.bind(this)
- });
- }
- this.node.getFirst().addEvents({
- "focus": function(){
- this.descriptionNode.setStyle("display", "none");
- }.bind(this),
- "blur": function(){
- if (!this.node.getFirst().get("value")) this.descriptionNode.setStyle("display", "block");
- }.bind(this)
- });
- }
- },
- setExcelData: function (d) {
- var value = d.replace(/ /g,"\n"); //换行符
- this.excelData = value;
- this.setData(value, true);
- }
-
- });
|