diamonds 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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
+