view app/model/Messwert.js @ 1069:1d20cec263ee

Fixed exponential number format.
author Raimund Renkert <raimund.renkert@intevation.de>
date Thu, 31 Mar 2016 11:44:03 +0200
parents 7fa853864d9b
children 9a0f7712f366
line wrap: on
line source
/* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU GPL (v>=3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out
 * the documentation coming with IMIS-Labordaten-Application for details.
 */

/**
 * Model class for Messwerte
 */
Ext.define('Lada.model.Messwert', {
    extend: 'Ext.data.Model',

    fields: [{
        name: 'id'
    }, {
        name: 'owner',
        type: 'boolean'
    }, {
        name: 'readonly',
        type: 'boolean',
        persist: false
    }, {
        name: 'messungsId'
    }, {
        name: 'messgroesseId'
    }, {
        name: 'messwert',
        serialize: function(v) {
            if (!v || v === '') {
                return v;
            }
            if (v.indexOf(',') > 0) {
                v = v.replace(',', '.');
                return v;
            }
            return v;
        },
        convert: function(value) {
            if (!value || value === '') {
                return value;
            }
            var valueString = value.toString();
            if (valueString.indexOf('E') > 0) {
                valueString = valueString.replace('E', 'e');
            }
            var tmp;
            if (valueString.indexOf('e') > 0) {
                tmp = valueString;
            }
            else {
                // Currently not locale friendly...
                if (valueString.indexOf(',') > 0) {
                    valueString = valueString.replace(',', '.');
                }
                tmp = parseFloat(valueString).toExponential();
            }
            var parts = tmp.split('e');
            if (parts[0].indexOf('.') > 0) {
                var floatPart = parseFloat(parts[0]);
                var separator = floatPart.toFixed(2).toLocaleString().replace(/[-\d]/g, '');
                parts[0] = floatPart.toFixed(2).replace('.', separator);
            }
            else if (parts[0].indexOf(',') < 0) {
                parts[0] = parts[0] + ',00';
            }
            var intPart = parseInt(parts[1]);
            if (intPart < 10 && intPart >= 0) {
                parts[1] = '+0' + parseInt(parts[1]);
            }
            else if (intPart < 0 && intPart > -10) {
                parts[1] = parts[1].replace('-', '-0');
            }
            return parts[0] + 'e' + parts[1];
        }
    }, {
        name: 'messwertNwg',
        convert: function(v) {
            if (!v) {
                return null;
            }
            return "<";
        },
//         defaultValue: null
    }, {
        name: 'messfehler',
        type: 'float'
    }, {
        name: 'nwgZuMesswert',
        serialize: function(v) {
            if (!v || v === '') {
                return v;
            }
            if (v.indexOf(',') > 0) {
                v = v.replace(',', '.');
                return v;
            }
            return v;
        },
        convert: function(value) {
            if (!value || value === '') {
                return value;
            }
            var valueString = value.toString();
            if (valueString.indexOf('E') > 0) {
                valueString = valueString.replace('E', 'e');
            }
            var tmp;
            if (valueString.indexOf('e') > 0) {
                tmp = valueString;
            }
            else {
                // Currently not locale friendly...
                if (valueString.indexOf(',') > 0) {
                    valueString = valueString.replace(',', '.');
                }
                tmp = parseFloat(valueString).toExponential();
            }
            var parts = tmp.split('e');
            if (parts[0].indexOf('.') > 0) {
                var floatPart = parseFloat(parts[0]);
                var separator = floatPart.toFixed(2).toLocaleString().replace(/[-\d]/g, '');
                parts[0] = floatPart.toFixed(2).replace('.', separator);
            }
            else if (parts[0].indexOf(',') < 0) {
                parts[0] = parts[0] + ',00';
            }
            var intPart = parseInt(parts[1]);
            if (intPart < 10 && intPart >= 0) {
                parts[1] = '+0' + parseInt(parts[1]);
            }
            else if (intPart < 0 && intPart > -10) {
                parts[1] = parts[1].replace('-', '-0');
            }
            return parts[0] + 'e' + parts[1];
        }
    }, {
        name: 'mehId'
    }, {
        name: 'grenzwertueberschreitung',
        type: 'boolean'
    }, {
        name: 'letzteAenderung',
        type: 'date',
        convert: function(v) {
            if (!v) {
                return new Date();
            }
            return new Date(v);
        }
    }, {
        name: 'treeModified',
        serialize: function(value) {
            if (value === '') {
                return null;
            }
            return value;
        }
    }, {
        name: 'parentModified',
        serialize: function(value) {
            if (value === '') {
                return null;
            }
            return value;
        }
    }],

    idProperty: 'id',

    proxy: {
        type: 'rest',
        url: 'lada-server/rest/messwert',
        reader: {
            type: 'json',
            root: 'data'
        }
    }
});

http://lada.wald.intevation.org