glimmer-dsl-swt 4.24.4.6 → 4.24.4.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e35a647a3770c1d5d57e5f7f8a26ad1f607e1c77719797643238f11e99ba9a55
4
- data.tar.gz: dbf9f410d0c1008ad62e590811168ea8b0ec2e119dfc275a2feed6454cf5f1ff
3
+ metadata.gz: fa2c86f6cd6f3f38a1f5790a1b66b61fd90d354af69ef815be3330a272bd2e4f
4
+ data.tar.gz: ed9d793052ab0f83533f517d90dd0419771a6b110ca642f70691f06eac3159c5
5
5
  SHA512:
6
- metadata.gz: a49ad225fa01ee4725a3103766ec7f7a4ecfea439df3d66ca3fc77448345766f4e60072691f903579d27d7a6999172581aadfcea5445c5ea973ef56894b40388
7
- data.tar.gz: c4dc1ae979fccb36b594a368c7f49e48722782589fa65b432d2e04d0306cbf8b878b0e98418d49b9f14955dc5266e9bc1bf7eaee510d9b72d9ab63ac9785100a
6
+ metadata.gz: 250fe4baa75533f2a5c5fec95c26e750f517f6a969621f347ce56e5a1c4f8bb5c8dc8029824809f84b8b0cab3be512b359d45a200ccd7c4942d1bc8535fb04f7
7
+ data.tar.gz: 863cccf44a913613b242dab209be6c1ce24daa974c458c2f4dced7440012573df1c324025eb91220afbf1571e3f57bc5628dd5397ddbb131535b0175394f827f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Change Log
2
2
 
3
+ ## 4.24.4.7
4
+
5
+ - Optimize performance of `refined_table` in filtering (it now caches results and replays them) and pagination (it now remembers last query page and avoids refiltering when paginating on the same query value)
6
+ - Improve `combo` `selection` data-binding by auto-converting `_options` values to `String` before setting as `Item`s on `combo` (e.g. in case `Integer` values were set like years)
7
+
3
8
  ## 4.24.4.6
4
9
 
5
10
  - Support `refined_table` sorting (now clicking on headers sorts the entire `model_array` collection, not just the visible rows)
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for SWT 4.24.4.6
1
+ # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for SWT 4.24.4.7
2
2
  ## JRuby Desktop Development GUI Framework
3
3
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-swt.svg)](http://badge.fury.io/rb/glimmer-dsl-swt)
4
4
  [![Travis CI](https://travis-ci.com/AndyObtiva/glimmer-dsl-swt.svg?branch=master)](https://travis-ci.com/github/AndyObtiva/glimmer-dsl-swt)
@@ -21,7 +21,7 @@ Featured in JRuby Cookbook](http://shop.oreilly.com/product/9780596519650.do) an
21
21
 
22
22
  ![Eclipse SWT RCP NASA Mars Rover](/images/glimmer-eclipse-swt-rcp-nasa-mars-rover.png)
23
23
 
24
- [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) 4.24.4.6 includes [SWT 4.24](https://download.eclipse.org/eclipse/downloads/drops4/R-4.24-202206070700/), which was released on June 7, 2022. Gem version numbers are in sync with the SWT library versions. The first two digits represent the SWT version number. The last two digits represent the minor and patch versions of Glimmer DSL for SWT.
24
+ [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) 4.24.4.7 includes [SWT 4.24](https://download.eclipse.org/eclipse/downloads/drops4/R-4.24-202206070700/), which was released on June 7, 2022. Gem version numbers are in sync with the SWT library versions. The first two digits represent the SWT version number. The last two digits represent the minor and patch versions of Glimmer DSL for SWT.
25
25
 
26
26
  **Starting in version 4.20.0.0, [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) comes with the new [***Shine***](/docs/reference/GLIMMER_GUI_DSL_SYNTAX.md#shine) syntax** for highly intuitive and visually expressive View/Model Attribute Mapping, relying on `<=>` for bidirectional (two-way) data-binding and `<=` for unidirectional (one-way) data-binding, providing an alternative to the `bind` keyword. That was [originally conceived back in 2007](https://andymaleh.blogspot.com/2007/12/data-shining-in-glimmer.html).
27
27
 
@@ -338,7 +338,7 @@ jgem install glimmer-dsl-swt
338
338
 
339
339
  Or this command if you want a specific version:
340
340
  ```
341
- jgem install glimmer-dsl-swt -v 4.24.4.6
341
+ jgem install glimmer-dsl-swt -v 4.24.4.7
342
342
  ```
343
343
 
344
344
  `jgem` is JRuby's version of `gem` command.
@@ -366,7 +366,7 @@ Note: if you're using activerecord or activesupport, keep in mind that Glimmer u
366
366
 
367
367
  Add the following to `Gemfile`:
368
368
  ```
369
- gem 'glimmer-dsl-swt', '~> 4.24.4.6'
369
+ gem 'glimmer-dsl-swt', '~> 4.24.4.7'
370
370
  ```
371
371
 
372
372
  And, then run:
@@ -389,7 +389,7 @@ glimmer
389
389
  ```
390
390
 
391
391
  ```
392
- Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.24.4.6
392
+ Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.24.4.7
393
393
 
394
394
  Usage: glimmer [--bundler] [--pd] [--quiet] [--debug] [--log-level=VALUE] [[ENV_VAR=VALUE]...] [[-jruby-option]...] (application.rb or task[task_args]) [[application2.rb]...]
395
395
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.24.4.6
1
+ 4.24.4.7
@@ -4309,7 +4309,7 @@ Here is an explanation of the example above:
4309
4309
 
4310
4310
  ##### Refined Table
4311
4311
 
4312
- **(ALPHA FEATURE)**
4312
+ **(BETA FEATURE)**
4313
4313
 
4314
4314
  `refined_table` is a custom widget that can handle very large amounts of data by applying pagination and filtering.
4315
4315
 
@@ -4320,7 +4320,9 @@ Options:
4320
4320
  - `page` (default: `1` if table is filled and `0` otherwise): specifies initial page
4321
4321
  - `query` (default: `''`): specifies filter query term (empty shows all results)
4322
4322
 
4323
- Note that currently `refined_table` does not support sorting by clicking columns yet.
4323
+ When click columns (headers) in a `refined_table`, it sorts the entire `model_array`, not just the visible rows.
4324
+
4325
+ Also, upon filtering with a query term, moving in pages, and then unfiltering (backspacing)/refiltering, it remembers the last query term's page and results (through caching) and goes back to them, thus ensuring better performance.
4324
4326
 
4325
4327
  Example taken from [Hello, Refined Table!](/docs/reference/GLIMMER_SAMPLES.md#hello-refined-table):
4326
4328
 
Binary file
@@ -39,6 +39,7 @@ module Glimmer
39
39
 
40
40
  before_body do
41
41
  self.query ||= ''
42
+ @last_query = self.query
42
43
  self.model_array ||= []
43
44
  self.filtered_model_array = []
44
45
  self.refined_model_array = []
@@ -52,6 +53,8 @@ module Glimmer
52
53
  model_binding = new_widget_binding.model_binding
53
54
  configure_sorting
54
55
  observe(self, :model_array) do
56
+ @query_to_filtered_model_array_hash = {}
57
+ @query_to_page_hash = {}
55
58
  filter_and_paginate
56
59
  end
57
60
  @table_proxy.content {
@@ -200,11 +203,23 @@ module Glimmer
200
203
  end
201
204
 
202
205
  def filter
203
- self.filtered_model_array = model_array.select do |model|
204
- @table_proxy.cells_for(model).any? do |cell_text|
205
- cell_text.to_s.downcase.include?(query.to_s.downcase)
206
+ new_query = query.to_s.strip
207
+ new_filtered_model_array = query_to_filtered_model_array_hash[new_query]
208
+ if new_filtered_model_array.nil?
209
+ if new_query.empty?
210
+ query_to_filtered_model_array_hash[new_query] = new_filtered_model_array = model_array.dup
211
+ else
212
+ new_filtered_model_array = model_array.select do |model|
213
+ @table_proxy.cells_for(model).any? do |cell_text|
214
+ cell_text.to_s.downcase.include?(new_query.downcase)
215
+ end
216
+ end
217
+ query_to_filtered_model_array_hash[new_query] = new_filtered_model_array
206
218
  end
207
219
  end
220
+ self.filtered_model_array = new_filtered_model_array
221
+ restore_query_page
222
+ @last_query = new_query
208
223
  end
209
224
 
210
225
  def paginate
@@ -212,6 +227,28 @@ module Glimmer
212
227
  self.refined_model_array = filtered_model_array[(page - 1) * per_page, per_page]
213
228
  end
214
229
 
230
+ def restore_query_page
231
+ new_query = query.to_s.strip
232
+ last_query = @last_query.to_s.strip
233
+ if last_query != new_query
234
+ query_to_page_hash[last_query] = page
235
+ else
236
+ query_to_page_hash[new_query] = page
237
+ end
238
+ if last_query != new_query && last_query.include?(new_query)
239
+ new_page = query_to_page_hash[new_query]
240
+ self.page = corrected_page(new_page) if new_page
241
+ end
242
+ end
243
+
244
+ def query_to_filtered_model_array_hash
245
+ @query_to_filtered_model_array_hash ||= {}
246
+ end
247
+
248
+ def query_to_page_hash
249
+ @query_to_page_hash ||= {}
250
+ end
251
+
215
252
  private
216
253
 
217
254
  def configure_sorting
@@ -1146,7 +1146,7 @@ module Glimmer
1146
1146
  end.to_java(Image)
1147
1147
  end,
1148
1148
  items: lambda do |value|
1149
- value.to_java :string
1149
+ value.map(&:to_s).to_java :string
1150
1150
  end,
1151
1151
  maximized_control: lambda do |value|
1152
1152
  value = (value.respond_to?(:swt_widget) ? value.swt_widget : value) if swt_widget.is_a?(SashForm)
@@ -32,3 +32,4 @@ Hello, Custom Shape!: H3J8ecp30Ak
32
32
  Battleship: b00OWeLZOt8
33
33
  Klondike Solitaire: qOzgiz9X3sI
34
34
  Tetris: oQbBCXACOLY
35
+ Hello, Refined Table!: PEfCZiUa1qo
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-swt
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.24.4.6
4
+ version: 4.24.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-24 00:00:00.000000000 Z
11
+ date: 2022-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement