123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- MWF.xDesktop.requireApp("process.Xform", "Number", null, false);
- /** @class Currency 货币输入组件。
- * @o2cn 货币输入组件
- * @example
- * //可以在脚本中获取该组件
- * //方法1:
- * var field = this.form.get("name"); //获取组件
- * //方法2
- * var field = this.target; //在组件事件脚本中获取
- * @extends MWF.xApplication.process.Xform.Number
- * @o2category FormComponents
- * @o2range {Process|CMS}
- * @hideconstructor
- */
- MWF.xApplication.process.Xform.Currency = MWF.APPCurrency = new Class({
- Implements: [Events],
- Extends: MWF.APPNumber,
- iconStyle: "currencyIcon",
- _loadMergeAmountReadNode: function(){
- var data = this.getBusinessDataById();
- var total = new Decimal(0);
- for( var key in data ){
- total = total.plus(new Decimal(data[key] || 0));
- }
- this.node.set("text", this.formatNumber(total.toString()));
- this.loadSymboleRead();
- },
- _loadMergeAverageReadNode: function(){
- var data = this.getBusinessDataById();
- var total = new Decimal(0);
- for( var key in data ){
- total = total.plus(new Decimal(data[key] || 0));
- }
- var average = total.div( new Decimal(Object.keys(data).length) );
- this.node.set("text", this.formatNumber(average.toString()));
- this.loadSymboleRead();
- },
- _resetNodeEdit: function(){
- var input = new Element("input", {
- "styles": {
- "background": "transparent",
- "width": "100%",
- "border": "0px"
- }
- });
- input.setStyles( this.json.recoveryInputStyles || {} );
- var node = new Element("div", {"styles": {
- "overflow": "hidden",
- "position": "relative",
- "margin-right": "20px",
- "padding-right": "4px"
- }}).inject(this.node, "after");
- node.setStyles( this.json.recoveryStyles || {} );
- input.inject(node);
- if( this.json.currencySymbol ){
- var symbole = new Element("span.MWFCurrencySymbol", {
- text: this.json.currencySymbol
- });
- symbole.inject( node.offsetParent !== null ? node : this.form.node );
- symbole.setStyles( this.json.symbolStyles || {} );
- var paddingLeft = symbole.getSize().x + 5;
- var inputPadding = input.getStyle("padding-right");
- var width = paddingLeft;
- if( this.isNumber( inputPadding ) ){
- width = width + parseFloat(inputPadding);
- }
- input.setStyles({
- "padding-left": paddingLeft + "px",
- "width": "calc( 100% - " + width +"px )"
- });
- if( node.offsetParent === null )symbole.inject( node );
- symbole.setStyles({
- "top": "0px",
- "left": "0px",
- "position": "absolute"
- });
- }
- this.node.destroy();
- this.node = node;
- },
- _loadNodeEdit: function(){
- //if (!this.json.preprocessing) this._resetNodeEdit();
- 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);
- this.node.set({
- "id": this.json.id,
- "MWFType": this.json.type,
- "events": {
- "click": this.clickSelect.bind(this)
- }
- });
- if (this.json.showIcon!='no' && !this.form.json.hideModuleIcon) {
- this.iconNode = new Element("div", {
- "styles": this.form.css[this.iconStyle]
- }).inject(this.node, "before");
- }else if( this.form.json.nodeStyleWithhideModuleIcon ){
- this.node.setStyles(this.form.json.nodeStyleWithhideModuleIcon)
- }
- this.node.getFirst().addEvent("change", function(){
- this.validationMode();
- if (this.validation()) {
- var value = this.getInputData("change");
- this._setBusinessData(value);
- this.node.getFirst().set("value", this.formatNumber( value.toString() ));
- this.fireEvent("change");
- }
- }.bind(this));
- this.node.getFirst().addEvent("blur", function(){
- this.validation();
- }.bind(this));
- this.node.getFirst().addEvent("keyup", function(){
- this.validationMode();
- }.bind(this));
- },
- __setData: function(data, fireChange){
- var old = this.getInputData();
- this._setBusinessData(data);
- if (this.node.getFirst()){
- this.node.getFirst().set("value", this.formatNumber(data));
- this.checkDescription();
- this.validationMode();
- }else{
- this.node.set("text", this.formatNumber(data));
- this.loadSymboleRead();
- }
- if (fireChange && old!==data) this.fireEvent("change");
- this.moduleValueAG = null;
- },
- __setValue: function(value){
- var v = typeOf( value ) === "string" ? this.unformatNumber( value ) : value;
- v = this.isNumber( v ) ? parseFloat( v ) : v;
- this._setBusinessData(v);
- var val = value;
- if( this.json.emptyValue === "string" ){
- if( typeOf(v)==="null" )val = "";
- if( v === 0 )val = "0";
- }else{
- if( v === 0 || v === "" || typeOf(v)==="null" )val = "0";
- }
- if (this.node.getFirst()) this.node.getFirst().set("value", value || val);
- if (this.isReadonly()) {
- this.node.set("text", value || val);
- this.loadSymboleRead()
- }
- this.moduleValueAG = null;
- this.fieldModuleLoaded = true;
- return value;
- },
- loadSymboleRead: function () {
- var symbole = new Element("span.MWFCurrencySymbol", {
- text: this.json.currencySymbol,
- styles: this.json.symbolStyles || {}
- }).inject(this.node, "top");
- var paddingRight = symbole.getStyle("padding-right");
- if( typeOf(paddingRight) === "string" && parseInt(paddingRight) === 0 ){
- symbole.setStyle("padding-right", "5px");
- }
- }
- });
|