diamonds 0.1.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.
Files changed (180) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +36 -0
  3. data/lib/diamonds.rb +74 -0
  4. data/lib/diamonds/Gemfile +28 -0
  5. data/lib/diamonds/README.md +254 -0
  6. data/lib/diamonds/Rakefile +5 -0
  7. data/lib/diamonds/apps/application.rb +15 -0
  8. data/lib/diamonds/apps/library.rb +321 -0
  9. data/lib/diamonds/apps/user_app.rb +5 -0
  10. data/lib/diamonds/config.ru +98 -0
  11. data/lib/diamonds/db/mysiteDB Back.sqlite3 +0 -0
  12. data/lib/diamonds/db/mysiteDB.sqlite3 +0 -0
  13. data/lib/diamonds/gems/auto_launch_browser.rb +22 -0
  14. data/lib/diamonds/gems/io.rb +146 -0
  15. data/lib/diamonds/gems/ruby_to_js.rb +173 -0
  16. data/lib/diamonds/gems/server_utils.rb +96 -0
  17. data/lib/diamonds/lib/opal-browser.rb +1 -0
  18. data/lib/diamonds/lib/opal/browser.rb +4 -0
  19. data/lib/diamonds/opal-browser.gemspec +21 -0
  20. data/lib/diamonds/opal/browser.rb +11 -0
  21. data/lib/diamonds/opal/browser/animation_frame.rb +111 -0
  22. data/lib/diamonds/opal/browser/canvas.rb +321 -0
  23. data/lib/diamonds/opal/browser/canvas/data.rb +63 -0
  24. data/lib/diamonds/opal/browser/canvas/gradient.rb +27 -0
  25. data/lib/diamonds/opal/browser/canvas/style.rb +113 -0
  26. data/lib/diamonds/opal/browser/canvas/text.rb +45 -0
  27. data/lib/diamonds/opal/browser/console.rb +103 -0
  28. data/lib/diamonds/opal/browser/cookies.rb +133 -0
  29. data/lib/diamonds/opal/browser/css.rb +24 -0
  30. data/lib/diamonds/opal/browser/css/declaration.rb +83 -0
  31. data/lib/diamonds/opal/browser/css/rule.rb +48 -0
  32. data/lib/diamonds/opal/browser/css/rule/style.rb +16 -0
  33. data/lib/diamonds/opal/browser/css/style_sheet.rb +83 -0
  34. data/lib/diamonds/opal/browser/css/unit.rb +188 -0
  35. data/lib/diamonds/opal/browser/database/sql.rb +194 -0
  36. data/lib/diamonds/opal/browser/delay.rb +78 -0
  37. data/lib/diamonds/opal/browser/dom.rb +84 -0
  38. data/lib/diamonds/opal/browser/dom/attribute.rb +26 -0
  39. data/lib/diamonds/opal/browser/dom/builder.rb +88 -0
  40. data/lib/diamonds/opal/browser/dom/cdata.rb +9 -0
  41. data/lib/diamonds/opal/browser/dom/character_data.rb +73 -0
  42. data/lib/diamonds/opal/browser/dom/comment.rb +9 -0
  43. data/lib/diamonds/opal/browser/dom/document.rb +149 -0
  44. data/lib/diamonds/opal/browser/dom/document_fragment.rb +7 -0
  45. data/lib/diamonds/opal/browser/dom/element.rb +474 -0
  46. data/lib/diamonds/opal/browser/dom/element/attributes.rb +87 -0
  47. data/lib/diamonds/opal/browser/dom/element/data.rb +67 -0
  48. data/lib/diamonds/opal/browser/dom/element/image.rb +23 -0
  49. data/lib/diamonds/opal/browser/dom/element/input.rb +28 -0
  50. data/lib/diamonds/opal/browser/dom/element/offset.rb +89 -0
  51. data/lib/diamonds/opal/browser/dom/element/position.rb +46 -0
  52. data/lib/diamonds/opal/browser/dom/element/scroll.rb +136 -0
  53. data/lib/diamonds/opal/browser/dom/element/select.rb +36 -0
  54. data/lib/diamonds/opal/browser/dom/element/size.rb +34 -0
  55. data/lib/diamonds/opal/browser/dom/element/template.rb +9 -0
  56. data/lib/diamonds/opal/browser/dom/element/textarea.rb +24 -0
  57. data/lib/diamonds/opal/browser/dom/mutation_observer.rb +178 -0
  58. data/lib/diamonds/opal/browser/dom/node.rb +464 -0
  59. data/lib/diamonds/opal/browser/dom/node_set.rb +110 -0
  60. data/lib/diamonds/opal/browser/dom/text.rb +36 -0
  61. data/lib/diamonds/opal/browser/effects.rb +50 -0
  62. data/lib/diamonds/opal/browser/event.rb +253 -0
  63. data/lib/diamonds/opal/browser/event/animation.rb +38 -0
  64. data/lib/diamonds/opal/browser/event/audio_processing.rb +33 -0
  65. data/lib/diamonds/opal/browser/event/base.rb +430 -0
  66. data/lib/diamonds/opal/browser/event/before_unload.rb +15 -0
  67. data/lib/diamonds/opal/browser/event/clipboard.rb +28 -0
  68. data/lib/diamonds/opal/browser/event/close.rb +47 -0
  69. data/lib/diamonds/opal/browser/event/composition.rb +50 -0
  70. data/lib/diamonds/opal/browser/event/custom.rb +65 -0
  71. data/lib/diamonds/opal/browser/event/device_light.rb +23 -0
  72. data/lib/diamonds/opal/browser/event/device_motion.rb +51 -0
  73. data/lib/diamonds/opal/browser/event/device_orientation.rb +48 -0
  74. data/lib/diamonds/opal/browser/event/device_proximity.rb +33 -0
  75. data/lib/diamonds/opal/browser/event/drag.rb +119 -0
  76. data/lib/diamonds/opal/browser/event/focus.rb +39 -0
  77. data/lib/diamonds/opal/browser/event/gamepad.rb +60 -0
  78. data/lib/diamonds/opal/browser/event/hash_change.rb +28 -0
  79. data/lib/diamonds/opal/browser/event/keyboard.rb +115 -0
  80. data/lib/diamonds/opal/browser/event/message.rb +70 -0
  81. data/lib/diamonds/opal/browser/event/mouse.rb +254 -0
  82. data/lib/diamonds/opal/browser/event/page_transition.rb +23 -0
  83. data/lib/diamonds/opal/browser/event/pop_state.rb +33 -0
  84. data/lib/diamonds/opal/browser/event/progress.rb +43 -0
  85. data/lib/diamonds/opal/browser/event/sensor.rb +15 -0
  86. data/lib/diamonds/opal/browser/event/storage.rb +43 -0
  87. data/lib/diamonds/opal/browser/event/touch.rb +60 -0
  88. data/lib/diamonds/opal/browser/event/ui.rb +38 -0
  89. data/lib/diamonds/opal/browser/event/wheel.rb +49 -0
  90. data/lib/diamonds/opal/browser/event_source.rb +70 -0
  91. data/lib/diamonds/opal/browser/history.rb +90 -0
  92. data/lib/diamonds/opal/browser/http.rb +169 -0
  93. data/lib/diamonds/opal/browser/http/binary.rb +58 -0
  94. data/lib/diamonds/opal/browser/http/headers.rb +109 -0
  95. data/lib/diamonds/opal/browser/http/request.rb +344 -0
  96. data/lib/diamonds/opal/browser/http/response.rb +115 -0
  97. data/lib/diamonds/opal/browser/immediate.rb +163 -0
  98. data/lib/diamonds/opal/browser/interval.rb +111 -0
  99. data/lib/diamonds/opal/browser/location.rb +87 -0
  100. data/lib/diamonds/opal/browser/navigator.rb +173 -0
  101. data/lib/diamonds/opal/browser/screen.rb +66 -0
  102. data/lib/diamonds/opal/browser/socket.rb +123 -0
  103. data/lib/diamonds/opal/browser/storage.rb +252 -0
  104. data/lib/diamonds/opal/browser/support.rb +287 -0
  105. data/lib/diamonds/opal/browser/utils.rb +74 -0
  106. data/lib/diamonds/opal/browser/version.rb +3 -0
  107. data/lib/diamonds/opal/browser/window.rb +120 -0
  108. data/lib/diamonds/opal/browser/window/scroll.rb +59 -0
  109. data/lib/diamonds/opal/browser/window/size.rb +59 -0
  110. data/lib/diamonds/opal/browser/window/view.rb +36 -0
  111. data/lib/diamonds/opal/opal-browser.rb +1 -0
  112. data/lib/diamonds/public/__OPAL_SOURCE_MAPS__/application.map +0 -0
  113. data/lib/diamonds/public/javascripts/font-awesome/HELP-US-OUT.txt +7 -0
  114. data/lib/diamonds/public/javascripts/font-awesome/css/font-awesome.css +2026 -0
  115. data/lib/diamonds/public/javascripts/font-awesome/css/font-awesome.min.css +1 -0
  116. data/lib/diamonds/public/javascripts/font-awesome/fonts/FontAwesome.otf +0 -0
  117. data/lib/diamonds/public/javascripts/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  118. data/lib/diamonds/public/javascripts/font-awesome/fonts/fontawesome-webfont.svg +640 -0
  119. data/lib/diamonds/public/javascripts/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  120. data/lib/diamonds/public/javascripts/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  121. data/lib/diamonds/public/javascripts/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  122. data/lib/diamonds/public/javascripts/font-awesome/less/animated.less +34 -0
  123. data/lib/diamonds/public/javascripts/font-awesome/less/bordered-pulled.less +25 -0
  124. data/lib/diamonds/public/javascripts/font-awesome/less/core.less +12 -0
  125. data/lib/diamonds/public/javascripts/font-awesome/less/fixed-width.less +6 -0
  126. data/lib/diamonds/public/javascripts/font-awesome/less/font-awesome.less +17 -0
  127. data/lib/diamonds/public/javascripts/font-awesome/less/icons.less +677 -0
  128. data/lib/diamonds/public/javascripts/font-awesome/less/larger.less +13 -0
  129. data/lib/diamonds/public/javascripts/font-awesome/less/list.less +19 -0
  130. data/lib/diamonds/public/javascripts/font-awesome/less/mixins.less +26 -0
  131. data/lib/diamonds/public/javascripts/font-awesome/less/path.less +15 -0
  132. data/lib/diamonds/public/javascripts/font-awesome/less/rotated-flipped.less +20 -0
  133. data/lib/diamonds/public/javascripts/font-awesome/less/stacked.less +20 -0
  134. data/lib/diamonds/public/javascripts/font-awesome/less/variables.less +688 -0
  135. data/lib/diamonds/public/javascripts/font-awesome/scss/_animated.scss +34 -0
  136. data/lib/diamonds/public/javascripts/font-awesome/scss/_bordered-pulled.scss +25 -0
  137. data/lib/diamonds/public/javascripts/font-awesome/scss/_core.scss +12 -0
  138. data/lib/diamonds/public/javascripts/font-awesome/scss/_fixed-width.scss +6 -0
  139. data/lib/diamonds/public/javascripts/font-awesome/scss/_icons.scss +677 -0
  140. data/lib/diamonds/public/javascripts/font-awesome/scss/_larger.scss +13 -0
  141. data/lib/diamonds/public/javascripts/font-awesome/scss/_list.scss +19 -0
  142. data/lib/diamonds/public/javascripts/font-awesome/scss/_mixins.scss +26 -0
  143. data/lib/diamonds/public/javascripts/font-awesome/scss/_path.scss +15 -0
  144. data/lib/diamonds/public/javascripts/font-awesome/scss/_rotated-flipped.scss +20 -0
  145. data/lib/diamonds/public/javascripts/font-awesome/scss/_stacked.scss +20 -0
  146. data/lib/diamonds/public/javascripts/font-awesome/scss/_variables.scss +688 -0
  147. data/lib/diamonds/public/javascripts/font-awesome/scss/font-awesome.scss +17 -0
  148. data/lib/diamonds/public/javascripts/jquery-2.1.4.min.js +4 -0
  149. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  150. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  151. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_flat_10_000000_40x100.png +0 -0
  152. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  153. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  154. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  155. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  156. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  157. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  158. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-icons_222222_256x240.png +0 -0
  159. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-icons_228ef1_256x240.png +0 -0
  160. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-icons_ef8c08_256x240.png +0 -0
  161. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-icons_ffd27a_256x240.png +0 -0
  162. data/lib/diamonds/public/javascripts/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
  163. data/lib/diamonds/public/javascripts/jquery-ui/jquery-ui.min.css +7 -0
  164. data/lib/diamonds/public/javascripts/jquery-ui/jquery-ui.min.js +13 -0
  165. data/lib/diamonds/public/javascripts/jquery-ui/jquery-ui.structure.min.css +5 -0
  166. data/lib/diamonds/public/javascripts/jquery-ui/jquery-ui.theme.min.css +5 -0
  167. data/lib/diamonds/public/javascripts/jquery.js +4 -0
  168. data/lib/diamonds/public/javascripts/jquery.ui.touch-punch.min.js +11 -0
  169. data/lib/diamonds/public/javascripts/ne pas utiliser version en retard jeezs_editor.js b/data/lib/diamonds/public/javascripts/ne pas utiliser version en retard → jeezs_editor.js +0 -0
  170. data/lib/diamonds/public/javascripts/standalone.js +2316 -0
  171. data/lib/diamonds/public/javascripts/standalone.min.js +1 -0
  172. data/lib/diamonds/public/javascripts/wysiwyg-editor.min.css +1 -0
  173. data/lib/diamonds/public/javascripts/wysiwyg-editor.min.js +1 -0
  174. data/lib/diamonds/public/javascripts/wysiwyg.min.js +1 -0
  175. data/lib/diamonds/user_app/main.rb +45 -0
  176. data/lib/diamonds/version.rb +3 -0
  177. data/lib/diamonds/views/index.erb +35 -0
  178. data/lib/diamonds/views/javascripts/jeezs_editor.js.erb +365 -0
  179. data/lib/diamonds/views/stylesheets/main.css.erb +244 -0
  180. metadata +490 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3980bd9da584141dd37ed671b56aa860eaea68f4
4
+ data.tar.gz: 9d09be85e5596bf32f8bfdf2b0c2a23fea358fa4
5
+ SHA512:
6
+ metadata.gz: daa8ec8e683faec7a90e857879a0ca8fa037dd949690e63ec8249c56901d7ffa5ef661621b84b9b7de2924bf5a621e7bfe1a8f47e0ab6b2203d66d8d67dab20b
7
+ data.tar.gz: 080db7948ae41f65a0975044c3f6e1eb2d32186c8144785b22b465c145a5043b081772b8cea72c6b71418f3df51be39e9fb1ca8f42c9e8f12df2c8566d53a09b
@@ -0,0 +1,36 @@
1
+ # Diamonds
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/diamonds`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'diamonds'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install diamonds
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/diamonds.
36
+
@@ -0,0 +1,74 @@
1
+ require "diamonds/version"
2
+ require "fileutils"
3
+ module Diamonds
4
+ this_file_is_call_by=$0
5
+ folder_caller_file=File.dirname(this_file_is_call_by)
6
+ current_file=__FILE__
7
+ current_folder=File.dirname(current_file)
8
+
9
+ file_to_save=""
10
+ File.open(this_file_is_call_by).each do |line|
11
+
12
+ if (line.include? "require")
13
+
14
+ if (line.include? "diamonds")
15
+ #We do not copy the line
16
+ else
17
+
18
+ if (line.include? "/")
19
+ #it's a local gem require we copy the file and keep the require
20
+
21
+ line= line.gsub("require","").gsub("'","").gsub('"',"").gsub("\n","").lstrip
22
+ filename=line.sub("./","/")
23
+ filename=folder_caller_file+filename
24
+
25
+ filename= filename+".rb"
26
+
27
+ filecontent=File.read(filename)
28
+
29
+
30
+ line=line.sub("./","/")
31
+ newfilename=current_folder+"/diamonds/user_app"+line+".rb"
32
+ line='require "./user_app'+line+'"'
33
+
34
+
35
+ dir_found= newfilename.split("/")
36
+ dir_found.pop
37
+
38
+ dir_found=dir_found.join("/")
39
+
40
+ FileUtils::mkdir_p dir_found
41
+
42
+ File.write(newfilename, filecontent)
43
+ # on sauve la ligne
44
+ file_to_save=file_to_save+line+"\n"
45
+
46
+
47
+ else
48
+ #it's a online gem require we add the line
49
+
50
+ file_to_save=file_to_save+line
51
+
52
+ end
53
+
54
+
55
+
56
+ end
57
+
58
+ else
59
+ file_to_save=file_to_save+line
60
+
61
+ end
62
+
63
+ end
64
+
65
+
66
+
67
+
68
+
69
+ File.write(current_folder+'/diamonds/user_app/main.rb', file_to_save)
70
+ File.write(current_folder+'/diamonds/user_app/ID_Repository.txt', "0")
71
+ File.write(current_folder+'/diamonds/apps/user_app.rb', "")
72
+ exec "cd #{File.expand_path(current_folder)}/diamonds/;bundle install;bundle exec rackup -p9292 -o 0.0.0.0 -E production -q -s thin"
73
+ # exec "cd #{File.expand_path(current_folder)}/diamonds/;bundle exec rackup -p9292 -o 0.0.0.0 -E production -q -s thin"
74
+ end
@@ -0,0 +1,28 @@
1
+ # Gemfile
2
+ source 'https://rubygems.org'
3
+ gemspec
4
+ # specs
5
+ gem "rack"
6
+ gem "rake"
7
+ gem "json"
8
+ gem "rufus-scheduler"
9
+ gem "tilt"
10
+ gem "sequel"
11
+ gem "fileutils"
12
+ gem "sinatra"
13
+ gem "sinatra-websocket"
14
+ gem "sinatra-contrib"
15
+ gem "thin" # webrick has a bug with safari
16
+ gem "opal-rspec"
17
+ gem "opal-jquery"
18
+ gem "sqlite3"
19
+ # gem "sinatra/reloader"
20
+
21
+ # runner
22
+ gem 'selenium-webdriver', require: false
23
+ gem 'rest-client', require: false
24
+
25
+ # browser
26
+ gem 'opal'
27
+ gem 'paggio', github: 'meh/paggio'
28
+
@@ -0,0 +1,254 @@
1
+ #to launch server if first launch ever then : bundle install
2
+ # Then to run server : bundle exec rackup
3
+ # exemple bundle exec rackup -p9292 -o 62.210.129.107 -E production -q -s thin
4
+ # avec thin en ssl : thin -R config.ru -a 192.168.0.47 -p 443 start --ssl
5
+ #site sur port (-p) : 9292, adresse(-o) : 62.210.129.107 , evironement (-E) :production , quiet (-q), server(-s) thin
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+ Browser support for Opal
32
+ ========================
33
+
34
+ [![Build Status](https://secure.travis-ci.org/opal/opal-browser.svg?branch=master)](http://travis-ci.org/opal/opal-browser)
35
+ [![Gem Version](https://badge.fury.io/rb/opal-browser.svg)](http://badge.fury.io/rb/opal-browser)
36
+ [![Code Climate](http://img.shields.io/codeclimate/github/opal/opal-browser.svg)](https://codeclimate.com/github/opal/opal-browser)
37
+
38
+
39
+ This library aims to be a full-blown wrapper for all the browser API including
40
+ HTML5.
41
+
42
+ Usage
43
+ =====
44
+
45
+ _Server side (config.ru, Rakefile, Rails, Sinatra, etc.)_
46
+
47
+ ```ruby
48
+ require 'opal-browser'
49
+ # Your server code here
50
+ ```
51
+
52
+ _Browser side_
53
+
54
+ ```ruby
55
+ require 'opal'
56
+ require 'browser'
57
+ # Your Opal code here
58
+ ```
59
+
60
+
61
+
62
+ Features
63
+ ========
64
+ This is a list of the currently wrapped features and some details on them.
65
+
66
+ DOM
67
+ ---
68
+ DOM support is complete as far as I know, it has a very Nokogiri feel to it
69
+ with obvious differences where relevant (for instance, event handling).
70
+
71
+ ```ruby
72
+ $document.ready do
73
+ alert "yo dawg, I'm all loaded up in here"
74
+ end
75
+ ```
76
+
77
+ It also supports a markaby inspired builder DSL which generates DOM nodes
78
+ directly instead of creating a string.
79
+
80
+ ```ruby
81
+ $document.ready do
82
+ DOM {
83
+ div.info {
84
+ span.red "I'm all cooked up."
85
+ }
86
+ }.append_to($document.body)
87
+ end
88
+ ```
89
+
90
+ CSSOM
91
+ -----
92
+ CSSOM support is still incomplete but the useful parts are implemented, this
93
+ includes a DSL for generating a CSS style and the same DSL is also used to
94
+ change style declarations (which can either belong to a `DOM::Element` or a
95
+ `CSS::Rule::Style`).
96
+
97
+ ```ruby
98
+ $document.body.style.apply {
99
+ background color: 'black'
100
+ color 'white'
101
+ font family: 'Verdana'
102
+ }
103
+ ```
104
+
105
+ AJAX & SJAX
106
+ -----------
107
+ The `XMLHttpRequest` API has been wrapped completely, it also optionally
108
+ supports binary results as typed-arrays.
109
+
110
+ It easily allows for synchronous and asynchronous requests.
111
+
112
+ ```ruby
113
+ Browser::HTTP.get "/something.json" do
114
+ on :success do |res|
115
+ alert res.json.inspect
116
+ end
117
+ end
118
+ ```
119
+
120
+ WebSocket
121
+ ---------
122
+ Websockets have been fully wrapped and they are easily configurable with
123
+ blocks.
124
+
125
+ ```ruby
126
+ Browser::Socket.new 'ws://echo.websocket.org' do
127
+ on :open do
128
+ every 1 do
129
+ puts "ping"
130
+ end
131
+ end
132
+
133
+ on :message do |e|
134
+ log "Received #{e.data}"
135
+ end
136
+ end
137
+ ```
138
+
139
+ EventSource
140
+ -----------
141
+ Event sources have been implemented and are easily configurable with blocks.
142
+
143
+ ```ruby
144
+ Browser::EventSource.new '/events' do |es|
145
+ es.on :message do |e|
146
+ alert e.data
147
+ end
148
+
149
+ es.on :custom do |e|
150
+ alert "custom #{e.data}"
151
+ end
152
+ end
153
+ ```
154
+
155
+ History
156
+ -------
157
+ The HTML5 History API has been fully wrapped.
158
+
159
+ Storage
160
+ -------
161
+ The HTML5 Storage API has been wrapped and it exports a single Storage class
162
+ that uses the most appropriate and available API to store data locally.
163
+
164
+ Database SQL
165
+ ------------
166
+ WebSQL has been fully wrapped.
167
+
168
+ ```ruby
169
+ db = Browser::Database::SQL.new 'test'
170
+ db.transaction {|t|
171
+ t.query('CREATE TABLE test(ID INTEGER PRIMARY KEY ASC, text TEXT)').then {
172
+ t.query('INSERT INTO test (id, text) VALUES(?, ?)', 1, 'huehue')
173
+ }.then {
174
+ t.query('INSERT INTO test (id, text) VALUES(?, ?)', 2, 'jajaja')
175
+ }.then {
176
+ t.query('SELECT * FROM test')
177
+ }.then {|r|
178
+ r.each {|row|
179
+ alert row.inspect
180
+ }
181
+ }
182
+ }
183
+ ```
184
+
185
+ Browser support
186
+ ===============
187
+
188
+ * Internet Explorer 6+
189
+ * Firefox (Current - 1) or Current
190
+ * Chrome (Current - 1) or Current
191
+ * Safari 5.1+
192
+ * Opera 12.1x or (Current - 1) or Current
193
+
194
+ Any problem above browsers should be considered and reported as a bug.
195
+
196
+ (Current - 1) or Current denotes that we support the current stable version of
197
+ the browser and the version that preceded it. For example, if the current
198
+ version of a browser is 24.x, we support the 24.x and 23.x versions.
199
+
200
+ 12.1x or (Current - 1) or Current denotes that we support Opera 12.1x as well
201
+ as last 2 versions of Opera. For example, if the current Opera version is 20.x,
202
+ we support Opera 12.1x, 19.x and 20.x but not Opera 15.x through 18.x.
203
+
204
+ Cross-browser testing sponsored by [BrowserStack](http://browserstack.com).
205
+
206
+ CSS selectors
207
+ -------------
208
+ Older browsers do not support CSS selector in queries, this means you'll need
209
+ external polyfills for this.
210
+
211
+ The suggested polyfill is [Sizzle](http://sizzlejs.com/), require it **before**
212
+ opal-browser.
213
+
214
+ JSON parsing
215
+ ------------
216
+ Older browsers don't support JSON parsing natively, this means you'll need
217
+ external polyfills for this.
218
+
219
+ The suggested polyfill is [json2](https://github.com/douglascrockford/JSON-js),
220
+ require it **before** opal-browser.
221
+
222
+ XPath support
223
+ -------------
224
+ Not all browsers support XPath queries, I'm looking at you Internet Explorer,
225
+ this means you'll need external polyfills for this.
226
+
227
+ The suggested polyfill is
228
+ [wgxpath](https://code.google.com/p/wicked-good-xpath/), require it **before**
229
+ opal-browser.
230
+
231
+ License
232
+ =======
233
+
234
+ (The MIT License)
235
+
236
+ Copyright (C) 2014 by meh
237
+
238
+ Permission is hereby granted, free of charge, to any person obtaining a copy
239
+ of this software and associated documentation files (the "Software"), to deal
240
+ in the Software without restriction, including without limitation the rights
241
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
242
+ copies of the Software, and to permit persons to whom the Software is
243
+ furnished to do so, subject to the following conditions:
244
+
245
+ The above copyright notice and this permission notice shall be included in
246
+ all copies or substantial portions of the Software.
247
+
248
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
249
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
250
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
251
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
252
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
253
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
254
+ THE SOFTWARE.
@@ -0,0 +1,5 @@
1
+ require 'bundler'
2
+ Bundler.require
3
+
4
+ require 'opal/rspec/rake_task'
5
+ Opal::RSpec::RakeTask.new(:default)
@@ -0,0 +1,15 @@
1
+ require "opal"
2
+ require "opal-jquery"
3
+ require "opal-parser"
4
+ require "json"
5
+ require "browser"
6
+ require "browser/location"
7
+ require "browser/socket"
8
+
9
+
10
+ Document.ready? do
11
+ @page_name= `window.location.pathname`
12
+ require "library"
13
+ end
14
+
15
+
@@ -0,0 +1,321 @@
1
+ serverpath = Native `window.location.host + window.location.pathname`
2
+ @page_adress= Native `window.location.pathname`.split("/")[1]
3
+ # alert @page_adress
4
+ @edit_mode="move"
5
+ serverpath="ws://"+serverpath
6
+
7
+ @activeFlow=Browser::Socket.new serverpath do
8
+ on :open do
9
+ Element.find("body").append("<div id='page_content' class='editablecontent'></div>")
10
+ Element.find("body").append("<div id='master_items' ></div>")
11
+ end
12
+
13
+ on :message do |message_received|
14
+ message_received= JSON.parse(message_received.data)
15
+ # ------------------ read_page ici ----------------
16
+ Element.find("#page_content").append(message_received)
17
+ #------------------ a modifier pour mise en base -----------------#
18
+ require "user_app"
19
+ #------------------ a modifier pour mise en base -----------------#
20
+ end
21
+
22
+ on :close do
23
+ Element.find("body").html("Bye bye")
24
+ end
25
+
26
+ end
27
+
28
+ def montest
29
+ alert "mon test succeed !!!"
30
+ end
31
+
32
+ def set_default_page
33
+
34
+
35
+ Element.find("body").append("<div id='menubox' class='menubox'></div>")
36
+ Element.find("#menubox").append("<div id='edittoggle' class='edit'>Edit</div>")
37
+ Element.find("#edittoggle").on :click do
38
+ # l'action "list_modules_number" recupere le nombre total de module et le stock dans un attr dans la div moduleutil
39
+ @activeFlow.send({:action => "list_modules_number", :pass => "pass"}.to_json);
40
+
41
+ def move_or_edit_fct
42
+ if @edit_mode=="move"
43
+ @edit_mode="edit"
44
+ # alert "edit"
45
+ remove_drag
46
+ elsif @edit_mode=="edit"
47
+ @edit_mode="move"
48
+ # alert "move"
49
+ make_it_draggable
50
+ end
51
+ end
52
+
53
+ edittoggle=Element.find(".editablecontent")
54
+ if edittoggle.has_class?("wysiwyg-editor")
55
+ if edittoggle.attr("contenteditable")=="true"
56
+ Element.find("#menus_container").remove
57
+ edittoggle.remove_attr("contenteditable")
58
+ remove_drag
59
+ elsif edittoggle.attr("contenteditable").nil?
60
+ create_default_objet
61
+ bind_save
62
+ bind_tools
63
+ make_it_draggable
64
+ edittoggle.attr("contenteditable", "true")
65
+ end
66
+ else
67
+ create_default_objet
68
+ bind_save
69
+ bind_tools
70
+ make_it_draggable
71
+ Native `editcontent()`
72
+ end
73
+ end
74
+ Native `$('#menubox').draggable()`
75
+
76
+ end
77
+
78
+
79
+ def create_default_objet
80
+ # Creation du container d'outil ici
81
+ Element.find("#menubox").append("<div id='menus_container' class='menus_container'></div>")
82
+ # add the tools
83
+
84
+ Element.find("#menus_container").append("<div id='save_page' class='save_page'>Save</div>")
85
+ Element.find("#menus_container").append("<div id='toolbox' class='toolbox'></div>")
86
+ Element.find("#toolbox").append("<div id='tools' class='tools'>Tools List</div>")
87
+ Element.find("#menus_container").append("<div id='modulebox' class='modulebox'></div>")
88
+ Element.find("#modulebox").append("<div id='module_utils' class='module_utils'>Modules</div>")
89
+ bind_modules_utils
90
+ end
91
+
92
+ set_default_page
93
+
94
+ def bindHref
95
+ Element.find("a").on :mousedown do |acontent|
96
+ @startime=gettime
97
+ end
98
+
99
+ Element.find("a").on :mouseup do |acontent|
100
+ # tester si l'editeur est ouvert plutot que la difference de temps
101
+ @endtime= gettime
102
+ totaltime=@endtime-@startime
103
+ editionstate= Element.find("#authentifier").css("display")
104
+
105
+ begin
106
+ if editionstate=="block"
107
+ end
108
+ rescue
109
+ editionstate="none"
110
+
111
+ end
112
+ pass=Element.find("#passhere").text
113
+ target =acontent.current_target.attr("href")
114
+
115
+ if editionstate=="block"
116
+ if totaltime >1000
117
+ Native `window.location.href = #{target}+'?pass='+#{pass}`
118
+ end
119
+ else
120
+ Native `window.location.href = #{target}+'?pass='+#{pass}`
121
+ end
122
+
123
+
124
+ end
125
+ end
126
+
127
+
128
+ def bind_create_module
129
+ Element.find("#module_creator").on :click do
130
+
131
+ number_of_modules=`$('#module_utils').attr('number_of_modules')`
132
+ id= "mon_module_nb_#{number_of_modules}"
133
+ classname= "editablecontent modules"
134
+ name= "les infos"
135
+ content=" module vide"
136
+
137
+ Element.find("#master_items").append("<div id='#{id}' class='#{classname}' name='#{name}'>#{content}</div>")
138
+ Native `$('.modules').draggable()`
139
+ # On incremente temporarirement le nombre de module dans modules_utils
140
+ number_of_modules=number_of_modules.to_i+1
141
+ number_of_modules=number_of_modules.to_s
142
+ Element.find("#module_utils").attr("number_of_modules", number_of_modules)
143
+
144
+ end
145
+ end
146
+
147
+
148
+ def bind_modules_utils
149
+
150
+ Element.find("#module_utils").on :click do
151
+ elementexist= Element.find("#module_creator").attr :id
152
+ if elementexist.nil?
153
+ Element.find("#modulebox").append("<div id='modules_container' class='modules_container'></div>")
154
+ Element.find("#modules_container").append("<div id='module_creator' class='module_creator'>New</div>")
155
+ Element.find("#modules_container").append("<div id='modules_list' class='modules_list'>list</div>")
156
+ Element.find("#modules_container").append("<div id='modules_on_page' class='modules_on_page'>on page</div>")
157
+ Element.find("#modules_container").append("<div id='module_infos' class='module_infos'>infos</div>")
158
+ bind_create_module
159
+ bind_modules_list
160
+ bind_modules_on_page
161
+ else
162
+ Element.find("#modules_container").remove
163
+ end
164
+
165
+ end
166
+ end
167
+
168
+ def bind_tools
169
+ Element.find("#tools").on :click do
170
+ elementexist= Element.find("#tool_handler").attr :id
171
+ if elementexist.nil?
172
+
173
+ Element.find("#toolbox").append("<div id='tools_container' class='tools_container'></div>")
174
+ Element.find("#tools_container").append("<div id='tool_handler' class='tool_handler'></div>")
175
+ Element.find("#tool_handler").append("<div id='move_or_edit' class='move_or_edit'>mover</div>")
176
+ Element.find("#move_or_edit").on :click do
177
+ # alert "edit or move"
178
+ move_or_edit_fct
179
+ end
180
+
181
+ else
182
+ Element.find("#tools_container").remove
183
+ end
184
+
185
+ end
186
+
187
+
188
+ end
189
+
190
+
191
+ def bind_save
192
+ Element.find("#save_page").on :click do
193
+
194
+ editablecontent = Element.find(".modules")
195
+ list_of_modules_on_page=[]
196
+ editablecontent.each do |content|
197
+ item_id= content.id.to_sym
198
+ list_of_modules_on_page << item_id
199
+ module_content= Native `get_full_object(#{item_id})`
200
+ save_module ({item_id => module_content})
201
+ end
202
+ #--------- pour na pas sauvegarder en double les objets systemes créé en code --------#
203
+ temp_item=Element.find(".system_object")
204
+ `$( ".system_object").remove()`
205
+ #--------- pour na pas sauvegarder en double les objets systemes créé en code --------#
206
+ page_content= Element.find("#page_content")
207
+ item_id= @page_adress
208
+ save_list_of_modules_on_page ({item_id => list_of_modules_on_page})
209
+ item_to_save=page_content.html
210
+ save_page ({item_id => item_to_save})
211
+ #--------- pour na pas sauvegarder en double les objets systemes créé en code --------#
212
+ Element.find("#page_content").append(temp_item)
213
+ #--------- pour na pas sauvegarder en double les objets systemes créé en code --------#
214
+ end
215
+ end
216
+
217
+
218
+ def bind_modules_list
219
+ Element.find("#modules_list").on :click do
220
+ @activeFlow.send({:action => "read_modules_list", :pass => "pass"}.to_json);
221
+ Timeout.new 1000 do
222
+ Element.find(".module_available").on :click do |evt|
223
+ module_requested= evt.current_target.html
224
+ @activeFlow.send({:action => "get_module", :pagecontent => module_requested, :currentpage => @page_adress, :pass => "pass"}.to_json);
225
+ end
226
+ end
227
+ end
228
+ end
229
+
230
+ def bind_modules_on_page
231
+ Element.find("#modules_on_page").on :click do
232
+ # page_content= Element.find("#page_content")
233
+ # title= page_content.id.to_sym
234
+ if @page_adress.nil?
235
+ @page_adress=""
236
+ end
237
+ @activeFlow.send({:action => "read_modules_on_page", :currentpage => @page_adress, :pass => "pass"}.to_json);
238
+ end
239
+
240
+ end
241
+
242
+ def save_page (datas)
243
+ pass= Element.find('#passhere').text
244
+ key, value = datas.first
245
+ title=key
246
+ content= value
247
+ @activeFlow.send({:action => "save", :pagecontent => content, :currentpage => @page_adress, :pass => "pass"}.to_json);
248
+ end
249
+
250
+ def save_module (datas)
251
+ # pass= Element.find('#passhere').text
252
+ # alert "save module : #{datas}"
253
+ key, value = datas.first
254
+ title=key
255
+ content= value
256
+ # module_content=Element.find("##{title}")
257
+ @activeFlow.send({:action => "save_module", :pagecontent => content, :currentpage => title, :pass => "pass"}.to_json);
258
+
259
+ end
260
+
261
+ def save_list_of_modules_on_page (datas)
262
+ # alert "modules sur la page sont : #{datas}"
263
+ key, value = datas.first
264
+ title=key
265
+ content= value
266
+ @activeFlow.send({:action => "save_list_of_modules_on_page", :pagecontent => content, :currentpage => @page_adress, :pass => "pass"}.to_json);
267
+
268
+ end
269
+
270
+
271
+ def read_file (datas)
272
+ alert "ou ici"
273
+ pass= Element.find('#passhere').text
274
+ key, value = datas.first
275
+ title=key
276
+ title= value
277
+ @activeFlow.send({:action => "read", :currentpage => value, :pass => pass}.to_json);
278
+ end
279
+
280
+ def read_sensor (datas)
281
+ pass= Element.find('#passhere').text
282
+ key, value = datas.first
283
+ title= value
284
+ @activeFlow.send({:action => "readsensor", :currentpage => value, :pass => pass}.to_json);
285
+ end
286
+
287
+
288
+ %x{
289
+ $("a").click(function( event ) {
290
+ event.preventDefault();
291
+ });
292
+ }
293
+
294
+
295
+ class Timeout
296
+ def initialize(time=0, &block)
297
+ `setTimeout(function(){#{block.call}}, time)`
298
+ end
299
+ end
300
+
301
+
302
+ def make_it_draggable
303
+
304
+ # Native `$('#toolbox').draggable()`
305
+ Native `$('.modules').draggable()`
306
+ Native `$('.editablecontent').find("img").draggable()`
307
+ Native `$('.editablecontent').find("div").not(".system_object").draggable()`
308
+ # Native `$('.editablecontent').find("span").draggable()`
309
+ end
310
+
311
+
312
+ def remove_drag
313
+
314
+ make_it_draggable
315
+ # Native `$('#toolbox').draggable('destroy')`
316
+ Native `$('.modules').draggable('destroy')`
317
+ Native `$('.editablecontent').find('img').draggable('destroy')`
318
+ Native `$('.editablecontent').find('div').draggable('destroy')`
319
+
320
+ end
321
+