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 +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
|
[](http://badge.fury.io/rb/glimmer-dsl-opal)
|
4
4
|
[](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
|

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

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

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