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,679 +1,680 @@
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 loader = {
19
-
20
- show : function( element )
21
- {
22
- $( element )
23
- .addClass( 'loader' );
24
- },
25
-
26
- hide : function( element )
27
- {
28
- $( element )
29
- .removeClass( 'loader' );
30
- }
31
-
32
- };
33
-
34
- Number.prototype.esc = function()
35
- {
36
- return new String( this ).esc();
37
- }
38
-
39
- String.prototype.esc = function()
40
- {
41
- return this.replace( /</g, '&lt;' ).replace( />/g, '&gt;' );
42
- }
43
-
44
- SolrDate = function( date )
45
- {
46
- // ["Sat Mar 03 11:00:00 CET 2012", "Sat", "Mar", "03", "11:00:00", "CET", "2012"]
47
- var parts = date.match( /^(\w+)\s+(\w+)\s+(\d+)\s+(\d+\:\d+\:\d+)\s+(\w+)\s+(\d+)$/ );
48
-
49
- // "Sat Mar 03 2012 10:37:33"
50
- return new Date( parts[1] + ' ' + parts[2] + ' ' + parts[3] + ' ' + parts[6] + ' ' + parts[4] );
51
- }
52
-
53
- var sammy = $.sammy
54
- (
55
- function()
56
- {
57
- this.bind
58
- (
59
- 'run',
60
- function( event, config )
61
- {
62
- if( 0 === config.start_url.length )
63
- {
64
- location.href = '#/';
65
- return false;
66
- }
67
- }
68
- );
69
-
70
- this.bind
71
- (
72
- 'error',
73
- function( message, original_error )
74
- {
75
- alert( original_error.message );
76
- }
77
- );
78
-
79
- // activate_core
80
- this.before
81
- (
82
- {},
83
- function( context )
84
- {
85
- app.clear_timeout();
86
-
87
- var menu_wrapper = $( '#menu-wrapper' );
88
-
89
- $( 'li[id].active', menu_wrapper )
90
- .removeClass( 'active' );
91
-
92
- $( 'li.active', menu_wrapper )
93
- .removeClass( 'active' );
94
-
95
- // global dashboard doesn't have params.splat
96
- if( !this.params.splat )
97
- {
98
- this.params.splat = [ '~index' ];
99
- }
100
-
101
- var selector = '~' === this.params.splat[0][0]
102
- ? '#' + this.params.splat[0].replace( /^~/, '' ) + '.global'
103
- : '#core-selector #' + this.params.splat[0].replace( /\./g, '__' );
104
-
105
- var active_element = $( selector, menu_wrapper );
106
-
107
- if( 0 === active_element.size() )
108
- {
109
- this.app.error( 'There exists no core with name "' + this.params.splat[0] + '"' );
110
- return false;
111
- }
112
-
113
- if( active_element.hasClass( 'global' ) )
114
- {
115
- active_element
116
- .addClass( 'active' );
117
-
118
- if( this.params.splat[1] )
119
- {
120
- $( '.' + this.params.splat[1], active_element )
121
- .addClass( 'active' );
122
- }
123
-
124
- $( '#core-selector option[selected]' )
125
- .removeAttr( 'selected' )
126
- .trigger( 'liszt:updated' );
127
-
128
- $( '#core-selector .chzn-container > a' )
129
- .addClass( 'chzn-default' );
130
- }
131
- else
132
- {
133
- active_element
134
- .attr( 'selected', 'selected' )
135
- .trigger( 'liszt:updated' );
136
-
137
- if( !this.params.splat[1] )
138
- {
139
- this.params.splat[1] = 'overview';
140
- }
141
-
142
- $( '#core-menu .' + this.params.splat[1] )
143
- .addClass( 'active' );
144
-
145
- this.active_core = active_element;
146
- }
147
-
148
- check_fixed_menu();
149
- }
150
- );
151
- }
152
- );
153
-
154
- var solr_admin = function( app_config )
155
- {
156
- that = this,
157
-
158
- menu_element = null,
159
-
160
- is_multicore = null,
161
- cores_data = null,
162
- active_core = null,
163
-
164
- config = app_config,
165
- params = null,
166
- dashboard_values = null,
167
- schema_browser_data = null,
168
-
169
- plugin_data = null,
170
-
171
- this.menu_element = $( '#core-selector select' );
172
- this.core_menu = $( '#core-menu ul' );
173
-
174
- this.config = config;
175
- this.timeout = null;
176
-
177
- this.core_regex_base = '^#\\/([\\w\\d-\\.]+)';
178
-
179
- browser = {
180
- locale : null,
181
- language : null,
182
- country : null
183
- };
184
-
185
- show_global_error = function( error )
186
- {
187
- var main = $( '#main' );
188
-
189
- $( 'div[id$="-wrapper"]', main )
190
- .remove();
191
-
192
- main
193
- .addClass( 'error' )
194
- .append( error );
195
-
196
- var pre_tags = $( 'pre', main );
197
- if( 0 !== pre_tags.size() )
198
- {
199
- hljs.highlightBlock( pre_tags.get(0) );
200
- }
201
- };
202
-
203
- sort_cores_data = function sort_cores_data( cores_status )
204
- {
205
- // build array of core-names for sorting
206
- var core_names = [];
207
- for( var core_name in cores_status )
208
- {
209
- core_names.push( core_name );
210
- }
211
- core_names.sort();
212
-
213
- var core_count = core_names.length;
214
- var cores = {};
215
-
216
- for( var i = 0; i < core_count; i++ )
217
- {
218
- var core_name = core_names[i];
219
- cores[core_name] = cores_status[core_name];
220
- }
221
-
222
- return cores;
223
- };
224
-
225
- this.set_cores_data = function set_cores_data( cores )
226
- {
227
- that.cores_data = sort_cores_data( cores.status );
228
-
229
- that.menu_element
230
- .empty();
231
-
232
- var core_list = [];
233
- core_list.push( '<option></option>' );
234
-
235
- var core_count = 0;
236
- for( var core_name in that.cores_data )
237
- {
238
- core_count++;
239
- var core_path = config.solr_path + '/' + core_name;
240
- var classes = [];
241
-
242
- if( cores.status[core_name]['isDefaultCore'] )
243
- {
244
- classes.push( 'default' );
245
- }
246
-
247
- var core_tpl = '<option '
248
- + ' id="' + core_name.replace( /\./g, '__' ) + '" '
249
- + ' class="' + classes.join( ' ' ) + '"'
250
- + ' data-basepath="' + core_path + '"'
251
- + ' schema="' + cores.status[core_name]['schema'] + '"'
252
- + ' config="' + cores.status[core_name]['config'] + '"'
253
- + ' value="#/' + core_name + '"'
254
- + ' title="' + core_name + '"'
255
- + '>'
256
- + core_name
257
- + '</option>';
258
-
259
- core_list.push( core_tpl );
260
- }
261
-
262
- var has_cores = 0 !== core_count;
263
- if( has_cores )
264
- {
265
- that.menu_element
266
- .append( core_list.join( "\n" ) )
267
- .trigger( 'liszt:updated' );
268
- }
269
-
270
- var core_selector = $( '#core-selector' );
271
- core_selector.find( '#has-cores' ).toggle( has_cores );
272
- core_selector.find( '#has-no-cores' ).toggle( !has_cores );
273
-
274
- if( has_cores )
275
- {
276
- var cores_element = core_selector.find( '#has-cores' );
277
- var selector_width = cores_element.width();
278
-
279
- cores_element.find( '.chzn-container' )
280
- .css( 'width', selector_width + 'px' );
281
-
282
- cores_element.find( '.chzn-drop' )
283
- .css( 'width', ( selector_width - 2 ) + 'px' );
284
- }
285
-
286
- this.check_for_init_failures( cores );
287
- };
288
-
289
- this.remove_init_failures = function remove_init_failures()
290
- {
291
- $( '#init-failures' )
292
- .hide()
293
- .find( 'ul' )
294
- .empty();
295
- }
296
-
297
- this.check_for_init_failures = function check_for_init_failures( cores )
298
- {
299
- if( !cores.initFailures )
300
- {
301
- this.remove_init_failures();
302
- return false;
303
- }
304
-
305
- var failures = [];
306
- for( var core_name in cores.initFailures )
307
- {
308
- failures.push
309
- (
310
- '<li>' +
311
- '<strong>' + core_name.esc() + ':</strong>' + "\n" +
312
- cores.initFailures[core_name].esc() + "\n" +
313
- '</li>'
314
- );
315
- }
316
-
317
- if( 0 === failures.length )
318
- {
319
- this.remove_init_failures();
320
- return false;
321
- }
322
-
323
- $( '#init-failures' )
324
- .show()
325
- .find( 'ul' )
326
- .html( failures.join( "\n" ) );
327
- }
328
-
329
- this.run = function()
330
- {
331
- var navigator_language = navigator.userLanguage || navigator.language;
332
- var language_match = navigator_language.match( /^(\w{2})([-_](\w{2}))?$/ );
333
- if( language_match )
334
- {
335
- if( language_match[1] )
336
- {
337
- browser.language = language_match[1].toLowerCase();
338
- }
339
- if( language_match[3] )
340
- {
341
- browser.country = language_match[3].toUpperCase();
342
- }
343
- if( language_match[1] && language_match[3] )
344
- {
345
- browser.locale = browser.language + '_' + browser.country
346
- }
347
- }
348
-
349
- $.ajax
350
- (
351
- {
352
- url : config.solr_path + config.core_admin_path + '?wt=json&indexInfo=false',
353
- dataType : 'json',
354
- beforeSend : function( arr, form, options )
355
- {
356
- $( '#content' )
357
- .html( '<div id="index"><div class="loader">Loading ...</div></div>' );
358
- },
359
- success : function( response )
360
- {
361
- that.set_cores_data( response );
362
-
363
- that.menu_element
364
- .chosen()
365
- .off( 'change' )
366
- .on
367
- (
368
- 'change',
369
- function( event )
370
- {
371
- location.href = $( 'option:selected', this ).val();
372
- return false;
373
- }
374
- )
375
- .on
376
- (
377
- 'liszt:updated',
378
- function( event )
379
- {
380
- var core_name = $( 'option:selected', this ).text();
381
-
382
- that.core_menu
383
- .html
384
- (
385
- //Keep this in alphabetical order after the overview
386
- '<li class="overview"><a href="#/' + core_name + '"><span>Overview</span></a></li>' + "\n" +
387
- '<li class="analysis"><a href="#/' + core_name + '/analysis"><span>Analysis</span></a></li>' + "\n" +
388
- '<li class="dataimport"><a href="#/' + core_name + '/dataimport"><span>Dataimport</span></a></li>' + "\n" +
389
- '<li class="documents"><a href="#/' + core_name + '/documents"><span>Documents</span></a></li>' + "\n" +
390
- '<li class="files"><a href="#/' + core_name + '/files"><span>Files</span></a></li>' + "\n" +
391
- '<li class="ping"><a rel="' + that.config.solr_path + '/' + core_name + '/admin/ping"><span>Ping</span></a></li>' + "\n" +
392
- '<li class="plugins"><a href="#/' + core_name + '/plugins"><span>Plugins / Stats</span></a></li>' + "\n" +
393
- '<li class="query"><a href="#/' + core_name + '/query"><span>Query</span></a></li>' + "\n" +
394
- '<li class="replication"><a href="#/' + core_name + '/replication"><span>Replication</span></a></li>' + "\n" +
395
- '<li class="schema-browser"><a href="#/' + core_name + '/schema-browser"><span>Schema Browser</span></a></li>'
396
- )
397
- .show();
398
-
399
- if( !core_name )
400
- {
401
- that.core_menu
402
- .hide()
403
- .empty();
404
- }
405
- }
406
- );
407
-
408
- check_fixed_menu();
409
- $( window ).resize( check_fixed_menu );
410
-
411
- var system_url = config.solr_path + '/admin/info/system?wt=json';
412
- $.ajax
413
- (
414
- {
415
- url : system_url,
416
- dataType : 'json',
417
- beforeSend : function( arr, form, options )
418
- {
419
- },
420
- success : function( response )
421
- {
422
- that.dashboard_values = response;
423
-
424
- var environment_args = null;
425
- var cloud_args = null;
426
-
427
- if( response.jvm && response.jvm.jmx && response.jvm.jmx.commandLineArgs )
428
- {
429
- var command_line_args = response.jvm.jmx.commandLineArgs.join( ' | ' );
430
-
431
- environment_args = command_line_args.match( /-Dsolr.environment=((dev|test|prod)?[\w\d]*)/i );
432
- }
433
-
434
- if( response.mode )
435
- {
436
- cloud_args = response.mode.match( /solrcloud/i );
437
- }
438
-
439
- // environment
440
-
441
- var wrapper = $( '#wrapper' );
442
- var environment_element = $( '#environment' );
443
- if( environment_args )
444
- {
445
- wrapper
446
- .addClass( 'has-environment' );
447
-
448
- if( environment_args[1] )
449
- {
450
- environment_element
451
- .html( environment_args[1] );
452
- }
453
-
454
- if( environment_args[2] )
455
- {
456
- environment_element
457
- .addClass( environment_args[2] );
458
- }
459
- }
460
- else
461
- {
462
- wrapper
463
- .removeClass( 'has-environment' );
464
- }
465
-
466
- // cloud
467
-
468
- var cloud_nav_element = $( '#menu #cloud' );
469
- if( cloud_args )
470
- {
471
- cloud_nav_element
472
- .show();
473
- }
474
-
475
- // sammy
476
-
477
- sammy.run( location.hash );
478
- },
479
- error : function()
480
- {
481
- show_global_error
482
- (
483
- '<div class="message"><p>Unable to load environment info from <code>' + system_url.esc() + '</code>.</p>' +
484
- '<p>This interface requires that you activate the admin request handlers in all SolrCores by adding the ' +
485
- 'following configuration to your <code>solrconfig.xml</code>:</p></div>' + "\n" +
486
-
487
- '<div class="code"><pre class="syntax language-xml"><code>' +
488
- '<!-- Admin Handlers - This will register all the standard admin RequestHandlers. -->'.esc() + "\n" +
489
- '<requestHandler name="/admin/" class="solr.admin.AdminHandlers" />'.esc() +
490
- '</code></pre></div>'
491
- );
492
- },
493
- complete : function()
494
- {
495
- loader.hide( this );
496
- }
497
- }
498
- );
499
- },
500
- error : function()
501
- {
502
- },
503
- complete : function()
504
- {
505
- }
506
- }
507
- );
508
- };
509
-
510
- this.convert_duration_to_seconds = function convert_duration_to_seconds( str )
511
- {
512
- var seconds = 0;
513
- var arr = new String( str || '' ).split( '.' );
514
- var parts = arr[0].split( ':' ).reverse();
515
- var parts_count = parts.length;
516
-
517
- for( var i = 0; i < parts_count; i++ )
518
- {
519
- seconds += ( parseInt( parts[i], 10 ) || 0 ) * Math.pow( 60, i );
520
- }
521
-
522
- // treat more or equal than .5 as additional second
523
- if( arr[1] && 5 <= parseInt( arr[1][0], 10 ) )
524
- {
525
- seconds++;
526
- }
527
-
528
- return seconds;
529
- };
530
-
531
- this.convert_seconds_to_readable_time = function convert_seconds_to_readable_time( seconds )
532
- {
533
- seconds = parseInt( seconds || 0, 10 );
534
- var minutes = Math.floor( seconds / 60 );
535
- var hours = Math.floor( minutes / 60 );
536
-
537
- var text = [];
538
- if( 0 !== hours )
539
- {
540
- text.push( hours + 'h' );
541
- seconds -= hours * 60 * 60;
542
- minutes -= hours * 60;
543
- }
544
-
545
- if( 0 !== minutes )
546
- {
547
- text.push( minutes + 'm' );
548
- seconds -= minutes * 60;
549
- }
550
-
551
- if( 0 !== seconds )
552
- {
553
- text.push( ( '0' + seconds ).substr( -2 ) + 's' );
554
- }
555
-
556
- return text.join( ' ' );
557
- };
558
-
559
- this.clear_timeout = function clear_timeout()
560
- {
561
- if( !app.timeout )
562
- {
563
- return false;
564
- }
565
-
566
- console.debug( 'Clearing Timeout #' + this.timeout );
567
- clearTimeout( this.timeout );
568
- this.timeout = null;
569
- };
570
-
571
- this.format_json = function format_json( json_str )
572
- {
573
- if( JSON.stringify && JSON.parse )
574
- {
575
- json_str = JSON.stringify( JSON.parse( json_str ), undefined, 2 );
576
- }
577
-
578
- return json_str.esc();
579
- };
580
-
581
- this.format_number = function format_number( number )
582
- {
583
- var sep = {
584
- 'de_CH' : '\'',
585
- 'de' : '.',
586
- 'en' : ',',
587
- 'es' : '.',
588
- 'it' : '.',
589
- 'ja' : ',',
590
- 'sv' : ' ',
591
- 'tr' : '.',
592
- '_' : '' // fallback
593
- };
594
-
595
- return ( number || 0 ).toString().replace
596
- (
597
- /\B(?=(\d{3})+(?!\d))/g,
598
- sep[ browser.locale ] || sep[ browser.language ] || sep['_']
599
- );
600
- };
601
-
602
- check_fixed_menu = function check_fixed_menu()
603
- {
604
- $( '#wrapper' ).toggleClass( 'scroll', $( window ).height() < $( '#menu-wrapper' ).height() + $( '#header' ).height() + 40 );
605
- }
606
-
607
- };
608
-
609
- var connection_check_delay = 1000;
610
- var connection_working = true;
611
-
612
- var connection_check = function connection_check()
613
- {
614
- $.ajax
615
- (
616
- {
617
- url : config.solr_path + config.core_admin_path + '?wt=json&indexInfo=false',
618
- dataType : 'json',
619
- context : $( '.blockUI #connection_status span' ),
620
- beforeSend : function( arr, form, options )
621
- {
622
- this
623
- .addClass( 'loader' );
624
- },
625
- success : function( response )
626
- {
627
- connection_working = true;
628
-
629
- this
630
- .html( 'Instance is available - <a href="javascript:location.reload();">Reload the page</a>' );
631
-
632
- this.parents( '#connection_status' )
633
- .addClass( 'online' );
634
-
635
- this.parents( '.blockUI' )
636
- .css( 'borderColor', '#080' );
637
- },
638
- error : function()
639
- {
640
- connection_check_delay += connection_check_delay;
641
- window.setTimeout( connection_check, connection_check_delay );
642
- },
643
- complete : function()
644
- {
645
- this
646
- .removeClass( 'loader' );
647
- }
648
- }
649
- );
650
- };
651
-
652
- var connection_error = function connection_error()
653
- {
654
- connection_working = false;
655
-
656
- $.blockUI
657
- (
658
- {
659
- message: $( '#connection_status' ),
660
- css: { width: '450px', borderColor: '#f00' }
661
- }
662
- );
663
-
664
- window.setTimeout( connection_check, connection_check_delay );
665
- }
666
-
667
- $( document ).ajaxError
668
- (
669
- function( event, xhr, settings, thrownError )
670
- {
671
- if( connection_working && 0 === xhr.status )
672
- {
673
- connection_error();
674
- }
675
- }
676
- );
677
-
678
- $.ajaxSetup( { cache: false } );
679
- var app = new solr_admin( app_config );
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 loader = {
19
+
20
+ show : function( element )
21
+ {
22
+ $( element )
23
+ .addClass( 'loader' );
24
+ },
25
+
26
+ hide : function( element )
27
+ {
28
+ $( element )
29
+ .removeClass( 'loader' );
30
+ }
31
+
32
+ };
33
+
34
+ Number.prototype.esc = function()
35
+ {
36
+ return new String( this ).esc();
37
+ }
38
+
39
+ String.prototype.esc = function()
40
+ {
41
+ return this.replace( /</g, '&lt;' ).replace( />/g, '&gt;' );
42
+ }
43
+
44
+ SolrDate = function( date )
45
+ {
46
+ // ["Sat Mar 03 11:00:00 CET 2012", "Sat", "Mar", "03", "11:00:00", "CET", "2012"]
47
+ var parts = date.match( /^(\w+)\s+(\w+)\s+(\d+)\s+(\d+\:\d+\:\d+)\s+(\w+)\s+(\d+)$/ );
48
+
49
+ // "Sat Mar 03 2012 10:37:33"
50
+ return new Date( parts[1] + ' ' + parts[2] + ' ' + parts[3] + ' ' + parts[6] + ' ' + parts[4] );
51
+ }
52
+
53
+ var sammy = $.sammy
54
+ (
55
+ function()
56
+ {
57
+ this.bind
58
+ (
59
+ 'run',
60
+ function( event, config )
61
+ {
62
+ if( 0 === config.start_url.length )
63
+ {
64
+ location.href = '#/';
65
+ return false;
66
+ }
67
+ }
68
+ );
69
+
70
+ this.bind
71
+ (
72
+ 'error',
73
+ function( message, original_error )
74
+ {
75
+ alert( original_error.message );
76
+ }
77
+ );
78
+
79
+ // activate_core
80
+ this.before
81
+ (
82
+ {},
83
+ function( context )
84
+ {
85
+ app.clear_timeout();
86
+
87
+ var menu_wrapper = $( '#menu-wrapper' );
88
+
89
+ $( 'li[id].active', menu_wrapper )
90
+ .removeClass( 'active' );
91
+
92
+ $( 'li.active', menu_wrapper )
93
+ .removeClass( 'active' );
94
+
95
+ // global dashboard doesn't have params.splat
96
+ if( !this.params.splat )
97
+ {
98
+ this.params.splat = [ '~index' ];
99
+ }
100
+
101
+ var selector = '~' === this.params.splat[0][0]
102
+ ? '#' + this.params.splat[0].replace( /^~/, '' ) + '.global'
103
+ : '#core-selector #' + this.params.splat[0].replace( /\./g, '__' );
104
+
105
+ var active_element = $( selector, menu_wrapper );
106
+
107
+ if( 0 === active_element.size() )
108
+ {
109
+ this.app.error( 'There exists no core with name "' + this.params.splat[0] + '"' );
110
+ return false;
111
+ }
112
+
113
+ if( active_element.hasClass( 'global' ) )
114
+ {
115
+ active_element
116
+ .addClass( 'active' );
117
+
118
+ if( this.params.splat[1] )
119
+ {
120
+ $( '.' + this.params.splat[1], active_element )
121
+ .addClass( 'active' );
122
+ }
123
+
124
+ $( '#core-selector option[selected]' )
125
+ .removeAttr( 'selected' )
126
+ .trigger( 'liszt:updated' );
127
+
128
+ $( '#core-selector .chzn-container > a' )
129
+ .addClass( 'chzn-default' );
130
+ }
131
+ else
132
+ {
133
+ active_element
134
+ .attr( 'selected', 'selected' )
135
+ .trigger( 'liszt:updated' );
136
+
137
+ if( !this.params.splat[1] )
138
+ {
139
+ this.params.splat[1] = 'overview';
140
+ }
141
+
142
+ $( '#core-menu .' + this.params.splat[1] )
143
+ .addClass( 'active' );
144
+
145
+ this.active_core = active_element;
146
+ }
147
+
148
+ check_fixed_menu();
149
+ }
150
+ );
151
+ }
152
+ );
153
+
154
+ var solr_admin = function( app_config )
155
+ {
156
+ that = this,
157
+
158
+ menu_element = null,
159
+
160
+ is_multicore = null,
161
+ cores_data = null,
162
+ active_core = null,
163
+
164
+ config = app_config,
165
+ params = null,
166
+ dashboard_values = null,
167
+ schema_browser_data = null,
168
+
169
+ plugin_data = null,
170
+
171
+ this.menu_element = $( '#core-selector select' );
172
+ this.core_menu = $( '#core-menu ul' );
173
+
174
+ this.config = config;
175
+ this.timeout = null;
176
+
177
+ this.core_regex_base = '^#\\/([\\w\\d-\\.]+)';
178
+
179
+ browser = {
180
+ locale : null,
181
+ language : null,
182
+ country : null
183
+ };
184
+
185
+ show_global_error = function( error )
186
+ {
187
+ var main = $( '#main' );
188
+
189
+ $( 'div[id$="-wrapper"]', main )
190
+ .remove();
191
+
192
+ main
193
+ .addClass( 'error' )
194
+ .append( error );
195
+
196
+ var pre_tags = $( 'pre', main );
197
+ if( 0 !== pre_tags.size() )
198
+ {
199
+ hljs.highlightBlock( pre_tags.get(0) );
200
+ }
201
+ };
202
+
203
+ sort_cores_data = function sort_cores_data( cores_status )
204
+ {
205
+ // build array of core-names for sorting
206
+ var core_names = [];
207
+ for( var core_name in cores_status )
208
+ {
209
+ core_names.push( core_name );
210
+ }
211
+ core_names.sort();
212
+
213
+ var core_count = core_names.length;
214
+ var cores = {};
215
+
216
+ for( var i = 0; i < core_count; i++ )
217
+ {
218
+ var core_name = core_names[i];
219
+ cores[core_name] = cores_status[core_name];
220
+ }
221
+
222
+ return cores;
223
+ };
224
+
225
+ this.set_cores_data = function set_cores_data( cores )
226
+ {
227
+ that.cores_data = sort_cores_data( cores.status );
228
+
229
+ that.menu_element
230
+ .empty();
231
+
232
+ var core_list = [];
233
+ core_list.push( '<option></option>' );
234
+
235
+ var core_count = 0;
236
+ for( var core_name in that.cores_data )
237
+ {
238
+ core_count++;
239
+ var core_path = config.solr_path + '/' + core_name;
240
+ var classes = [];
241
+
242
+ if( cores.status[core_name]['isDefaultCore'] )
243
+ {
244
+ classes.push( 'default' );
245
+ }
246
+
247
+ var core_tpl = '<option '
248
+ + ' id="' + core_name.replace( /\./g, '__' ) + '" '
249
+ + ' class="' + classes.join( ' ' ) + '"'
250
+ + ' data-basepath="' + core_path + '"'
251
+ + ' schema="' + cores.status[core_name]['schema'] + '"'
252
+ + ' config="' + cores.status[core_name]['config'] + '"'
253
+ + ' value="#/' + core_name + '"'
254
+ + ' title="' + core_name + '"'
255
+ + '>'
256
+ + core_name
257
+ + '</option>';
258
+
259
+ core_list.push( core_tpl );
260
+ }
261
+
262
+ var has_cores = 0 !== core_count;
263
+ if( has_cores )
264
+ {
265
+ that.menu_element
266
+ .append( core_list.join( "\n" ) )
267
+ .trigger( 'liszt:updated' );
268
+ }
269
+
270
+ var core_selector = $( '#core-selector' );
271
+ core_selector.find( '#has-cores' ).toggle( has_cores );
272
+ core_selector.find( '#has-no-cores' ).toggle( !has_cores );
273
+
274
+ if( has_cores )
275
+ {
276
+ var cores_element = core_selector.find( '#has-cores' );
277
+ var selector_width = cores_element.width();
278
+
279
+ cores_element.find( '.chzn-container' )
280
+ .css( 'width', selector_width + 'px' );
281
+
282
+ cores_element.find( '.chzn-drop' )
283
+ .css( 'width', ( selector_width - 2 ) + 'px' );
284
+ }
285
+
286
+ this.check_for_init_failures( cores );
287
+ };
288
+
289
+ this.remove_init_failures = function remove_init_failures()
290
+ {
291
+ $( '#init-failures' )
292
+ .hide()
293
+ .find( 'ul' )
294
+ .empty();
295
+ }
296
+
297
+ this.check_for_init_failures = function check_for_init_failures( cores )
298
+ {
299
+ if( !cores.initFailures )
300
+ {
301
+ this.remove_init_failures();
302
+ return false;
303
+ }
304
+
305
+ var failures = [];
306
+ for( var core_name in cores.initFailures )
307
+ {
308
+ failures.push
309
+ (
310
+ '<li>' +
311
+ '<strong>' + core_name.esc() + ':</strong>' + "\n" +
312
+ cores.initFailures[core_name].esc() + "\n" +
313
+ '</li>'
314
+ );
315
+ }
316
+
317
+ if( 0 === failures.length )
318
+ {
319
+ this.remove_init_failures();
320
+ return false;
321
+ }
322
+
323
+ $( '#init-failures' )
324
+ .show()
325
+ .find( 'ul' )
326
+ .html( failures.join( "\n" ) );
327
+ }
328
+
329
+ this.run = function()
330
+ {
331
+ var navigator_language = navigator.userLanguage || navigator.language;
332
+ var language_match = navigator_language.match( /^(\w{2})([-_](\w{2}))?$/ );
333
+ if( language_match )
334
+ {
335
+ if( language_match[1] )
336
+ {
337
+ browser.language = language_match[1].toLowerCase();
338
+ }
339
+ if( language_match[3] )
340
+ {
341
+ browser.country = language_match[3].toUpperCase();
342
+ }
343
+ if( language_match[1] && language_match[3] )
344
+ {
345
+ browser.locale = browser.language + '_' + browser.country
346
+ }
347
+ }
348
+
349
+ $.ajax
350
+ (
351
+ {
352
+ url : config.solr_path + config.core_admin_path + '?wt=json&indexInfo=false',
353
+ dataType : 'json',
354
+ beforeSend : function( arr, form, options )
355
+ {
356
+ $( '#content' )
357
+ .html( '<div id="index"><div class="loader">Loading ...</div></div>' );
358
+ },
359
+ success : function( response )
360
+ {
361
+ that.set_cores_data( response );
362
+
363
+ that.menu_element
364
+ .chosen()
365
+ .off( 'change' )
366
+ .on
367
+ (
368
+ 'change',
369
+ function( event )
370
+ {
371
+ location.href = $( 'option:selected', this ).val();
372
+ return false;
373
+ }
374
+ )
375
+ .on
376
+ (
377
+ 'liszt:updated',
378
+ function( event )
379
+ {
380
+ var core_name = $( 'option:selected', this ).text();
381
+
382
+ that.core_menu
383
+ .html
384
+ (
385
+ //Keep this in alphabetical order after the overview
386
+ '<li class="overview"><a href="#/' + core_name + '"><span>Overview</span></a></li>' + "\n" +
387
+ '<li class="analysis"><a href="#/' + core_name + '/analysis"><span>Analysis</span></a></li>' + "\n" +
388
+ '<li class="dataimport"><a href="#/' + core_name + '/dataimport"><span>Dataimport</span></a></li>' + "\n" +
389
+ '<li class="documents"><a href="#/' + core_name + '/documents"><span>Documents</span></a></li>' + "\n" +
390
+ '<li class="files"><a href="#/' + core_name + '/files"><span>Files</span></a></li>' + "\n" +
391
+ '<li class="ping"><a rel="' + that.config.solr_path + '/' + core_name + '/admin/ping"><span>Ping</span></a></li>' + "\n" +
392
+ '<li class="plugins"><a href="#/' + core_name + '/plugins"><span>Plugins / Stats</span></a></li>' + "\n" +
393
+ '<li class="query"><a href="#/' + core_name + '/query"><span>Query</span></a></li>' + "\n" +
394
+ '<li class="replication"><a href="#/' + core_name + '/replication"><span>Replication</span></a></li>' + "\n" +
395
+ '<li class="schema-browser"><a href="#/' + core_name + '/schema-browser"><span>Schema Browser</span></a></li>' +
396
+ '<li class="segments"><a href="#/' + core_name + '/segments"><span>Segments info</span></a></li>'
397
+ )
398
+ .show();
399
+
400
+ if( !core_name )
401
+ {
402
+ that.core_menu
403
+ .hide()
404
+ .empty();
405
+ }
406
+ }
407
+ );
408
+
409
+ check_fixed_menu();
410
+ $( window ).resize( check_fixed_menu );
411
+
412
+ var system_url = config.solr_path + '/admin/info/system?wt=json';
413
+ $.ajax
414
+ (
415
+ {
416
+ url : system_url,
417
+ dataType : 'json',
418
+ beforeSend : function( arr, form, options )
419
+ {
420
+ },
421
+ success : function( response )
422
+ {
423
+ that.dashboard_values = response;
424
+
425
+ var environment_args = null;
426
+ var cloud_args = null;
427
+
428
+ if( response.jvm && response.jvm.jmx && response.jvm.jmx.commandLineArgs )
429
+ {
430
+ var command_line_args = response.jvm.jmx.commandLineArgs.join( ' | ' );
431
+
432
+ environment_args = command_line_args.match( /-Dsolr.environment=((dev|test|prod)?[\w\d]*)/i );
433
+ }
434
+
435
+ if( response.mode )
436
+ {
437
+ cloud_args = response.mode.match( /solrcloud/i );
438
+ }
439
+
440
+ // environment
441
+
442
+ var wrapper = $( '#wrapper' );
443
+ var environment_element = $( '#environment' );
444
+ if( environment_args )
445
+ {
446
+ wrapper
447
+ .addClass( 'has-environment' );
448
+
449
+ if( environment_args[1] )
450
+ {
451
+ environment_element
452
+ .html( environment_args[1] );
453
+ }
454
+
455
+ if( environment_args[2] )
456
+ {
457
+ environment_element
458
+ .addClass( environment_args[2] );
459
+ }
460
+ }
461
+ else
462
+ {
463
+ wrapper
464
+ .removeClass( 'has-environment' );
465
+ }
466
+
467
+ // cloud
468
+
469
+ var cloud_nav_element = $( '#menu #cloud' );
470
+ if( cloud_args )
471
+ {
472
+ cloud_nav_element
473
+ .show();
474
+ }
475
+
476
+ // sammy
477
+
478
+ sammy.run( location.hash );
479
+ },
480
+ error : function()
481
+ {
482
+ show_global_error
483
+ (
484
+ '<div class="message"><p>Unable to load environment info from <code>' + system_url.esc() + '</code>.</p>' +
485
+ '<p>This interface requires that you activate the admin request handlers in all SolrCores by adding the ' +
486
+ 'following configuration to your <code>solrconfig.xml</code>:</p></div>' + "\n" +
487
+
488
+ '<div class="code"><pre class="syntax language-xml"><code>' +
489
+ '<!-- Admin Handlers - This will register all the standard admin RequestHandlers. -->'.esc() + "\n" +
490
+ '<requestHandler name="/admin/" class="solr.admin.AdminHandlers" />'.esc() +
491
+ '</code></pre></div>'
492
+ );
493
+ },
494
+ complete : function()
495
+ {
496
+ loader.hide( this );
497
+ }
498
+ }
499
+ );
500
+ },
501
+ error : function()
502
+ {
503
+ },
504
+ complete : function()
505
+ {
506
+ }
507
+ }
508
+ );
509
+ };
510
+
511
+ this.convert_duration_to_seconds = function convert_duration_to_seconds( str )
512
+ {
513
+ var seconds = 0;
514
+ var arr = new String( str || '' ).split( '.' );
515
+ var parts = arr[0].split( ':' ).reverse();
516
+ var parts_count = parts.length;
517
+
518
+ for( var i = 0; i < parts_count; i++ )
519
+ {
520
+ seconds += ( parseInt( parts[i], 10 ) || 0 ) * Math.pow( 60, i );
521
+ }
522
+
523
+ // treat more or equal than .5 as additional second
524
+ if( arr[1] && 5 <= parseInt( arr[1][0], 10 ) )
525
+ {
526
+ seconds++;
527
+ }
528
+
529
+ return seconds;
530
+ };
531
+
532
+ this.convert_seconds_to_readable_time = function convert_seconds_to_readable_time( seconds )
533
+ {
534
+ seconds = parseInt( seconds || 0, 10 );
535
+ var minutes = Math.floor( seconds / 60 );
536
+ var hours = Math.floor( minutes / 60 );
537
+
538
+ var text = [];
539
+ if( 0 !== hours )
540
+ {
541
+ text.push( hours + 'h' );
542
+ seconds -= hours * 60 * 60;
543
+ minutes -= hours * 60;
544
+ }
545
+
546
+ if( 0 !== minutes )
547
+ {
548
+ text.push( minutes + 'm' );
549
+ seconds -= minutes * 60;
550
+ }
551
+
552
+ if( 0 !== seconds )
553
+ {
554
+ text.push( ( '0' + seconds ).substr( -2 ) + 's' );
555
+ }
556
+
557
+ return text.join( ' ' );
558
+ };
559
+
560
+ this.clear_timeout = function clear_timeout()
561
+ {
562
+ if( !app.timeout )
563
+ {
564
+ return false;
565
+ }
566
+
567
+ console.debug( 'Clearing Timeout #' + this.timeout );
568
+ clearTimeout( this.timeout );
569
+ this.timeout = null;
570
+ };
571
+
572
+ this.format_json = function format_json( json_str )
573
+ {
574
+ if( JSON.stringify && JSON.parse )
575
+ {
576
+ json_str = JSON.stringify( JSON.parse( json_str ), undefined, 2 );
577
+ }
578
+
579
+ return json_str.esc();
580
+ };
581
+
582
+ this.format_number = function format_number( number )
583
+ {
584
+ var sep = {
585
+ 'de_CH' : '\'',
586
+ 'de' : '.',
587
+ 'en' : ',',
588
+ 'es' : '.',
589
+ 'it' : '.',
590
+ 'ja' : ',',
591
+ 'sv' : ' ',
592
+ 'tr' : '.',
593
+ '_' : '' // fallback
594
+ };
595
+
596
+ return ( number || 0 ).toString().replace
597
+ (
598
+ /\B(?=(\d{3})+(?!\d))/g,
599
+ sep[ browser.locale ] || sep[ browser.language ] || sep['_']
600
+ );
601
+ };
602
+
603
+ check_fixed_menu = function check_fixed_menu()
604
+ {
605
+ $( '#wrapper' ).toggleClass( 'scroll', $( window ).height() < $( '#menu-wrapper' ).height() + $( '#header' ).height() + 40 );
606
+ }
607
+
608
+ };
609
+
610
+ var connection_check_delay = 1000;
611
+ var connection_working = true;
612
+
613
+ var connection_check = function connection_check()
614
+ {
615
+ $.ajax
616
+ (
617
+ {
618
+ url : config.solr_path + config.core_admin_path + '?wt=json&indexInfo=false',
619
+ dataType : 'json',
620
+ context : $( '.blockUI #connection_status span' ),
621
+ beforeSend : function( arr, form, options )
622
+ {
623
+ this
624
+ .addClass( 'loader' );
625
+ },
626
+ success : function( response )
627
+ {
628
+ connection_working = true;
629
+
630
+ this
631
+ .html( 'Instance is available - <a href="javascript:location.reload();">Reload the page</a>' );
632
+
633
+ this.parents( '#connection_status' )
634
+ .addClass( 'online' );
635
+
636
+ this.parents( '.blockUI' )
637
+ .css( 'borderColor', '#080' );
638
+ },
639
+ error : function()
640
+ {
641
+ connection_check_delay += connection_check_delay;
642
+ window.setTimeout( connection_check, connection_check_delay );
643
+ },
644
+ complete : function()
645
+ {
646
+ this
647
+ .removeClass( 'loader' );
648
+ }
649
+ }
650
+ );
651
+ };
652
+
653
+ var connection_error = function connection_error()
654
+ {
655
+ connection_working = false;
656
+
657
+ $.blockUI
658
+ (
659
+ {
660
+ message: $( '#connection_status' ),
661
+ css: { width: '450px', borderColor: '#f00' }
662
+ }
663
+ );
664
+
665
+ window.setTimeout( connection_check, connection_check_delay );
666
+ }
667
+
668
+ $( document ).ajaxError
669
+ (
670
+ function( event, xhr, settings, thrownError )
671
+ {
672
+ if( connection_working && 0 === xhr.status )
673
+ {
674
+ connection_error();
675
+ }
676
+ }
677
+ );
678
+
679
+ $.ajaxSetup( { cache: false } );
680
+ var app = new solr_admin( app_config );