O2OA API

source

x_component_process_Xform/Currency.js

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");
        }
    }
});

results matching

    No results matching ''