o2oa api: x-游戏厅捕鱼达人

source

mwf.xdesktop.requireapp("process.xform", "textfield", null, false);
/** @class number 数字输入组件。
 * @o2cn 数字输入组件
 * @example
 * //可以在脚本中获取该组件
 * //方法1:
 * var field = this.form.get("name"); //获取组件
 * //方法2
 * var field = this.target; //在组件事件脚本中获取
 * @extends mwf.xapplication.process.xform.textfield
 * @o2category formcomponents
 * @o2range {process|cms}
 * @hideconstructor
 */
mwf.xapplication.process.xform.number = mwf.appnumber =  new class(
    /** @lends mwf.xapplication.process.xform.number# */
{
    implements: [events],
    extends: mwf.apptextfield,
    iconstyle: "numbericon",
    _loaduserinterface: function(){
        if ( this.issectionmergeread() ) { //区段合并显示
            this.node.empty();
            this.node.set({
                "nodeid": this.json.id,
                "mwftype": this.json.type
            });
            switch (this.json.mergetyperead) {
                case "amount":
                    this._loadmergeamountreadnode();
                    break;
                case "average":
                    this._loadmergeaveragereadnode();
                    break;
                default:
                    this._loadmergereadnode();
                    break;
            }
        }else{
            if( this.issectionmergeedit() ){
                switch (this.json.mergetypeedit) {
                    case "amount":
                        this._loadmergeamounteidtnode();
                        break;
                    case "average":
                        this._loadmergeaverageeditnode();
                }
            }else{
                this._loadnode();
            }
            if (this.json.compute === "show"){
                this._setvalue(this._computevalue());
            }else{
                this._loadvalue();
            }
        }
    },
    _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()));
    },
    _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()));
    },
    _loadmergeamounteidtnode: function(){
        var data = this.getbusinessdatabyid();
        var total = new decimal(0);
        for( var key in data ){
            total = total.plus(new decimal(data[key] || 0));
        }
        this._setbusinessdata( total.tonumber() );
        this._loadnode();
    },
    _loadmergeaverageeditnode: 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._setbusinessdata( average.tonumber() );
        this._loadnode();
    },
    isempty : function(){
        return !this.getdata();
    },
    /**
     * @summary 传入值获取适配最大值和最小值的数值.
     * @example
     * //如果最大值设置为500,最小值为100
     *
     * var value = this.form.get('field').getrangevalue( 300 );
     * //value为300
     *
     * var value = this.form.get('field').getrangevalue( 10000 );
     * //value为500
     *
     * var value = this.form.get('field').getrangevalue( 1 );
     * //value为100
     * @param value {string|nummber}
     * @return {number} 获取适配最大值和最小值的数值.
     */
    getrangevalue: function( value ){
        var v = this.getmax( value );
        return this.getmin( v );
    },
    getmax: function( value ){
        if( isnan(value) )return value;
        if( typeof( value ) === "string" )value = parsefloat(value);
        if( !isnan( this.json.max )){
            var max = this.json.max;
            if( typeof( max ) === "string" )max = parsefloat(max);
            return math.min( max, value );
        }else{
            return value;
        }
    },
    getmin: function( value ){
        if( isnan(value) )return value;
        if( typeof( value ) === "string" )value = parsefloat(value);
        if( !isnan( this.json.min )){
            var min = this.json.min;
            if( typeof( min ) === "string" )min = parsefloat(min);
            return math.max( min, value );
        }else{
            return value;
        }
    },
    getinputdata: function( flag ){
        var input = this.node.getelement("input");
        if (input){
            var v = input.get("value");
            v = this.unformatnumber( v );
            var n = v.tofloat();
            n = this.getmax( n );
            n = this.getmin( n );
            return (isnan(n)) ? (this.json.emptyvalue === "string" ? "" : 0) : n;
        }else{
            return this._getbusinessdata();
        }
    },
    /**
     * @summary 传入文本获取清除逗号的数值
     * @example
     * var value = this.form.get('field').unformatnumber( "30,000" );
     * //value为30000
     * @param str{string} 文本
     * @return {number} 获取清除逗号的数值.
     */
    unformatnumber: function(str){
        return str.replace(/,/g, "");
    },
    /**
     * @summary 传入文本或数值根据配置的小数位数和分隔符返回字符串
     * @example
     * //假设组件的设置为千分位分隔,保留小数两位
     *
     * var value = this.form.get('field').formatnumber( "30000.123" );
     * //value为字符串"30,000.12"
     *
     * var value = this.form.get('field').formatnumber( 30000.123 );
     * //value为字符串"30,000.12"
     *
     * @param str{string|number}
     * @return {number} 根据配置的小数位数和分隔符返回字符串
     */
    formatnumber: function(str){
        var v = (str || "0").tofloat();
        if (v){
            if (this.json.decimals && (this.json.decimals!="*")){
                var decimals = this.json.decimals.toint();
                var p = math.pow(10,decimals);
                var f_x = math.round(v*p)/p;
                str = f_x.tostring();
                if (decimals>0){
                    var pos_decimal = str.indexof('.');
                    if (pos_decimal < 0){
                        pos_decimal = str.length;
                        str  = '.';
                    }
                    var decimalstr = (str).substr(pos_decimal 1, (str).length);
                    while (decimalstr.length < decimals){
                        str  = '0';
                        decimalstr  = 0;
                    }
                }
            }
            if( this.json.digitstoseparate && parseint(this.json.digitstoseparate) > 1 ){
                if( typeof( str ) === "number" )str = str.tostring();
                var digits = parseint(this.json.digitstoseparate);
                var reg = new regexp( "(\\d{" digits "}\\b)" ,"g");
                var arr = str.split(".");
                var i = arr[0].split("").reverse().join("")
                    .replace(reg, "$1,")
                    .split("").reverse().join("");
                str = arr.length > 1 ? ( i   "."   arr[1] ) : i ;
            }
        }
        return str;
    },
    validationformat: function(){
        if( !this.node.getelement("input") )return true;
        var n = this.getinputdata();
        if (isnan(n)) {
            if( n === "" && this.json.emptyvalue === "string" ){
                return true;
            }else{
                this.notvalidationmode(mwf.xapplication.process.xform.lp.notvalidation_number);
                return false;
            }
        }
        return true;
    },
    // validationformat: function(){
    //     if( !this.node.getelement("input") )return true;
    //     var n = this.node.getelement("input").get("value");
    //     n = this.unformatnumber(n);
    //     if (isnan(n)) {
    //         if( n === "" && this.json.emptyvalue === "string" ){
    //             return true;
    //         }else{
    //             this.notvalidationmode(mwf.xapplication.process.xform.lp.notvalidation_number);
    //             return false;
    //         }
    //     }else{
    //         this.node.getfirst().set("value", this.formatnumber(n));
    //     }
    //     return true;
    // },
    validationconfigitem: function(routename, data){
        var flag = (data.status=="all") ? true: (routename == data.decision);
        if (flag){
            var n = this.getinputdata();
            var strn = n.tostring();
            if( n === "" && this.json.emptyvalue === "string" )n = 0;
            var v = (data.valuetype=="value") ? n : strn.length;
            var strv = (data.valuetype=="value") ? strn : strn.length;
            switch (data.operateor){
                case "isnull":
                    if (!strv && strv.tostring()!=='0'){
                        this.notvalidationmode(data.prompt);
                        return false;
                    }
                    break;
                case "notnull":
                    if (strv){
                        this.notvalidationmode(data.prompt);
                        return false;
                    }
                    break;
                case "gt":
                    if (v>parsefloat(data.value)){
                        this.notvalidationmode(data.prompt);
                        return false;
                    }
                    break;
                case "lt":
                    if (vdata.value)return data.prompt;
                    break;
                case "lt":
                    if (v
网站地图