glimmer-dsl-opal 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8a9e35ef70d7e6aae911e0b4be468617f0efd5c5ee2b31ad9b6aef191b52681f
4
- data.tar.gz: 3a7624376ee038d5419b993911d6f0ec59f94780425c10306f5c7928572ad4de
3
+ metadata.gz: 267d755e70aa2465ba671e499fcdccb7059de89658f381dafee9480a095e9bf5
4
+ data.tar.gz: 8b5a6ae6d22fef47f7623755810b47dad3b1b25d6ce76bdadde4f89ec8da976c
5
5
  SHA512:
6
- metadata.gz: 8a98ce6e0b97501d3f78b5e589ada5e65d31c94d75ddcfa7e7f1abee3aa15e03bd51d7c3167f395778b458fd1a55e6fb630704aae33ea7ef633d1a7e603f952a
7
- data.tar.gz: 9c602827b6d2da600ac68ad77b2f9d5faa01f29f9b7f0a0b843878950579836de0f2eb1f35a6e7d8681b63dc14afc429cdd0c0420d01a561683b600d13e07e4a
6
+ metadata.gz: a3a5a6621c062459650d83f707cc76819ca9c8abfe50c59a1d5b657648453fa2187ee0faabad2090593192304eabd2454ef4ab3f8c27d5658bba4ae4b8f07c2d
7
+ data.tar.gz: f49a05966c477fb1c38886dc772a50b1f8b9e6249741776a82a3ebc836ec879e8906df2e5c8528246e73b9b349401b3548c97db2af6e42545ece54d6fb334c28
@@ -1,5 +1,11 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.7.3
4
+
5
+ - Refactor to use to_collection gem
6
+ - Fix issue with breaking `date`/`date_drop_down` data-binding as table editor on focus lost
7
+ - Fix issue with requiring OS, File, and Display class after they've been extracted out
8
+
3
9
  ## 0.7.2
4
10
 
5
11
  - `date_drop_down` `table_column` `editor`
data/README.md CHANGED
@@ -1,10 +1,10 @@
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 Opal 0.7.2 (Pure Ruby Web GUI)
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 Opal 0.7.3 (Pure Ruby Web GUI)
2
2
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-opal.svg)](http://badge.fury.io/rb/glimmer-dsl-opal)
3
3
  [![Join the chat at https://gitter.im/AndyObtiva/glimmer](https://badges.gitter.im/AndyObtiva/glimmer.svg)](https://gitter.im/AndyObtiva/glimmer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4
4
 
5
5
  ### You can finally live in pure Ruby land on the web!
6
6
 
7
- [Glimmer](https://github.com/AndyObtiva/glimmer) DSL for [Opal](https://opalrb.com/) is an alpha [gem](https://rubygems.org/gems/glimmer-dsl-opal) that enables building web GUI in pure Ruby via [Opal](https://opalrb.com/) on [Rails](https://rubyonrails.org/).
7
+ [Glimmer](https://github.com/AndyObtiva/glimmer) DSL for [Opal](https://opalrb.com/) is an **alpha** [gem](https://rubygems.org/gems/glimmer-dsl-opal) that enables building web GUI in pure Ruby via [Opal](https://opalrb.com/) on [Rails](https://rubyonrails.org/).
8
8
 
9
9
  Use in one of two ways:
10
10
  - **Direct:** build the GUI of web apps with the same friendly desktop GUI Ruby syntax as [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt), thus requiring a lot less code than web technologies that is in pure Ruby and avoiding opaque web concepts like 'render' and 'reactive'. No HTML/JS/CSS skills are even required. Web designers may be involved with CSS styling only if needed.
@@ -20,7 +20,7 @@ Add the following require statement to `app/assets/javascripts/application.rb` i
20
20
  require 'glimmer-dsl-opal/samples/elaborate/tic_tac_toe'
21
21
  ```
22
22
 
23
- Glimmer GUI code from [glimmer-dsl-opal/samples/elaborate/tic_tac_toe.rb](glimmer-dsl-opal/samples/elaborate/tic_tac_toe.rb):
23
+ Glimmer GUI code from [glimmer-dsl-opal/samples/elaborate/tic_tac_toe.rb](lib/glimmer-dsl-opal/samples/elaborate/tic_tac_toe.rb):
24
24
 
25
25
  ```ruby
26
26
  # ...
@@ -58,7 +58,7 @@ Tic Tac Toe on the desktop with the same exact code (using the [`glimmer-dsl-swt
58
58
  ![Glimmer DSL for SWT Tic Tac Toe In Progress](https://github.com/AndyObtiva/glimmer-dsl-swt/raw/master/images/glimmer-tic-tac-toe-in-progress.png)
59
59
  ![Glimmer DSL for SWT Tic Tac Toe Game Over](https://github.com/AndyObtiva/glimmer-dsl-swt/raw/master/images/glimmer-tic-tac-toe-game-over.png)
60
60
 
61
- NOTE: Alpha Version 0.7.2 only supports bare-minimum capabilities for the following [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt) [samples](https://github.com/AndyObtiva/glimmer#samples):
61
+ NOTE: **Alpha Version** 0.7.3 only supports bare-minimum capabilities for the following [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt) [samples](https://github.com/AndyObtiva/glimmer#samples):
62
62
 
63
63
  Hello:
64
64
 
@@ -155,7 +155,7 @@ Alternatively, web developers may directly use [Glimmer DSL for Opal](https://ru
155
155
 
156
156
  ## Setup
157
157
 
158
- (NOTE: if you run into issues, keep in mind this is a very early experimental and incomplete alpha. Also, there is a slight chance any issues you encounter are fixed in master or some other branch that you could check out instead)
158
+ (NOTE: if you run into issues, keep in mind this is a very early experimental and incomplete **alpha**. Also, there is a slight chance any issues you encounter are fixed in master or some other branch that you could check out instead)
159
159
 
160
160
  The [glimmer-dsl-opal](https://rubygems.org/gems/glimmer-dsl-opal) gem is a Rails Engine gem that includes assets.
161
161
 
@@ -179,7 +179,7 @@ Add the following to `Gemfile`:
179
179
  gem 'opal-rails', '~> 1.1.2'
180
180
  gem 'opal-async', '~> 1.2.0'
181
181
  gem 'opal-jquery', '~> 0.4.4'
182
- gem 'glimmer-dsl-opal', '~> 0.7.2'
182
+ gem 'glimmer-dsl-opal', '~> 0.7.3'
183
183
  gem 'glimmer-dsl-xml', '~> 1.1.0', require: false
184
184
  gem 'glimmer-dsl-css', '~> 1.1.0', require: false
185
185
 
@@ -1539,7 +1539,7 @@ You should see "Hello, Date Time!"
1539
1539
 
1540
1540
  #### Hello, Table!
1541
1541
 
1542
- Note: This [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt) sample has near-complete support, but is missing table context menus and table editing at the moment.
1542
+ Note: This [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt) sample has near-complete support, but is missing table context menus at the moment.
1543
1543
 
1544
1544
  Add the following require statement to `app/assets/javascripts/application.rb`
1545
1545
 
@@ -1738,23 +1738,28 @@ class HelloTable
1738
1738
  text 'Game Date'
1739
1739
  width 150
1740
1740
  sort_property :date # ensure sorting by real date value (not `game_date` string specified in items below)
1741
+ editor :date_drop_down, property: :date_time
1741
1742
  }
1742
1743
  table_column {
1743
1744
  text 'Game Time'
1744
1745
  width 150
1745
1746
  sort_property :time # ensure sorting by real time value (not `game_time` string specified in items below)
1747
+ editor :time, property: :date_time
1746
1748
  }
1747
1749
  table_column {
1748
1750
  text 'Ballpark'
1749
1751
  width 180
1752
+ editor :none
1750
1753
  }
1751
1754
  table_column {
1752
1755
  text 'Home Team'
1753
1756
  width 150
1757
+ editor :combo, :read_only # read_only is simply an SWT style passed to combo widget
1754
1758
  }
1755
1759
  table_column {
1756
1760
  text 'Away Team'
1757
1761
  width 150
1762
+ editor :combo, :read_only # read_only is simply an SWT style passed to combo widget
1758
1763
  }
1759
1764
  table_column {
1760
1765
  text 'Promotion'
@@ -1803,6 +1808,39 @@ Glimmer app on the desktop (using [`glimmer-dsl-swt`](https://github.com/AndyObt
1803
1808
 
1804
1809
  ![Glimmer DSL for SWT Hello Table](https://github.com/AndyObtiva/glimmer-dsl-swt/raw/master/images/glimmer-hello-table.png)
1805
1810
 
1811
+ Hello, Table! Editing Game Date
1812
+
1813
+ ![Hello Table](https://github.com/AndyObtiva/glimmer-dsl-swt/raw/master/images/glimmer-hello-table-editing-game-date.png)
1814
+
1815
+ Hello, Table! Editing Game Time
1816
+
1817
+ ![Hello Table](https://github.com/AndyObtiva/glimmer-dsl-swt/raw/master/images/glimmer-hello-table-editing-game-time.png)
1818
+
1819
+ Hello, Table! Editing Home Team
1820
+
1821
+ ![Hello Table](https://github.com/AndyObtiva/glimmer-dsl-swt/raw/master/images/glimmer-hello-table-editing-home-team.png)
1822
+
1823
+ Hello, Table! Sorted Game Date Ascending
1824
+
1825
+ ![Hello Table](https://github.com/AndyObtiva/glimmer-dsl-swt/raw/master/images/glimmer-hello-table-sorted-game-date-ascending.png)
1826
+
1827
+ Hello, Table! Sorted Game Date Descending
1828
+
1829
+ ![Hello Table](https://github.com/AndyObtiva/glimmer-dsl-swt/raw/master/images/glimmer-hello-table-sorted-game-date-descending.png)
1830
+
1831
+ Hello, Table! Playoff Type Combo
1832
+
1833
+ ![Hello Table](https://github.com/AndyObtiva/glimmer-dsl-swt/raw/master/images/glimmer-hello-table-playoff-type-combo.png)
1834
+
1835
+ Hello, Table! Playoff Type Changed
1836
+
1837
+ ![Hello Table](https://github.com/AndyObtiva/glimmer-dsl-swt/raw/master/images/glimmer-hello-table-playoff-type-changed.png)
1838
+
1839
+ Hello, Table! Game Booked
1840
+
1841
+ ![Hello Table](https://github.com/AndyObtiva/glimmer-dsl-swt/raw/master/images/glimmer-hello-table-game-booked.png)
1842
+
1843
+
1806
1844
  Glimmer app on the web (using `glimmer-dsl-opal` gem):
1807
1845
 
1808
1846
  Start the Rails server:
@@ -1816,6 +1854,38 @@ You should see "Hello, Date Time!"
1816
1854
 
1817
1855
  ![Glimmer DSL for Opal Hello Table](images/glimmer-dsl-opal-hello-table.png)
1818
1856
 
1857
+ Hello, Table! Editing Game Date
1858
+
1859
+ ![Glimmer DSL for Opal Hello Table](images/glimmer-dsl-opal-hello-table-editing-game-date.png)
1860
+
1861
+ Hello, Table! Editing Game Time
1862
+
1863
+ ![Glimmer DSL for Opal Hello Table](images/glimmer-dsl-opal-hello-table-editing-game-time.png)
1864
+
1865
+ Hello, Table! Editing Home Team
1866
+
1867
+ ![Glimmer DSL for Opal Hello Table](images/glimmer-dsl-opal-hello-table-editing-home-team.png)
1868
+
1869
+ Hello, Table! Sorted Game Date Ascending
1870
+
1871
+ ![Glimmer DSL for Opal Hello Table](images/glimmer-dsl-opal-hello-table-sorted-game-date-ascending.png)
1872
+
1873
+ Hello, Table! Sorted Game Date Descending
1874
+
1875
+ ![Glimmer DSL for Opal Hello Table](images/glimmer-dsl-opal-hello-table-sorted-game-date-descending.png)
1876
+
1877
+ Hello, Table! Playoff Type Combo
1878
+
1879
+ ![Glimmer DSL for Opal Hello Table](images/glimmer-dsl-opal-hello-table-playoff-type-combo.png)
1880
+
1881
+ Hello, Table! Playoff Type Changed
1882
+
1883
+ ![Glimmer DSL for Opal Hello Table](images/glimmer-dsl-opal-hello-table-playoff-type-changed.png)
1884
+
1885
+ Hello, Table! Game Booked
1886
+
1887
+ ![Glimmer DSL for Opal Hello Table](images/glimmer-dsl-opal-hello-table-game-booked.png)
1888
+
1819
1889
  ### Elaborate Samples
1820
1890
 
1821
1891
  #### Login
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.2
1
+ 0.7.3
@@ -38,6 +38,10 @@ if RUBY_ENGINE == 'opal'
38
38
  require 'native' # move this to opal-async
39
39
  require 'opal-async'
40
40
  require 'async/ext'
41
+ require 'to_collection'
42
+ require 'os'
43
+ require 'file'
44
+ require 'display'
41
45
  require 'glimmer-dsl-opal/vendor/jquery'
42
46
  require 'glimmer-dsl-opal/vendor/jquery-ui/jquery-ui.min'
43
47
  require 'glimmer-dsl-opal/vendor/jquery-ui-timepicker/jquery.ui.timepicker'
@@ -114,8 +114,8 @@ module Glimmer
114
114
  event: 'change',
115
115
  event_handler: -> (event_listener) {
116
116
  -> (event) {
117
- if @timepicker_done
118
- @timepicker_done = false
117
+ if date? || (time? && @timepicker_done)
118
+ @timepicker_done = false if time?
119
119
  event_listener.call(event)
120
120
  end
121
121
  }
@@ -127,8 +127,9 @@ module Glimmer
127
127
  event: 'blur',
128
128
  event_handler: -> (event_listener) {
129
129
  -> (event) {
130
- if @timepicker_done
131
- @timepicker_done = false
130
+ # TODO support blur event for date?
131
+ if time? && @timepicker_done
132
+ @timepicker_done = false if time?
132
133
  event_listener.call(event)
133
134
  end
134
135
  }
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2020 Andy Maleh
2
- #
2
+ #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
5
5
  # "Software"), to deal in the Software without restriction, including
@@ -7,10 +7,10 @@
7
7
  # distribute, sublicense, and/or sell copies of the Software, and to
8
8
  # permit persons to whom the Software is furnished to do so, subject to
9
9
  # the following conditions:
10
- #
10
+ #
11
11
  # The above copyright notice and this permission notice shall be
12
12
  # included in all copies or substantial portions of the Software.
13
- #
13
+ #
14
14
  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
15
  # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
16
  # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -68,7 +68,7 @@ module Glimmer
68
68
  private
69
69
 
70
70
  def detect_invalid_font_property(font_properties)
71
- [font_properties[:style]].flatten.select do |style|
71
+ font_properties[:style].to_collection(false).select do |style|
72
72
  style.is_a?(Symbol) || style.is_a?(String)
73
73
  end.each do |style|
74
74
  raise Error, style.to_s + ERROR_INVALID_FONT_STYLE if !FONT_STYLES.include?(style.to_sym)
@@ -128,9 +128,6 @@ module Glimmer
128
128
  on_widget_selected {
129
129
  table_proxy.finish_edit!
130
130
  }
131
- on_focus_lost {
132
- table_proxy.finish_edit!
133
- }
134
131
  on_key_pressed { |key_event|
135
132
  if key_event.keyCode == swt(:cr)
136
133
  table_proxy.finish_edit!
@@ -153,9 +150,6 @@ module Glimmer
153
150
  on_widget_selected {
154
151
  table_proxy.finish_edit!
155
152
  }
156
- on_focus_lost {
157
- table_proxy.finish_edit!
158
- }
159
153
  on_key_pressed { |key_event|
160
154
  if key_event.keyCode == swt(:cr)
161
155
  table_proxy.finish_edit!
@@ -362,7 +356,7 @@ module Glimmer
362
356
  end
363
357
 
364
358
  def sort_property=(new_sort_property)
365
- @sort_property = [new_sort_property].flatten.compact
359
+ @sort_property = new_sort_property.to_collection
366
360
  end
367
361
 
368
362
  def detect_sort_type
@@ -383,7 +377,7 @@ module Glimmer
383
377
 
384
378
  def column_sort_properties
385
379
  column_properties.zip(columns.map(&:sort_property)).map do |pair|
386
- [pair.compact.last].flatten.compact
380
+ pair.compact.last.to_collection
387
381
  end
388
382
  end
389
383
 
@@ -414,7 +408,7 @@ module Glimmer
414
408
  end
415
409
  end
416
410
 
417
- new_sort_property = [new_sort_property].flatten.compact unless new_sort_property.is_a?(Array)
411
+ new_sort_property = new_sort_property.to_collection unless new_sort_property.is_a?(Array)
418
412
  @sort_direction = @sort_direction.nil? || @sort_property.first != new_sort_property.first || @sort_direction == :descending ? :ascending : :descending
419
413
 
420
414
  @sort_property = new_sort_property
@@ -520,7 +514,7 @@ module Glimmer
520
514
  @edit_mode = true
521
515
 
522
516
  editor_config = columns[column_index].editor || editor
523
- editor_config = [editor_config].flatten.compact
517
+ editor_config = editor_config.to_collection
524
518
  editor_widget_options = editor_config.last.is_a?(Hash) ? editor_config.last : {}
525
519
  editor_widget_arg_last_index = editor_config.last.is_a?(Hash) ? -2 : -1
526
520
  editor_widget = (editor_config[0] || :text).to_sym
@@ -153,7 +153,7 @@ module Glimmer
153
153
 
154
154
  def remove_all_listeners
155
155
  effective_observation_request_to_event_mapping.keys.each do |keyword|
156
- [effective_observation_request_to_event_mapping[keyword]].flatten.each do |mapping|
156
+ effective_observation_request_to_event_mapping[keyword].to_collection.each do |mapping|
157
157
  observation_requests[keyword].to_a.each do |event_listener|
158
158
  event = mapping[:event]
159
159
  event_handler = mapping[:event_handler]
@@ -375,7 +375,7 @@ module Glimmer
375
375
  return unless effective_observation_request_to_event_mapping.keys.include?(keyword)
376
376
  event = nil
377
377
  delegate = nil
378
- [effective_observation_request_to_event_mapping[keyword]].flatten.each do |mapping|
378
+ effective_observation_request_to_event_mapping[keyword].to_collection.each do |mapping|
379
379
  observation_requests[keyword] ||= Set.new
380
380
  observation_requests[keyword] << event_listener
381
381
  event = mapping[:event]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-opal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - AndyMaleh
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.2.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: to_collection
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 2.0.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 2.0.1
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: puts_debuggerer
71
85
  requirement: !ruby/object:Gem::Requirement