sunspot_solr 2.2.2 → 2.2.3

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