1

I am new to ng-admin and angularjs. I am trying to integrate ng-admin with loopback for admin panel.

I am unable to get ng-filters filters working with loopback because of this i think the reference_list and other filter are not working properly.

The problem is that i am unable to include where filter in my request to api i am trying to do it using restangular

below is the code

// custom filters
if (params._filters) {
    for (var filter in params._filters) {
        params['filter[where]'] = "{" + entry.field + ":"  + rams._filters[filter] + "}";
    }
    delete params._filters;
}
Peter Szekeli
  • 2,712
  • 3
  • 30
  • 44

2 Answers2

0

for "where" filter can be something like this:

for(var entry in params._filters) {
  if (params._filters[entry] !== undefined) {
    if (params._filters[entry].constructor === Array && params._filters[entry].length > 1) { // where value in array of values
      params['filter[where][' + entry + '][inq]'] = params._filters[entry];
    }
    else {  // where entry = value
      params['filter[where][' + entry + ']'] = params._filters[entry];
    }
  }
}
Mihriban Minaz
  • 3,043
  • 2
  • 32
  • 52
anonymous
  • 1
  • 1
0

Here's my entire interceptor for handling paging, sorting and filtering with loopback. Hope it saves someone time. Note that filters on relational fields ending with 'id' are processed using equality, whereas filters on other fields use 'like'.

myApp.config(['RestangularProvider', function (RestangularProvider) {
    RestangularProvider.addFullRequestInterceptor(function(element, operation, what, url, headers, params) {
        if (operation == "getList") {
            // custom pagination params
            if (params._page) {
                params["filter[skip]"]= (params._page - 1) * params._perPage;
                params["filter[limit]"] = params._perPage;
            }
            delete params._page;
            delete params._perPage;
            // custom sort params
            if (params._sortField) {
                params["filter[order]"] = params._sortField + " " + (params._sortDir || 'ASC');
                delete params._sortField;
                delete params._sortDir;
            }
            // custom filters
            if (params._filters) {
                var filterClause = "";
                var i = 0;
                for (var filter in params._filters) {
                    if (filter.endsWith('id')) {
                        params["filter[where][and][" + i + "][" + filter + "]"] = params._filters[filter];
                    } else {
                        params["filter[where][and][" + i + "][" + filter + "][like]"] = '%' + params._filters[filter] + '%';
                    }

                    i++;
                }
                delete params._filters;
            }
        }
        return { params: params };
    });
}]);
vipes
  • 922
  • 1
  • 9
  • 17