sunspot_solr 2.2.2 → 2.2.3

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 (256) hide show
  1. checksums.yaml +4 -4
  2. data/bin/sunspot-solr +2 -6
  3. data/lib/sunspot/solr/server.rb +2 -3
  4. data/solr/README.txt +181 -181
  5. data/solr/bin/post +29 -19
  6. data/solr/bin/solr +247 -428
  7. data/solr/bin/solr.cmd +102 -256
  8. data/solr/bin/solr.in.cmd +15 -7
  9. data/solr/bin/solr.in.sh +26 -12
  10. data/solr/server/README.txt +110 -113
  11. data/solr/server/contexts/solr-jetty-context.xml +8 -8
  12. data/solr/server/etc/jetty-http.xml +47 -0
  13. data/solr/server/etc/jetty-https-ssl.xml +175 -159
  14. data/solr/server/etc/jetty-https.xml +53 -0
  15. data/solr/server/etc/jetty-ssl.xml +46 -0
  16. data/solr/server/etc/jetty.xml +189 -167
  17. data/solr/server/etc/webdefault.xml +527 -527
  18. data/solr/server/lib/javax.servlet-api-3.1.0.jar +0 -0
  19. data/solr/server/lib/jetty-continuation-9.2.11.v20150529.jar +0 -0
  20. data/solr/server/lib/jetty-deploy-9.2.11.v20150529.jar +0 -0
  21. data/solr/server/lib/jetty-http-9.2.11.v20150529.jar +0 -0
  22. data/solr/server/lib/jetty-io-9.2.11.v20150529.jar +0 -0
  23. data/solr/server/lib/jetty-jmx-9.2.11.v20150529.jar +0 -0
  24. data/solr/server/lib/jetty-rewrite-9.2.11.v20150529.jar +0 -0
  25. data/solr/server/lib/jetty-security-9.2.11.v20150529.jar +0 -0
  26. data/solr/server/lib/jetty-server-9.2.11.v20150529.jar +0 -0
  27. data/solr/server/lib/jetty-servlet-9.2.11.v20150529.jar +0 -0
  28. data/solr/server/lib/jetty-servlets-9.2.11.v20150529.jar +0 -0
  29. data/solr/server/lib/jetty-util-9.2.11.v20150529.jar +0 -0
  30. data/solr/server/lib/jetty-webapp-9.2.11.v20150529.jar +0 -0
  31. data/solr/server/lib/jetty-xml-9.2.11.v20150529.jar +0 -0
  32. data/solr/server/modules/http.mod +9 -0
  33. data/solr/server/modules/https.mod +9 -0
  34. data/solr/server/modules/server.mod +11 -0
  35. data/solr/server/modules/ssl.mod +9 -0
  36. data/solr/server/resources/jetty-logging.properties +1 -0
  37. data/solr/server/resources/log4j.properties +24 -24
  38. data/solr/server/solr-webapp/webapp/WEB-INF/lib/commons-exec-1.3.jar +0 -0
  39. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{hadoop-annotations-2.3.0.jar → hadoop-annotations-2.6.0.jar} +0 -0
  40. data/solr/server/solr-webapp/webapp/WEB-INF/lib/hadoop-auth-2.6.0.jar +0 -0
  41. data/solr/server/solr-webapp/webapp/WEB-INF/lib/hadoop-common-2.6.0.jar +0 -0
  42. data/solr/server/solr-webapp/webapp/WEB-INF/lib/hadoop-hdfs-2.6.0.jar +0 -0
  43. data/solr/server/solr-webapp/webapp/WEB-INF/lib/htrace-core-3.0.4.jar +0 -0
  44. data/solr/server/solr-webapp/webapp/WEB-INF/lib/httpclient-4.4.1.jar +0 -0
  45. data/solr/server/solr-webapp/webapp/WEB-INF/lib/httpcore-4.4.1.jar +0 -0
  46. data/solr/server/solr-webapp/webapp/WEB-INF/lib/httpmime-4.4.1.jar +0 -0
  47. data/solr/server/solr-webapp/webapp/WEB-INF/lib/jackson-core-2.5.4.jar +0 -0
  48. data/solr/server/solr-webapp/webapp/WEB-INF/lib/jackson-dataformat-smile-2.5.4.jar +0 -0
  49. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{lucene-analyzers-common-5.0.0.jar → lucene-analyzers-common-5.3.1.jar} +0 -0
  50. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{lucene-analyzers-kuromoji-5.0.0.jar → lucene-analyzers-kuromoji-5.3.1.jar} +0 -0
  51. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{lucene-analyzers-phonetic-5.0.0.jar → lucene-analyzers-phonetic-5.3.1.jar} +0 -0
  52. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-backward-codecs-5.3.1.jar +0 -0
  53. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-codecs-5.3.1.jar +0 -0
  54. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-core-5.3.1.jar +0 -0
  55. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{lucene-expressions-5.0.0.jar → lucene-expressions-5.3.1.jar} +0 -0
  56. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{lucene-grouping-5.0.0.jar → lucene-grouping-5.3.1.jar} +0 -0
  57. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-highlighter-5.3.1.jar +0 -0
  58. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-join-5.3.1.jar +0 -0
  59. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-memory-5.3.1.jar +0 -0
  60. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-misc-5.3.1.jar +0 -0
  61. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-queries-5.3.1.jar +0 -0
  62. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{lucene-queryparser-5.0.0.jar → lucene-queryparser-5.3.1.jar} +0 -0
  63. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-sandbox-5.3.1.jar +0 -0
  64. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-spatial-5.3.1.jar +0 -0
  65. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-suggest-5.3.1.jar +0 -0
  66. data/solr/server/solr-webapp/webapp/WEB-INF/lib/org.restlet-2.3.0.jar +0 -0
  67. data/solr/server/solr-webapp/webapp/WEB-INF/lib/org.restlet.ext.servlet-2.3.0.jar +0 -0
  68. data/solr/server/solr-webapp/webapp/WEB-INF/lib/solr-core-5.3.1.jar +0 -0
  69. data/solr/server/solr-webapp/webapp/WEB-INF/lib/solr-solrj-5.3.1.jar +0 -0
  70. data/solr/server/solr-webapp/webapp/WEB-INF/lib/t-digest-3.1.jar +0 -0
  71. data/solr/server/solr-webapp/webapp/WEB-INF/web.xml +169 -181
  72. data/solr/server/solr-webapp/webapp/WEB-INF/weblogic.xml +28 -28
  73. data/solr/server/solr-webapp/webapp/admin.html +164 -163
  74. data/solr/server/solr-webapp/webapp/css/angular/analysis.css +304 -0
  75. data/solr/server/solr-webapp/webapp/css/angular/chosen.css +465 -0
  76. data/solr/server/solr-webapp/webapp/css/angular/cloud.css +398 -0
  77. data/solr/server/solr-webapp/webapp/css/angular/common.css +724 -0
  78. data/solr/server/solr-webapp/webapp/css/angular/cores.css +233 -0
  79. data/solr/server/solr-webapp/webapp/css/angular/dataimport.css +370 -0
  80. data/solr/server/solr-webapp/webapp/css/angular/documents.css +179 -0
  81. data/solr/server/solr-webapp/webapp/css/angular/files.css +53 -0
  82. data/solr/server/solr-webapp/webapp/css/angular/index.css +206 -0
  83. data/solr/server/solr-webapp/webapp/css/angular/logging.css +376 -0
  84. data/solr/server/solr-webapp/webapp/css/angular/menu.css +321 -0
  85. data/solr/server/solr-webapp/webapp/css/angular/plugins.css +212 -0
  86. data/solr/server/solr-webapp/webapp/css/angular/query.css +162 -0
  87. data/solr/server/solr-webapp/webapp/css/angular/replication.css +500 -0
  88. data/solr/server/solr-webapp/webapp/css/angular/schema-browser.css +567 -0
  89. data/solr/server/solr-webapp/webapp/css/angular/segments.css +173 -0
  90. data/solr/server/solr-webapp/webapp/css/angular/threads.css +161 -0
  91. data/solr/server/solr-webapp/webapp/css/chosen.css +421 -421
  92. data/solr/server/solr-webapp/webapp/css/styles/analysis.css +311 -311
  93. data/solr/server/solr-webapp/webapp/css/styles/cloud.css +410 -410
  94. data/solr/server/solr-webapp/webapp/css/styles/common.css +701 -701
  95. data/solr/server/solr-webapp/webapp/css/styles/cores.css +244 -244
  96. data/solr/server/solr-webapp/webapp/css/styles/dashboard.css +155 -155
  97. data/solr/server/solr-webapp/webapp/css/styles/dataimport.css +403 -403
  98. data/solr/server/solr-webapp/webapp/css/styles/documents.css +197 -197
  99. data/solr/server/solr-webapp/webapp/css/styles/files.css +54 -54
  100. data/solr/server/solr-webapp/webapp/css/styles/index.css +207 -207
  101. data/solr/server/solr-webapp/webapp/css/styles/java-properties.css +52 -52
  102. data/solr/server/solr-webapp/webapp/css/styles/logging.css +391 -391
  103. data/solr/server/solr-webapp/webapp/css/styles/menu.css +329 -328
  104. data/solr/server/solr-webapp/webapp/css/styles/plugins.css +195 -195
  105. data/solr/server/solr-webapp/webapp/css/styles/query.css +173 -173
  106. data/solr/server/solr-webapp/webapp/css/styles/replication.css +515 -515
  107. data/solr/server/solr-webapp/webapp/css/styles/schema-browser.css +578 -578
  108. data/solr/server/solr-webapp/webapp/css/styles/segments.css +145 -0
  109. data/solr/server/solr-webapp/webapp/css/styles/threads.css +172 -172
  110. data/solr/server/solr-webapp/webapp/img/chosen-sprite-2x.png +0 -0
  111. data/solr/server/solr-webapp/webapp/img/filetypes/README +27 -27
  112. data/solr/server/solr-webapp/webapp/img/solr.svg +39 -39
  113. data/solr/server/solr-webapp/webapp/index.html +208 -0
  114. data/solr/server/solr-webapp/webapp/js/angular/app.js +713 -0
  115. data/solr/server/solr-webapp/webapp/js/angular/controllers/analysis.js +199 -0
  116. data/solr/server/solr-webapp/webapp/js/angular/controllers/cloud.js +528 -0
  117. data/solr/server/solr-webapp/webapp/js/angular/controllers/core-overview.js +225 -0
  118. data/solr/server/solr-webapp/webapp/js/angular/controllers/cores.js +465 -0
  119. data/solr/server/solr-webapp/webapp/js/angular/controllers/dataimport.js +284 -0
  120. data/solr/server/solr-webapp/webapp/js/angular/controllers/documents.js +139 -0
  121. data/solr/server/solr-webapp/webapp/js/angular/controllers/files.js +92 -0
  122. data/solr/server/solr-webapp/webapp/js/angular/controllers/index.js +95 -0
  123. data/solr/server/solr-webapp/webapp/js/angular/controllers/java-properties.js +45 -0
  124. data/solr/server/solr-webapp/webapp/js/angular/controllers/logging.js +146 -0
  125. data/solr/server/solr-webapp/webapp/js/angular/controllers/plugins.js +166 -0
  126. data/solr/server/solr-webapp/webapp/js/angular/controllers/query.js +99 -0
  127. data/solr/server/solr-webapp/webapp/js/angular/controllers/replication.js +227 -0
  128. data/solr/server/solr-webapp/webapp/js/angular/controllers/schema-browser.js +432 -0
  129. data/solr/server/solr-webapp/webapp/js/angular/controllers/segments.js +94 -0
  130. data/solr/server/solr-webapp/webapp/js/angular/controllers/threads.js +51 -0
  131. data/solr/server/solr-webapp/webapp/js/angular/services.js +214 -0
  132. data/solr/server/solr-webapp/webapp/js/lib/ZeroClipboard.js +342 -342
  133. data/solr/server/solr-webapp/webapp/js/lib/chosen.js +982 -982
  134. data/solr/server/solr-webapp/webapp/js/lib/console.js +29 -29
  135. data/solr/server/solr-webapp/webapp/js/lib/d3.js +9373 -9373
  136. data/solr/server/solr-webapp/webapp/js/lib/highlight.js +31 -31
  137. data/solr/server/solr-webapp/webapp/js/lib/jquery-1.7.2.min.js +30 -30
  138. data/solr/server/solr-webapp/webapp/js/lib/jquery.ajaxfileupload.js +184 -184
  139. data/solr/server/solr-webapp/webapp/js/lib/jquery.blockUI.js +523 -523
  140. data/solr/server/solr-webapp/webapp/js/lib/jquery.cookie.js +71 -71
  141. data/solr/server/solr-webapp/webapp/js/lib/jquery.form.js +806 -806
  142. data/solr/server/solr-webapp/webapp/js/lib/jquery.jstree.js +3534 -3534
  143. data/solr/server/solr-webapp/webapp/js/lib/jquery.sammy.js +1863 -1863
  144. data/solr/server/solr-webapp/webapp/js/lib/jquery.timeago.js +189 -189
  145. data/solr/server/solr-webapp/webapp/js/lib/linker.js +48 -48
  146. data/solr/server/solr-webapp/webapp/js/lib/naturalSort.js +82 -0
  147. data/solr/server/solr-webapp/webapp/js/lib/order.js +216 -216
  148. data/solr/server/solr-webapp/webapp/js/main.js +60 -58
  149. data/solr/server/solr-webapp/webapp/js/require.js +11349 -11349
  150. data/solr/server/solr-webapp/webapp/js/scripts/analysis.js +545 -545
  151. data/solr/server/solr-webapp/webapp/js/scripts/app.js +680 -679
  152. data/solr/server/solr-webapp/webapp/js/scripts/cloud.js +877 -877
  153. data/solr/server/solr-webapp/webapp/js/scripts/cores.js +719 -719
  154. data/solr/server/solr-webapp/webapp/js/scripts/dashboard.js +562 -562
  155. data/solr/server/solr-webapp/webapp/js/scripts/dataimport.js +812 -812
  156. data/solr/server/solr-webapp/webapp/js/scripts/documents.js +370 -370
  157. data/solr/server/solr-webapp/webapp/js/scripts/files.js +265 -265
  158. data/solr/server/solr-webapp/webapp/js/scripts/index.js +340 -340
  159. data/solr/server/solr-webapp/webapp/js/scripts/java-properties.js +106 -106
  160. data/solr/server/solr-webapp/webapp/js/scripts/logging.js +578 -576
  161. data/solr/server/solr-webapp/webapp/js/scripts/ping.js +72 -72
  162. data/solr/server/solr-webapp/webapp/js/scripts/plugins.js +462 -462
  163. data/solr/server/solr-webapp/webapp/js/scripts/query.js +229 -229
  164. data/solr/server/solr-webapp/webapp/js/scripts/replication.js +527 -527
  165. data/solr/server/solr-webapp/webapp/js/scripts/schema-browser.js +1229 -1229
  166. data/solr/server/solr-webapp/webapp/js/scripts/segments.js +206 -0
  167. data/solr/server/solr-webapp/webapp/js/scripts/threads.js +158 -158
  168. data/solr/server/solr-webapp/webapp/libs/angular-chosen.js +139 -0
  169. data/solr/server/solr-webapp/webapp/libs/angular-cookies.js +229 -0
  170. data/solr/server/solr-webapp/webapp/libs/angular-cookies.min.js +31 -0
  171. data/solr/server/solr-webapp/webapp/libs/angular-resource.min.js +36 -0
  172. data/solr/server/solr-webapp/webapp/libs/angular-route.js +1018 -0
  173. data/solr/server/solr-webapp/webapp/libs/angular-route.min.js +38 -0
  174. data/solr/server/solr-webapp/webapp/libs/angular-sanitize.js +703 -0
  175. data/solr/server/solr-webapp/webapp/libs/angular-sanitize.min.js +39 -0
  176. data/solr/server/solr-webapp/webapp/libs/angular.js +26093 -0
  177. data/solr/server/solr-webapp/webapp/libs/angular.min.js +273 -0
  178. data/solr/server/solr-webapp/webapp/libs/chosen.jquery.js +1194 -0
  179. data/solr/server/solr-webapp/webapp/libs/chosen.jquery.min.js +30 -0
  180. data/solr/server/solr-webapp/webapp/libs/d3.js +9373 -0
  181. data/solr/server/solr-webapp/webapp/libs/highlight.js +31 -0
  182. data/solr/server/solr-webapp/webapp/libs/jquery-2.1.3.min.js +29 -0
  183. data/solr/server/solr-webapp/webapp/libs/jquery.jstree.js +3534 -0
  184. data/solr/server/solr-webapp/webapp/libs/ngtimeago.js +102 -0
  185. data/solr/server/solr-webapp/webapp/partials/analysis.html +128 -0
  186. data/solr/server/solr-webapp/webapp/partials/cloud.html +104 -0
  187. data/solr/server/solr-webapp/webapp/partials/core_overview.html +227 -0
  188. data/solr/server/solr-webapp/webapp/partials/cores.html +231 -0
  189. data/solr/server/solr-webapp/webapp/partials/dataimport.html +209 -0
  190. data/solr/server/solr-webapp/webapp/partials/documents.html +118 -0
  191. data/solr/server/solr-webapp/webapp/partials/files.html +47 -0
  192. data/solr/server/solr-webapp/webapp/partials/index.html +261 -0
  193. data/solr/server/solr-webapp/webapp/partials/java-properties.html +27 -0
  194. data/solr/server/solr-webapp/webapp/partials/logging-levels.html +56 -0
  195. data/solr/server/solr-webapp/webapp/partials/logging.html +56 -0
  196. data/solr/server/solr-webapp/webapp/partials/plugins.html +72 -0
  197. data/solr/server/solr-webapp/webapp/partials/query.html +356 -0
  198. data/solr/server/solr-webapp/webapp/partials/replication.html +239 -0
  199. data/solr/server/solr-webapp/webapp/partials/schema-browser.html +206 -0
  200. data/solr/server/solr-webapp/webapp/partials/segments.html +99 -0
  201. data/solr/server/solr-webapp/webapp/partials/threads.html +65 -0
  202. data/solr/server/solr-webapp/webapp/tpl/analysis.html +83 -83
  203. data/solr/server/solr-webapp/webapp/tpl/cloud.html +87 -87
  204. data/solr/server/solr-webapp/webapp/tpl/cores.html +226 -226
  205. data/solr/server/solr-webapp/webapp/tpl/dashboard.html +201 -201
  206. data/solr/server/solr-webapp/webapp/tpl/dataimport.html +183 -183
  207. data/solr/server/solr-webapp/webapp/tpl/documents.html +107 -107
  208. data/solr/server/solr-webapp/webapp/tpl/files.html +44 -44
  209. data/solr/server/solr-webapp/webapp/tpl/index.html +250 -250
  210. data/solr/server/solr-webapp/webapp/tpl/logging.html +23 -23
  211. data/solr/server/solr-webapp/webapp/tpl/plugins.html +39 -39
  212. data/solr/server/solr-webapp/webapp/tpl/query.html +361 -361
  213. data/solr/server/solr-webapp/webapp/tpl/replication.html +216 -216
  214. data/solr/server/solr-webapp/webapp/tpl/schema-browser.html +192 -192
  215. data/solr/server/solr-webapp/webapp/tpl/segments.html +49 -0
  216. data/solr/server/solr-webapp/webapp/tpl/threads.html +56 -56
  217. data/solr/server/solr/README.txt +77 -77
  218. data/solr/server/solr/solr.xml +51 -51
  219. data/solr/server/solr/zoo.cfg +17 -17
  220. data/solr/server/start.jar +0 -0
  221. data/spec/server_spec.rb +3 -8
  222. metadata +132 -43
  223. data/solr/server/lib/jetty-continuation-8.1.10.v20130312.jar +0 -0
  224. data/solr/server/lib/jetty-deploy-8.1.10.v20130312.jar +0 -0
  225. data/solr/server/lib/jetty-http-8.1.10.v20130312.jar +0 -0
  226. data/solr/server/lib/jetty-io-8.1.10.v20130312.jar +0 -0
  227. data/solr/server/lib/jetty-jmx-8.1.10.v20130312.jar +0 -0
  228. data/solr/server/lib/jetty-security-8.1.10.v20130312.jar +0 -0
  229. data/solr/server/lib/jetty-server-8.1.10.v20130312.jar +0 -0
  230. data/solr/server/lib/jetty-servlet-8.1.10.v20130312.jar +0 -0
  231. data/solr/server/lib/jetty-util-8.1.10.v20130312.jar +0 -0
  232. data/solr/server/lib/jetty-webapp-8.1.10.v20130312.jar +0 -0
  233. data/solr/server/lib/jetty-xml-8.1.10.v20130312.jar +0 -0
  234. data/solr/server/lib/servlet-api-3.0.jar +0 -0
  235. data/solr/server/solr-webapp/webapp/.gitignore +0 -1
  236. data/solr/server/solr-webapp/webapp/WEB-INF/lib/hadoop-auth-2.3.0.jar +0 -0
  237. data/solr/server/solr-webapp/webapp/WEB-INF/lib/hadoop-common-2.3.0.jar +0 -0
  238. data/solr/server/solr-webapp/webapp/WEB-INF/lib/hadoop-hdfs-2.3.0.jar +0 -0
  239. data/solr/server/solr-webapp/webapp/WEB-INF/lib/httpclient-4.3.1.jar +0 -0
  240. data/solr/server/solr-webapp/webapp/WEB-INF/lib/httpcore-4.3.jar +0 -0
  241. data/solr/server/solr-webapp/webapp/WEB-INF/lib/httpmime-4.3.1.jar +0 -0
  242. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-backward-codecs-5.0.0.jar +0 -0
  243. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-codecs-5.0.0.jar +0 -0
  244. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-core-5.0.0.jar +0 -0
  245. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-highlighter-5.0.0.jar +0 -0
  246. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-join-5.0.0.jar +0 -0
  247. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-memory-5.0.0.jar +0 -0
  248. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-misc-5.0.0.jar +0 -0
  249. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-queries-5.0.0.jar +0 -0
  250. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-spatial-5.0.0.jar +0 -0
  251. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-suggest-5.0.0.jar +0 -0
  252. data/solr/server/solr-webapp/webapp/WEB-INF/lib/org.restlet-2.1.1.jar +0 -0
  253. data/solr/server/solr-webapp/webapp/WEB-INF/lib/org.restlet.ext.servlet-2.1.1.jar +0 -0
  254. data/solr/server/solr-webapp/webapp/WEB-INF/lib/solr-core-5.0.0.jar +0 -0
  255. data/solr/server/solr-webapp/webapp/WEB-INF/lib/solr-solrj-5.0.0.jar +0 -0
  256. data/solr/server/webapps/solr.war +0 -0
@@ -1,106 +1,106 @@
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
- // #/~java-properties
19
- sammy.get
20
- (
21
- /^#\/(~java-properties)$/,
22
- function( context )
23
- {
24
- var content_element = $( '#content' );
25
-
26
- content_element
27
- .html( '<div id="java-properties"></div>' );
28
-
29
- $.ajax
30
- (
31
- {
32
- url : app.config.solr_path + '/admin/info/properties?wt=json',
33
- dataType : 'json',
34
- context : $( '#java-properties', content_element ),
35
- beforeSend : function( xhr, settings )
36
- {
37
- this
38
- .html( '<div class="loader">Loading ...</div>' );
39
- },
40
- success : function( response, text_status, xhr )
41
- {
42
- var system_properties = response['system.properties'];
43
- var properties_data = {};
44
- var properties_content = [];
45
- var properties_order = [];
46
-
47
- var workaround = xhr.responseText.match( /"(line\.separator)"\s*:\s*"(.+?)"/ );
48
- if( workaround && workaround[2] )
49
- {
50
- system_properties[workaround[1]] = workaround[2];
51
- }
52
-
53
- for( var key in system_properties )
54
- {
55
- var displayed_key = key.replace( /\./g, '.&#8203;' );
56
- var displayed_value = [ system_properties[key] ];
57
- var item_class = 'clearfix';
58
-
59
- if( -1 !== key.indexOf( '.path' ) || -1 !== key.indexOf( '.dirs' ) )
60
- {
61
- displayed_value = system_properties[key].split( system_properties['path.separator'] );
62
- if( 1 < displayed_value.length )
63
- {
64
- item_class += ' multi';
65
- }
66
- }
67
-
68
- var item_content = '<li><dl class="' + item_class + '">' + "\n"
69
- + '<dt>' + displayed_key.esc() + '</dt>' + "\n";
70
-
71
- for( var i in displayed_value )
72
- {
73
- item_content += '<dd>' + displayed_value[i].esc() + '</dd>' + "\n";
74
- }
75
-
76
- item_content += '</dl></li>';
77
-
78
- properties_data[key] = item_content;
79
- properties_order.push( key );
80
- }
81
-
82
- properties_order.sort();
83
- for( var i in properties_order )
84
- {
85
- properties_content.push( properties_data[properties_order[i]] );
86
- }
87
-
88
- this
89
- .html( '<ul>' + properties_content.join( "\n" ) + '</ul>' );
90
-
91
- $( 'li:odd', this )
92
- .addClass( 'odd' );
93
-
94
- $( '.multi dd:odd', this )
95
- .addClass( 'odd' );
96
- },
97
- error : function( xhr, text_status, error_thrown)
98
- {
99
- },
100
- complete : function( xhr, text_status )
101
- {
102
- }
103
- }
104
- );
105
- }
106
- );
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
+ // #/~java-properties
19
+ sammy.get
20
+ (
21
+ /^#\/(~java-properties)$/,
22
+ function( context )
23
+ {
24
+ var content_element = $( '#content' );
25
+
26
+ content_element
27
+ .html( '<div id="java-properties"></div>' );
28
+
29
+ $.ajax
30
+ (
31
+ {
32
+ url : app.config.solr_path + '/admin/info/properties?wt=json',
33
+ dataType : 'json',
34
+ context : $( '#java-properties', content_element ),
35
+ beforeSend : function( xhr, settings )
36
+ {
37
+ this
38
+ .html( '<div class="loader">Loading ...</div>' );
39
+ },
40
+ success : function( response, text_status, xhr )
41
+ {
42
+ var system_properties = response['system.properties'];
43
+ var properties_data = {};
44
+ var properties_content = [];
45
+ var properties_order = [];
46
+
47
+ var workaround = xhr.responseText.match( /"(line\.separator)"\s*:\s*"(.+?)"/ );
48
+ if( workaround && workaround[2] )
49
+ {
50
+ system_properties[workaround[1]] = workaround[2];
51
+ }
52
+
53
+ for( var key in system_properties )
54
+ {
55
+ var displayed_key = key.replace( /\./g, '.&#8203;' );
56
+ var displayed_value = [ system_properties[key] ];
57
+ var item_class = 'clearfix';
58
+
59
+ if( -1 !== key.indexOf( '.path' ) || -1 !== key.indexOf( '.dirs' ) )
60
+ {
61
+ displayed_value = system_properties[key].split( system_properties['path.separator'] );
62
+ if( 1 < displayed_value.length )
63
+ {
64
+ item_class += ' multi';
65
+ }
66
+ }
67
+
68
+ var item_content = '<li><dl class="' + item_class + '">' + "\n"
69
+ + '<dt>' + displayed_key.esc() + '</dt>' + "\n";
70
+
71
+ for( var i in displayed_value )
72
+ {
73
+ item_content += '<dd>' + displayed_value[i].esc() + '</dd>' + "\n";
74
+ }
75
+
76
+ item_content += '</dl></li>';
77
+
78
+ properties_data[key] = item_content;
79
+ properties_order.push( key );
80
+ }
81
+
82
+ properties_order.sort();
83
+ for( var i in properties_order )
84
+ {
85
+ properties_content.push( properties_data[properties_order[i]] );
86
+ }
87
+
88
+ this
89
+ .html( '<ul>' + properties_content.join( "\n" ) + '</ul>' );
90
+
91
+ $( 'li:odd', this )
92
+ .addClass( 'odd' );
93
+
94
+ $( '.multi dd:odd', this )
95
+ .addClass( 'odd' );
96
+ },
97
+ error : function( xhr, text_status, error_thrown)
98
+ {
99
+ },
100
+ complete : function( xhr, text_status )
101
+ {
102
+ }
103
+ }
104
+ );
105
+ }
106
+ );
@@ -1,576 +1,578 @@
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 = app.config.solr_path + '/admin/info/logging';
19
- var cookie_logging_timezone = 'logging_timezone';
20
- var frame_element = null;
21
-
22
- var logging_handler = function( response, text_status, xhr )
23
- {
24
- var self = this;
25
- var loggers = response.loggers;
26
-
27
- var levels = '<div class="selector-holder"><div class="selector">' + "\n"
28
- + '<a class="trigger"><span><em>null</em></span></a>' + "\n"
29
- + '<ul>' + "\n";
30
-
31
- for( var key in response.levels )
32
- {
33
- var level = response.levels[key].esc();
34
- levels += '<li><a href="#" data-level="' + level + '">' + level + '</a></li>' + "\n";
35
- }
36
-
37
- levels += '<li class="unset"><a href="#" data-level="unset">UNSET</a></li>' + "\n"
38
- + '</ul>' + "\n"
39
- + '<a class="close"><span>[x]</span></a>' + "\n"
40
- + '</div></div>';
41
-
42
- var logger_tree = function( filter )
43
- {
44
- var logger_content = '';
45
- var filter_regex = new RegExp( '^' + filter + '\\.\\w+$' );
46
-
47
- for( var i in loggers )
48
- {
49
- var logger = loggers[i];
50
- var continue_matcher = false;
51
-
52
- if( !filter )
53
- {
54
- continue_matcher = logger.name.indexOf( '.' ) !== -1;
55
- }
56
- else
57
- {
58
- continue_matcher = !logger.name.match( filter_regex );
59
- }
60
-
61
- if( continue_matcher )
62
- {
63
- continue;
64
- }
65
-
66
- var logger_class = '';
67
-
68
- if( logger.set )
69
- {
70
- logger_class = 'set';
71
- }
72
-
73
- if( !logger.level )
74
- {
75
- logger_class = 'null';
76
- }
77
-
78
- var logger_name = logger.name.split( '.' );
79
- var display_name = logger_name.pop();
80
-
81
- var leaf_class = 'jstree-leaf';
82
- if( logger.level )
83
- {
84
- leaf_class += ' level-' + logger.level.esc().toLowerCase();
85
- }
86
-
87
- logger_content += '<li class="' + leaf_class + '" data-logger="' + logger.name.esc() + '">';
88
- logger_content += '<ins class="trigger jstree-icon">&nbsp;</ins>' + "\n";
89
- logger_content += '<a href="#" class="trigger '+ logger_class + '"' ;
90
-
91
- if( logger.level )
92
- {
93
- logger_content += 'rel="' + logger.level.esc() + '" ';
94
- }
95
-
96
- logger_content += 'title="' + logger.name.esc() + '">' + "\n";
97
-
98
- if( 0 !== logger_name.length )
99
- {
100
- logger_content += '<span class="ns">' + logger_name.join( '.' ).esc() + '.</span>';
101
- }
102
-
103
- logger_content += '<span class="name">' + ( display_name ? display_name.esc() : '<em>empty</em>' ) + '</span>' + "\n";
104
- logger_content += '</a>';
105
-
106
- logger_content += levels;
107
-
108
- if( !!logger.name )
109
- {
110
- var child_logger_content = logger_tree( logger.name );
111
- if( child_logger_content )
112
- {
113
- logger_content += '<ul>';
114
- logger_content += child_logger_content;
115
- logger_content += '</ul>';
116
- }
117
- }
118
-
119
- logger_content += '</li>';
120
- }
121
-
122
- return logger_content;
123
- };
124
-
125
- var logger_content = '<div class="block">' + "\n"
126
- + '<h2><span>' + response.watcher.esc() + '</span></h2>' + "\n"
127
- + '<ul class="tree jstree">' + logger_tree( null ) + '</ul>' + "\n"
128
- + '</div>';
129
-
130
- self
131
- .html( logger_content );
132
-
133
- self
134
- .die( 'clear' )
135
- .live
136
- (
137
- 'clear',
138
- function( event )
139
- {
140
- $( '.open', this )
141
- .removeClass( 'open' );
142
- }
143
- );
144
-
145
- $( 'li:last-child', this )
146
- .addClass( 'jstree-last' );
147
-
148
- $( 'li.jstree-leaf > a', this )
149
- .each
150
- (
151
- function( index, element )
152
- {
153
- element = $( element );
154
- var level = element.attr( 'rel' );
155
-
156
- if( level )
157
- {
158
- var selector = $( '.selector-holder', element.closest( 'li' ) );
159
-
160
- var trigger = $( 'a.trigger', selector );
161
-
162
- trigger
163
- .text( level.esc() );
164
-
165
- if( element.hasClass( 'set' ) )
166
- {
167
- trigger.first()
168
- .addClass( 'set' );
169
- }
170
-
171
- $( 'ul a[data-level="' + level + '"]', selector ).first()
172
- .addClass( 'level' );
173
- }
174
- }
175
- )
176
-
177
- $( '.trigger', this )
178
- .die( 'click' )
179
- .live
180
- (
181
- 'click',
182
- function( event )
183
- {
184
- self.trigger( 'clear' );
185
-
186
- $( '.selector-holder', $( this ).parents( 'li' ).first() ).first()
187
- .trigger( 'toggle' );
188
-
189
- return false;
190
- }
191
- );
192
-
193
- $( '.selector .close', this )
194
- .die( 'click' )
195
- .live
196
- (
197
- 'click',
198
- function( event )
199
- {
200
- self.trigger( 'clear' );
201
- return false;
202
- }
203
- );
204
-
205
- $( '.selector-holder', this )
206
- .die( 'toggle')
207
- .live
208
- (
209
- 'toggle',
210
- function( event )
211
- {
212
- var row = $( this ).closest( 'li' );
213
-
214
- $( 'a:first', row )
215
- .toggleClass( 'open' );
216
-
217
- $( '.selector-holder:first', row )
218
- .toggleClass( 'open' );
219
- }
220
- );
221
-
222
- $( '.selector ul a', this )
223
- .die( 'click' )
224
- .live
225
- (
226
- 'click',
227
- function( event )
228
- {
229
- var element = $( this );
230
-
231
- $.ajax
232
- (
233
- {
234
- url : loglevel_path,
235
- dataType : 'json',
236
- data : {
237
- 'wt' : 'json',
238
- 'set' : $( this ).parents( 'li[data-logger]' ).data( 'logger' ) + ':' + element.data( 'level' )
239
- },
240
- type : 'POST',
241
- context : self,
242
- beforeSend : function( xhr, settings )
243
- {
244
- element
245
- .addClass( 'loader' );
246
- },
247
- success : logging_handler
248
- }
249
- );
250
-
251
- return false;
252
- }
253
- );
254
-
255
- };
256
-
257
- var format_time_options = {};
258
-
259
- var format_time = function( time )
260
- {
261
- time = time ? new Date( time ) : new Date();
262
- return '<time datetime="' + time.toISOString().esc() + '">' + format_time_content( time ) + '</abbr>';
263
- }
264
-
265
- var format_time_content = function( time )
266
- {
267
- return time.toLocaleString( undefined, format_time_options ).esc();
268
- }
269
-
270
- var load_logging_viewer = function()
271
- {
272
- var table = $( 'table', frame_element );
273
- var state = $( '#state', frame_element );
274
- var since = table.data( 'latest' ) || 0;
275
- var sticky_mode = null;
276
-
277
- $.ajax
278
- (
279
- {
280
- url : loglevel_path + '?wt=json&since=' + since,
281
- dataType : 'json',
282
- beforeSend : function( xhr, settings )
283
- {
284
- // initial request
285
- if( 0 === since )
286
- {
287
- sticky_mode = true;
288
- }
289
-
290
- // state element is in viewport
291
- else if( state.position().top <= $( window ).scrollTop() + $( window ).height() - ( $( 'body' ).height() - state.position().top ) )
292
- {
293
- sticky_mode = true;
294
- }
295
-
296
- else
297
- {
298
- sticky_mode = false;
299
- }
300
- },
301
- success : function( response, text_status, xhr )
302
- {
303
- var docs = response.history.docs;
304
- var docs_count = docs.length;
305
-
306
- var table = $( 'table', frame_element );
307
-
308
- $( 'h2 span', frame_element )
309
- .text( response.watcher.esc() );
310
-
311
- state
312
- .html( 'Last Check: ' + format_time() );
313
-
314
- app.timeout = setTimeout
315
- (
316
- load_logging_viewer,
317
- 10000
318
- );
319
-
320
- if( 0 === docs_count )
321
- {
322
- table.trigger( 'update' );
323
- return false;
324
- }
325
-
326
- var content = '<tbody>';
327
-
328
- for( var i = 0; i < docs_count; i++ )
329
- {
330
- var doc = docs[i];
331
-
332
- if( 1 === doc.time.length )
333
- {
334
- for( var key in doc )
335
- {
336
- doc[key] = doc[key][0];
337
- }
338
- }
339
-
340
- if( !doc.trace )
341
- {
342
- var lines = doc.message.split( "\n" );
343
- if( 1 < lines.length )
344
- {
345
- doc.trace = doc.message;
346
- doc.message = lines[0];
347
- delete lines;
348
- }
349
- }
350
-
351
- var has_trace = 'undefined' !== typeof( doc.trace );
352
-
353
- doc.logger = '<abbr title="' + doc.logger.esc() + '">' + doc.logger.split( '.' ).pop().esc() + '</abbr>';
354
-
355
- var classes = [ 'level-' + doc.level.toLowerCase().esc() ];
356
- if( has_trace )
357
- {
358
- classes.push( 'has-trace' );
359
- }
360
-
361
- content += '<tr class="' + classes.join( ' ' ) + '">' + "\n";
362
- content += '<td class="span"><a><span>' + format_time( doc.time ) + '</span></a></td>' + "\n";
363
- content += '<td class="level span"><a><span>' + doc.level.esc() + '</span></span></a></td>' + "\n";
364
- content += '<td class="span"><a><span>' + doc.logger + '</span></a></td>' + "\n";
365
- content += '<td class="message span"><a><span>' + doc.message.replace( /,/g, ',&#8203;' ).esc() + '</span></a></td>' + "\n";
366
- content += '</tr>' + "\n";
367
-
368
- if( has_trace )
369
- {
370
- content += '<tr class="trace">' + "\n";
371
- content += '<td colspan="4"><pre>' + doc.trace.esc() + '</pre></td>' + "\n";
372
- content += '</tr>' + "\n";
373
- }
374
-
375
- }
376
-
377
- content += '</tbody>';
378
-
379
- $( 'table', frame_element )
380
- .append( content );
381
-
382
- table
383
- .data( 'latest', response.info.last )
384
- .removeClass( 'has-data' )
385
- .trigger( 'update' );
386
-
387
- if( sticky_mode )
388
- {
389
- $( 'body' )
390
- .animate
391
- (
392
- { scrollTop: state.position().top },
393
- 1000
394
- );
395
- }
396
- },
397
- error : function( xhr, text_status, error_thrown)
398
- {
399
- },
400
- complete : function( xhr, text_status )
401
- {
402
- }
403
- }
404
- );
405
- }
406
-
407
- // #/~logging
408
- sammy.get
409
- (
410
- /^#\/(~logging)$/,
411
- function( context )
412
- {
413
- var content_element = $( '#content' );
414
-
415
- $.get
416
- (
417
- 'tpl/logging.html',
418
- function( template )
419
- {
420
- content_element
421
- .html( template );
422
-
423
- frame_element = $( '#frame', content_element );
424
- frame_element
425
- .html
426
- (
427
- '<div id="viewer">' + "\n" +
428
- '<div class="block">' + "\n" +
429
- '<h2><span>&nbsp;</span></h2>' + "\n" +
430
- '</div>' + "\n" +
431
- '<table border="0" cellpadding="0" cellspacing="0">' + "\n" +
432
- '<thead>' + "\n" +
433
- '<tr>' + "\n" +
434
- '<th class="time">Time (<span>Local</span>)</th>' + "\n" +
435
- '<th class="level">Level</th>' + "\n" +
436
- '<th class="logger">Logger</th>' + "\n" +
437
- '<th class="message">Message</th>' + "\n" +
438
- '</tr>' + "\n" +
439
- '</thead>' + "\n" +
440
- '<tfoot>' + "\n" +
441
- '<tr>' + "\n" +
442
- '<td colspan="4">No Events available</td>' + "\n" +
443
- '</tr>' + "\n" +
444
- '</thead>' + "\n" +
445
- '</table>' + "\n" +
446
- '<div id="footer" class="clearfix">' + "\n" +
447
- '<div id="state" class="loader">&nbsp;</div>' + "\n" +
448
- '<div id="date-format"><a>Show dates in UTC</a></div>' + "\n" +
449
- '</div>' + "\n" +
450
- '</div>'
451
- );
452
-
453
- var table = $( 'table', frame_element );
454
-
455
- table
456
- .die( 'update' )
457
- .live
458
- (
459
- 'update',
460
- function( event )
461
- {
462
- var table = $( this );
463
- var tbody = $( 'tbody', table );
464
-
465
- 0 !== tbody.size()
466
- ? table.addClass( 'has-data' )
467
- : table.removeClass( 'has-data' );
468
-
469
- return false;
470
- }
471
- );
472
-
473
- load_logging_viewer();
474
-
475
- $( '.has-trace a', table )
476
- .die( 'click' )
477
- .live
478
- (
479
- 'click',
480
- function( event )
481
- {
482
- $( this ).closest( 'tr' )
483
- .toggleClass( 'open' )
484
- .next().toggle();
485
-
486
- return false;
487
- }
488
- );
489
-
490
- var date_format = $( '#date-format a', frame_element );
491
-
492
- date_format
493
- .off( 'click' )
494
- .on
495
- (
496
- 'click',
497
- function( event )
498
- {
499
- var self = $( this );
500
-
501
- if( !self.hasClass( 'on' ) )
502
- {
503
- self.addClass( 'on' );
504
- $( 'table th.time span', frame_element ).text( 'UTC' );
505
- format_time_options.timeZone = 'UTC';
506
- $.cookie( cookie_logging_timezone, 'UTC' );
507
- }
508
- else
509
- {
510
- self.removeClass( 'on' );
511
- $( 'table th.time span', frame_element ).text( 'Local' );
512
- delete format_time_options.timeZone;
513
- $.cookie( cookie_logging_timezone, null );
514
- }
515
-
516
- $( 'time', frame_element )
517
- .each
518
- (
519
- function( index, element )
520
- {
521
- var self = $( element );
522
- self.text( format_time_content( new Date( self.attr( 'datetime' ) ) ) );
523
- }
524
- )
525
-
526
- return false;
527
- }
528
- );
529
-
530
- if( 'UTC' === $.cookie( cookie_logging_timezone ) )
531
- {
532
- date_format
533
- .trigger( 'click' );
534
- }
535
- }
536
- );
537
- }
538
- );
539
-
540
- // #/~logging/level
541
- sammy.get
542
- (
543
- /^#\/(~logging)\/level$/,
544
- function( context )
545
- {
546
- var content_element = $( '#content' );
547
-
548
- $.get
549
- (
550
- 'tpl/logging.html',
551
- function( template )
552
- {
553
- content_element
554
- .html( template );
555
-
556
- $( '#menu a[href="' + context.path + '"]' )
557
- .parent().addClass( 'active' );
558
-
559
- $.ajax
560
- (
561
- {
562
- url : loglevel_path + '?wt=json',
563
- dataType : 'json',
564
- context : $( '#frame', content_element ),
565
- beforeSend : function( xhr, settings )
566
- {
567
- this
568
- .html( '<div class="loader">Loading ...</div>' );
569
- },
570
- success : logging_handler
571
- }
572
- );
573
- }
574
- );
575
- }
576
- );
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 = app.config.solr_path + '/admin/info/logging';
19
+ var cookie_logging_timezone = 'logging_timezone';
20
+ var frame_element = null;
21
+
22
+ var logging_handler = function( response, text_status, xhr )
23
+ {
24
+ var self = this;
25
+ var loggers = response.loggers;
26
+
27
+ var levels = '<div class="selector-holder"><div class="selector">' + "\n"
28
+ + '<a class="trigger"><span><em>null</em></span></a>' + "\n"
29
+ + '<ul>' + "\n";
30
+
31
+ for( var key in response.levels )
32
+ {
33
+ var level = response.levels[key].esc();
34
+ levels += '<li><a href="#" data-level="' + level + '">' + level + '</a></li>' + "\n";
35
+ }
36
+
37
+ levels += '<li class="unset"><a href="#" data-level="unset">UNSET</a></li>' + "\n"
38
+ + '</ul>' + "\n"
39
+ + '<a class="close"><span>[x]</span></a>' + "\n"
40
+ + '</div></div>';
41
+
42
+ var logger_tree = function( filter )
43
+ {
44
+ var logger_content = '';
45
+ var filter_regex = new RegExp( '^' + filter + '\\.\\w+$' );
46
+
47
+ for( var i in loggers )
48
+ {
49
+ var logger = loggers[i];
50
+ var continue_matcher = false;
51
+
52
+ if( !filter )
53
+ {
54
+ continue_matcher = logger.name.indexOf( '.' ) !== -1;
55
+ }
56
+ else
57
+ {
58
+ continue_matcher = !logger.name.match( filter_regex );
59
+ }
60
+
61
+ if( continue_matcher )
62
+ {
63
+ continue;
64
+ }
65
+
66
+ var logger_class = '';
67
+
68
+ if( logger.set )
69
+ {
70
+ logger_class = 'set';
71
+ }
72
+
73
+ if( !logger.level )
74
+ {
75
+ logger_class = 'null';
76
+ }
77
+
78
+ var logger_name = logger.name.split( '.' );
79
+ var display_name = logger_name.pop();
80
+
81
+ var leaf_class = 'jstree-leaf';
82
+ if( logger.level )
83
+ {
84
+ leaf_class += ' level-' + logger.level.esc().toLowerCase();
85
+ }
86
+
87
+ logger_content += '<li class="' + leaf_class + '" data-logger="' + logger.name.esc() + '">';
88
+ logger_content += '<ins class="trigger jstree-icon">&nbsp;</ins>' + "\n";
89
+ logger_content += '<a href="#" class="trigger '+ logger_class + '"' ;
90
+
91
+ if( logger.level )
92
+ {
93
+ logger_content += 'rel="' + logger.level.esc() + '" ';
94
+ }
95
+
96
+ logger_content += 'title="' + logger.name.esc() + '">' + "\n";
97
+
98
+ if( 0 !== logger_name.length )
99
+ {
100
+ logger_content += '<span class="ns">' + logger_name.join( '.' ).esc() + '.</span>';
101
+ }
102
+
103
+ logger_content += '<span class="name">' + ( display_name ? display_name.esc() : '<em>empty</em>' ) + '</span>' + "\n";
104
+ logger_content += '</a>';
105
+
106
+ logger_content += levels;
107
+
108
+ if( !!logger.name )
109
+ {
110
+ var child_logger_content = logger_tree( logger.name );
111
+ if( child_logger_content )
112
+ {
113
+ logger_content += '<ul>';
114
+ logger_content += child_logger_content;
115
+ logger_content += '</ul>';
116
+ }
117
+ }
118
+
119
+ logger_content += '</li>';
120
+ }
121
+
122
+ return logger_content;
123
+ };
124
+
125
+ var logger_content = '<div class="block">' + "\n"
126
+ + '<h2><span>' + response.watcher.esc() + '</span></h2>' + "\n"
127
+ + '<ul class="tree jstree">' + logger_tree( null ) + '</ul>' + "\n"
128
+ + '</div>';
129
+
130
+ self
131
+ .html( logger_content );
132
+
133
+ self
134
+ .die( 'clear' )
135
+ .live
136
+ (
137
+ 'clear',
138
+ function( event )
139
+ {
140
+ $( '.open', this )
141
+ .removeClass( 'open' );
142
+ }
143
+ );
144
+
145
+ $( 'li:last-child', this )
146
+ .addClass( 'jstree-last' );
147
+
148
+ $( 'li.jstree-leaf > a', this )
149
+ .each
150
+ (
151
+ function( index, element )
152
+ {
153
+ element = $( element );
154
+ var level = element.attr( 'rel' );
155
+
156
+ if( level )
157
+ {
158
+ var selector = $( '.selector-holder', element.closest( 'li' ) );
159
+
160
+ var trigger = $( 'a.trigger', selector );
161
+
162
+ trigger
163
+ .text( level.esc() );
164
+
165
+ if( element.hasClass( 'set' ) )
166
+ {
167
+ trigger.first()
168
+ .addClass( 'set' );
169
+ }
170
+
171
+ $( 'ul a[data-level="' + level + '"]', selector ).first()
172
+ .addClass( 'level' );
173
+ }
174
+ }
175
+ )
176
+
177
+ $( '.trigger', this )
178
+ .die( 'click' )
179
+ .live
180
+ (
181
+ 'click',
182
+ function( event )
183
+ {
184
+ self.trigger( 'clear' );
185
+
186
+ $( '.selector-holder', $( this ).parents( 'li' ).first() ).first()
187
+ .trigger( 'toggle' );
188
+
189
+ return false;
190
+ }
191
+ );
192
+
193
+ $( '.selector .close', this )
194
+ .die( 'click' )
195
+ .live
196
+ (
197
+ 'click',
198
+ function( event )
199
+ {
200
+ self.trigger( 'clear' );
201
+ return false;
202
+ }
203
+ );
204
+
205
+ $( '.selector-holder', this )
206
+ .die( 'toggle')
207
+ .live
208
+ (
209
+ 'toggle',
210
+ function( event )
211
+ {
212
+ var row = $( this ).closest( 'li' );
213
+
214
+ $( 'a:first', row )
215
+ .toggleClass( 'open' );
216
+
217
+ $( '.selector-holder:first', row )
218
+ .toggleClass( 'open' );
219
+ }
220
+ );
221
+
222
+ $( '.selector ul a', this )
223
+ .die( 'click' )
224
+ .live
225
+ (
226
+ 'click',
227
+ function( event )
228
+ {
229
+ var element = $( this );
230
+
231
+ $.ajax
232
+ (
233
+ {
234
+ url : loglevel_path,
235
+ dataType : 'json',
236
+ data : {
237
+ 'wt' : 'json',
238
+ 'set' : $( this ).parents( 'li[data-logger]' ).data( 'logger' ) + ':' + element.data( 'level' )
239
+ },
240
+ type : 'POST',
241
+ context : self,
242
+ beforeSend : function( xhr, settings )
243
+ {
244
+ element
245
+ .addClass( 'loader' );
246
+ },
247
+ success : logging_handler
248
+ }
249
+ );
250
+
251
+ return false;
252
+ }
253
+ );
254
+
255
+ };
256
+
257
+ var format_time_options = {};
258
+
259
+ var format_time = function( time )
260
+ {
261
+ time = time ? new Date( time ) : new Date();
262
+ return '<time datetime="' + time.toISOString().esc() + '">' + format_time_content( time ) + '</abbr>';
263
+ }
264
+
265
+ var format_time_content = function( time )
266
+ {
267
+ return time.toLocaleString( undefined, format_time_options ).esc();
268
+ }
269
+
270
+ var load_logging_viewer = function()
271
+ {
272
+ var table = $( 'table', frame_element );
273
+ var state = $( '#state', frame_element );
274
+ var since = table.data( 'latest' ) || 0;
275
+ var sticky_mode = null;
276
+
277
+ $.ajax
278
+ (
279
+ {
280
+ url : loglevel_path + '?wt=json&since=' + since,
281
+ dataType : 'json',
282
+ beforeSend : function( xhr, settings )
283
+ {
284
+ // initial request
285
+ if( 0 === since )
286
+ {
287
+ sticky_mode = true;
288
+ }
289
+
290
+ // state element is in viewport
291
+ else if( state.position().top <= $( window ).scrollTop() + $( window ).height() - ( $( 'body' ).height() - state.position().top ) )
292
+ {
293
+ sticky_mode = true;
294
+ }
295
+
296
+ else
297
+ {
298
+ sticky_mode = false;
299
+ }
300
+ },
301
+ success : function( response, text_status, xhr )
302
+ {
303
+ var docs = response.history.docs;
304
+ var docs_count = docs.length;
305
+
306
+ var table = $( 'table', frame_element );
307
+
308
+ $( 'h2 span', frame_element )
309
+ .text( response.watcher.esc() );
310
+
311
+ state
312
+ .html( 'Last Check: ' + format_time() );
313
+
314
+ app.timeout = setTimeout
315
+ (
316
+ load_logging_viewer,
317
+ 10000
318
+ );
319
+
320
+ if( 0 === docs_count )
321
+ {
322
+ table.trigger( 'update' );
323
+ return false;
324
+ }
325
+
326
+ var content = '<tbody>';
327
+
328
+ for( var i = 0; i < docs_count; i++ )
329
+ {
330
+ var doc = docs[i];
331
+
332
+ if( 1 === doc.time.length )
333
+ {
334
+ for( var key in doc )
335
+ {
336
+ doc[key] = doc[key][0];
337
+ }
338
+ }
339
+
340
+ if( !doc.trace )
341
+ {
342
+ var lines = doc.message.split( "\n" );
343
+ if( 1 < lines.length )
344
+ {
345
+ doc.trace = doc.message;
346
+ doc.message = lines[0];
347
+ delete lines;
348
+ }
349
+ }
350
+
351
+ var has_trace = 'undefined' !== typeof( doc.trace );
352
+
353
+ doc.logger = '<abbr title="' + doc.logger.esc() + '">' + doc.logger.split( '.' ).pop().esc() + '</abbr>';
354
+
355
+ var classes = [ 'level-' + doc.level.toLowerCase().esc() ];
356
+ if( has_trace )
357
+ {
358
+ classes.push( 'has-trace' );
359
+ }
360
+
361
+ content += '<tr class="' + classes.join( ' ' ) + '">' + "\n";
362
+ content += '<td class="span"><a><span>' + format_time( doc.time ) + '</span></a></td>' + "\n";
363
+ content += '<td class="level span"><a><span>' + doc.level.esc() + '</span></span></a></td>' + "\n";
364
+ content += '<td class="span"><a><span>' + doc.core + '</span></a></td>' + "\n";
365
+ content += '<td class="span"><a><span>' + doc.logger + '</span></a></td>' + "\n";
366
+ content += '<td class="message span"><a><span>' + doc.message.replace( /,/g, ',&#8203;' ).esc() + '</span></a></td>' + "\n";
367
+ content += '</tr>' + "\n";
368
+
369
+ if( has_trace )
370
+ {
371
+ content += '<tr class="trace">' + "\n";
372
+ content += '<td colspan="4"><pre>' + doc.trace.esc() + '</pre></td>' + "\n";
373
+ content += '</tr>' + "\n";
374
+ }
375
+
376
+ }
377
+
378
+ content += '</tbody>';
379
+
380
+ $( 'table', frame_element )
381
+ .append( content );
382
+
383
+ table
384
+ .data( 'latest', response.info.last )
385
+ .removeClass( 'has-data' )
386
+ .trigger( 'update' );
387
+
388
+ if( sticky_mode )
389
+ {
390
+ $( 'body' )
391
+ .animate
392
+ (
393
+ { scrollTop: state.position().top },
394
+ 1000
395
+ );
396
+ }
397
+ },
398
+ error : function( xhr, text_status, error_thrown)
399
+ {
400
+ },
401
+ complete : function( xhr, text_status )
402
+ {
403
+ }
404
+ }
405
+ );
406
+ }
407
+
408
+ // #/~logging
409
+ sammy.get
410
+ (
411
+ /^#\/(~logging)$/,
412
+ function( context )
413
+ {
414
+ var content_element = $( '#content' );
415
+
416
+ $.get
417
+ (
418
+ 'tpl/logging.html',
419
+ function( template )
420
+ {
421
+ content_element
422
+ .html( template );
423
+
424
+ frame_element = $( '#frame', content_element );
425
+ frame_element
426
+ .html
427
+ (
428
+ '<div id="viewer">' + "\n" +
429
+ '<div class="block">' + "\n" +
430
+ '<h2><span>&nbsp;</span></h2>' + "\n" +
431
+ '</div>' + "\n" +
432
+ '<table border="0" cellpadding="0" cellspacing="0">' + "\n" +
433
+ '<thead>' + "\n" +
434
+ '<tr>' + "\n" +
435
+ '<th class="time">Time (<span>Local</span>)</th>' + "\n" +
436
+ '<th class="level">Level</th>' + "\n" +
437
+ '<th class="core">Core</th>' + "\n" +
438
+ '<th class="logger">Logger</th>' + "\n" +
439
+ '<th class="message">Message</th>' + "\n" +
440
+ '</tr>' + "\n" +
441
+ '</thead>' + "\n" +
442
+ '<tfoot>' + "\n" +
443
+ '<tr>' + "\n" +
444
+ '<td colspan="4">No Events available</td>' + "\n" +
445
+ '</tr>' + "\n" +
446
+ '</thead>' + "\n" +
447
+ '</table>' + "\n" +
448
+ '<div id="footer" class="clearfix">' + "\n" +
449
+ '<div id="state" class="loader">&nbsp;</div>' + "\n" +
450
+ '<div id="date-format"><a>Show dates in UTC</a></div>' + "\n" +
451
+ '</div>' + "\n" +
452
+ '</div>'
453
+ );
454
+
455
+ var table = $( 'table', frame_element );
456
+
457
+ table
458
+ .die( 'update' )
459
+ .live
460
+ (
461
+ 'update',
462
+ function( event )
463
+ {
464
+ var table = $( this );
465
+ var tbody = $( 'tbody', table );
466
+
467
+ 0 !== tbody.size()
468
+ ? table.addClass( 'has-data' )
469
+ : table.removeClass( 'has-data' );
470
+
471
+ return false;
472
+ }
473
+ );
474
+
475
+ load_logging_viewer();
476
+
477
+ $( '.has-trace a', table )
478
+ .die( 'click' )
479
+ .live
480
+ (
481
+ 'click',
482
+ function( event )
483
+ {
484
+ $( this ).closest( 'tr' )
485
+ .toggleClass( 'open' )
486
+ .next().toggle();
487
+
488
+ return false;
489
+ }
490
+ );
491
+
492
+ var date_format = $( '#date-format a', frame_element );
493
+
494
+ date_format
495
+ .off( 'click' )
496
+ .on
497
+ (
498
+ 'click',
499
+ function( event )
500
+ {
501
+ var self = $( this );
502
+
503
+ if( !self.hasClass( 'on' ) )
504
+ {
505
+ self.addClass( 'on' );
506
+ $( 'table th.time span', frame_element ).text( 'UTC' );
507
+ format_time_options.timeZone = 'UTC';
508
+ $.cookie( cookie_logging_timezone, 'UTC' );
509
+ }
510
+ else
511
+ {
512
+ self.removeClass( 'on' );
513
+ $( 'table th.time span', frame_element ).text( 'Local' );
514
+ delete format_time_options.timeZone;
515
+ $.cookie( cookie_logging_timezone, null );
516
+ }
517
+
518
+ $( 'time', frame_element )
519
+ .each
520
+ (
521
+ function( index, element )
522
+ {
523
+ var self = $( element );
524
+ self.text( format_time_content( new Date( self.attr( 'datetime' ) ) ) );
525
+ }
526
+ )
527
+
528
+ return false;
529
+ }
530
+ );
531
+
532
+ if( 'UTC' === $.cookie( cookie_logging_timezone ) )
533
+ {
534
+ date_format
535
+ .trigger( 'click' );
536
+ }
537
+ }
538
+ );
539
+ }
540
+ );
541
+
542
+ // #/~logging/level
543
+ sammy.get
544
+ (
545
+ /^#\/(~logging)\/level$/,
546
+ function( context )
547
+ {
548
+ var content_element = $( '#content' );
549
+
550
+ $.get
551
+ (
552
+ 'tpl/logging.html',
553
+ function( template )
554
+ {
555
+ content_element
556
+ .html( template );
557
+
558
+ $( '#menu a[href="' + context.path + '"]' )
559
+ .parent().addClass( 'active' );
560
+
561
+ $.ajax
562
+ (
563
+ {
564
+ url : loglevel_path + '?wt=json',
565
+ dataType : 'json',
566
+ context : $( '#frame', content_element ),
567
+ beforeSend : function( xhr, settings )
568
+ {
569
+ this
570
+ .html( '<div class="loader">Loading ...</div>' );
571
+ },
572
+ success : logging_handler
573
+ }
574
+ );
575
+ }
576
+ );
577
+ }
578
+ );