vedmack / yadcf

Yet Another DataTables Column Filter (yadcf)
http://yadcf-showcase.appspot.com/
MIT License
731 stars 285 forks source link

text_data_delimiter on range_number_slider #580

Closed wynstep closed 5 years ago

wynstep commented 5 years ago

Hello! I have a table containing a column with different numbers separated by comma (eg. 12,34,56,78). When I use the filter_type = "multi-select" and text_data_delimiter = "," it works but it's not working with the range number slider.

Is there any chance to make this filter working for selecting numeric values separated by comma?

Many thanks

vedmack commented 5 years ago

Hi

Please provide a jsfiddle test page, use this for a start https://jsfiddle.net/vedmack/t09q871w/

wynstep commented 5 years ago

Hi @vedmack, I reproduced the bug into this fiddle.

Latest versions of jquery, datatables and beta version of yadcf

https://jsfiddle.net/wynstep/nvoru7hc/

Thanks!

vedmack commented 5 years ago

Hi

Please take a look at the following test page, and let me know what do you think

https://jsfiddle.net/vedmack/qko6nd4y/9/

wynstep commented 5 years ago

@vedmack Hi and thanks for your kind help! According to the jsfiddle, the filter still seems not working as expected. I would like the filter to work if any of the values in the row (comma-separated) are included in the numeric range.

vedmack commented 5 years ago

Hi,

grab 0.9.4.beta.29, I have added range_data_type: 'delimiter'

yadcf.init(tTable, [{
  column_number: 2,
  filter_type: "range_number_slider",
  text_data_delimiter: ",",
  range_data_type: 'delimiter'
}]);

https://jsfiddle.net/vedmack/qko6nd4y/

SSzretter commented 2 years ago

I need the delimiter for range_number as well and was able to get it to work by using this code change starting at like 1557 - not sure if this would break the range slider but it allows range_number to work with the deliminer.

else if (columnObj.range_data_type === 'delimiter') { if (columnObj.text_data_delimiter !== undefined) { let valSplitted = val.split(columnObj.text_data_delimiter); let anyNumberInRange = function (fromToObj) { return function (element, index, array) { if (min === "" && max === "") { retVal = true; } else if (min === "" && element <= max) { retVal = true; } else if (min <= element && "" === max) { retVal = true; } else if (min <= element && element <= max) { retVal = true; } return retVal; //return element >= fromToObj.from && element <= fromToObj.to; }; }; retVal = valSplitted.some(anyNumberInRange({ from: min, to: max })); } }