rjack-solr 3.6.2.0-java → 4.0.0.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (315) hide show
  1. data/History.rdoc +5 -0
  2. data/Manifest.txt +268 -33
  3. data/NOTICE.txt +1 -1
  4. data/README.rdoc +6 -6
  5. data/assembly.xml +2 -2
  6. data/bin/rjack-solr-fg +1 -1
  7. data/init/rjack-solr +2 -2
  8. data/lib/rjack-solr.rb +7 -2
  9. data/lib/rjack-solr/base.rb +2 -2
  10. data/lib/rjack-solr/commons-cli-1.2.jar +0 -0
  11. data/lib/rjack-solr/config.rb +1 -1
  12. data/lib/rjack-solr/server.rb +1 -1
  13. data/lib/rjack-solr/solr-core-4.0.0.jar +0 -0
  14. data/lib/rjack-solr/solr-solrj-4.0.0.jar +0 -0
  15. data/pom.xml +19 -6
  16. data/test/test_solr.rb +7 -5
  17. data/webapp/META-INF/LICENSE.txt +0 -940
  18. data/webapp/META-INF/MANIFEST.MF +5 -5
  19. data/webapp/META-INF/NOTICE.txt +160 -93
  20. data/webapp/WEB-INF/web.xml +57 -43
  21. data/webapp/admin.html +140 -0
  22. data/webapp/css/chosen.css +392 -0
  23. data/webapp/css/styles/analysis.css +293 -0
  24. data/webapp/css/styles/cloud.css +331 -0
  25. data/webapp/css/styles/common.css +593 -0
  26. data/webapp/css/styles/cores.css +203 -0
  27. data/webapp/css/styles/dashboard.css +127 -0
  28. data/webapp/css/styles/dataimport.css +222 -0
  29. data/webapp/css/styles/index.css +195 -0
  30. data/webapp/css/styles/java-properties.css +33 -0
  31. data/webapp/css/styles/logging.css +323 -0
  32. data/webapp/css/styles/menu.css +272 -0
  33. data/webapp/css/styles/plugins.css +175 -0
  34. data/webapp/css/styles/query.css +137 -0
  35. data/webapp/css/styles/replication.css +494 -0
  36. data/webapp/css/styles/schema-browser.css +476 -0
  37. data/webapp/css/styles/threads.css +153 -0
  38. data/webapp/img/ZeroClipboard.swf +0 -0
  39. data/webapp/img/chosen-sprite.png +0 -0
  40. data/webapp/img/div.gif +0 -0
  41. data/webapp/{admin → img}/favicon.ico +0 -0
  42. data/webapp/img/filetypes/7z.png +0 -0
  43. data/webapp/img/filetypes/README +27 -0
  44. data/webapp/img/filetypes/ai.png +0 -0
  45. data/webapp/img/filetypes/aiff.png +0 -0
  46. data/webapp/img/filetypes/asc.png +0 -0
  47. data/webapp/img/filetypes/audio.png +0 -0
  48. data/webapp/img/filetypes/bin.png +0 -0
  49. data/webapp/img/filetypes/bz2.png +0 -0
  50. data/webapp/img/filetypes/c.png +0 -0
  51. data/webapp/img/filetypes/cfc.png +0 -0
  52. data/webapp/img/filetypes/cfm.png +0 -0
  53. data/webapp/img/filetypes/chm.png +0 -0
  54. data/webapp/img/filetypes/class.png +0 -0
  55. data/webapp/img/filetypes/conf.png +0 -0
  56. data/webapp/img/filetypes/cpp.png +0 -0
  57. data/webapp/img/filetypes/cs.png +0 -0
  58. data/webapp/img/filetypes/css.png +0 -0
  59. data/webapp/img/filetypes/csv.png +0 -0
  60. data/webapp/img/filetypes/deb.png +0 -0
  61. data/webapp/img/filetypes/divx.png +0 -0
  62. data/webapp/img/filetypes/doc.png +0 -0
  63. data/webapp/img/filetypes/dot.png +0 -0
  64. data/webapp/img/filetypes/eml.png +0 -0
  65. data/webapp/img/filetypes/enc.png +0 -0
  66. data/webapp/img/filetypes/file.png +0 -0
  67. data/webapp/img/filetypes/gif.png +0 -0
  68. data/webapp/img/filetypes/gz.png +0 -0
  69. data/webapp/img/filetypes/hlp.png +0 -0
  70. data/webapp/img/filetypes/htm.png +0 -0
  71. data/webapp/img/filetypes/html.png +0 -0
  72. data/webapp/img/filetypes/image.png +0 -0
  73. data/webapp/img/filetypes/iso.png +0 -0
  74. data/webapp/img/filetypes/jar.png +0 -0
  75. data/webapp/img/filetypes/java.png +0 -0
  76. data/webapp/img/filetypes/jpeg.png +0 -0
  77. data/webapp/img/filetypes/jpg.png +0 -0
  78. data/webapp/img/filetypes/js.png +0 -0
  79. data/webapp/img/filetypes/lua.png +0 -0
  80. data/webapp/img/filetypes/m.png +0 -0
  81. data/webapp/img/filetypes/mm.png +0 -0
  82. data/webapp/img/filetypes/mov.png +0 -0
  83. data/webapp/img/filetypes/mp3.png +0 -0
  84. data/webapp/img/filetypes/mpg.png +0 -0
  85. data/webapp/img/filetypes/odc.png +0 -0
  86. data/webapp/img/filetypes/odf.png +0 -0
  87. data/webapp/img/filetypes/odg.png +0 -0
  88. data/webapp/img/filetypes/odi.png +0 -0
  89. data/webapp/img/filetypes/odp.png +0 -0
  90. data/webapp/img/filetypes/ods.png +0 -0
  91. data/webapp/img/filetypes/odt.png +0 -0
  92. data/webapp/img/filetypes/ogg.png +0 -0
  93. data/webapp/img/filetypes/pdf.png +0 -0
  94. data/webapp/img/filetypes/pgp.png +0 -0
  95. data/webapp/img/filetypes/php.png +0 -0
  96. data/webapp/img/filetypes/pl.png +0 -0
  97. data/webapp/img/filetypes/png.png +0 -0
  98. data/webapp/img/filetypes/ppt.png +0 -0
  99. data/webapp/img/filetypes/ps.png +0 -0
  100. data/webapp/img/filetypes/py.png +0 -0
  101. data/webapp/img/filetypes/ram.png +0 -0
  102. data/webapp/img/filetypes/rar.png +0 -0
  103. data/webapp/img/filetypes/rb.png +0 -0
  104. data/webapp/img/filetypes/rm.png +0 -0
  105. data/webapp/img/filetypes/rpm.png +0 -0
  106. data/webapp/img/filetypes/rtf.png +0 -0
  107. data/webapp/img/filetypes/sig.png +0 -0
  108. data/webapp/img/filetypes/sql.png +0 -0
  109. data/webapp/img/filetypes/swf.png +0 -0
  110. data/webapp/img/filetypes/sxc.png +0 -0
  111. data/webapp/img/filetypes/sxd.png +0 -0
  112. data/webapp/img/filetypes/sxi.png +0 -0
  113. data/webapp/img/filetypes/sxw.png +0 -0
  114. data/webapp/img/filetypes/tar.png +0 -0
  115. data/webapp/img/filetypes/tex.png +0 -0
  116. data/webapp/img/filetypes/tgz.png +0 -0
  117. data/webapp/img/filetypes/txt.png +0 -0
  118. data/webapp/img/filetypes/vcf.png +0 -0
  119. data/webapp/img/filetypes/video.png +0 -0
  120. data/webapp/img/filetypes/vsd.png +0 -0
  121. data/webapp/img/filetypes/wav.png +0 -0
  122. data/webapp/img/filetypes/wma.png +0 -0
  123. data/webapp/img/filetypes/wmv.png +0 -0
  124. data/webapp/img/filetypes/xls.png +0 -0
  125. data/webapp/img/filetypes/xml.png +0 -0
  126. data/webapp/img/filetypes/xpi.png +0 -0
  127. data/webapp/img/filetypes/xvid.png +0 -0
  128. data/webapp/img/filetypes/zip.png +0 -0
  129. data/webapp/img/ico/arrow-000-small.png +0 -0
  130. data/webapp/img/ico/arrow-circle.png +0 -0
  131. data/webapp/img/ico/arrow-switch.png +0 -0
  132. data/webapp/img/ico/asterisk.png +0 -0
  133. data/webapp/img/ico/battery.png +0 -0
  134. data/webapp/img/ico/block-small.png +0 -0
  135. data/webapp/img/ico/block.png +0 -0
  136. data/webapp/img/ico/book-open-text.png +0 -0
  137. data/webapp/img/ico/box.png +0 -0
  138. data/webapp/img/ico/bug.png +0 -0
  139. data/webapp/img/ico/chart.png +0 -0
  140. data/webapp/img/ico/chevron-small-expand.png +0 -0
  141. data/webapp/img/ico/chevron-small.png +0 -0
  142. data/webapp/img/ico/clipboard-list.png +0 -0
  143. data/webapp/img/ico/clipboard-paste-document-text.png +0 -0
  144. data/webapp/img/ico/clipboard-paste.png +0 -0
  145. data/webapp/img/ico/clock-select-remain.png +0 -0
  146. data/webapp/img/ico/clock-select.png +0 -0
  147. data/webapp/img/ico/construction.png +0 -0
  148. data/webapp/img/ico/cross-0.png +0 -0
  149. data/webapp/img/ico/cross-1.png +0 -0
  150. data/webapp/img/ico/cross.png +0 -0
  151. data/webapp/img/ico/dashboard.png +0 -0
  152. data/webapp/img/ico/database.png +0 -0
  153. data/webapp/img/ico/databases.png +0 -0
  154. data/webapp/img/ico/disk-black.png +0 -0
  155. data/webapp/img/ico/document-convert.png +0 -0
  156. data/webapp/img/ico/document-import.png +0 -0
  157. data/webapp/img/ico/document-list.png +0 -0
  158. data/webapp/img/ico/document-text.png +0 -0
  159. data/webapp/img/ico/download-cloud.png +0 -0
  160. data/webapp/img/ico/exclamation-button.png +0 -0
  161. data/webapp/img/ico/eye.png +0 -0
  162. data/webapp/img/ico/folder-export.png +0 -0
  163. data/webapp/img/ico/folder-tree.png +0 -0
  164. data/webapp/img/ico/folder.png +0 -0
  165. data/webapp/img/ico/funnel-small.png +0 -0
  166. data/webapp/img/ico/funnel.png +0 -0
  167. data/webapp/img/ico/gear.png +0 -0
  168. data/webapp/img/ico/globe-network.png +0 -0
  169. data/webapp/img/ico/globe.png +0 -0
  170. data/webapp/img/ico/hammer-screwdriver.png +0 -0
  171. data/webapp/img/ico/hand.png +0 -0
  172. data/webapp/img/ico/highlighter-text.png +0 -0
  173. data/webapp/img/ico/hourglass--exclamation.png +0 -0
  174. data/webapp/img/ico/hourglass.png +0 -0
  175. data/webapp/img/ico/inbox-document-text.png +0 -0
  176. data/webapp/img/ico/information-button.png +0 -0
  177. data/webapp/img/ico/information-small.png +0 -0
  178. data/webapp/img/ico/information-white.png +0 -0
  179. data/webapp/img/ico/information.png +0 -0
  180. data/webapp/img/ico/jar.png +0 -0
  181. data/webapp/img/ico/magnifier.png +0 -0
  182. data/webapp/img/ico/mail.png +0 -0
  183. data/webapp/img/ico/memory.png +0 -0
  184. data/webapp/img/ico/molecule.png +0 -0
  185. data/webapp/img/ico/network-cloud.png +0 -0
  186. data/webapp/img/ico/network-status-away.png +0 -0
  187. data/webapp/img/ico/network-status-busy.png +0 -0
  188. data/webapp/img/ico/network-status-offline.png +0 -0
  189. data/webapp/img/ico/network-status.png +0 -0
  190. data/webapp/img/ico/network.png +0 -0
  191. data/webapp/img/ico/node-design.png +0 -0
  192. data/webapp/img/ico/node-master.png +0 -0
  193. data/webapp/img/ico/node-select.png +0 -0
  194. data/webapp/img/ico/node-slave.png +0 -0
  195. data/webapp/img/ico/node.png +0 -0
  196. data/webapp/img/ico/pencil-small.png +0 -0
  197. data/webapp/img/ico/plus-button.png +0 -0
  198. data/webapp/img/ico/processor.png +0 -0
  199. data/webapp/img/ico/prohibition.png +0 -0
  200. data/webapp/img/ico/property.png +0 -0
  201. data/webapp/img/ico/question-small-white.png +0 -0
  202. data/webapp/img/ico/question-white.png +0 -0
  203. data/webapp/img/ico/question.png +0 -0
  204. data/webapp/img/ico/receipt-invoice.png +0 -0
  205. data/webapp/img/ico/receipt.png +0 -0
  206. data/webapp/img/ico/script-code.png +0 -0
  207. data/webapp/img/ico/server-cast.png +0 -0
  208. data/webapp/img/ico/server.png +0 -0
  209. data/webapp/img/ico/sitemap.png +0 -0
  210. data/webapp/img/ico/slash.png +0 -0
  211. data/webapp/img/ico/status-away.png +0 -0
  212. data/webapp/img/ico/status-busy.png +0 -0
  213. data/webapp/img/ico/status-offline.png +0 -0
  214. data/webapp/img/ico/status.png +0 -0
  215. data/webapp/img/ico/system-monitor--exclamation.png +0 -0
  216. data/webapp/img/ico/system-monitor.png +0 -0
  217. data/webapp/img/ico/table.png +0 -0
  218. data/webapp/img/ico/terminal.png +0 -0
  219. data/webapp/img/ico/tick-circle.png +0 -0
  220. data/webapp/img/ico/tick-red.png +0 -0
  221. data/webapp/img/ico/tick.png +0 -0
  222. data/webapp/img/ico/toggle-small-expand.png +0 -0
  223. data/webapp/img/ico/toggle-small.png +0 -0
  224. data/webapp/img/ico/toolbox.png +0 -0
  225. data/webapp/img/ico/ui-accordion.png +0 -0
  226. data/webapp/img/ico/ui-address-bar.png +0 -0
  227. data/webapp/img/ico/ui-check-box-uncheck.png +0 -0
  228. data/webapp/img/ico/ui-check-box.png +0 -0
  229. data/webapp/img/ico/ui-radio-button-uncheck.png +0 -0
  230. data/webapp/img/ico/ui-radio-button.png +0 -0
  231. data/webapp/img/ico/ui-text-field-select.png +0 -0
  232. data/webapp/img/ico/users.png +0 -0
  233. data/webapp/img/ico/wooden-box.png +0 -0
  234. data/webapp/img/ico/zone.png +0 -0
  235. data/webapp/img/loader-light.gif +0 -0
  236. data/webapp/img/loader.gif +0 -0
  237. data/webapp/img/lucene-ico.png +0 -0
  238. data/webapp/img/solr-ico.png +0 -0
  239. data/webapp/{admin/solr_small.png → img/solr.png} +0 -0
  240. data/webapp/img/tree.png +0 -0
  241. data/webapp/js/lib/ZeroClipboard.js +317 -0
  242. data/webapp/js/lib/chosen.js +953 -0
  243. data/webapp/{admin/get-properties.jsp → js/lib/console.js} +13 -10
  244. data/webapp/js/lib/d3.js +9342 -0
  245. data/webapp/js/lib/highlight.js +1 -0
  246. data/webapp/{admin/jquery-1.4.3.min.js → js/lib/jquery-1.7.2.min.js} +0 -0
  247. data/webapp/js/lib/jquery.blockUI.js +499 -0
  248. data/webapp/js/lib/jquery.cookie.js +47 -0
  249. data/webapp/js/lib/jquery.form.js +782 -0
  250. data/webapp/js/lib/jquery.jstree.js +3510 -0
  251. data/webapp/js/lib/jquery.sammy.js +1856 -0
  252. data/webapp/js/lib/jquery.sparkline.js +1271 -0
  253. data/webapp/js/lib/jquery.timeago.js +165 -0
  254. data/webapp/js/lib/linker.js +48 -0
  255. data/webapp/js/lib/order.js +189 -0
  256. data/webapp/js/main.js +57 -0
  257. data/webapp/js/require.js +11319 -0
  258. data/webapp/js/scripts/analysis.js +549 -0
  259. data/webapp/js/scripts/app.js +368 -0
  260. data/webapp/js/scripts/cloud.js +719 -0
  261. data/webapp/js/scripts/cores.js +540 -0
  262. data/webapp/js/scripts/dashboard.js +540 -0
  263. data/webapp/js/scripts/dataimport.js +567 -0
  264. data/webapp/js/scripts/file.js +56 -0
  265. data/webapp/js/scripts/index.js +344 -0
  266. data/webapp/js/scripts/java-properties.js +107 -0
  267. data/webapp/js/scripts/logging.js +519 -0
  268. data/webapp/js/scripts/ping.js +72 -0
  269. data/webapp/js/scripts/plugins.js +426 -0
  270. data/webapp/js/scripts/query.js +170 -0
  271. data/webapp/js/scripts/replication.js +557 -0
  272. data/webapp/js/scripts/schema-browser.js +1206 -0
  273. data/webapp/js/scripts/threads.js +159 -0
  274. data/webapp/tpl/analysis.html +83 -0
  275. data/webapp/tpl/cloud.html +54 -0
  276. data/webapp/tpl/cores.html +215 -0
  277. data/webapp/tpl/dashboard.html +164 -0
  278. data/webapp/tpl/dataimport.html +123 -0
  279. data/webapp/tpl/index.html +250 -0
  280. data/webapp/tpl/logging.html +23 -0
  281. data/webapp/tpl/plugins.html +39 -0
  282. data/webapp/tpl/query.html +318 -0
  283. data/webapp/tpl/replication.html +207 -0
  284. data/webapp/tpl/schema-browser.html +178 -0
  285. data/webapp/tpl/threads.html +56 -0
  286. metadata +307 -40
  287. data/lib/rjack-solr/solr-core-3.6.2.jar +0 -0
  288. data/lib/rjack-solr/solr-solrj-3.6.2.jar +0 -0
  289. data/webapp/admin/_info.jsp +0 -120
  290. data/webapp/admin/action.jsp +0 -94
  291. data/webapp/admin/analysis.jsp +0 -496
  292. data/webapp/admin/analysis.xsl +0 -179
  293. data/webapp/admin/dataimport.jsp +0 -53
  294. data/webapp/admin/debug.jsp +0 -103
  295. data/webapp/admin/distributiondump.jsp +0 -160
  296. data/webapp/admin/form.jsp +0 -152
  297. data/webapp/admin/get-file.jsp +0 -72
  298. data/webapp/admin/header.jsp +0 -44
  299. data/webapp/admin/index.jsp +0 -162
  300. data/webapp/admin/meta.xsl +0 -34
  301. data/webapp/admin/ping.jsp +0 -52
  302. data/webapp/admin/ping.xsl +0 -71
  303. data/webapp/admin/raw-schema.jsp +0 -38
  304. data/webapp/admin/registry.jsp +0 -107
  305. data/webapp/admin/registry.xsl +0 -321
  306. data/webapp/admin/replication/header.jsp +0 -89
  307. data/webapp/admin/replication/index.jsp +0 -378
  308. data/webapp/admin/schema.jsp +0 -690
  309. data/webapp/admin/solr-admin.css +0 -215
  310. data/webapp/admin/stats.jsp +0 -92
  311. data/webapp/admin/stats.xsl +0 -220
  312. data/webapp/admin/tabular.xsl +0 -141
  313. data/webapp/admin/threaddump.jsp +0 -110
  314. data/webapp/admin/threaddump.xsl +0 -103
  315. data/webapp/index.jsp +0 -49
@@ -0,0 +1,519 @@
1
+ /*
2
+ Licensed to the Apache Software Foundation (ASF) under one or more
3
+ contributor license agreements. See the NOTICE file distributed with
4
+ this work for additional information regarding copyright ownership.
5
+ The ASF licenses this file to You under the Apache License, Version 2.0
6
+ (the "License"); you may not use this file except in compliance with
7
+ the License. You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ */
17
+
18
+ var loglevel_path = null;
19
+ var frame_element = null;
20
+
21
+ var logging_handler = function( response, text_status, xhr )
22
+ {
23
+ var self = this;
24
+ var loggers = response.loggers;
25
+
26
+ var levels = '<div class="selector-holder"><div class="selector">' + "\n"
27
+ + '<a class="trigger"><span><em>null</em></span></a>' + "\n"
28
+ + '<ul>' + "\n";
29
+
30
+ for( var key in response.levels )
31
+ {
32
+ var level = response.levels[key].esc();
33
+ levels += '<li><a href="#" data-level="' + level + '">' + level + '</a></li>' + "\n";
34
+ }
35
+
36
+ levels += '<li class="unset"><a href="#" data-level="unset">UNSET</a></li>' + "\n"
37
+ + '</ul>' + "\n"
38
+ + '<a class="close"><span>[x]</span></a>' + "\n"
39
+ + '</div></div>';
40
+
41
+ var logger_tree = function( filter )
42
+ {
43
+ var logger_content = '';
44
+ var filter_regex = new RegExp( '^' + filter + '\\.\\w+$' );
45
+
46
+ for( var i in loggers )
47
+ {
48
+ var logger = loggers[i];
49
+ var continue_matcher = false;
50
+
51
+ if( !filter )
52
+ {
53
+ continue_matcher = logger.name.indexOf( '.' ) !== -1;
54
+ }
55
+ else
56
+ {
57
+ continue_matcher = !logger.name.match( filter_regex );
58
+ }
59
+
60
+ if( continue_matcher )
61
+ {
62
+ continue;
63
+ }
64
+
65
+ var logger_class = '';
66
+
67
+ if( logger.set )
68
+ {
69
+ logger_class = 'set';
70
+ }
71
+
72
+ if( !logger.level )
73
+ {
74
+ logger_class = 'null';
75
+ }
76
+
77
+ var logger_name = logger.name.split( '.' );
78
+ var display_name = logger_name.pop();
79
+
80
+ var leaf_class = 'jstree-leaf';
81
+ if( logger.level )
82
+ {
83
+ leaf_class += ' level-' + logger.level.esc().toLowerCase();
84
+ }
85
+
86
+ logger_content += '<li class="' + leaf_class + '" data-logger="' + logger.name.esc() + '">';
87
+ logger_content += '<ins class="trigger jstree-icon">&nbsp;</ins>' + "\n";
88
+ logger_content += '<a href="#" class="trigger '+ logger_class + '"' ;
89
+
90
+ if( logger.level )
91
+ {
92
+ logger_content += 'rel="' + logger.level.esc() + '" ';
93
+ }
94
+
95
+ logger_content += 'title="' + logger.name.esc() + '">' + "\n";
96
+
97
+ if( 0 !== logger_name.length )
98
+ {
99
+ logger_content += '<span class="ns">' + logger_name.join( '.' ).esc() + '.</span>';
100
+ }
101
+
102
+ logger_content += '<span class="name">' + display_name.esc() + '</span>' + "\n";
103
+ logger_content += '</a>';
104
+
105
+ logger_content += levels;
106
+
107
+ var child_logger_content = logger_tree( logger.name );
108
+ if( child_logger_content )
109
+ {
110
+ logger_content += '<ul>';
111
+ logger_content += child_logger_content;
112
+ logger_content += '</ul>';
113
+ }
114
+
115
+ logger_content += '</li>';
116
+ }
117
+
118
+ return logger_content;
119
+ };
120
+
121
+ var logger_content = '<div class="block">' + "\n"
122
+ + '<h2><span>' + response.watcher.esc() + '</span></h2>' + "\n"
123
+ + '<ul class="tree jstree">' + logger_tree( null ) + '</ul>' + "\n"
124
+ + '</div>';
125
+
126
+ self
127
+ .html( logger_content );
128
+
129
+ self
130
+ .die( 'clear' )
131
+ .live
132
+ (
133
+ 'clear',
134
+ function( event )
135
+ {
136
+ $( '.open', this )
137
+ .removeClass( 'open' );
138
+ }
139
+ );
140
+
141
+ $( 'li:last-child', this )
142
+ .addClass( 'jstree-last' );
143
+
144
+ $( 'li.jstree-leaf > a', this )
145
+ .each
146
+ (
147
+ function( index, element )
148
+ {
149
+ element = $( element );
150
+ var level = element.attr( 'rel' );
151
+
152
+ if( level )
153
+ {
154
+ var selector = $( '.selector-holder', element.closest( 'li' ) );
155
+
156
+ var trigger = $( 'a.trigger', selector );
157
+
158
+ trigger
159
+ .text( level.esc() );
160
+
161
+ if( element.hasClass( 'set' ) )
162
+ {
163
+ trigger.first()
164
+ .addClass( 'set' );
165
+ }
166
+
167
+ $( 'ul a[data-level="' + level + '"]', selector ).first()
168
+ .addClass( 'level' );
169
+ }
170
+ }
171
+ )
172
+
173
+ $( '.trigger', this )
174
+ .die( 'click' )
175
+ .live
176
+ (
177
+ 'click',
178
+ function( event )
179
+ {
180
+ self.trigger( 'clear' );
181
+
182
+ $( '.selector-holder', $( this ).parents( 'li' ).first() ).first()
183
+ .trigger( 'toggle' );
184
+
185
+ return false;
186
+ }
187
+ );
188
+
189
+ $( '.selector .close', this )
190
+ .die( 'click' )
191
+ .live
192
+ (
193
+ 'click',
194
+ function( event )
195
+ {
196
+ self.trigger( 'clear' );
197
+ return false;
198
+ }
199
+ );
200
+
201
+ $( '.selector-holder', this )
202
+ .die( 'toggle')
203
+ .live
204
+ (
205
+ 'toggle',
206
+ function( event )
207
+ {
208
+ var row = $( this ).closest( 'li' );
209
+
210
+ $( 'a:first', row )
211
+ .toggleClass( 'open' );
212
+
213
+ $( '.selector-holder:first', row )
214
+ .toggleClass( 'open' );
215
+ }
216
+ );
217
+
218
+ $( '.selector ul a', this )
219
+ .die( 'click' )
220
+ .live
221
+ (
222
+ 'click',
223
+ function( event )
224
+ {
225
+ var element = $( this );
226
+
227
+ $.ajax
228
+ (
229
+ {
230
+ url : loglevel_path,
231
+ dataType : 'json',
232
+ data : {
233
+ 'wt' : 'json',
234
+ 'set' : $( this ).parents( 'li[data-logger]' ).data( 'logger' ) + ':' + element.data( 'level' )
235
+ },
236
+ type : 'POST',
237
+ context : self,
238
+ beforeSend : function( xhr, settings )
239
+ {
240
+ element
241
+ .addClass( 'loader' );
242
+ },
243
+ success : logging_handler
244
+ }
245
+ );
246
+
247
+ return false;
248
+ }
249
+ );
250
+
251
+ };
252
+
253
+ var format_time = function( time )
254
+ {
255
+ time = time ? new Date( time ) : new Date();
256
+ return '<abbr title="' + time.toLocaleString().esc() + '">' + time.toTimeString().split( ' ' ).shift().esc() + '</abbr>';
257
+ }
258
+
259
+ var load_logging_viewer = function()
260
+ {
261
+ var table = $( 'table', frame_element );
262
+ var state = $( '#state', frame_element );
263
+ var since = table.data( 'latest' ) || 0;
264
+ var sticky_mode = null;
265
+
266
+ $.ajax
267
+ (
268
+ {
269
+ url : loglevel_path + '?wt=json&since=' + since,
270
+ dataType : 'json',
271
+ beforeSend : function( xhr, settings )
272
+ {
273
+ // initial request
274
+ if( 0 === since )
275
+ {
276
+ sticky_mode = true;
277
+ }
278
+
279
+ // state element is in viewport
280
+ else if( state.position().top <= $( window ).scrollTop() + $( window ).height() - ( $( 'body' ).height() - state.position().top ) )
281
+ {
282
+ sticky_mode = true;
283
+ }
284
+
285
+ else
286
+ {
287
+ sticky_mode = false;
288
+ }
289
+ },
290
+ success : function( response, text_status, xhr )
291
+ {
292
+ var docs = response.history.docs;
293
+ var docs_count = docs.length;
294
+
295
+ var table = $( 'table', frame_element );
296
+
297
+ $( 'h2 span', frame_element )
298
+ .text( response.watcher.esc() );
299
+
300
+ state
301
+ .html( 'Last Check: ' + format_time() );
302
+
303
+ app.timeout = setTimeout
304
+ (
305
+ load_logging_viewer,
306
+ 10000
307
+ );
308
+
309
+ if( 0 === docs_count )
310
+ {
311
+ table.trigger( 'update' );
312
+ return false;
313
+ }
314
+
315
+ var content = '<tbody>';
316
+
317
+ for( var i = 0; i < docs_count; i++ )
318
+ {
319
+ var doc = docs[i];
320
+
321
+ if( !doc.trace )
322
+ {
323
+ var lines = doc.message.split( "\n" );
324
+ if( 1 < lines.length )
325
+ {
326
+ doc.message = lines[0];
327
+ doc.trace = doc.message;
328
+ delete lines;
329
+ }
330
+ }
331
+
332
+ var has_trace = 'undefined' !== typeof( doc.trace );
333
+
334
+ doc.logger = '<abbr title="' + doc.logger.esc() + '">' + doc.logger.split( '.' ).pop().esc() + '</abbr>';
335
+
336
+ var classes = [ 'level-' + doc.level.toLowerCase().esc() ];
337
+ if( has_trace )
338
+ {
339
+ classes.push( 'has-trace' );
340
+ }
341
+
342
+ content += '<tr class="' + classes.join( ' ' ) + '">' + "\n";
343
+ content += '<td class="span"><a><span>' + format_time( doc.time ) + '</span></a></td>' + "\n";
344
+ content += '<td class="level span"><a><span>' + doc.level.esc() + '</span></span></a></td>' + "\n";
345
+ content += '<td class="span"><a><span>' + doc.logger + '</span></a></td>' + "\n";
346
+ content += '<td class="message span"><a><span>' + doc.message.replace( /,/g, ',&#8203;' ).esc() + '</span></a></td>' + "\n";
347
+ content += '</tr>' + "\n";
348
+
349
+ if( has_trace )
350
+ {
351
+ content += '<tr class="trace">' + "\n";
352
+
353
+ // (1) with colspan
354
+ content += '<td colspan="4"><pre>' + doc.trace.esc() + '</pre></td>' + "\n";
355
+
356
+ // (2) without colspan
357
+ //content += '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>';
358
+ //content += '<td>' + doc.trace.esc().replace( /\n/g, '<br>' ) + '</td>' + "\n";
359
+
360
+ content += '</tr>' + "\n";
361
+ }
362
+
363
+ }
364
+
365
+ content += '</tbody>';
366
+
367
+ $( 'table', frame_element )
368
+ .append( content );
369
+
370
+ table
371
+ .data( 'latest', response.info.last )
372
+ .removeClass( 'has-data' )
373
+ .trigger( 'update' );
374
+
375
+ if( sticky_mode )
376
+ {
377
+ $( 'body' )
378
+ .animate
379
+ (
380
+ { scrollTop: state.position().top },
381
+ 1000
382
+ );
383
+ }
384
+ },
385
+ error : function( xhr, text_status, error_thrown)
386
+ {
387
+ },
388
+ complete : function( xhr, text_status )
389
+ {
390
+ }
391
+ }
392
+ );
393
+ }
394
+
395
+ // #/~logging
396
+ sammy.get
397
+ (
398
+ /^#\/(~logging)$/,
399
+ function( context )
400
+ {
401
+ var core_basepath = $( 'li[data-basepath]', app.menu_element ).attr( 'data-basepath' );
402
+ loglevel_path = core_basepath + '/admin/logging';
403
+ var content_element = $( '#content' );
404
+
405
+ $.get
406
+ (
407
+ 'tpl/logging.html',
408
+ function( template )
409
+ {
410
+ content_element
411
+ .html( template );
412
+
413
+ frame_element = $( '#frame', content_element );
414
+ frame_element
415
+ .html
416
+ (
417
+ '<div id="viewer">' + "\n" +
418
+ '<div class="block">' + "\n" +
419
+ '<h2><span>&nbsp;</span></h2>' + "\n" +
420
+ '</div>' + "\n" +
421
+ '<table border="0" cellpadding="0" cellspacing="0">' + "\n" +
422
+ '<thead>' + "\n" +
423
+ '<tr>' + "\n" +
424
+ '<th class="time">Time</th>' + "\n" +
425
+ '<th class="level">Level</th>' + "\n" +
426
+ '<th class="logger">Logger</th>' + "\n" +
427
+ '<th class="message">Message</th>' + "\n" +
428
+ '</tr>' + "\n" +
429
+ '</thead>' + "\n" +
430
+ '<tfoot>' + "\n" +
431
+ '<tr>' + "\n" +
432
+ '<td colspan="4">No Events available</td>' + "\n" +
433
+ '</tr>' + "\n" +
434
+ '</thead>' + "\n" +
435
+ '</table>' + "\n" +
436
+ '<div id="state" class="loader">&nbsp;</div>' + "\n" +
437
+ '</div>'
438
+ );
439
+
440
+ var table = $( 'table', frame_element );
441
+
442
+ table
443
+ .die( 'update' )
444
+ .live
445
+ (
446
+ 'update',
447
+ function( event )
448
+ {
449
+ var table = $( this );
450
+ var tbody = $( 'tbody', table );
451
+
452
+ 0 !== tbody.size()
453
+ ? table.addClass( 'has-data' )
454
+ : table.removeClass( 'has-data' );
455
+
456
+ return false;
457
+ }
458
+ );
459
+
460
+ load_logging_viewer();
461
+
462
+ $( '.has-trace a', table )
463
+ .die( 'click' )
464
+ .live
465
+ (
466
+ 'click',
467
+ function( event )
468
+ {
469
+ $( this ).closest( 'tr' )
470
+ .toggleClass( 'open' )
471
+ .next().toggle();
472
+
473
+ return false;
474
+ }
475
+ );
476
+ }
477
+ );
478
+ }
479
+ );
480
+
481
+ // #/~logging/level
482
+ sammy.get
483
+ (
484
+ /^#\/(~logging)\/level$/,
485
+ function( context )
486
+ {
487
+ var core_basepath = $( 'li[data-basepath]', app.menu_element ).attr( 'data-basepath' );
488
+ loglevel_path = core_basepath + '/admin/logging';
489
+ var content_element = $( '#content' );
490
+
491
+ $.get
492
+ (
493
+ 'tpl/logging.html',
494
+ function( template )
495
+ {
496
+ content_element
497
+ .html( template );
498
+
499
+ $( '#menu a[href="' + context.path + '"]' )
500
+ .parent().addClass( 'active' );
501
+
502
+ $.ajax
503
+ (
504
+ {
505
+ url : loglevel_path + '?wt=json',
506
+ dataType : 'json',
507
+ context : $( '#frame', content_element ),
508
+ beforeSend : function( xhr, settings )
509
+ {
510
+ this
511
+ .html( '<div class="loader">Loading ...</div>' );
512
+ },
513
+ success : logging_handler
514
+ }
515
+ );
516
+ }
517
+ );
518
+ }
519
+ );