v 0.9.2 - allow for form-friendly filter parameters ``` { '0': { attribute: :foo, operator: :EQ, query: 'query' }, '1': { attribute: :bar, operator: :GT, query: 'value' } } { foo: 'query', bar(GT): 'value' } ``` - allow for form-friendly sort parameters ``` { '0': { attribute: :foo, direction: :desc }, '1': { attribute: :bar, direction: :asc } } { foo: 'desc', bar: 'asc' } ``` v 0.9.1 - ensure that our RubyGems build is stable, since we had a TravisCI build problem in the last version v 0.9.0 - Add Enumerable support for the base filtering operations + EQ, NOT_EQ, EQ_ANY, EQ_ALL, NOT_EQ_ANY, NOT_EQ_ALL + IN, NOT_IN, IN_ANY, IN_ALL, NOT_IN_ANY, NOT_IN_ALL + MATCHES, DOES_NOT_MATCH, MATCHES_ANY, MATCHES_ALL, DOES_NOT_MATCH_ANY, DOES_NOT_MATCH_ALL + LT, LTEQ, LT_ANY, LT_ALL, LTEQ_ANY, LTEQ_ALL + GT, GTEQ, GT_ANY, GT_ALL, GTEQ_ANY, GTEQ_ALL + BETWEEN, NOT_BETWEEN - Add unary predicate filtering operators, for both ActiveRecord and Enumerable + IS_TRUE, IS_FALSE + IS_NULL, NOT_NULL + IS_PRESENT, IS_BLANK - Add computed matcher filtering operators, for both ActiveRecord and Enumerable + MATCH_START, MATCH_START_ANY, MATCH_START_ALL, MATCH_NOT_START, MATCH_NOT_START_ANY, MATCH_NOT_START_ALL + MATCH_END, MATCH_END_ANY, MATCH_END_ALL, MATCH_NOT_END, MATCH_NOT_END_ANY, MATCH_NOT_END_ALL + MATCH_CONTAIN, MATCH_CONTAIN_ANY, MATCH_CONTAIN_ALL, MATCH_NOT_CONTAIN, MATCH_NOT_CONTAIN_ANY, MATCH_NOT_CONTAIN_ALL - Add view helpers for the range of records shown on the current page - Use ActiveRecord's data dictionary to look up database column types when converting filter params to filter instructions - Allow app to define type hints for filter attributes when converting filter params to filter instructions - Allow sort params to be passed in short or long form + e.g. { attribute: x, direction: x } or { attribute: direction } - Fix enumerable intersection filtering when working across associations v 0.8.2 - add `ActiveSet.configuration.on_asc_sort_nils_come` configuration v 0.8.1 - add a case-insensitive filtering/sorting option (`/i/`) - standardize how filtering by class scopes behaves + only collection-returning class methods are handled + scopes defined on computed associations aren't handled - refactor parts of the strategy implemention layer + create generalize "set instruction" classes for ActiveRecord and Enumerable strategies + handle default operators in the strategy layer, not the instruction layer - refactor parts of the instruction implementation layer + memoize instruction getters to avoid recomputing on access - refactor specs + update filtering by data types when using an invalid field test + remove case-insensitive sorting example + simplify the sorted collection expectation + add some helper methods for generating unique factory data + print a detailed report of the state data on spec failure + update the filtering request specs to run more of then, but still running random subsets v 0.8.0 - merge ActiveSet and ActionSet into a monorepo - merge and overhaul the specs + run a random subset of request specs to test ActionSet wiring to ActiveSet + polish the ActiveSet specs - update the scopes filtering specs to be more generalized and exhaustive - get all new features/fixes from current ActiveSet + fix a bug where ActiveRecord sorting didn't treat NULL values in the same way as Enumerable sorting * where NULL values are sorted as if larger than any non-null value + fix a bug with ActiveRecord scope filtering * if we try to use a class method scope that returns something other than an ActiveRecord::Relation + fix a bug in Enumerable class method filtering when method returns object, not array + fix a bug transforming Date objects into sortable integers to ensure UTC + fix a bug to allow sorting of computed attributes on sets that include nil values + fix a bug that prevents enumerable sets from being filtered down to empty sets - fix Rubocop offenses (safely) - use Bundler version 2.x v 0.7.0 - overhaul the specs + update the data model to be more extensive and expressive + update to the new FactoryBot gem + write programmatic specs for extensive coverage + ensure factories don't have duplicate attributes + add specs for ARel operators in filtering - update the README - add another exception to the Ruby typcaster (`to_onum`) - update dependency on ActiveSet to 0.8.x v 0.6.0 - Refactor to work with versions 0.7.x of ActiveSet - Move and rename the typecasting class for attribute values v 0.5.4 - Allow the `form_for_object_from_param` helper to accept defaults hash v 0.5.3 - allow attributes to be passed to the `sort_link_for` and `pagination_links_for` helper methods v 0.5.2 - Fix the pagination total_pages_for helper to properly handle the case when the set has no members v 0.5.1 - Fix the sorting path helper to only ever allow single-vector sorting - Fix the pagination description helper to have proper HTML spacing - Add an `export_path_for(format)` helper for generating a path v 0.5.0 - Replace the use of `@filters` with the helper method `form_for_object_from_param(:filter)` - Fix the pagination and sorting path helper methods to ensure they don't remove pre-existing params - Rearrange the pagination helpers into a loose collection of micro-helpers v 0.4.2 - Ensure that the sort_link_for helper method can work with symbol attributes v 0.4.1 - Fix the helper methods to work properly with the new version of ActiveSet v 0.4.0 - Update to work with the new version of ActiveSet v 0.3.5 - Don't rely on an instance variable for the `filter_structure` - Use the `ensure_active_set` method inside of `process_set` v 0.3.4 - Ensure that the sort_link_for helper method make the title param optional - Ensure that the view helpers are properly included into the ActionView context v 0.3.3 - Ensure the page link url uses a deep merge to retain any previously set paginate params v 0.3.2 - Ensure that we always call ActiveSet#paginate so that even default pagination instructions are inserted into the ActiveSet instace v 0.3.1 - Change the name of the view helper method from `sort_link` to `sort_link_for` - Change the name of the view helper method from `paginate` to `pagination_links_for` v 0.3.0 - Add a `paginate_set` method that is a part of the `process_set` chain now - Add `paginate` view helper for rendering a pagination navigation v 0.2.1 - Extract the `set_filters_ivar` method so that app controllers can use it in a before action for filter forms that are present on multiple actions v 0.2.0 - Add a new `export_set` method This allows datasets to be transformed into CSV and exported - Create distinct controller methods for filtering and sorting, not just the one 'process_set' method v 0.1.3 - Ensure that the ActiveModelAdapter for the typcastor properly downgrades from using ActiveModel::Type to using ActiveRecord::Type - Ensure that OpenStuct is explicly required - Ensure that the internal dummy app has the actionpack infrastructure properly in place for view specs - Fix the filter view specs v 0.1.2 - Properly specify the version dependency on ActiveSupport v 0.1.1 - Fix bug in handling sort links when no sort params are present v 0.1.0 - make ActionSet a Railtie - add a view helper method for building sort links (`sort_link`) - typecast all params values before passing to ActiveSet - reject any blank param values - instantiate a `@filters` ivar for use in building the filters form