glimmer-dsl-opal 0.0.4 → 0.0.5

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: 4abedea4353104a18359a2131eee38b7cff23498f246e35ddec92380798c5555
4
- data.tar.gz: cbba1e1d0b89ebd01c9ddba94cfbeeee5359f93b985e192d826829369794c85e
3
+ metadata.gz: 62c893d845b584b5b303dd5070b67b5042656159dbc1e4124fcc20fdaa469a8e
4
+ data.tar.gz: 192f1904a065a6add1e2cffba0a3514dc8b178746b0f6b350e7973d88a9ac86d
5
5
  SHA512:
6
- metadata.gz: 8223f782d4e4daeefa03081e95b54fc4ab0e9782825a4fd4c17d041d73284c7bf1c78a3141defa526b648e5d6ab41b63ffafea610584d235f7f6b29adb21d3ca
7
- data.tar.gz: d8f62269cc84ae305f3e6cbd74d371272008d7ed1f6d2d8bb44b3fb95cc96247c7628fb95f788a19e2e30d67aedf017dfc19e82b8467af349d000013caa05219
6
+ metadata.gz: 895dda95906afa3738c34c927cc85600bcfb13a04f4e71ddc261221eeb6c0043f2b10f95561e9b03895a3ec7aa2b4c1a90c3c54667aacbc30b307fabdb569654
7
+ data.tar.gz: da8bf5fa194f983e53190d45246dfecb6add28fd20bec9ea1e2cf413716ad44f256d41674882f59823b32d1576964bdf387b96ef683fdf90196469137757a18d
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- # <img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=65 /> Glimmer DSL for Opal 0.0.4 (Web GUI for Desktop Apps)
2
+ # <img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=65 /> Glimmer DSL for Opal 0.0.5 (Web GUI for Desktop Apps)
3
3
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-opal.svg)](http://badge.fury.io/rb/glimmer-dsl-opal)
4
4
  [![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)
5
5
 
@@ -7,12 +7,13 @@
7
7
 
8
8
  It enables running [Glimmer](https://github.com/AndyObtiva/glimmer) desktop apps on the web via [Rails](https://rubyonrails.org/) 5 and [Opal](https://opalrb.com/) 1.
9
9
 
10
- NOTE: Alpha Version 0.0.4 only supports capabilities below (detailed under [Examples](#examples)):
10
+ NOTE: Alpha Version 0.0.5 only supports capabilities below (detailed under [Examples](#examples)):
11
11
  - [Hello, World!](#hello-world)
12
12
  - [Hello, Combo!](#hello-combo)
13
13
  - [Hello, Computed!](#hello-computed)
14
14
  - [Hello, List Single Selection!](#hello-list-single-selection)
15
15
  - [Hello, List Multi Selection!](#hello-list-multi-selection)
16
+ - [Hello, Browser!](#hello-browser)
16
17
 
17
18
  Other Glimmer DSL gems:
18
19
  - [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt): Glimmer DSL for SWT (Desktop GUI)
@@ -30,6 +31,7 @@ The following keywords from [glimmer-dsl-swt](https://github.com/AndyObtiva/glim
30
31
  - `text`
31
32
  - `composite`
32
33
  - `list` & `list(:multi)`
34
+ - `browser`
33
35
  - `grid_layout`
34
36
  - `layout_data`
35
37
 
@@ -54,7 +56,7 @@ Add the following to `Gemfile` (NOTE: if you run into issues, they are probably
54
56
  ```
55
57
  gem 'opal-rails'
56
58
  gem 'opal-browser'
57
- gem 'glimmer-dsl-opal', '~> 0.0.4', require: false
59
+ gem 'glimmer-dsl-opal', '~> 0.0.5', require: false
58
60
  ```
59
61
 
60
62
  Edit `config/initializers/assets.rb` and add:
@@ -395,6 +397,37 @@ You should see "Hello, List Multi Selection!"
395
397
 
396
398
  ![Glimmer DSL for Opal Hello List Multi Selection](images/glimmer-dsl-opal-hello-list-multi-selection.png)
397
399
 
400
+ ### Hello, Browser!
401
+
402
+ Add the following Glimmer code to `app/assets/javascripts/application.js.rb`
403
+
404
+ ```ruby
405
+ include Glimmer
406
+
407
+ shell {
408
+ minimum_size 1024, 860
409
+ browser {
410
+ url 'http://brightonresort.com/about'
411
+ }
412
+ }.open
413
+ ```
414
+ Glimmer app on the desktop (using [`glimmer-dsl-swt`](https://github.com/AndyObtiva/glimmer-dsl-swt) gem):
415
+
416
+ ![Glimmer DSL for Opal Hello Browser](https://github.com/AndyObtiva/glimmer/raw/master/images/glimmer-hello-browser.png)
417
+
418
+ Glimmer app on the web (using `glimmer-dsl-opal` gem):
419
+
420
+ Start the Rails server:
421
+ ```
422
+ rails s
423
+ ```
424
+
425
+ Visit `http://localhost:3000`
426
+
427
+ You should see "Hello, Browser!"
428
+
429
+ ![Glimmer DSL for Opal Hello Browser](images/glimmer-dsl-opal-hello-browser.png)
430
+
398
431
  ## Help
399
432
 
400
433
  ### Issues
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
@@ -0,0 +1,17 @@
1
+ require 'glimmer/dsl/static_expression'
2
+ require 'glimmer/dsl/parent_expression'
3
+ require 'glimmer/opal/iframe_proxy'
4
+
5
+ module Glimmer
6
+ module DSL
7
+ module Opal
8
+ class BrowserExpression < StaticExpression
9
+ include ParentExpression
10
+
11
+ def interpret(parent, keyword, *args, &block)
12
+ Glimmer::Opal::IframeProxy.new(parent, args)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -16,6 +16,7 @@ require 'glimmer/dsl/opal/widget_listener_expression'
16
16
  require 'glimmer/dsl/opal/grid_layout_expression'
17
17
  require 'glimmer/dsl/opal/text_expression'
18
18
  require 'glimmer/dsl/opal/list_expression'
19
+ require 'glimmer/dsl/opal/browser_expression'
19
20
  require 'glimmer/dsl/opal/layout_data_expression'
20
21
  require 'glimmer/dsl/opal/list_selection_data_binding_expression'
21
22
 
@@ -1,9 +1,11 @@
1
1
  require 'glimmer/opal/element_proxy'
2
+ require 'glimmer/opal/point'
2
3
 
3
4
  module Glimmer
4
5
  module Opal
5
6
  class DocumentProxy < ElementProxy
6
7
  # TODO consider renaming to ShellProxy to match SWT API
8
+ attr_reader :minimum_size
7
9
 
8
10
  def initialize(args)
9
11
  @args = args
@@ -23,6 +25,11 @@ module Glimmer
23
25
  $document.title = value
24
26
  end
25
27
  end
28
+
29
+ def minimum_size=(width_or_minimum_size, height = nil)
30
+ @minimum_size = height.nil? ? width_or_minimum_size : Point.new(width_or_minimum_size, height)
31
+ redraw
32
+ end
26
33
 
27
34
  def head_dom
28
35
  # TODO make grid-layout support grab excess space false
@@ -30,6 +37,19 @@ module Glimmer
30
37
  head {
31
38
  <<~CSS
32
39
  <style>
40
+ html {
41
+ width: 100%;
42
+ height: 100%;
43
+ }
44
+ body {
45
+ width: 100%;
46
+ height: 100%;
47
+ margin: 0;
48
+ }
49
+ body > iframe {
50
+ width: 100%;
51
+ height: 100%;
52
+ }
33
53
  ul {
34
54
  list-style: none;
35
55
  padding: 0;
@@ -53,8 +73,11 @@ module Glimmer
53
73
  end
54
74
 
55
75
  def dom
76
+ i = 0
77
+ body_style = ''
78
+ body_style += "min-width: #{@minimum_size.x}px; min-height: #{@minimum_size.y}px;" if @minimum_size
56
79
  @dom ||= DOM {
57
- body {
80
+ body(style: body_style) {
58
81
  }
59
82
  }
60
83
  end
@@ -22,9 +22,13 @@ module Glimmer
22
22
  end
23
23
 
24
24
  def redraw
25
- old_dom = @dom
26
- @dom = nil
27
- old_dom.replace dom
25
+ if @dom
26
+ old_dom = @dom
27
+ @dom = nil
28
+ old_dom.replace dom
29
+ else
30
+ dom
31
+ end
28
32
  end
29
33
 
30
34
  # Subclasses must override with their own mappings
@@ -0,0 +1,23 @@
1
+ require 'glimmer/opal/element_proxy'
2
+
3
+ module Glimmer
4
+ module Opal
5
+ class IframeProxy < ElementProxy
6
+ attr_reader :url
7
+
8
+ def url=(value)
9
+ @url = value
10
+ redraw
11
+ end
12
+
13
+ def dom
14
+ iframe_id = id
15
+ iframe_url = url
16
+ @dom ||= DOM {
17
+ iframe(src: iframe_url, frameBorder: 0) {
18
+ }
19
+ }
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,5 @@
1
+ module Glimmer
2
+ module Opal
3
+ Point = Struct.new(:x, :y)
4
+ end
5
+ end
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.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - AndyMaleh
@@ -176,6 +176,7 @@ files:
176
176
  - lib/glimmer/dsl/expression.rb
177
177
  - lib/glimmer/dsl/expression_handler.rb
178
178
  - lib/glimmer/dsl/opal/bind_expression.rb
179
+ - lib/glimmer/dsl/opal/browser_expression.rb
179
180
  - lib/glimmer/dsl/opal/button_expression.rb
180
181
  - lib/glimmer/dsl/opal/combo_expression.rb
181
182
  - lib/glimmer/dsl/opal/combo_selection_data_binding_expression.rb
@@ -201,10 +202,12 @@ files:
201
202
  - lib/glimmer/opal/element_proxy.rb
202
203
  - lib/glimmer/opal/event_listener_proxy.rb
203
204
  - lib/glimmer/opal/grid_layout_proxy.rb
205
+ - lib/glimmer/opal/iframe_proxy.rb
204
206
  - lib/glimmer/opal/input_proxy.rb
205
207
  - lib/glimmer/opal/label_proxy.rb
206
208
  - lib/glimmer/opal/layout_data_proxy.rb
207
209
  - lib/glimmer/opal/list_proxy.rb
210
+ - lib/glimmer/opal/point.rb
208
211
  - lib/glimmer/opal/property_owner.rb
209
212
  - lib/glimmer/opal/select_proxy.rb
210
213
  - lib/samples/elaborate/contact_manager.rb