提交 c202a061 编写于 作者: NoSubject's avatar NoSubject

表单默认值支持异步处理

上级 56b4459a
......@@ -13,13 +13,6 @@
<td class="editTableTitle">描述:</td>
<td class="editTableValue"><input type="text" name="description" value="text{$.description}" class="editTableInput"/></td>
</tr>
<tr>
<td class="editTableTitle">可选值:</td>
<td class="editTableValue">
<input class="editTableRadio" onclick="if (this.checked){ $('text{$.pid}selectEditItemValues').setStyle('display', 'block'); $('text{$.pid}selectEditItemScript').setStyle('display', 'none')}" name="itemType" text{($.itemType=='values')?'checked':''} type="radio" value="values"/>固定值
<input class="editTableRadio" onclick="if (this.checked){ $('text{$.pid}selectEditItemScript').setStyle('display', 'block'); $('text{$.pid}selectEditItemValues').setStyle('display', 'none')}" name="itemType" text{($.itemType=='script')?'checked':''} type="radio" value="script"/>脚本
</td>
</tr>
<tr>
<td class="editTableTitle">是否只读:</td>
<td class="editTableValue">
......@@ -27,6 +20,14 @@
<input type="radio" name="isReadonly" value="false" text{(!$.isReadonly)?'checked':''}/>
</td>
</tr>
<tr>
<td class="editTableTitle">可选值:</td>
<td class="editTableValue">
<input class="editTableRadio" onclick="if (this.checked){ $('text{$.pid}selectEditItemValues').setStyle('display', 'block'); $('text{$.pid}selectEditItemScript').setStyle('display', 'none')}" name="itemType" text{($.itemType=='values')?'checked':''} type="radio" value="values"/>固定值
<input class="editTableRadio" onclick="if (this.checked){ $('text{$.pid}selectEditItemScript').setStyle('display', 'block'); $('text{$.pid}selectEditItemValues').setStyle('display', 'none')}" name="itemType" text{($.itemType=='script')?'checked':''} type="radio" value="script"/>脚本
</td>
</tr>
</table>
<div id="text{$.pid}selectEditItemValues" style="display: text{($.itemType=='values')?'block':'none'}" class="MWFArraylist" name="itemValues" title="可选值"></div>
......@@ -90,4 +91,4 @@
<div title="JSON" class="MWFTab">
<div class="MWFJSONArea" style="font-family: Verdana, Geneva, sans-serif; font-size:14px"></div>
</div>
</div>
\ No newline at end of file
</div>
......@@ -13,13 +13,6 @@
<td class="editTableTitle">描述:</td>
<td class="editTableValue"><input type="text" name="description" value="text{$.description}" class="editTableInput"/></td>
</tr>
<tr>
<td class="editTableTitle">可选值:</td>
<td class="editTableValue">
<input class="editTableRadio" onclick="if (this.checked){ $('text{$.pid}selectEditItemValues').setStyle('display', 'block'); $('text{$.pid}selectEditItemScript').setStyle('display', 'none')}" name="itemType" text{($.itemType=='values')?'checked':''} type="radio" value="values"/>固定值
<input class="editTableRadio" onclick="if (this.checked){ $('text{$.pid}selectEditItemScript').setStyle('display', 'block'); $('text{$.pid}selectEditItemValues').setStyle('display', 'none')}" name="itemType" text{($.itemType=='script')?'checked':''} type="radio" value="script"/>脚本
</td>
</tr>
<tr>
<td class="editTableTitle">是否只读:</td>
<td class="editTableValue">
......@@ -27,6 +20,14 @@
<input type="radio" name="isReadonly" value="false" text{(!$.isReadonly)?'checked':''}/>
</td>
</tr>
<tr>
<td class="editTableTitle">可选值:</td>
<td class="editTableValue">
<input class="editTableRadio" onclick="if (this.checked){ $('text{$.pid}selectEditItemValues').setStyle('display', 'block'); $('text{$.pid}selectEditItemScript').setStyle('display', 'none')}" name="itemType" text{($.itemType=='values')?'checked':''} type="radio" value="values"/>固定值
<input class="editTableRadio" onclick="if (this.checked){ $('text{$.pid}selectEditItemScript').setStyle('display', 'block'); $('text{$.pid}selectEditItemValues').setStyle('display', 'none')}" name="itemType" text{($.itemType=='script')?'checked':''} type="radio" value="script"/>脚本
</td>
</tr>
</table>
<div id="text{$.pid}selectEditItemValues" style="display: text{($.itemType=='values')?'block':'none'}" class="MWFArraylist" name="itemValues" title="可选值"></div>
......@@ -90,4 +91,4 @@
<div title="JSON" class="MWFTab">
<div class="MWFJSONArea" style="font-family: Verdana, Geneva, sans-serif; font-size:14px"></div>
</div>
</div>
\ No newline at end of file
</div>
<div style="background-color: #FFF; overflow: hidden">
<div title="基本" class="MWFTab">
<table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
<tr>
<td class="editTableTitle">标识:</td>
<td class="editTableValue"><input type="text" name="id" value="text{$.id}" class="editTableInput"/></td>
</tr>
<tr>
<td class="editTableTitle">名称:</td>
<td class="editTableValue"><input type="text" name="name" value="text{$.name}" class="editTableInput"/></td>
</tr>
<tr>
<td class="editTableTitle">描述:</td>
<td class="editTableValue"><input type="text" name="description" value="text{$.description}" class="editTableInput"/></td>
</tr>
<tr>
<td class="editTableTitle">可选值:</td>
<td class="editTableValue">
<input class="editTableRadio" onclick="if (this.checked){ $('text{$.pid}selectEditItemValues').setStyle('display', 'block'); $('text{$.pid}selectEditItemScript').setStyle('display', 'none')}" name="itemType" text{($.itemType=='values')?'checked':''} type="radio" value="values"/>固定值
<input class="editTableRadio" onclick="if (this.checked){ $('text{$.pid}selectEditItemScript').setStyle('display', 'block'); $('text{$.pid}selectEditItemValues').setStyle('display', 'none')}" name="itemType" text{($.itemType=='script')?'checked':''} type="radio" value="script"/>脚本
</td>
</tr>
<div title="基本" class="MWFTab">
<table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
<tr>
<td class="editTableTitle">标识:</td>
<td class="editTableValue"><input type="text" name="id" value="text{$.id}" class="editTableInput"/></td>
</tr>
<tr>
<td class="editTableTitle">名称:</td>
<td class="editTableValue"><input type="text" name="name" value="text{$.name}" class="editTableInput"/></td>
</tr>
<tr>
<td class="editTableTitle">描述:</td>
<td class="editTableValue"><input type="text" name="description" value="text{$.description}" class="editTableInput"/></td>
</tr>
<tr>
<td class="editTableTitle">是否只读:</td>
<td class="editTableValue">
......@@ -27,14 +20,21 @@
<input type="radio" name="isReadonly" value="false" text{(!$.isReadonly)?'checked':''}/>
</td>
</tr>
</table>
<div id="text{$.pid}selectEditItemValues" style="display: text{($.itemType=='values')?'block':'none'}" class="MWFArraylist" name="itemValues" title="可选值"></div>
<div id="text{$.pid}selectEditItemScript" style="display: text{($.itemType=='script')?'block':'none'}" class="MWFScriptArea" name="itemScript" title="可选值脚本 (S)"></div>
<div class="MWFMaplist" name="styles" title="样式"></div>
<tr>
<td class="editTableTitle">可选值:</td>
<td class="editTableValue">
<input class="editTableRadio" onclick="if (this.checked){ $('text{$.pid}selectEditItemValues').setStyle('display', 'block'); $('text{$.pid}selectEditItemScript').setStyle('display', 'none')}" name="itemType" text{($.itemType=='values')?'checked':''} type="radio" value="values"/>固定值
<input class="editTableRadio" onclick="if (this.checked){ $('text{$.pid}selectEditItemScript').setStyle('display', 'block'); $('text{$.pid}selectEditItemValues').setStyle('display', 'none')}" name="itemType" text{($.itemType=='script')?'checked':''} type="radio" value="script"/>脚本
</td>
</tr>
</table>
<div id="text{$.pid}selectEditItemValues" style="display: text{($.itemType=='values')?'block':'none'}" class="MWFArraylist" name="itemValues" title="可选值"></div>
<div id="text{$.pid}selectEditItemScript" style="display: text{($.itemType=='script')?'block':'none'}" class="MWFScriptArea" name="itemScript" title="可选值脚本 (S)"></div>
<div class="MWFMaplist" name="styles" title="样式"></div>
<div class="MWFMaplist" name="inputStyles" title="Select样式"></div>
<div class="MWFMaplist" name="properties" title="属性"></div>
<div class="MWFMaplist" name="properties" title="属性"></div>
<table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
<tr>
......@@ -46,12 +46,12 @@
</td>
</tr>
</table>
<div class="MWFScriptArea" name="defaultValue" title="默认值 (S)"></div>
<div class="MWFScriptArea" name="defaultValue" title="默认值 (S)"></div>
<div class="MWFValidation" name="validationConfig"></div>
<div class="MWFScriptArea" name="validation" title="校验脚本 (S)"></div>
</div>
</div>
<div title="区段" class="MWFTab">
<table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
<tr>
......@@ -81,13 +81,13 @@
</div>
</div>
</div>
<div title="事件" class="MWFTab">
<div class="MWFEventsArea" name="events"></div>
</div>
<div title="HTML" class="MWFTab">
<div class="MWFHTMLArea" style="font-family: Verdana, Geneva, sans-serif; font-size:14px"></div>
</div>
<div title="事件" class="MWFTab">
<div class="MWFEventsArea" name="events"></div>
</div>
<div title="HTML" class="MWFTab">
<div class="MWFHTMLArea" style="font-family: Verdana, Geneva, sans-serif; font-size:14px"></div>
</div>
<div title="JSON" class="MWFTab">
<div class="MWFJSONArea" style="font-family: Verdana, Geneva, sans-serif; font-size:14px"></div>
</div>
</div>
\ No newline at end of file
</div>
......@@ -838,8 +838,7 @@
"font-size": "12px",
"height": "24px",
"line-height": "24px",
"border-bottom": "1px dashed #CCC",
"word-break":"keep-all"
"border-bottom": "1px dashed #CCC"
},
"editTableHeadTitle": {
"color": "#bf6364",
......
......@@ -93,57 +93,79 @@ MWF.xApplication.process.Xform.Checkbox = MWF.APPCheckbox = new Class({
}
//return [];
},
setOptions: function(){
var radioValues = this.getOptions();
if (!radioValues) radioValues = [];
if (o2.typeOf(radioValues)==="array"){
var flag = (new MWF.widget.UUID).toString();
radioValues.each(function(item){
var tmps = item.split("|");
var text = tmps[0];
var value = tmps[1] || text;
var radio = new Element("input", {
"type": "checkbox",
"name": ((this.json.properties) ? this.json.properties.name : null) || flag+this.json.id,
"value": value,
"showText": text,
"styles": this.json.buttonStyles
}).inject(this.node);
//radio.appendText(text, "after");
setOptions: function(){
var optionItems = this.getOptions();
this._setOptions(optionItems);
},
_setOptions: function(optionItems){
this.moduleSelectAG = o2.AG.all(optionItems).then(function(radioValues){
this.moduleSelectAG = null;
if (!radioValues) radioValues = [];
if (o2.typeOf(radioValues)==="array"){
var flag = (new MWF.widget.UUID).toString();
radioValues.each(function(item){
var tmps = item.split("|");
var text = tmps[0];
var value = tmps[1] || text;
var textNode = new Element( "span", {
"text" : text,
"styles" : { "cursor" : "default" }
}).inject(this.node);
textNode.addEvent("click", function( ev ){
if( this.radio.get("disabled") === true || this.radio.get("disabled") === "true" )return;
this.radio.checked = ! this.radio.checked;
this.radio.fireEvent("change");
this.radio.fireEvent("click");
}.bind( {radio : radio} ) );
var radio = new Element("input", {
"type": "checkbox",
"name": ((this.json.properties) ? this.json.properties.name : null) || flag+this.json.id,
"value": value,
"showText": text,
"styles": this.json.buttonStyles
}).inject(this.node);
//radio.appendText(text, "after");
radio.addEvent("click", function(){
this.validationMode();
if (this.validation()) this._setBusinessData(this.getInputData("change") || []);
}.bind(this));
var textNode = new Element( "span", {
"text" : text,
"styles" : { "cursor" : "default" }
}).inject(this.node);
textNode.addEvent("click", function( ev ){
if( this.radio.get("disabled") === true || this.radio.get("disabled") === "true" )return;
this.radio.checked = ! this.radio.checked;
this.radio.fireEvent("change");
this.radio.fireEvent("click");
}.bind( {radio : radio} ) );
radio.addEvent("click", function(){
this.validationMode();
if (this.validation()) this._setBusinessData(this.getInputData("change") || []);
}.bind(this));
Object.each(this.json.events, function(e, key){
if (e.code){
if (this.options.moduleEvents.indexOf(key)!=-1){
}else{
radio.addEvent(key, function(event){
return this.form.Macro.fire(e.code, this, event);
}.bind(this));
Object.each(this.json.events, function(e, key){
if (e.code){
if (this.options.moduleEvents.indexOf(key)!=-1){
}else{
radio.addEvent(key, function(event){
return this.form.Macro.fire(e.code, this, event);
}.bind(this));
}
}
}
}.bind(this));
}.bind(this));
}.bind(this));
}
}.bind(this));
}
}.bind(this));
},
_setValue: function(value){
this.moduleValueAG = o2.AG.all(value).then(function(v){
if (this.moduleSelectAG){
this.moduleValueAG = this.moduleSelectAG;
this.moduleSelectAG.then(function(){
this.__setValue(v);
}.bind(this));
}else{
this.__setValue(v)
}
return v;
}.bind(this));
},
__setValue: function(value){
this._setBusinessData(value);
var radios = this.node.getElements("input");
for (var i=0; i<radios.length; i++){
......@@ -208,7 +230,20 @@ MWF.xApplication.process.Xform.Checkbox = MWF.APPCheckbox = new Class({
resetData: function(){
this.setData(this.getValue());
},
setData: function(data){
setData: function(data){
if (data && data.isAG){
this.moduleValueAG = data;
data.addResolve(function(v){
this.setData(v);
}.bind(this));
}else{
this.__setData(data);
this.moduleValueAG = null;
}
},
__setData: function(data){
this._setBusinessData(data);
var inputs = this.node.getElements("input");
......@@ -319,4 +354,4 @@ MWF.xApplication.process.Xform.Checkbox = MWF.APPCheckbox = new Class({
return true;
}
});
\ No newline at end of file
});
......@@ -100,56 +100,79 @@ MWF.xApplication.process.Xform.Radio = MWF.APPRadio = new Class({
}
return [];
},
setOptions: function(){
var radioValues = this.getOptions();
if (!radioValues) radioValues = [];
if (o2.typeOf(radioValues)==="array"){
var flag = (new MWF.widget.UUID).toString();
radioValues.each(function(item){
var tmps = item.split("|");
var text = tmps[0];
var value = tmps[1] || text;
setOptions: function(){
var optionItems = this.getOptions();
this._setOptions(optionItems);
},
var radio = new Element("input", {
"type": "radio",
"name": (this.json.properties && this.json.properties.name) ? this.json.properties.name : flag+this.json.id,
"value": value,
"showText": text,
"styles": this.json.buttonStyles
}).inject(this.node);
//radio.appendText(text, "after");
_setOptions: function(optionItems){
this.moduleSelectAG = o2.AG.all(optionItems).then(function(radioValues){
this.moduleSelectAG = null;
var textNode = new Element( "span", {
"text" : text,
"styles" : { "cursor" : "default" }
}).inject(this.node);
textNode.addEvent("click", function( ev ){
if( this.radio.get("disabled") === true || this.radio.get("disabled") === "true" )return;
this.radio.checked = true;
this.radio.fireEvent("change");
this.radio.fireEvent("click");
}.bind( {radio : radio} ) );
if (!radioValues) radioValues = [];
if (o2.typeOf(radioValues)==="array"){
var flag = (new MWF.widget.UUID).toString();
radioValues.each(function(item){
var tmps = item.split("|");
var text = tmps[0];
var value = tmps[1] || text;
radio.addEvent("click", function(){
this.validationMode();
if (this.validation()) this._setBusinessData(this.getInputData("change"));
}.bind(this));
var radio = new Element("input", {
"type": "radio",
"name": (this.json.properties && this.json.properties.name) ? this.json.properties.name : flag+this.json.id,
"value": value,
"showText": text,
"styles": this.json.buttonStyles
}).inject(this.node);
//radio.appendText(text, "after");
var textNode = new Element( "span", {
"text" : text,
"styles" : { "cursor" : "default" }
}).inject(this.node);
textNode.addEvent("click", function( ev ){
if( this.radio.get("disabled") === true || this.radio.get("disabled") === "true" )return;
this.radio.checked = true;
this.radio.fireEvent("change");
this.radio.fireEvent("click");
}.bind( {radio : radio} ) );
radio.addEvent("click", function(){
this.validationMode();
if (this.validation()) this._setBusinessData(this.getInputData("change"));
}.bind(this));
Object.each(this.json.events, function(e, key){
if (e.code){
if (this.options.moduleEvents.indexOf(key)!=-1){
}else{
radio.addEvent(key, function(event){
return this.form.Macro.fire(e.code, this, event);
}.bind(this));
Object.each(this.json.events, function(e, key){
if (e.code){
if (this.options.moduleEvents.indexOf(key)!=-1){
}else{
radio.addEvent(key, function(event){
return this.form.Macro.fire(e.code, this, event);
}.bind(this));
}
}
}
}.bind(this));
}.bind(this));
}.bind(this));
}
}
}.bind(this))
},
_setValue: function(value){
_setValue: function(value){
this.moduleValueAG = o2.AG.all(value).then(function(v){
if (this.moduleSelectAG){
this.moduleValueAG = this.moduleSelectAG;
this.moduleSelectAG.then(function(){
this.__setValue(v);
}.bind(this));
}else{
this.__setValue(v)
}
return v;
}.bind(this));
},
__setValue: function(value){
this._setBusinessData(value);
var radios = this.node.getElements("input");
for (var i=0; i<radios.length; i++){
......@@ -206,7 +229,20 @@ MWF.xApplication.process.Xform.Radio = MWF.APPRadio = new Class({
}
return null;
},
setData: function(data){
setData: function(data){
if (data && data.isAG){
this.moduleValueAG = data;
data.addResolve(function(v){
this.setData(v);
}.bind(this));
}else{
this.__setData(data);
this.moduleValueAG = null;
}
},
__setData: function(data){
this._setBusinessData(data);
var inputs = this.node.getElements("input");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册