Сортировка таблиц jQuery и выдача валюты - PullRequest
2 голосов
/ 11 ноября 2011

Этот может быть немного специализированным, но здесь все равно:

Страница для справки: http://greg -j.com / icvm / anticartel / search-results.html

Плагин для справки: http://tablesorter.com/

Если вы посмотрите на последние два столбца «Всего штрафов», вы увидите, что вывод валюты включает в себя $ x.xxx миллиарды и $ x.xxxмиллионы.Встроенный парсер валют не учитывает этот формат.К счастью, плагин позволяет вам написать ваш собственный парсер .Однако я никуда не денусь и надеюсь, что смогу получить хоть какую-то помощь от кого-то другого.

Любая помощь приветствуется.

Ответы [ 2 ]

3 голосов
/ 11 ноября 2011

Посмотрите, работает ли это, я не проверял:

$.tablesorter.addParser({ 
    id: 'monetary', 

    'is': function(s) { 
        return false; 
    }, 

    format: function(s) { 

        var i = s.split('$').join('');

        var suffixes = [
          {name:'thousand', mult: 1000},
          {name:'million', mult: 1000000},
          {name:'billion', mult: 1000000000},
          {name:'trillion', mult: 1000000000000}
        ]; 

        for (var j in suffixes) { 
          if (i.indexOf(' '+suffixes[j].name) != -1) {

              i = i.split(' '+suffixes[j].name).join('');

              val = parseFloat(i) * suffixes[j].mult;
          } 
        }

        return val; 
    },  

    type: 'numeric' 
}); 


$("#cartels").tablesorter({
    widgets: ['zebra'],
    sortList: [[0,0]], 
    headers: { 
        4: { 
            sorter:'monetary' 
        },
        5: { 
            sorter:'monetary' 
        }
    } 
});
1 голос
/ 11 ноября 2011

Можете ли вы опубликовать код, который вы пробовали?

Похоже, что они делают в приведенном вами примере назначение каждого слова с числовым представлением, а затем сортировка по нему:

return s.toLowerCase().replace(/good/,2).replace(/medium/,1).replace(/bad/,0);

Таким образом, в вашем случае одним из способов может быть замена миллиона на правильное количество нулей и то же самое для миллиарда.Таким образом, с точки зрения синтаксического анализатора, по существу, 1 миллион долларов оценивается в 1 миллион долларов.

return s.toLowerCase().replace(/million/,000000).replace(/billion/,000000000);

Таким образом, s оценивается как $1000000 после вычисления функции замены.Просто мысль.Не уверен, что это работает, но может привести вас на правильный путь.

...