v 0.10.0 - Bump testing internals to Rails 5.2 - Fix deprecation notice on sorts. - Prevent additional types from checking for empty strings in blank queries. These DB types will not support empty strings, so we do not need to check for those values (and doing so corrupts the SQL). - Do not attach wildcards to boolean search values. They have no meaning when searching boolean fields and all get transformed to "true" 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