Forum

November 2nd, 2014
A A A
Avatar

Lost password?
Advanced Search

— Forum Scope —




— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters

The forums are currently locked and only available for read only access
sp_Feed Topic RSS sp_Related Related Topics sp_TopicIcon
using jqgrid formatter as utility function externally
09/05/2012
14:39
Avatar
mcslayton
Member
Members
Forum Posts: 9
Member Since:
12/09/2011
sp_UserOfflineSmall Offline

I have occasion when it would be helpful to hook into jqGrid's format matter from outside a jqGrid. Using it to format an integer, number, currency, etc. Something like:

var integerOut = $.fn.fmatter("integer", 76543.21);

So integerOut would be equal to '76,543' if in USA after the call.

Can this be done somehow?

What would be the proper calling syntax?

11/05/2012
14:08
Avatar
tony
Sofia, Bulgaria
Moderator
Members

Moderators
Forum Posts: 7721
Member Since:
30/10/2007
sp_UserOfflineSmall Offline

Hello,

This should work, but there is a bug in the formatter checking for colModel format options.

I will fix this and replay when done.

Thanks.

Best Regards

Tony

For professional UI suites for Java Script and PHP visit us at our commercial products site - guriddo.net - by the very same guys that created jqGrid.

12/05/2012
02:48
Avatar
mcslayton
Member
Members
Forum Posts: 9
Member Since:
12/09/2011
sp_UserOfflineSmall Offline

Devised my own solution that allows for formatting integers, numbers and currency using jqGrid's localization configurations:

 
function isNumeric(number) {
    return !isNaN(parseFloat(number)) && isFinite(number);
}
function formatInteger(number) {
    return isNumeric(number) ? $.fmatter.util.NumberFormat(Math.floor(number), $.jgrid.formatter.integer) : number;
}
function formatNumber(number) {
    return isNumeric(number) ? $.fmatter.util.NumberFormat(number, $.jgrid.formatter.number) : number;
}
function formatCurrency(number) {
    return isNumeric(number) ? $.fmatter.util.NumberFormat(number, $.jgrid.formatter.currency) : number;
}
12/05/2012
09:35
Avatar
tony
Sofia, Bulgaria
Moderator
Members

Moderators
Forum Posts: 7721
Member Since:
30/10/2007
sp_UserOfflineSmall Offline

Hello,

I just fixed the problem.

https://github.com/tonytomov/jqGrid/commit/b919a66806297a8249114c8f555a526ef57bd88f

You can download the source from GitHub and use it. Please let me know if there is a problem.

Regards

For professional UI suites for Java Script and PHP visit us at our commercial products site - guriddo.net - by the very same guys that created jqGrid.

13/05/2012
01:26
Avatar
mcslayton
Member
Members
Forum Posts: 9
Member Since:
12/09/2011
sp_UserOfflineSmall Offline

Tony,

Thank you that change worked great! I needed the unformat as well so I implemented them as shown below.

Can the unformats be called from $.fn.fmatter somehow as well?

Marv

-------------------------------------------------------------------------------------------------------------------------------------

function isNumeric(number) {
    return !isNaN(parseFloat(number)) && isFinite(number);
}
function formatInteger(number) {
    return isNumeric(number)
        ? $.fn.fmatter("integer", number)
        : $.jgrid.formatter.integer.defaultValue;
}
function formatNumber(number) {
    return isNumeric(number)
        ? $.fn.fmatter("number", number)
        : $.jgrid.formatter.number.defaultValue;
}
function formatCurrency(number) {
    return isNumeric(number)
        ? $.fn.fmatter("currency", number)
        : $.jgrid.formatter.currency.defaultValue;
}
function unformatInteger(number) {
    var parts = number.split($.jgrid.formatter.number.decimalSeparator);
    var out = parseInt(parts[0].replace(/[^0-9-]/g, ''));
    return isNumeric(out) ? out : 0;
}
function unformatNumber(number) {
    var op = $.jgrid.formatter.number;
    var re = /([.*_'(){}+?\])/g;
    var sep = op.thousandsSeparator.replace(re, "\$1");
    var stripTag = new RegExp(sep, "g");
    var out = number.replace(stripTag, "").replace(op.decimalSeparator, '.');
    return isNumeric(out) ? out : 0.0;
}
function unformatCurrency(ret) {
    var op = $.jgrid.formatter.currency;
    var re = /([.*_'(){}+?\])/g;
    var sep = op.thousandsSeparator.replace(re, "\$1");
    var stripTag = new RegExp(sep, "g");
    if (op.prefix && op.prefix.length && ret.indexOf(op.prefix) > -1) {
        ret = ret.substr(op.prefix.length);
    }
    if (op.suffix && op.suffix.length && ret.indexOf(op.suffix) > -1) {
        ret = ret.substr(0, ret.length - op.suffix.length);
    }
    ret = ret.replace(stripTag, '').replace(op.decimalSeparator, '.');
    return isNumeric(ret) ? ret : 0.0;
}

Forum Timezone: Europe/Sofia

Most Users Ever Online: 715

Currently Online:
35 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

OlegK: 1255

markw65: 179

kobruleht: 144

phicarre: 132

YamilBracho: 124

Renso: 118

Member Stats:

Guest Posters: 447

Members: 11373

Moderators: 2

Admins: 1

Forum Stats:

Groups: 1

Forums: 8

Topics: 10592

Posts: 31289

Newest Members:

, razia, Prankie, psky, praveen neelam, greg.valainis@pa-tech.com

Moderators: tony: 7721, Rumen[Trirand]: 81

Administrators: admin: 66

Comments are closed.
Privacy Policy   Terms and Conditions   Contact Information