Как я могу отсортировать IP-адреса на BIRT с JavaScript? - PullRequest
1 голос
/ 09 февраля 2012

Я абсолютный новичок в BIRT и я не профессионал по javascript.Я использую Birt для создания некоторых отчетов, получая некоторую информацию из моей базы данных.У меня есть IP-адреса на столбце в виде строк.BIRT предоставляет раздел сортировки для таблиц, и у меня есть это выражение прямо здесь;

if(params["sorting"].value=="startdate")
dataSetRow["r_date_0"]
else if(params["sorting"].value=="enddate")
dataSetRow["r_date_1"]
else if(params["sorting"].value=="ipaddress")
dataSetRow["r_vchar_2"]
else
dataSetRow["r_vchar_3"]

это прекрасно работает для начальной и конечной даты, но когда дело доходит до ipaddresses, они сравниваются как строки, поэтому в отсортированном отчете я вижу, что «2» больше, чем «199».

Я мог бы просто разделить IP-адреса с помощью '.'и разобрать их в целые числа и сравнить, если я работал с Python или Java, но я не уверен, как это сделать с JavaScript в среде BIRT.

Буду признателен за любые идеи о том, как я могу изменить свое выражение для удовлетворения своих потребностей.

1 Ответ

3 голосов
/ 09 февраля 2012

Используйте в своем наборе данных вычисляемый столбец, где вы преобразуете свои ip-адреса в форму, которую они могут сортировать, например,

var addrArray = dataSetRow["r_vchar_2"].split(".");
var num = 0;
for (var i=0;i<addrArray.length;i++) {
  var power = 3-i;
  num += ((parseInt(addrArray[i])%256 * Math.pow(256,power)));
}
num;

Вы можете использовать это поле для сортировки, а исходное поле для отображения ip-адресов

...