rsence-pre 2.1.0.1.pre

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 (313) hide show
  1. data/.yardopts +10 -0
  2. data/INSTALL.rdoc +330 -0
  3. data/LICENSE.txt +622 -0
  4. data/README.rdoc +98 -0
  5. data/VERSION +1 -0
  6. data/bin/rsence +25 -0
  7. data/bin/rsence-pre +25 -0
  8. data/conf/default_conf.yaml +346 -0
  9. data/conf/default_strings.yaml +76 -0
  10. data/conf/rsence_command_strings.yaml +444 -0
  11. data/docs/ExampleGuiPlugin.rdoc +193 -0
  12. data/docs/JavascriptBundles.rdoc +0 -0
  13. data/docs/PluginBundleInfo.rdoc +173 -0
  14. data/docs/PluginBundles.rdoc +96 -0
  15. data/docs/Values.rdoc +163 -0
  16. data/js/comm/autosync/autosync.js +17 -0
  17. data/js/comm/autosync/js.inc +0 -0
  18. data/js/comm/comm.js +203 -0
  19. data/js/comm/js.inc +0 -0
  20. data/js/comm/jsloader/js.inc +0 -0
  21. data/js/comm/jsloader/jsloader.js +112 -0
  22. data/js/comm/queue/js.inc +0 -0
  23. data/js/comm/queue/queue.js +184 -0
  24. data/js/comm/session/js.inc +0 -0
  25. data/js/comm/session/session.js +52 -0
  26. data/js/comm/sessionwatcher/js.inc +0 -0
  27. data/js/comm/sessionwatcher/sessionwatcher.js +44 -0
  28. data/js/comm/transporter/js.inc +0 -0
  29. data/js/comm/transporter/transporter.js +261 -0
  30. data/js/comm/urlresponder/js.inc +0 -0
  31. data/js/comm/urlresponder/urlresponder.js +149 -0
  32. data/js/comm/values/js.inc +0 -0
  33. data/js/comm/values/values.js +433 -0
  34. data/js/controls/button/button.js +72 -0
  35. data/js/controls/button/js.inc +0 -0
  36. data/js/controls/button/themes/bright/button.css +89 -0
  37. data/js/controls/button/themes/bright/button.html +7 -0
  38. data/js/controls/button/themes/bright/button_parts1-ie6.gif +0 -0
  39. data/js/controls/button/themes/bright/button_parts1.png +0 -0
  40. data/js/controls/button/themes/default/button.css +89 -0
  41. data/js/controls/button/themes/default/button.html +7 -0
  42. data/js/controls/button/themes/default/button_parts1-ie6.gif +0 -0
  43. data/js/controls/button/themes/default/button_parts1.png +0 -0
  44. data/js/controls/checkbox/checkbox.js +49 -0
  45. data/js/controls/checkbox/js.inc +0 -0
  46. data/js/controls/checkbox/themes/default/checkbox.css +69 -0
  47. data/js/controls/checkbox/themes/default/checkbox.html +5 -0
  48. data/js/controls/checkbox/themes/default/checkbox_parts1-ie6.gif +0 -0
  49. data/js/controls/checkbox/themes/default/checkbox_parts1.png +0 -0
  50. data/js/controls/dialogs/alert_sheet/alert_sheet.js +63 -0
  51. data/js/controls/dialogs/alert_sheet/js.inc +0 -0
  52. data/js/controls/dialogs/confirm_sheet/confirm_sheet.js +37 -0
  53. data/js/controls/dialogs/confirm_sheet/js.inc +0 -0
  54. data/js/controls/dialogs/sheet/js.inc +0 -0
  55. data/js/controls/dialogs/sheet/sheet.js +84 -0
  56. data/js/controls/dialogs/sheet/themes/default/sheet.css +64 -0
  57. data/js/controls/dialogs/sheet/themes/default/sheet.html +14 -0
  58. data/js/controls/dialogs/sheet/themes/default/sheet_bg-ie6.gif +0 -0
  59. data/js/controls/dialogs/sheet/themes/default/sheet_bg.png +0 -0
  60. data/js/controls/dialogs/sheet/themes/default/sheet_dim-ie6.gif +0 -0
  61. data/js/controls/dialogs/sheet/themes/default/sheet_dim.png +0 -0
  62. data/js/controls/dialogs/sheet/themes/default/sheet_parts1-ie6.gif +0 -0
  63. data/js/controls/dialogs/sheet/themes/default/sheet_parts1.png +0 -0
  64. data/js/controls/dialogs/sheet/themes/default/sheet_parts2-ie6.gif +0 -0
  65. data/js/controls/dialogs/sheet/themes/default/sheet_parts2.png +0 -0
  66. data/js/controls/dialogs/sheet/themes/default/sheet_warning-ie6.gif +0 -0
  67. data/js/controls/dialogs/sheet/themes/default/sheet_warning.png +0 -0
  68. data/js/controls/imageview/imageview.js +109 -0
  69. data/js/controls/imageview/js.inc +0 -0
  70. data/js/controls/imageview/themes/default/blank.gif +0 -0
  71. data/js/controls/passwordcontrol/js.inc +0 -0
  72. data/js/controls/passwordcontrol/passwordcontrol.js +23 -0
  73. data/js/controls/passwordcontrol/themes/default/passwordcontrol.css +0 -0
  74. data/js/controls/passwordcontrol/themes/default/passwordcontrol.html +18 -0
  75. data/js/controls/progress/progressbar/js.inc +0 -0
  76. data/js/controls/progress/progressbar/progressbar.js +40 -0
  77. data/js/controls/progress/progressbar/themes/default/progressbar.css +16 -0
  78. data/js/controls/progress/progressbar/themes/default/progressbar.html +2 -0
  79. data/js/controls/progress/progressindicator/js.inc +0 -0
  80. data/js/controls/progress/progressindicator/progressindicator.js +44 -0
  81. data/js/controls/radiobutton/js.inc +0 -0
  82. data/js/controls/radiobutton/radiobutton.js +43 -0
  83. data/js/controls/radiobutton/themes/default/radiobutton.css +69 -0
  84. data/js/controls/radiobutton/themes/default/radiobutton.html +5 -0
  85. data/js/controls/radiobutton/themes/default/radiobutton_parts1-ie6.gif +0 -0
  86. data/js/controls/radiobutton/themes/default/radiobutton_parts1.png +0 -0
  87. data/js/controls/sliders/slider/js.inc +0 -0
  88. data/js/controls/sliders/slider/slider.js +357 -0
  89. data/js/controls/sliders/slider/themes/default/hslider_tracks-ie6.gif +0 -0
  90. data/js/controls/sliders/slider/themes/default/hslider_tracks.png +0 -0
  91. data/js/controls/sliders/slider/themes/default/slider.css +108 -0
  92. data/js/controls/sliders/slider/themes/default/slider.html +5 -0
  93. data/js/controls/sliders/slider/themes/default/slider_thumbs-ie6.gif +0 -0
  94. data/js/controls/sliders/slider/themes/default/slider_thumbs.png +0 -0
  95. data/js/controls/sliders/vslider/js.inc +0 -0
  96. data/js/controls/sliders/vslider/themes/default/vslider.css +52 -0
  97. data/js/controls/sliders/vslider/themes/default/vslider.html +5 -0
  98. data/js/controls/sliders/vslider/themes/default/vslider_tracks-ie6.gif +0 -0
  99. data/js/controls/sliders/vslider/themes/default/vslider_tracks.png +0 -0
  100. data/js/controls/sliders/vslider/vslider.js +41 -0
  101. data/js/controls/stepper/js.inc +0 -0
  102. data/js/controls/stepper/stepper.js +213 -0
  103. data/js/controls/stepper/themes/default/stepper-ie6.gif +0 -0
  104. data/js/controls/stepper/themes/default/stepper.css +14 -0
  105. data/js/controls/stepper/themes/default/stepper.html +2 -0
  106. data/js/controls/stepper/themes/default/stepper.png +0 -0
  107. data/js/controls/stringview/js.inc +0 -0
  108. data/js/controls/stringview/stringview.js +49 -0
  109. data/js/controls/stringview/themes/default/stringview.css +8 -0
  110. data/js/controls/stringview/themes/default/stringview.html +1 -0
  111. data/js/controls/tab/js.inc +0 -0
  112. data/js/controls/tab/tab.js +280 -0
  113. data/js/controls/tab/themes/bright/tab.css +76 -0
  114. data/js/controls/tab/themes/bright/tab.html +6 -0
  115. data/js/controls/tab/themes/bright/tab_bg_color-ie6.gif +0 -0
  116. data/js/controls/tab/themes/bright/tab_bg_color.png +0 -0
  117. data/js/controls/tab/themes/bright/tab_border_pattern-ie6.gif +0 -0
  118. data/js/controls/tab/themes/bright/tab_border_pattern.png +0 -0
  119. data/js/controls/tab/themes/bright/tab_parts1-ie6.gif +0 -0
  120. data/js/controls/tab/themes/bright/tab_parts1.png +0 -0
  121. data/js/controls/tab/themes/default/tab.css +77 -0
  122. data/js/controls/tab/themes/default/tab.html +6 -0
  123. data/js/controls/tab/themes/default/tab_bg_color-ie6.gif +0 -0
  124. data/js/controls/tab/themes/default/tab_bg_color.png +0 -0
  125. data/js/controls/tab/themes/default/tab_border_pattern-ie6.gif +0 -0
  126. data/js/controls/tab/themes/default/tab_border_pattern.png +0 -0
  127. data/js/controls/tab/themes/default/tab_parts1-ie6.gif +0 -0
  128. data/js/controls/tab/themes/default/tab_parts1.png +0 -0
  129. data/js/controls/textarea/js.inc +0 -0
  130. data/js/controls/textarea/textarea.js +24 -0
  131. data/js/controls/textarea/themes/default/textarea.css +21 -0
  132. data/js/controls/textarea/themes/default/textarea.html +18 -0
  133. data/js/controls/textcontrol/js.inc +0 -0
  134. data/js/controls/textcontrol/textcontrol.js +374 -0
  135. data/js/controls/textcontrol/themes/default/textcontrol.css +107 -0
  136. data/js/controls/textcontrol/themes/default/textcontrol.html +18 -0
  137. data/js/controls/textcontrol/themes/default/textcontrol_parts1-ie6.gif +0 -0
  138. data/js/controls/textcontrol/themes/default/textcontrol_parts1.png +0 -0
  139. data/js/controls/textcontrol/themes/default/textcontrol_parts2-ie6.gif +0 -0
  140. data/js/controls/textcontrol/themes/default/textcontrol_parts2.png +0 -0
  141. data/js/controls/textcontrol/themes/default/textcontrol_parts3-ie6.gif +0 -0
  142. data/js/controls/textcontrol/themes/default/textcontrol_parts3.png +0 -0
  143. data/js/controls/uploader/js.inc +0 -0
  144. data/js/controls/uploader/themes/default/upload_progress.gif +0 -0
  145. data/js/controls/uploader/themes/default/uploader.css +108 -0
  146. data/js/controls/uploader/themes/default/uploader.html +27 -0
  147. data/js/controls/uploader/uploader.js +154 -0
  148. data/js/controls/validatorview/js.inc +0 -0
  149. data/js/controls/validatorview/themes/default/validator-ie6.gif +0 -0
  150. data/js/controls/validatorview/themes/default/validator.png +0 -0
  151. data/js/controls/validatorview/themes/default/validatorview.css +0 -0
  152. data/js/controls/validatorview/themes/default/validatorview.html +0 -0
  153. data/js/controls/validatorview/validatorview.js +62 -0
  154. data/js/controls/window/js.inc +0 -0
  155. data/js/controls/window/themes/default/window.css +219 -0
  156. data/js/controls/window/themes/default/window.html +17 -0
  157. data/js/controls/window/themes/default/window_bg_active-ie6.gif +0 -0
  158. data/js/controls/window/themes/default/window_bg_active.png +0 -0
  159. data/js/controls/window/themes/default/window_bg_inactive-ie6.gif +0 -0
  160. data/js/controls/window/themes/default/window_bg_inactive.png +0 -0
  161. data/js/controls/window/themes/default/window_buttons-ie6.gif +0 -0
  162. data/js/controls/window/themes/default/window_buttons.png +0 -0
  163. data/js/controls/window/themes/default/window_parts1-ie6.gif +0 -0
  164. data/js/controls/window/themes/default/window_parts1.png +0 -0
  165. data/js/controls/window/themes/default/window_parts2-ie6.gif +0 -0
  166. data/js/controls/window/themes/default/window_parts2.png +0 -0
  167. data/js/controls/window/window.js +286 -0
  168. data/js/core/class/class.js +318 -0
  169. data/js/core/class/js.inc +0 -0
  170. data/js/core/elem/elem.js +1383 -0
  171. data/js/core/elem/js.inc +0 -0
  172. data/js/core/event/event.js +153 -0
  173. data/js/core/event/js.inc +0 -0
  174. data/js/core/iefix/ie_css_element.htc +5 -0
  175. data/js/core/iefix/ie_css_style.htc +5 -0
  176. data/js/core/iefix/iefix.js +359 -0
  177. data/js/core/iefix/js.inc +0 -0
  178. data/js/core/rsence_ns/js.inc +0 -0
  179. data/js/core/rsence_ns/rsence_ns.js +21 -0
  180. data/js/datetime/calendar/calendar.js +198 -0
  181. data/js/datetime/calendar/js.inc +0 -0
  182. data/js/datetime/calendar/themes/default/calendar.css +108 -0
  183. data/js/datetime/calendar/themes/default/calendar.html +9 -0
  184. data/js/datetime/calendar/themes/default/calendar_arrows-ie6.gif +0 -0
  185. data/js/datetime/calendar/themes/default/calendar_arrows.png +0 -0
  186. data/js/datetime/datetimevalue/datetimevalue.js +247 -0
  187. data/js/datetime/datetimevalue/js.inc +0 -0
  188. data/js/datetime/timesheet/js.inc +0 -0
  189. data/js/datetime/timesheet/themes/default/timesheet.css +30 -0
  190. data/js/datetime/timesheet/themes/default/timesheet.html +2 -0
  191. data/js/datetime/timesheet/timesheet.js +183 -0
  192. data/js/datetime/timesheet_item/js.inc +0 -0
  193. data/js/datetime/timesheet_item/themes/default/timesheet_item.css +42 -0
  194. data/js/datetime/timesheet_item/themes/default/timesheet_item.html +8 -0
  195. data/js/datetime/timesheet_item/timesheet_item.js +248 -0
  196. data/js/datetime/timesheet_item_edit/js.inc +0 -0
  197. data/js/datetime/timesheet_item_edit/timesheet_item_edit.js +274 -0
  198. data/js/foundation/application/application.js +208 -0
  199. data/js/foundation/application/js.inc +0 -0
  200. data/js/foundation/control/control.js +339 -0
  201. data/js/foundation/control/controldefaults/controldefaults.js +56 -0
  202. data/js/foundation/control/controldefaults/js.inc +0 -0
  203. data/js/foundation/control/dummyvalue/dummyvalue.js +51 -0
  204. data/js/foundation/control/dummyvalue/js.inc +0 -0
  205. data/js/foundation/control/dyncontrol/dyncontrol.js +500 -0
  206. data/js/foundation/control/dyncontrol/js.inc +0 -0
  207. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.css +0 -0
  208. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.html +0 -0
  209. data/js/foundation/control/eventresponder/eventresponder.js +750 -0
  210. data/js/foundation/control/eventresponder/js.inc +0 -0
  211. data/js/foundation/control/js.inc +0 -0
  212. data/js/foundation/control/valuematrix/js.inc +0 -0
  213. data/js/foundation/control/valuematrix/valuematrix.js +135 -0
  214. data/js/foundation/control/valueresponder/js.inc +0 -0
  215. data/js/foundation/control/valueresponder/valueresponder.js +79 -0
  216. data/js/foundation/eventmanager/eventmanager.js +991 -0
  217. data/js/foundation/eventmanager/js.inc +0 -0
  218. data/js/foundation/geom/point/js.inc +0 -0
  219. data/js/foundation/geom/point/point.js +202 -0
  220. data/js/foundation/geom/rect/js.inc +0 -0
  221. data/js/foundation/geom/rect/rect.js +651 -0
  222. data/js/foundation/json_renderer/js.inc +0 -0
  223. data/js/foundation/json_renderer/json_renderer.js +246 -0
  224. data/js/foundation/system/js.inc +0 -0
  225. data/js/foundation/system/system.js +381 -0
  226. data/js/foundation/thememanager/js.inc +0 -0
  227. data/js/foundation/thememanager/thememanager.js +393 -0
  228. data/js/foundation/value/js.inc +0 -0
  229. data/js/foundation/value/value.js +183 -0
  230. data/js/foundation/view/js.inc +0 -0
  231. data/js/foundation/view/markupview/js.inc +0 -0
  232. data/js/foundation/view/markupview/markupview.js +114 -0
  233. data/js/foundation/view/morphanimation/js.inc +0 -0
  234. data/js/foundation/view/morphanimation/morphanimation.js +237 -0
  235. data/js/foundation/view/view.js +1812 -0
  236. data/js/foundation/view/viewdefaults/js.inc +0 -0
  237. data/js/foundation/view/viewdefaults/viewdefaults.js +26 -0
  238. data/js/lists/checkboxlist/checkboxlist.js +171 -0
  239. data/js/lists/checkboxlist/js.inc +0 -0
  240. data/js/lists/listitems/js.inc +0 -0
  241. data/js/lists/listitems/listitems.js +88 -0
  242. data/js/lists/propertylist/js.inc +0 -0
  243. data/js/lists/propertylist/propertylist.js +326 -0
  244. data/js/lists/radiobuttonlist/js.inc +0 -0
  245. data/js/lists/radiobuttonlist/radiobuttonlist.js +116 -0
  246. data/js/util/reloadapp/js.inc +0 -0
  247. data/js/util/reloadapp/reloadapp.js +152 -0
  248. data/js/util/reloadapp/themes/default/reloadapp_warning-ie6.gif +0 -0
  249. data/js/util/reloadapp/themes/default/reloadapp_warning.png +0 -0
  250. data/js/util/sha/js.inc +0 -0
  251. data/js/util/sha/sha.js +426 -0
  252. data/js/views/centerview/centerview.js +75 -0
  253. data/js/views/centerview/js.inc +0 -0
  254. data/js/views/inlineview/inlineview.js +15 -0
  255. data/js/views/inlineview/js.inc +0 -0
  256. data/js/views/scrollview/js.inc +0 -0
  257. data/js/views/scrollview/scrollview.js +40 -0
  258. data/lib/conf/argv.rb +850 -0
  259. data/lib/conf/default.rb +219 -0
  260. data/lib/daemon/daemon.rb +387 -0
  261. data/lib/daemon/sigcomm.rb +64 -0
  262. data/lib/http/broker.rb +150 -0
  263. data/lib/http/rackup.rb +91 -0
  264. data/lib/http/request.rb +66 -0
  265. data/lib/http/response.rb +65 -0
  266. data/lib/plugins/dependencies.rb +285 -0
  267. data/lib/plugins/gui_plugin.rb +160 -0
  268. data/lib/plugins/guiparser.rb +123 -0
  269. data/lib/plugins/plugin.rb +438 -0
  270. data/lib/plugins/plugin_base.rb +162 -0
  271. data/lib/plugins/plugin_plugins.rb +81 -0
  272. data/lib/plugins/plugin_sqlite_db.rb +98 -0
  273. data/lib/plugins/pluginmanager.rb +635 -0
  274. data/lib/plugins/plugins.rb +169 -0
  275. data/lib/plugins/servlet.rb +108 -0
  276. data/lib/rsence.rb +32 -0
  277. data/lib/session/msg.rb +327 -0
  278. data/lib/session/sessionmanager.rb +522 -0
  279. data/lib/session/sessionstorage.rb +340 -0
  280. data/lib/transporter/transporter.rb +263 -0
  281. data/lib/util/gzstring.rb +9 -0
  282. data/lib/util/ruby19_fixes.rb +18 -0
  283. data/lib/values/hvalue.rb +378 -0
  284. data/lib/values/valuemanager.rb +172 -0
  285. data/plugins/client_pkg/client_pkg.rb +157 -0
  286. data/plugins/client_pkg/info.yaml +25 -0
  287. data/plugins/client_pkg/lib/client_pkg_build.rb +561 -0
  288. data/plugins/client_pkg/lib/client_pkg_cache.rb +50 -0
  289. data/plugins/client_pkg/lib/client_pkg_serve.rb +218 -0
  290. data/plugins/index_html/img/loading.gif +0 -0
  291. data/plugins/index_html/img/riassence.gif +0 -0
  292. data/plugins/index_html/index_html.rb +120 -0
  293. data/plugins/index_html/info.yaml +18 -0
  294. data/plugins/index_html/tmpl/index.html +15 -0
  295. data/plugins/main/info.yaml +18 -0
  296. data/plugins/main/js/main.js +84 -0
  297. data/plugins/main/main.rb +255 -0
  298. data/plugins/main/values.yaml +8 -0
  299. data/plugins/ticket/info.yaml +21 -0
  300. data/plugins/ticket/lib/common.rb +392 -0
  301. data/plugins/ticket/lib/favicon.rb +39 -0
  302. data/plugins/ticket/lib/file.rb +58 -0
  303. data/plugins/ticket/lib/img.rb +50 -0
  304. data/plugins/ticket/lib/objblob.rb +66 -0
  305. data/plugins/ticket/lib/rsrc.rb +34 -0
  306. data/plugins/ticket/lib/upload.rb +236 -0
  307. data/plugins/ticket/ticket.rb +333 -0
  308. data/setup/welcome/gui/welcome.yaml +92 -0
  309. data/setup/welcome/info.yaml +13 -0
  310. data/setup/welcome/text/welcome.html +9 -0
  311. data/setup/welcome/values.yaml +9 -0
  312. data/setup/welcome/welcome.rb +54 -0
  313. metadata +407 -0
File without changes
@@ -0,0 +1,26 @@
1
+ /* RSence
2
+ * Copyright 2010 Riassence Inc.
3
+ * http://riassence.com/
4
+ *
5
+ * You should have received a copy of the GNU General Public License along
6
+ * with this software package. If not, contact licensing@riassence.com
7
+ */
8
+
9
+ /*** = Description
10
+ ** Define default HView setting here. Will be used, when no or invalid constructor
11
+ ** options are supplied.
12
+ ***/
13
+ var//RSence.Foundation
14
+ HViewDefaults = HClass.extend({
15
+
16
+ /** The default label. A label is the "visual value" of a component that
17
+ * operates on a "hidden" value.
18
+ **/
19
+ label: "",
20
+
21
+ /** The default initial visibility of the component.
22
+ **/
23
+ visible: true
24
+
25
+ });
26
+
@@ -0,0 +1,171 @@
1
+ /* RSence
2
+ * Copyright 2009 Riassence Inc.
3
+ * http://riassence.com/
4
+ *
5
+ * You should have received a copy of the GNU General Public License along
6
+ * with this software package. If not, contact licensing@riassence.com
7
+ */
8
+
9
+ /*** = Description
10
+ ** This class is still at experimental phase.
11
+ ** Please assume that the API _will_ change later.
12
+ ** HCheckboxList is a combined list of HCheckboxes.
13
+ **
14
+ ***/
15
+ var//RSence.Lists
16
+ HCheckboxList = HControl.extend({
17
+
18
+ /** = Description
19
+ * Draws borders with 1px and sets 'overflow' to 'auto'.
20
+ *
21
+ **/
22
+ drawSubviews: function(){
23
+ this.setStyle('border','1px solid #999');
24
+ this.setStyle('overflow','auto');
25
+ },
26
+ listItems: [],
27
+ listItemViews: [],
28
+ ListCheckbox: HCheckbox.extend({
29
+
30
+ /** = Description
31
+ * Adds listValues to the parent if they are true otherwise deletes them.
32
+ *
33
+ **/
34
+ refreshValue: function(){
35
+ this.base();
36
+ if(this.value === true){
37
+ this.parent.addItem( this.options.listValue );
38
+ }
39
+ else{
40
+ this.parent.delItem( this.options.listValue );
41
+ }
42
+ }
43
+ }),
44
+
45
+ /** = Description
46
+ * Checks if +_listValue+ can be found from the values. Adds the value
47
+ * if it can't be found.
48
+ *
49
+ * = Parameters
50
+ * +_listValue+:: listValue to add.
51
+ *
52
+ **/
53
+ addItem: function( _listValue ){
54
+ if(this.value.indexOf(_listValue) === -1){
55
+ var _newValue = [], i = 0;
56
+ for( ; i < this.value.length; i++ ){
57
+ _newValue.push( this.value[i] );
58
+ }
59
+ _newValue.push( _listValue );
60
+ this.setValue( _newValue );
61
+ }
62
+ },
63
+
64
+ /** = Description
65
+ * Checks if the item can be found from this.value and deletes it
66
+ * in case it can be found.
67
+ *
68
+ * = Parameters
69
+ * +_listValue+:: A listValue to delete.
70
+ *
71
+ **/
72
+ delItem: function( _listValue ){
73
+ var _listIndex = this.value.indexOf(_listValue);
74
+ if(_listIndex !== -1){
75
+ var _newValue = [], i = 0;
76
+ for( ; i < this.value.length; i++ ){
77
+ if(this.value[i] !== _listValue){
78
+ _newValue.push( this.value[i] );
79
+ }
80
+ }
81
+ this.setValue( _newValue );
82
+ }
83
+ },
84
+
85
+ /** = Description
86
+ * Setter function for listItems and listImetViews. Destroys
87
+ * the old ListCheckboxes before creating the new ones based on the
88
+ * listItems given as an parameter.
89
+ *
90
+ * = Parameters
91
+ * +_listItems+:: listItems is an array-packed array, where each index in the
92
+ * surrounding array contains a [ value, label ] pair.
93
+ * The value is mapped to the value of the HRadiobuttonList
94
+ * instance when its HRadiobutton instance is selected.
95
+ *
96
+ **/
97
+ setListItems: function(_listItems){
98
+ var _listItem,
99
+ _value,
100
+ _label,
101
+ _checked,
102
+ _checkbox,
103
+ i = 0;
104
+ for ( ; i < this.listItemViews.length; i++ ) {
105
+ try {
106
+ this.listItemViews[i].die();
107
+ }
108
+ catch(e) {
109
+ console.log('HCheckboxList, setListItems item destruction error: ',e);
110
+ }
111
+ }
112
+ this.listItems = _listItems;
113
+ this.listItemViews = [];
114
+ for ( i = 0 ; i < _listItems.length; i++ ){
115
+ _listItem = _listItems[i];
116
+ _value = _listItem[0];
117
+ _label = _listItem[1];
118
+ _checked = (this.value.indexOf( _value ) !== -1);
119
+ _checkbox = this.ListCheckbox.nu(
120
+ [ 4, (i*23)+4, null, 23, 4, null ],
121
+ this, {
122
+ label: _label,
123
+ value: _checked,
124
+ listValue: _value
125
+ }
126
+ );
127
+ this.listItemViews[i] = _checkbox;
128
+ }
129
+ this.refreshValue();
130
+ },
131
+
132
+ /** = Description
133
+ * Sets listItems and ListItemViews to null and calls
134
+ * the inherited destructor.
135
+ *
136
+ **/
137
+ die: function(){
138
+ this.listItems = null;
139
+ this.listItemViews = null;
140
+ this.base();
141
+ },
142
+
143
+ /** = Description
144
+ * Checks whether there are listItemViews and if there are,
145
+ * refreshes their state.
146
+ *
147
+ * = Returns
148
+ * +self+
149
+ *
150
+ **/
151
+ refreshValue: function(){
152
+ if(this.listItemViews.length === 0){
153
+ return this;
154
+ }
155
+ var _value = this.value,
156
+ _listItems = this.listItems,
157
+ _listItemValue,
158
+ _selectedItems = [],
159
+ i = 0,
160
+ _isSelected;
161
+ for( ; i < _listItems.length; i++ ){
162
+ _listItemValue = _listItems[i][0];
163
+ _isSelected = (_value.indexOf( _listItemValue ) !== -1);
164
+ this.listItemViews[i].setValue( _isSelected );
165
+ if(_isSelected){
166
+ _selectedItems.push( _listItemValue );
167
+ }
168
+ }
169
+ return this;
170
+ }
171
+ });
File without changes
File without changes
@@ -0,0 +1,88 @@
1
+ /* RSence
2
+ * Copyright 2009 Riassence Inc.
3
+ * http://riassence.com/
4
+ *
5
+ * You should have received a copy of the GNU General Public License along
6
+ * with this software package. If not, contact licensing@riassence.com
7
+ */
8
+
9
+
10
+ /*** = Description
11
+ ** HListItems is uses an array-packed list of hash objects as its value.
12
+ ##
13
+ ## == Value as Array of Hashes:
14
+ ** Each item in the array should have a 'label' and a 'value' key.
15
+ ** The 'label' key of each item is used as the label for the HRadiobutton in the list.
16
+ ** The 'value' key of each item is the value used for the output.
17
+ ##
18
+ ## == Value as Array of strings or numerals
19
+ ## Each Item like with hash, except the item is both label and value. Each item should
20
+ ## be unique.
21
+ ##
22
+ ## == Important
23
+ ** The parent object of a HListItem needs to be a compatible hash, like HRadiobuttonList.
24
+ ##
25
+ ***/
26
+ var//RSence.Lists
27
+ HListItems = HValueResponder.extend({
28
+
29
+ constructor: function( _rect, _parent, _options ){
30
+ this.parent = _parent;
31
+ if (_options instanceof Object) {
32
+ if (_options['valueObj'] !== undefined) {
33
+ _options.valueObj.bind( this );
34
+ }
35
+ else if(_options['value'] !== undefined) {
36
+ this.value = _options.value;
37
+ this.refresh();
38
+ }
39
+ }
40
+ },
41
+ _warningMessage: function(_messageText){
42
+ console.log("Warning; HListItems: "+_messageText);
43
+ },
44
+
45
+ /** = Description
46
+ * Iterates through this.value array and calls
47
+ * the setListItems function of the parent class.
48
+ *
49
+ **/
50
+ refresh: function(){
51
+ if ( this.value instanceof Array ) {
52
+ var _listItems = [],
53
+ _row, _rowType,
54
+ _label, _value,
55
+ i = 0;
56
+ for ( ; i < this.value.length ; i++ ){
57
+ _row = this.value[i];
58
+ _rowType = COMM.Values.type( _row );
59
+ // console.log('row:',_row,' rowType:',_rowType);
60
+ // hashes
61
+ if ( _rowType === 'h' ) {
62
+ _label = _row['label'];
63
+ _value = _row['value'];
64
+ if ( _label === undefined || _value === undefined ){
65
+ this._warningMessage( "The value or label of row "+_row+" is undefined (ignored)" );
66
+ }
67
+ _listItems.push( [_value, _label] );
68
+ }
69
+ // Arrays as-is
70
+ else if ( _rowType == 'a' ){
71
+ _listItems.push( _row );
72
+ }
73
+ // strings and integers
74
+ else if ( ['s','n'].indexOf(_rowType) !== -1 ){
75
+ _label = _row.toString();
76
+ _value = _row;
77
+ _listItems.push( [_value, _label] );
78
+ }
79
+ else {
80
+ this._warningMessage( "The row "+_row+" is has unsupported row type: '"+_rowType+"' (ignored)" );
81
+ }
82
+ }
83
+ this.parent.setListItems( _listItems );
84
+ }
85
+ }
86
+ });
87
+
88
+
File without changes
@@ -0,0 +1,326 @@
1
+ /* RSence
2
+ * Copyright 2010 Riassence Inc.
3
+ * http://riassence.com/
4
+ *
5
+ * You should have received a copy of the GNU General Public License along
6
+ * with this software package. If not, contact licensing@riassence.com
7
+ */
8
+
9
+ /*** = Description
10
+ ** HPropertyList uses any JSON-compliant structure as its value and displays
11
+ ** its content hierarchically in three columns:
12
+ ** - Key
13
+ ** - Type
14
+ ** - Value
15
+ **
16
+ ***/
17
+ var//RSence.Lists
18
+ HPropertyList = HControl.extend({
19
+ keyColumnWidth: 100,
20
+ rowHeight: 15,
21
+ keyIndent: 8,
22
+ drawSubviews: function(){
23
+ this.propertyItems = [];
24
+ this.keyRowStyle += 'height:'+this.rowHeight+'px;';
25
+ this.typeRowStyle += 'height:'+this.rowHeight+'px;';
26
+ this.valueRowStyle += 'height:'+this.rowHeight+'px;';
27
+ this.rowSeparatorStyle += 'height:'+this.rowHeight+'px;';
28
+ this.setStyle('font-size','11px');
29
+ this.setStyle('overflow-y','auto');
30
+ this.keyColumn = HView.nu(
31
+ [ 0, 0, this.keyColumnWidth, 24 ],
32
+ this, {
33
+ style: [ [ 'border-right', '1px solid #999' ] ]
34
+ }
35
+ );
36
+ this.typeColumn = HView.nu(
37
+ [ this.keyColumnWidth, 0, 80, 24 ],
38
+ this, {
39
+ style: [ [ 'border-right', '1px solid #999' ] ]
40
+ }
41
+ );
42
+ this.valueColumn = HView.nu(
43
+ [ this.keyColumnWidth + 80, 0, 0, 24, 0, null ],
44
+ this
45
+ );
46
+ this.header = HView.extend({
47
+ drawSubviews: function(){
48
+ var
49
+ keyColumnWidth = this.parent.keyColumnWidth;
50
+ this.keyLabel = HStringView.nu(
51
+ [ 0, 0, keyColumnWidth, 24 ],
52
+ this, {
53
+ value: '<b>Key</b>',
54
+ style: [
55
+ [ 'text-align', 'middle' ],
56
+ [ 'text-indent', '16px' ],
57
+ [ 'line-height', '24px' ]
58
+ ]
59
+ }
60
+ );
61
+ this.typeLabel = HStringView.nu(
62
+ [ keyColumnWidth, 0, 80, 24 ],
63
+ this, {
64
+ value: '<b>Type</b>',
65
+ style: [
66
+ [ 'text-align', 'middle' ],
67
+ [ 'text-indent', '8px' ],
68
+ [ 'line-height', '24px' ]
69
+ ]
70
+ }
71
+ );
72
+ this.valueLabel = HStringView.nu(
73
+ [ keyColumnWidth + 80, 0, 80, 24, 0, null ],
74
+ this, {
75
+ value: '<b>Value</b>',
76
+ style: [
77
+ [ 'text-align', 'middle' ],
78
+ [ 'text-indent', '8px' ],
79
+ [ 'line-height', '24px' ]
80
+ ]
81
+ }
82
+ );
83
+ }
84
+ }).nu(
85
+ [ 0, 0, null, 24, 0, null ],
86
+ this, {
87
+ style: [ [ 'border-bottom', '1px solid #999' ] ]
88
+ }
89
+ );
90
+ this.resizeColumns = HControl.extend({
91
+ drag: function(x,y){
92
+ var
93
+ parentX = x - this.parent.pageX(),
94
+ keyColumnWidth = parentX-1,
95
+ parentWidth = ELEM.getVisibleSize( this.parent.elemId )[0];
96
+ if(keyColumnWidth < 80){
97
+ keyColumnWidth = 80;
98
+ }
99
+ else if ( keyColumnWidth > parentWidth-160 ){
100
+ keyColumnWidth = parentWidth - 160;
101
+ }
102
+ selfX = keyColumnWidth - 2;
103
+ this.rect.offsetTo( selfX, 0 ); this.drawRect();
104
+ this.parent.keyColumn.rect.setRight( keyColumnWidth ); this.parent.keyColumn.drawRect();
105
+ this.parent.header.keyLabel.rect.setWidth( keyColumnWidth ); this.parent.header.keyLabel.drawRect();
106
+ this.parent.typeColumn.rect.offsetTo( keyColumnWidth, 0 ); this.parent.typeColumn.drawRect();
107
+ this.parent.header.typeLabel.rect.offsetTo( keyColumnWidth, 0 ); this.parent.header.typeLabel.drawRect();
108
+ this.parent.valueColumn.rect.setLeft( keyColumnWidth+80 ); this.parent.valueColumn.drawRect();
109
+ this.parent.header.valueLabel.rect.setLeft( keyColumnWidth+80 ); this.parent.header.valueLabel.drawRect();
110
+ this.parent.keyColumnWidth = keyColumnWidth;
111
+ }
112
+ }).nu(
113
+ [ this.keyColumnWidth - 2, 0, 5, 25 ],
114
+ this, {
115
+ events: { draggable: true },
116
+ style: [
117
+ [ 'cursor', 'ew-resize' ]
118
+ ]
119
+ }
120
+ );
121
+ },
122
+ arrayTokens: function( arr, name ){
123
+ this.addToken( 'a', name, '('+arr.length+' items)' );
124
+ this.nodeProperties.left += this.keyIndent;
125
+ var i = 0, val, type;
126
+ for( ; i < arr.length; i++ ){
127
+ val = arr[i];
128
+ type = this.itemType( val );
129
+ if( type == 'h' ){
130
+ this.hashTokens( val, i );
131
+ }
132
+ else if ( type == 'a' ){
133
+ this.arrayTokens( val, i );
134
+ }
135
+ else {
136
+ this.addToken( type, i, val );
137
+ }
138
+ }
139
+ this.nodeProperties.left -= this.keyIndent;
140
+ },
141
+ hashLen: function( hash ){
142
+ var count = 0;
143
+ for( var item in hash ){
144
+ count += 1;
145
+ }
146
+ return count;
147
+ },
148
+ hashSortedKeys: function( hash ){
149
+ var
150
+ keys = [],
151
+ key;
152
+ for( key in hash ){
153
+ keys.push( key );
154
+ }
155
+ return keys.sort();
156
+ },
157
+ hashTokens: function( hash, name ){
158
+ this.addToken( 'h', name, '('+this.hashLen( hash )+' items)' );
159
+ this.nodeProperties.left += this.keyIndent;
160
+ var key, val, type, i = 0, keys = this.hashSortedKeys( hash );
161
+ for( ; i < keys.length; i++ ){
162
+ key = keys[i];
163
+ val = hash[key];
164
+ type = this.itemType( val );
165
+ if( type == 'h' ){
166
+ this.hashTokens( val, key );
167
+ }
168
+ else if ( type == 'a' ){
169
+ this.arrayTokens( val, key );
170
+ }
171
+ else {
172
+ this.addToken( type, key, val );
173
+ }
174
+ }
175
+ this.nodeProperties.left -= this.keyIndent;
176
+ },
177
+ addToken: function( type, name, value ){
178
+ this.valueTokens.push( {
179
+ top: this.nodeProperties.top,
180
+ left: this.nodeProperties.left,
181
+ type: type,
182
+ name: name,
183
+ value: value
184
+ } );
185
+ this.nodeProperties.top += this.rowHeight;
186
+ },
187
+ itemType: function( item ){
188
+ return COMM.Values.type( item );
189
+ },
190
+ typeNames: {
191
+ h: 'Hash',
192
+ a: 'Array',
193
+ s: 'String',
194
+ n: 'Number',
195
+ b: 'Boolean'
196
+ },
197
+ keyRowStyle: "position:absolute;z-index:1;right:0px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;",
198
+ addKeyColumnControl: function( token, i ){
199
+ var elemId;
200
+ if( i >= this.propertyItems.length ){
201
+ elemId = ELEM.make( this.keyColumn.elemId );
202
+ this.propertyItems.push( elemId );
203
+ ELEM.setCSS( elemId, 'top:'+token.top+'px;'+this.keyRowStyle );
204
+ }
205
+ else {
206
+ elemId = this.propertyItems[i];
207
+ }
208
+ ELEM.setStyle( elemId, 'left', (token.left+10)+'px' );
209
+ if( token.type === 'h' || token.type === 'a' ){
210
+ ELEM.setStyle( elemId, 'font-weight', 'bold' );
211
+ }
212
+ else {
213
+ ELEM.setStyle( elemId, 'font-weight', 'inherit' );
214
+ }
215
+ ELEM.setHTML( elemId, token.name );
216
+ },
217
+ typeRowStyle: "position:absolute;z-index:1;left:8px;width:72px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;",
218
+ addTypeColumnControl: function( token, i ){
219
+ var elemId;
220
+ if( i >= this.propertyItems.length ){
221
+ elemId = ELEM.make( this.typeColumn.elemId );
222
+ this.propertyItems.push( elemId );
223
+ ELEM.setCSS( elemId, 'top:'+token.top+'px;'+this.typeRowStyle );
224
+ }
225
+ else {
226
+ elemId = this.propertyItems[i];
227
+ }
228
+ ELEM.setHTML( elemId, this.typeNames[token.type] );
229
+ },
230
+ valueRowStyle: "position:absolute;z-index:1;left:8px;right:0px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;",
231
+ addValueColumnControl: function( token, i ){
232
+ var elemId, value;
233
+ if( i >= this.propertyItems.length ){
234
+ elemId = ELEM.make( this.valueColumn.elemId );
235
+ this.propertyItems.push( elemId );
236
+ ELEM.setCSS( elemId, 'top:'+token.top+'px;'+this.valueRowStyle );
237
+ }
238
+ else {
239
+ elemId = this.propertyItems[i];
240
+ }
241
+ if( token.type === 'h' || token.type === 'a' ){
242
+ ELEM.setStyle( elemId, 'font-style', 'italic' );
243
+ }
244
+ else {
245
+ ELEM.setStyle( elemId, 'font-style', 'inherit' );
246
+ }
247
+ value = token.value;
248
+ if(value===true){
249
+ value = 'true';
250
+ }
251
+ else if(value===false){
252
+ value = 'false';
253
+ }
254
+ else if(value===undefined){
255
+ value = 'undefined';
256
+ }
257
+ else if(value===null){
258
+ value = 'null';
259
+ }
260
+ ELEM.setHTML( elemId, value );
261
+ },
262
+ rowSeparatorStyle: "position:absolute;z-index:0;left:0px;right:0px;font-size:0px;height:1px;border-bottom:1px solid #ccc;overflow:hidden;text-overflow:ellipsis;",
263
+ addRowSeparator: function( token, i, even ){
264
+ if( i >= this.propertyItems.length ){
265
+ var elemId = ELEM.make( this.elemId );
266
+ this.propertyItems.push( elemId );
267
+ ELEM.setCSS( elemId, 'top:'+token.top+'px;'+this.rowSeparatorStyle+'background-color:'+(even?'#eee':'#ddd')+';' );
268
+ }
269
+ },
270
+ die: function(){
271
+ var
272
+ i=0,
273
+ propLen = this.propertyItems.length,
274
+ elemId;
275
+ for(;i<propLen;i++){
276
+ elemId = this.propertyItems.pop();
277
+ ELEM.del( elemId );
278
+ }
279
+ this.base();
280
+ },
281
+ refreshValue: function(){
282
+ if(this['propertyItems']===undefined){
283
+ return;
284
+ }
285
+ this.valueTokens = [];
286
+ this.nodeProperties = {
287
+ top: 28,
288
+ left: 8
289
+ };
290
+ var rootType = this.itemType( this.value );
291
+ if( rootType == 'h' ){
292
+ this.hashTokens( this.value, 'Root' );
293
+ }
294
+ else if( rootType == 'a' ){
295
+ this.arrayTokens( this.value, 'Root' );
296
+ }
297
+ else {
298
+ this.addToken( rootType, 'Root', this.value );
299
+ }
300
+ var i, token;
301
+ if(this['propertyItems'] === undefined){
302
+ this.propertyItems = [];
303
+ }
304
+ var colHeight = 0, colId = 0;
305
+ for( i = 0; i < this.valueTokens.length; i ++ ) {
306
+ token = this.valueTokens[i];
307
+ this.addRowSeparator( token, colId, (i%2===0) ); colId++;
308
+ this.addKeyColumnControl( token, colId ); colId++;
309
+ this.addTypeColumnControl( token, colId ); colId++;
310
+ this.addValueColumnControl( token, colId ); colId++;
311
+ colHeight = token.top+this.rowHeight;
312
+ }
313
+ var propItemsLen = this.propertyItems.length, elemId;
314
+ for( i = colId; i < propItemsLen; i++ ){
315
+ elemId = this.propertyItems.pop();
316
+ ELEM.del( elemId );
317
+ }
318
+ this.keyColumn.bringToFront();
319
+ this.typeColumn.bringToFront();
320
+ this.valueColumn.bringToFront();
321
+ this.resizeColumns.bringToFront();
322
+ this.keyColumn.rect.setHeight( colHeight ); this.keyColumn.drawRect();
323
+ this.typeColumn.rect.setHeight( colHeight ); this.typeColumn.drawRect();
324
+ this.valueColumn.rect.setHeight( colHeight ); this.valueColumn.drawRect();
325
+ }
326
+ });
File without changes