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 +4 -4
- data/README.md +36 -3
- data/VERSION +1 -1
- data/lib/glimmer/dsl/opal/browser_expression.rb +17 -0
- data/lib/glimmer/dsl/opal/dsl.rb +1 -0
- data/lib/glimmer/opal/document_proxy.rb +24 -1
- data/lib/glimmer/opal/element_proxy.rb +7 -3
- data/lib/glimmer/opal/iframe_proxy.rb +23 -0
- data/lib/glimmer/opal/point.rb +5 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62c893d845b584b5b303dd5070b67b5042656159dbc1e4124fcc20fdaa469a8e
|
4
|
+
data.tar.gz: 192f1904a065a6add1e2cffba0a3514dc8b178746b0f6b350e7973d88a9ac86d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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.
|
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.
|
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.
|
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
|
data/lib/glimmer/dsl/opal/dsl.rb
CHANGED
@@ -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
|
-
|
26
|
-
|
27
|
-
|
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
|
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
|
+
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
|