xFilter_FilterItem method

bool xFilter_FilterItem(
  1. K item
)

Evento chiamato quando cambia un XFilter inserito nella lista dei filtri nel metodo initXFilter

Implementation

bool xFilter_FilterItem(K item) {
  // widget.whereMethod!(element, filterCurrent)
  var rval = true;
  // se ci sono appli XFilterEl
  if (xFilter_XFilters.isNotEmpty) {
    for (var xf in xFilter_XFilters) {
      var propNameReal = xf.xPropOfItemToFilter.col_Name;
      if (propNameReal.endsWith("ID")) propNameReal += "_resolved";
      if (xf.Value == xf.All)
        rval = true;
      else if (xf.Value is XFDataItem) {
        if (xf.xPropOfItemToFilter.col_Name.endsWith("ID"))
          rval = item[xf.xPropOfItemToFilter.col_Name]! == (xf.Value as XFDataItem).id;
        else
          rval = item[xf.xPropOfItemToFilter.col_Name]! == (xf.Value as XFDataItem)[xf.ColsOfXFdataItemToShow.first.col_Name];
      } else if (xf.Value is XEnumDef) {
        rval = item[xf.xPropOfItemToFilter.col_Name]! == (xf.Value as XEnumDef).value;
      } else {
        rval = item[propNameReal]! == xf.Value!;
      }
      if (!rval) return false;
    }
  }
  if (xFilterCurrent.isNotEmpty && xFilter_SearchBarXCols.isNotEmpty) {
    var searchBarResult = false;
    for (XProp pippo in xFilter_SearchBarXCols) {
      var propNameReal = pippo.col_Name;
      if (propNameReal.endsWith("ID")) propNameReal += "_resolved";
      searchBarResult = item[propNameReal]!.toLowerCase().contains(xFilterCurrent.toLowerCase());
      if (searchBarResult) {
        break;
      }
    }
    if (searchBarResult) return searchBarResult;
    if (widget.searchBar_whereMethod != null) return widget.searchBar_whereMethod!(item, xFilterCurrent);
    return searchBarResult;
  }
  return true;
}