glimmer-dsl-opal 0.0.4 → 0.0.5

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: 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