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,1229 +1,1229 @@
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 current_core = null;
19
- var cookie_schema_browser_autoload = 'schema-browser_autoload';
20
-
21
- var luke_array_to_struct = function( array )
22
- {
23
- var struct = {
24
- keys : [],
25
- values : []
26
- };
27
- for( var i = 0; i < array.length; i += 2 )
28
- {
29
- struct.keys.push( array[i] );
30
- struct.values.push( array[i+1] );
31
- }
32
- return struct;
33
- }
34
-
35
- var luke_array_to_hash = function( array )
36
- {
37
- var hash = {};
38
- for( var i = 0; i < array.length; i += 2 )
39
- {
40
- hash[ array[i] ] = array[i+1];
41
- }
42
- return hash;
43
- }
44
-
45
- var load_terminfo = function( trigger_element, core_basepath, field, data_element, terminfo_element )
46
- {
47
- var luke_url = core_basepath + '/admin/luke?wt=json&fl=' + field;
48
- var topterms_count_element = $( '.topterms-holder .head input', terminfo_element );
49
-
50
- var term_load_count = parseInt( topterms_count_element.val(), 10 );
51
- if( term_load_count )
52
- {
53
- luke_url += '&numTerms=' + term_load_count;
54
- }
55
-
56
- $.ajax
57
- (
58
- {
59
- url : luke_url,
60
- dataType : 'json',
61
- context : terminfo_element,
62
- beforeSend : function( xhr, settings )
63
- {
64
- $( 'span', trigger_element )
65
- .addClass( 'loader' );
66
- },
67
- success : function( response, text_status, xhr )
68
- {
69
- var additional_styles = [];
70
- var field_data = response.fields[field];
71
-
72
- if( !field_data || !( field_data.topTerms && field_data.histogram ) )
73
- {
74
- terminfo_element
75
- .addClass( 'disabled' );
76
-
77
- return false;
78
- }
79
-
80
- var get_width = function get_width()
81
- {
82
- return $( this ).width();
83
- }
84
-
85
- var topterms_holder_element = $( '.topterms-holder', data_element );
86
- var histogram_holder_element = $( '.histogram-holder', data_element );
87
-
88
- if( !field_data.topTerms )
89
- {
90
- topterms_holder_element
91
- .hide();
92
- }
93
- else
94
- {
95
- topterms_holder_element
96
- .show();
97
-
98
- var topterms_table_element = $( 'ul', topterms_holder_element );
99
-
100
- var topterms = field_data.topTerms;
101
- var topterms_count = topterms.length;
102
-
103
- var topterms_content = '';
104
- var topterms_frq_last = null;
105
-
106
- for( var i = 0; i < topterms_count; i += 2 )
107
- {
108
- if( topterms_frq_last !== topterms[i+1] )
109
- {
110
- if( topterms_frq_last )
111
- {
112
- topterms_content += '</ul></li>' + "\n";
113
- }
114
-
115
- topterms_frq_last = topterms[i+1];
116
- topterms_content += '<li class="clearfix">'
117
- + '<p><span>' + app.format_number( topterms_frq_last ) + '</span></p>' + "\n"
118
- + '<ul>' + "\n";
119
- }
120
-
121
- var target = '#/' + current_core + '/query?q=' + field.esc() + ':' + encodeURIComponent( '"' + topterms[i] + '"' );
122
- topterms_content += '<li><a href="' + target + '">' + topterms[i].esc() + '</a></li>' + "\n";
123
- }
124
-
125
- topterms_content += '</li>';
126
-
127
- topterms_count = topterms_count / 2;
128
-
129
- $( 'input', trigger_element )
130
- .val( topterms_count );
131
-
132
- topterms_table_element
133
- .html( topterms_content );
134
-
135
- var max_width = 10 + Math.max.apply( Math, $( 'p', topterms_table_element ).map( get_width ).get() );
136
- additional_styles.push
137
- (
138
- topterms_table_element.selector + ' p { width: ' + max_width + 'px !important; }' + "\n" +
139
- topterms_table_element.selector + ' ul { margin-left: ' + ( max_width + 5 ) + 'px !important; }'
140
- );
141
-
142
- topterms_count_element
143
- .val( topterms_count );
144
-
145
- $( 'p.head .max', topterms_holder_element )
146
- .html( field_data.distinct );
147
-
148
- $( 'p.head #query_link', topterms_holder_element )
149
- .attr( 'href', '#/' + current_core + '/query?q=' + field.esc() + ':[* TO *]' );
150
-
151
- $( 'ul li:even', topterms_table_element )
152
- .addClass( 'odd' );
153
- }
154
-
155
- if( !field_data.histogram )
156
- {
157
- histogram_holder_element
158
- .hide();
159
- }
160
- else
161
- {
162
- histogram_holder_element
163
- .show();
164
-
165
- var histogram_values = luke_array_to_hash( field_data.histogram );
166
- var histogram_entries = [];
167
-
168
- var histogram_max = null;
169
- for( var key in histogram_values )
170
- {
171
- histogram_max = Math.max( histogram_max, histogram_values[key] );
172
- }
173
-
174
- for( var key in histogram_values )
175
- {
176
- histogram_entries.push
177
- (
178
- '<li>' + "\n" +
179
- ' <dl class="clearfix" style="width: ' + ( ( histogram_values[key] / histogram_max ) * 100 ) + '%;">' + "\n" +
180
- ' <dt><span>' + app.format_number( key ) + '</span></dt>' + "\n" +
181
- ' <dd><span>' + app.format_number( histogram_values[key] ) + '</span></dd>' + "\n" +
182
- ' </dl>' + "\n" +
183
- '</li>'
184
- );
185
- }
186
-
187
- $( 'ul', histogram_holder_element )
188
- .html( histogram_entries.join( "\n" ) );
189
-
190
- $( 'ul li:even', histogram_holder_element )
191
- .addClass( 'odd' );
192
-
193
- var max_width = 10 + Math.max.apply( Math, $( 'dt', histogram_holder_element ).map( get_width ).get() );
194
- additional_styles.push
195
- (
196
- histogram_holder_element.selector + ' ul { margin-left: ' + max_width + 'px !important; }' + "\n" +
197
- histogram_holder_element.selector + ' li dt { left: ' + ( max_width * -1 ) + 'px !important; width: ' + max_width + 'px !important; }'
198
- );
199
- }
200
-
201
- if( additional_styles )
202
- {
203
- terminfo_element
204
- .prepend( '<style type="text/css">' + additional_styles.join( "\n" ) + '</style>' );
205
- }
206
- },
207
- error : function( xhr, text_status, error_thrown)
208
- {
209
- terminfo_element
210
- .addClass( 'disabled' );
211
- },
212
- complete : function( xhr, text_status )
213
- {
214
- $( 'span', trigger_element )
215
- .removeClass( 'loader' );
216
- }
217
- }
218
- );
219
- }
220
-
221
- sammy.bind
222
- (
223
- 'schema_browser_navi',
224
- function( event, params )
225
- {
226
- var related_navigation_element = $( '#related dl#f-df-t', params.schema_browser_element );
227
- var related_navigation_meta = $( '#related dl.ukf-dsf', params.schema_browser_element );
228
- var related_select_element = $( '#related select', params.schema_browser_element )
229
- var type = 'index';
230
-
231
- var sammy_basepath = app.core_menu.find( '.active a' ).attr( 'href' );
232
-
233
- if( !related_navigation_meta.hasClass( 'done' ) )
234
- {
235
- if( app.schema_browser_data.unique_key_field )
236
- {
237
- $( '.unique-key-field', related_navigation_meta )
238
- .show()
239
- .after
240
- (
241
- '<dd class="unique-key-field"><a href="' + sammy_basepath + '?field=' +
242
- app.schema_browser_data.unique_key_field + '">' +
243
- app.schema_browser_data.unique_key_field + '</a></dd>'
244
- );
245
- }
246
-
247
- if( app.schema_browser_data.default_search_field )
248
- {
249
- $( '.default-search-field', related_navigation_meta )
250
- .show()
251
- .after
252
- (
253
- '<dd class="default-search-field"><a href="' + sammy_basepath + '?field=' +
254
- app.schema_browser_data.default_search_field + '">' +
255
- app.schema_browser_data.default_search_field + '</a></dd>'
256
- );
257
- }
258
-
259
- related_navigation_meta
260
- .addClass( 'done' );
261
- }
262
-
263
- if( params.route_params )
264
- {
265
- var type = params.route_params.type;
266
- var value = params.route_params.value;
267
-
268
- var navigation_data = {
269
- 'fields' : [],
270
- 'copyfield_source' : [],
271
- 'copyfield_dest' : [],
272
- 'dynamic_fields' : [],
273
- 'types' : []
274
- }
275
-
276
- $( 'option[value="' + params.route_params.path + '"]', related_select_element )
277
- .attr( 'selected', 'selected' );
278
-
279
- related_select_element
280
- .trigger( 'liszt:updated' );
281
-
282
- if( 'field' === type )
283
- {
284
- navigation_data.fields.push( value );
285
-
286
- if( app.schema_browser_data.relations.f_t[value] )
287
- {
288
- navigation_data.types.push( app.schema_browser_data.relations.f_t[value] );
289
- }
290
-
291
- if( app.schema_browser_data.relations.f_df[value] )
292
- {
293
- navigation_data.dynamic_fields.push( app.schema_browser_data.relations.f_df[value] );
294
- }
295
-
296
- if( app.schema_browser_data.fields[value].copySources && 0 !== app.schema_browser_data.fields[value].copySources.length )
297
- {
298
- navigation_data.copyfield_source = app.schema_browser_data.fields[value].copySources;
299
- }
300
-
301
- if( app.schema_browser_data.fields[value].copyDests && 0 !== app.schema_browser_data.fields[value].copyDests.length )
302
- {
303
- navigation_data.copyfield_dest = app.schema_browser_data.fields[value].copyDests;
304
- }
305
- }
306
- else if( 'dynamic-field' === type )
307
- {
308
- navigation_data.dynamic_fields.push( value );
309
- navigation_data.types.push( app.schema_browser_data.relations.df_t[value] );
310
-
311
- if( app.schema_browser_data.relations.df_f[value] )
312
- {
313
- navigation_data.fields = app.schema_browser_data.relations.df_f[value];
314
- }
315
- }
316
- else if( 'type' === type )
317
- {
318
- navigation_data.types.push( value );
319
-
320
- if( app.schema_browser_data.relations.t_f[value] )
321
- {
322
- navigation_data.fields = app.schema_browser_data.relations.t_f[value];
323
- }
324
-
325
- if( app.schema_browser_data.relations.t_df[value] )
326
- {
327
- navigation_data.dynamic_fields = app.schema_browser_data.relations.t_df[value];
328
- }
329
- }
330
-
331
- var navigation_content = '';
332
-
333
- if( 0 !== navigation_data.fields.length )
334
- {
335
- navigation_data.fields.sort();
336
- navigation_content += '<dt class="field">Field</dt>' + "\n";
337
- for( var i in navigation_data.fields )
338
- {
339
- var href = sammy_basepath + '?field=' + navigation_data.fields[i];
340
- navigation_content += '<dd class="field"><a href="' + href + '">' + navigation_data.fields[i] + '</a></dd>' + "\n";
341
- }
342
- }
343
-
344
- if( 0 !== navigation_data.copyfield_source.length )
345
- {
346
- navigation_data.copyfield_source.sort();
347
- navigation_content += '<dt class="copyfield">Copied from</dt>' + "\n";
348
- for( var i in navigation_data.copyfield_source )
349
- {
350
- var href = sammy_basepath + '?field=' + navigation_data.copyfield_source[i];
351
- navigation_content += '<dd class="copyfield"><a href="' + href + '">' + navigation_data.copyfield_source[i] + '</a></dd>' + "\n";
352
- }
353
- }
354
-
355
- if( 0 !== navigation_data.copyfield_dest.length )
356
- {
357
- navigation_data.copyfield_dest.sort();
358
- navigation_content += '<dt class="copyfield">Copied to</dt>' + "\n";
359
- for( var i in navigation_data.copyfield_dest )
360
- {
361
- var href = sammy_basepath + '?field=' + navigation_data.copyfield_dest[i];
362
- navigation_content += '<dd class="copyfield"><a href="' + href + '">' + navigation_data.copyfield_dest[i] + '</a></dd>' + "\n";
363
- }
364
- }
365
-
366
- if( 0 !== navigation_data.dynamic_fields.length )
367
- {
368
- navigation_data.dynamic_fields.sort();
369
- navigation_content += '<dt class="dynamic-field">Dynamic Field</dt>' + "\n";
370
- for( var i in navigation_data.dynamic_fields )
371
- {
372
- var href = sammy_basepath + '?dynamic-field=' + navigation_data.dynamic_fields[i];
373
- navigation_content += '<dd class="dynamic-field"><a href="' + href + '">' + navigation_data.dynamic_fields[i] + '</a></dd>' + "\n";
374
- }
375
- }
376
-
377
- if( 0 !== navigation_data.types.length )
378
- {
379
- navigation_data.types.sort();
380
- navigation_content += '<dt class="type">Type</dt>' + "\n";
381
- for( var i in navigation_data.types )
382
- {
383
- var href = sammy_basepath + '?type=' + navigation_data.types[i];
384
- navigation_content += '<dd class="type"><a href="' + href + '">' + navigation_data.types[i] + '</a></dd>' + "\n";
385
- }
386
- }
387
-
388
- related_navigation_element
389
- .show()
390
- .attr( 'class', type )
391
- .html( navigation_content );
392
- }
393
- else
394
- {
395
- related_navigation_element
396
- .hide();
397
-
398
- $( 'option:selected', related_select_element )
399
- .removeAttr( 'selected' );
400
- }
401
-
402
- if( 'field' === type && value === app.schema_browser_data.unique_key_field )
403
- {
404
- $( '.unique-key-field', related_navigation_meta )
405
- .addClass( 'active' );
406
- }
407
- else
408
- {
409
- $( '.unique-key-field', related_navigation_meta )
410
- .removeClass( 'active' );
411
- }
412
-
413
- if( 'field' === type && value === app.schema_browser_data.default_search_field )
414
- {
415
- $( '.default-search-field', related_navigation_meta )
416
- .addClass( 'active' );
417
- }
418
- else
419
- {
420
- $( '.default-search-field', related_navigation_meta )
421
- .removeClass( 'active' );
422
- }
423
-
424
- if( params.callback )
425
- {
426
- params.callback( app.schema_browser_data, $( '#data', params.schema_browser_element ) );
427
- }
428
- }
429
- );
430
-
431
- sammy.bind
432
- (
433
- 'schema_browser_load',
434
- function( event, params )
435
- {
436
- var core_basepath = params.active_core.attr( 'data-basepath' );
437
- var content_element = $( '#content' );
438
-
439
- if( app.schema_browser_data )
440
- {
441
- params.schema_browser_element = $( '#schema-browser', content_element );
442
-
443
- sammy.trigger
444
- (
445
- 'schema_browser_navi',
446
- params
447
- );
448
- }
449
- else
450
- {
451
- content_element
452
- .html( '<div id="schema-browser"><div class="loader">Loading ...</div></div>' );
453
-
454
- $.ajax
455
- (
456
- {
457
- url : core_basepath + '/admin/luke?numTerms=0&wt=json',
458
- dataType : 'json',
459
- beforeSend : function( xhr, settings )
460
- {
461
- },
462
- success : function( response, text_status, xhr )
463
- {
464
- app.schema_browser_data = {
465
- default_search_field : null,
466
- unique_key_field : null,
467
- key : {},
468
- fields : {},
469
- dynamic_fields : {},
470
- types : {},
471
- relations : {
472
- f_df : {},
473
- f_t : {},
474
- df_f : {},
475
- df_t : {},
476
- t_f : {},
477
- t_df : {}
478
- }
479
- };
480
-
481
- app.schema_browser_data.fields = response.fields;
482
- app.schema_browser_data.key = response.info.key;
483
-
484
- $.ajax
485
- (
486
- {
487
- url : core_basepath + '/admin/luke?show=schema&wt=json',
488
- dataType : 'json',
489
- beforeSend : function( xhr, settings )
490
- {
491
- },
492
- success : function( response, text_status, xhr )
493
- {
494
- app.schema_browser_data.default_search_field = response.schema.defaultSearchField;
495
- app.schema_browser_data.unique_key_field = response.schema.uniqueKeyField;
496
-
497
- app.schema_browser_data.dynamic_fields = response.schema.dynamicFields;
498
- app.schema_browser_data.types = response.schema.types;
499
-
500
- for( var field in response.schema.fields )
501
- {
502
- app.schema_browser_data.fields[field] = $.extend
503
- (
504
- {},
505
- app.schema_browser_data.fields[field],
506
- response.schema.fields[field]
507
- );
508
- }
509
-
510
- for( var field in app.schema_browser_data.fields )
511
- {
512
- var copy_dests = app.schema_browser_data.fields[field].copyDests;
513
- for( var i in copy_dests )
514
- {
515
- var copy_dest = copy_dests[i];
516
- if( !app.schema_browser_data.fields[copy_dest] )
517
- {
518
- app.schema_browser_data.fields[copy_dest] = {
519
- partial : true,
520
- copySources : []
521
- };
522
- }
523
-
524
- if( app.schema_browser_data.fields[copy_dest].partial )
525
- {
526
- app.schema_browser_data.fields[copy_dest].copySources.push( field );
527
- }
528
- }
529
-
530
- var copy_sources = app.schema_browser_data.fields[field].copySources;
531
- for( var i in copy_sources )
532
- {
533
- var copy_source = copy_sources[i];
534
- if( !app.schema_browser_data.fields[copy_source] )
535
- {
536
- app.schema_browser_data.fields[copy_source] = {
537
- partial : true,
538
- copyDests : []
539
- };
540
- }
541
-
542
- if( app.schema_browser_data.fields[copy_source].partial )
543
- {
544
- app.schema_browser_data.fields[copy_source].copyDests.push( field );
545
- }
546
- }
547
-
548
- app.schema_browser_data.relations.f_t[field] = app.schema_browser_data.fields[field].type;
549
-
550
- if( !app.schema_browser_data.relations.t_f[app.schema_browser_data.fields[field].type] )
551
- {
552
- app.schema_browser_data.relations.t_f[app.schema_browser_data.fields[field].type] = [];
553
- }
554
- app.schema_browser_data.relations.t_f[app.schema_browser_data.fields[field].type].push( field );
555
-
556
- if( app.schema_browser_data.fields[field].dynamicBase )
557
- {
558
- app.schema_browser_data.relations.f_df[field] = app.schema_browser_data.fields[field].dynamicBase;
559
-
560
- if( !app.schema_browser_data.relations.df_f[app.schema_browser_data.fields[field].dynamicBase] )
561
- {
562
- app.schema_browser_data.relations.df_f[app.schema_browser_data.fields[field].dynamicBase] = [];
563
- }
564
- app.schema_browser_data.relations.df_f[app.schema_browser_data.fields[field].dynamicBase].push( field );
565
- }
566
- }
567
-
568
- for( var dynamic_field in app.schema_browser_data.dynamic_fields )
569
- {
570
- app.schema_browser_data.relations.df_t[dynamic_field] = app.schema_browser_data.dynamic_fields[dynamic_field].type;
571
-
572
- if( !app.schema_browser_data.relations.t_df[app.schema_browser_data.dynamic_fields[dynamic_field].type] )
573
- {
574
- app.schema_browser_data.relations.t_df[app.schema_browser_data.dynamic_fields[dynamic_field].type] = [];
575
- }
576
- app.schema_browser_data.relations.t_df[app.schema_browser_data.dynamic_fields[dynamic_field].type].push( dynamic_field );
577
- }
578
-
579
- $.get
580
- (
581
- 'tpl/schema-browser.html',
582
- function( template )
583
- {
584
- content_element
585
- .html( template );
586
-
587
- var schema_browser_element = $( '#schema-browser', content_element );
588
- var related_element = $( '#related', schema_browser_element );
589
- var related_select_element = $( 'select', related_element );
590
- var data_element = $( '#data', schema_browser_element );
591
-
592
- var related_options = '';
593
-
594
- var fields = [];
595
- for( var field_name in app.schema_browser_data.fields )
596
- {
597
- fields.push
598
- (
599
- '<option value="?field=' + field_name + '">' + field_name + '</option>'
600
- );
601
- }
602
- if( 0 !== fields.length )
603
- {
604
- fields.sort();
605
- related_options += '<optgroup label="Fields">' + "\n";
606
- related_options += fields.sort().join( "\n" ) + "\n";
607
- related_options += '</optgroup>' + "\n";
608
- }
609
-
610
- var dynamic_fields = [];
611
- for( var type_name in app.schema_browser_data.dynamic_fields )
612
- {
613
- dynamic_fields.push
614
- (
615
- '<option value="?dynamic-field=' + type_name + '">' + type_name + '</option>'
616
- );
617
- }
618
- if( 0 !== dynamic_fields.length )
619
- {
620
- dynamic_fields.sort();
621
- related_options += '<optgroup label="DynamicFields">' + "\n";
622
- related_options += dynamic_fields.sort().join( "\n" ) + "\n";
623
- related_options += '</optgroup>' + "\n";
624
- }
625
-
626
- var types = [];
627
- for( var type_name in app.schema_browser_data.types )
628
- {
629
- types.push
630
- (
631
- '<option value="?type=' + type_name + '">' + type_name + '</option>'
632
- );
633
- }
634
- if( 0 !== types.length )
635
- {
636
- types.sort();
637
- related_options += '<optgroup label="Types">' + "\n";
638
- related_options += types.sort().join( "\n" ) + "\n";
639
- related_options += '</optgroup>' + "\n";
640
- }
641
-
642
- related_select_element
643
- .attr( 'rel', app.core_menu.find( '.active a' ).attr( 'href' ) )
644
- .append( related_options )
645
- .chosen();
646
-
647
- related_select_element
648
- .die( 'change' )
649
- .live
650
- (
651
- 'change',
652
- function( event )
653
- {
654
- var select_element = $( this );
655
- var option_element = $( 'option:selected', select_element );
656
-
657
- location.href = select_element.attr( 'rel' ) + option_element.val();
658
- return false;
659
- }
660
- );
661
-
662
- params.schema_browser_element = schema_browser_element;
663
- sammy.trigger
664
- (
665
- 'schema_browser_navi',
666
- params
667
- );
668
- }
669
- );
670
- },
671
- error : function( xhr, text_status, error_thrown)
672
- {
673
- },
674
- complete : function( xhr, text_status )
675
- {
676
- }
677
- }
678
- );
679
-
680
- },
681
- error : function( xhr, text_status, error_thrown)
682
- {
683
- },
684
- complete : function( xhr, text_status )
685
- {
686
- }
687
- }
688
- );
689
- }
690
- }
691
- );
692
-
693
- // #/:core/schema-browser
694
- sammy.get
695
- (
696
- new RegExp( app.core_regex_base + '\\/(schema-browser)$' ),
697
- function( context )
698
- {
699
- var core_basepath = this.active_core.attr( 'data-basepath' );
700
- current_core = context.params.splat[0];
701
-
702
- var trigger_params = {
703
- active_core : this.active_core
704
- };
705
-
706
- var path = context.path.split( '?' );
707
- if( path && path[1] )
708
- {
709
- var param = path[1].split( '=' );
710
- trigger_params.route_params = {
711
- path : '?' + path[1],
712
- type : param[0],
713
- value : param[1]
714
- }
715
-
716
- trigger_params.callback = function( schema_browser_data, data_element )
717
- {
718
- var field = trigger_params.route_params.value;
719
-
720
- var type = trigger_params.route_params.type;
721
- var is_f = 'field' === type;
722
- var is_df = 'dynamic-field' === type;
723
- var is_t = 'type' === type;
724
-
725
- var options_element = $( '.options', data_element );
726
- var sammy_basepath = context.path.indexOf( '/', context.path.indexOf( '/', 2 ) + 1 );
727
-
728
- data_element
729
- .show();
730
-
731
- // -- head
732
-
733
- var head_element = $( '.head', data_element );
734
- if( is_f )
735
- {
736
- $( '.type', head_element ).html( 'Field' );
737
- }
738
- else if( is_df )
739
- {
740
- $( '.type', head_element ).html( 'Dynamic Field' );
741
- }
742
- else if( is_t )
743
- {
744
- $( '.type', head_element ).html( 'Type' );
745
- }
746
- $( '.name', head_element ).html( field.esc() );
747
-
748
-
749
- var partial_state = false;
750
- if( is_f )
751
- {
752
- partial_state = !!schema_browser_data.fields[field].partial;
753
- }
754
-
755
- $( '.partial', data_element )
756
- .toggle( partial_state );
757
-
758
- // -- docs
759
- var docs_element = $( 'dt.docs', options_element );
760
- if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].docs )
761
- {
762
- $( 'dd.docs', options_element )
763
- .remove();
764
-
765
- var target = '#/' + current_core + '/query?q=' + field.esc() + ':[* TO *]';
766
- docs_element
767
- .show()
768
- .after(
769
- '<dd class="docs">'+
770
- '<a href="'+target+'">' + schema_browser_data.fields[field].docs + '</a>' +
771
- '</dd>' );
772
- }
773
- else
774
- {
775
- $( '.docs', options_element )
776
- .hide();
777
- }
778
-
779
- // -- distinct
780
- var distinct_element = $( 'dt.distinct', options_element );
781
- if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].distinct )
782
- {
783
- $( 'dd.distinct', options_element )
784
- .remove();
785
-
786
- distinct_element
787
- .show()
788
- .after( '<dd class="distinct">' + schema_browser_data.fields[field].distinct + '</dd>' );
789
- }
790
- else
791
- {
792
- $( '.distinct', options_element )
793
- .hide();
794
- }
795
-
796
- // -- position-increment-gap
797
- var pig_element = $( 'dt.position-increment-gap', options_element );
798
- if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].positionIncrementGap )
799
- {
800
- $( 'dd.position-increment-gap', options_element )
801
- .remove();
802
-
803
- pig_element
804
- .show()
805
- .after( '<dd class="position-increment-gap">' + schema_browser_data.fields[field].positionIncrementGap + '</dd>' );
806
- }
807
- else
808
- {
809
- $( '.position-increment-gap', options_element )
810
- .hide();
811
- }
812
-
813
- var similarity_element = $( 'dt.similarity', options_element );
814
- if ( is_t && schema_browser_data.types[field] && schema_browser_data.types[field].similarity ) {
815
- var similarity = schema_browser_data.types[field].similarity
816
- if (similarity.details && similarity.className) {
817
- $( 'dd.similarity', options_element ).remove();
818
- similarity_element
819
- .show()
820
- .after(['<dd class="similarity">', similarity.details.esc(), ' (', similarity.className.esc(), ') </dd>'].join(""));
821
- }
822
- } else {
823
- $( '.similarity', options_element ).hide();
824
- }
825
-
826
-
827
- // -- flags table
828
- var flags_table = $( 'table.flags', data_element );
829
-
830
- var flags_arr = [];
831
- for( var key in schema_browser_data.key )
832
- {
833
- flags_arr.push( '<th data-key="' + key + '">' + schema_browser_data.key[key] + '</th>' );
834
- }
835
-
836
- $( 'thead tr', flags_table )
837
- .append( flags_arr.join( "\n" ) );
838
-
839
-
840
- var flags_body = $( 'tbody', flags_table );
841
- flags_body.empty();
842
-
843
- var generate_flags_row = function generate_flags_row( flags_str, title )
844
- {
845
- var flags_arr = [ '<th>' + title.esc() + '</th>' ];
846
-
847
- if( 0 === flags_str.indexOf( '(' ) )
848
- {
849
- flags_arr.push( '<td colspan="2" class="text">' + flags_str + '</td>' );
850
- }
851
- else
852
- {
853
- var i = 0;
854
- for( var key in schema_browser_data.key )
855
- {
856
- var flag_match = key === flags_str[i];
857
-
858
- var flag_cell = '<td '
859
- + ' data-key="' + key + '"'
860
- + ' class="' + ( flag_match ? 'check' : '' ) + '"'
861
- + '>'
862
- + ( flag_match ? '<span>√</span>' : '&nbsp;' )
863
- + '</td>';
864
-
865
- flags_arr.push( flag_cell );
866
- i++;
867
- }
868
- }
869
-
870
- flags_body
871
- .append( '<tr>' + flags_arr.join( "\n" ) + '</tr>' );
872
- };
873
-
874
- var flags = null;
875
- if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].flags )
876
- {
877
- flags = schema_browser_data.fields[field].flags;
878
- }
879
- else if( is_df && schema_browser_data.dynamic_fields[field] && schema_browser_data.dynamic_fields[field].flags )
880
- {
881
- flags = schema_browser_data.dynamic_fields[field].flags;
882
- }
883
-
884
- if( flags )
885
- {
886
- generate_flags_row( flags, 'Properties' );
887
- }
888
-
889
- if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].schema )
890
- {
891
- generate_flags_row( schema_browser_data.fields[field].schema, 'Schema' );
892
- }
893
-
894
- if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].index )
895
- {
896
- generate_flags_row( schema_browser_data.fields[field].index, 'Index' );
897
- }
898
-
899
-
900
- if( 0 !== $( 'tr', flags_body ).size() )
901
- {
902
- var col_count = 0;
903
- for( var key in schema_browser_data.key )
904
- {
905
- var cols = $( '[data-key="' + key + '"]', flags_table );
906
-
907
- var col_used = 0 !== cols.filter( '.check' ).size();
908
- col_count += col_used;
909
-
910
- cols.toggle( col_used );
911
- }
912
-
913
- $( 'td[colspan]', flags_body )
914
- .attr( 'colspan', col_count );
915
-
916
- flags_table.show();
917
- }
918
- else
919
- {
920
- flags_table.hide();
921
- }
922
-
923
- var analyzer_element = $( '.analyzer', data_element );
924
- var analyzer_data = null;
925
-
926
- var analysis_link = false;
927
- var analysis_link_elements = $( 'p a', analyzer_element );
928
- var analysis_target = '#/' + current_core + '/analysis?';
929
-
930
- if( is_f )
931
- {
932
- analyzer_data = schema_browser_data.types[schema_browser_data.relations.f_t[field]];
933
-
934
- analysis_link = true;
935
- analysis_target += 'analysis.fieldname=' + field;
936
- }
937
- else if( is_df )
938
- {
939
- analyzer_data = schema_browser_data.types[schema_browser_data.relations.df_t[field]];
940
- }
941
- else if( is_t )
942
- {
943
- analyzer_data = schema_browser_data.types[field];
944
-
945
- analysis_link = true;
946
- analysis_target += 'analysis.fieldtype=' + field;
947
- }
948
-
949
- if( analysis_link )
950
- {
951
- analysis_link_elements
952
- .addClass( 'analysis' )
953
- .attr( 'href', analysis_target );
954
- }
955
- else
956
- {
957
- analysis_link_elements
958
- .removeClass( 'analysis' )
959
- .removeAttr( 'href' );
960
- }
961
-
962
-
963
- if( analyzer_data )
964
- {
965
- var transform_analyzer_data_into_list = function( analyzer_data )
966
- {
967
- var args = [];
968
- for( var key in analyzer_data.args )
969
- {
970
- var arg_class = '';
971
- var arg_content = '';
972
-
973
- if( 'true' === analyzer_data.args[key] || '1' === analyzer_data.args[key] )
974
- {
975
- arg_class = 'ico-1';
976
- arg_content = key;
977
- }
978
- else if( 'false' === analyzer_data.args[key] || '0' === analyzer_data.args[key] )
979
- {
980
- arg_class = 'ico-0';
981
- arg_content = key;
982
- }
983
- else
984
- {
985
- arg_content = key + ': ';
986
-
987
- if( 'synonyms' === key || 'words' === key )
988
- {
989
- // @TODO: set link target for file
990
- arg_content += '<a>' + analyzer_data.args[key] + '</a>';
991
- }
992
- else
993
- {
994
- arg_content += analyzer_data.args[key];
995
- }
996
- }
997
-
998
- args.push( '<dd class="' + arg_class + '">' + arg_content + '</dd>' );
999
- }
1000
-
1001
- var list_content = '<dt>' + analyzer_data.className + '</dt>';
1002
- if( 0 !== args.length )
1003
- {
1004
- args.sort();
1005
- list_content += args.join( "\n" );
1006
- }
1007
-
1008
- return list_content;
1009
- }
1010
-
1011
- // -- field-type
1012
- var field_type_element = $( 'dt.field-type', options_element );
1013
-
1014
- $( 'dd.field-type', options_element )
1015
- .remove();
1016
-
1017
- field_type_element
1018
- .show()
1019
- .after( '<dd class="field-type">' + analyzer_data.className + '</dd>' );
1020
-
1021
- $( '.toggle', analyzer_element )
1022
- .die( 'click' )
1023
- .live
1024
- (
1025
- 'click',
1026
- function( event )
1027
- {
1028
- $( this ).closest( 'li' )
1029
- .toggleClass( 'open' );
1030
-
1031
- return false;
1032
- }
1033
- );
1034
-
1035
- for( var key in analyzer_data )
1036
- {
1037
- var key_match = key.match( /^(.+)Analyzer$/ );
1038
- if( !key_match )
1039
- {
1040
- continue;
1041
- }
1042
-
1043
- var analyzer_key_element = $( '.' + key_match[1], analyzer_element );
1044
- var analyzer_key_data = analyzer_data[key];
1045
-
1046
- analyzer_element.show();
1047
- analyzer_key_element.show();
1048
-
1049
- $( 'ul li', analyzer_key_element )
1050
- .removeClass( 'data' )
1051
- .hide();
1052
-
1053
- for( var type in analyzer_key_data )
1054
- {
1055
- if( 'object' !== typeof analyzer_key_data[type] )
1056
- {
1057
- continue;
1058
- }
1059
-
1060
- var type_element = $( '.' + type, analyzer_key_element );
1061
- var type_content = [];
1062
-
1063
- type_element
1064
- .addClass( 'data' )
1065
- .show();
1066
-
1067
- if( analyzer_key_data[type].className )
1068
- {
1069
- type_content.push( transform_analyzer_data_into_list( analyzer_key_data[type] ) );
1070
- }
1071
- else
1072
- {
1073
- for( var entry in analyzer_key_data[type] )
1074
- {
1075
- type_content.push( transform_analyzer_data_into_list( analyzer_key_data[type][entry] ) );
1076
- }
1077
- }
1078
-
1079
- $( 'dl', type_element )
1080
- .empty()
1081
- .append( type_content.join( "\n" ) );
1082
- }
1083
-
1084
- var name_element = $( 'dl:first dt a', analyzer_key_element );
1085
- if( analyzer_key_data.className )
1086
- {
1087
- name_element
1088
- .html( analyzer_key_data.className );
1089
- }
1090
-
1091
- 0 === $( 'ul li.data', analyzer_key_element ).size()
1092
- ? name_element.removeClass( 'toggle' )
1093
- : name_element.addClass( 'toggle' );
1094
- }
1095
- }
1096
-
1097
- var terminfo_element = $( '.terminfo-holder', data_element );
1098
-
1099
- terminfo_element
1100
- .removeClass( 'disabled' )
1101
- .removeClass( 'loaded' );
1102
-
1103
- var trigger_element = $( '.trigger button', terminfo_element );
1104
- var form_element = $( 'form', terminfo_element );
1105
-
1106
- trigger_element
1107
- .die( 'click' )
1108
- .live
1109
- (
1110
- 'click',
1111
- function( event )
1112
- {
1113
- form_element
1114
- .trigger( 'submit' );
1115
-
1116
- return false;
1117
- }
1118
- );
1119
-
1120
- form_element
1121
- .clearForm()
1122
- .die( 'submit' )
1123
- .live
1124
- (
1125
- 'submit',
1126
- function( event )
1127
- {
1128
- load_terminfo( trigger_element, core_basepath, field, data_element, terminfo_element );
1129
-
1130
- terminfo_element
1131
- .addClass( 'loaded' );
1132
-
1133
- return false;
1134
- }
1135
- );
1136
-
1137
- $( '.max-holder', terminfo_element )
1138
- .die( 'click' )
1139
- .live
1140
- (
1141
- 'click',
1142
- function( event )
1143
- {
1144
- var element = $( this );
1145
-
1146
- $( 'input', element.closest( 'form' ) )
1147
- .val( $( '.max', element ).text() );
1148
-
1149
- form_element
1150
- .trigger( 'submit' );
1151
-
1152
- return false;
1153
- }
1154
- );
1155
-
1156
- $( '.trigger .autoload', terminfo_element )
1157
- .die( 'click' )
1158
- .live
1159
- (
1160
- 'click',
1161
- function( event )
1162
- {
1163
- $.cookie( cookie_schema_browser_autoload, $.cookie( cookie_schema_browser_autoload ) ? null : true );
1164
- $( this ).trigger( 'state' );
1165
-
1166
- return false;
1167
- }
1168
- )
1169
- .die( 'state' )
1170
- .live
1171
- (
1172
- 'state',
1173
- function( event )
1174
- {
1175
- $.cookie( cookie_schema_browser_autoload )
1176
- ? $( this ).addClass( 'on' )
1177
- : $( this ).removeClass( 'on' );
1178
- }
1179
- )
1180
- .die( 'init' )
1181
- .live
1182
- (
1183
- 'init',
1184
- function( event )
1185
- {
1186
- if( !$.cookie( cookie_schema_browser_autoload ) )
1187
- {
1188
- return false;
1189
- }
1190
-
1191
- $( this ).trigger( 'state' );
1192
- trigger_element.trigger( 'click' );
1193
- }
1194
- )
1195
- .trigger( 'init' );
1196
-
1197
- $( 'div[class$="-holder"]', terminfo_element )
1198
- .hide();
1199
-
1200
- if( !is_f )
1201
- {
1202
- terminfo_element
1203
- .hide();
1204
- }
1205
- else
1206
- {
1207
- terminfo_element
1208
- .show();
1209
- }
1210
- }
1211
- }
1212
- else
1213
- {
1214
- trigger_params.callback = function( schema_browser_data, data_element )
1215
- {
1216
- data_element
1217
- .hide();
1218
- };
1219
- }
1220
-
1221
- delete app.schema_browser_data;
1222
-
1223
- sammy.trigger
1224
- (
1225
- 'schema_browser_load',
1226
- trigger_params
1227
- );
1228
- }
1229
- );
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 current_core = null;
19
+ var cookie_schema_browser_autoload = 'schema-browser_autoload';
20
+
21
+ var luke_array_to_struct = function( array )
22
+ {
23
+ var struct = {
24
+ keys : [],
25
+ values : []
26
+ };
27
+ for( var i = 0; i < array.length; i += 2 )
28
+ {
29
+ struct.keys.push( array[i] );
30
+ struct.values.push( array[i+1] );
31
+ }
32
+ return struct;
33
+ }
34
+
35
+ var luke_array_to_hash = function( array )
36
+ {
37
+ var hash = {};
38
+ for( var i = 0; i < array.length; i += 2 )
39
+ {
40
+ hash[ array[i] ] = array[i+1];
41
+ }
42
+ return hash;
43
+ }
44
+
45
+ var load_terminfo = function( trigger_element, core_basepath, field, data_element, terminfo_element )
46
+ {
47
+ var luke_url = core_basepath + '/admin/luke?wt=json&fl=' + field;
48
+ var topterms_count_element = $( '.topterms-holder .head input', terminfo_element );
49
+
50
+ var term_load_count = parseInt( topterms_count_element.val(), 10 );
51
+ if( term_load_count )
52
+ {
53
+ luke_url += '&numTerms=' + term_load_count;
54
+ }
55
+
56
+ $.ajax
57
+ (
58
+ {
59
+ url : luke_url,
60
+ dataType : 'json',
61
+ context : terminfo_element,
62
+ beforeSend : function( xhr, settings )
63
+ {
64
+ $( 'span', trigger_element )
65
+ .addClass( 'loader' );
66
+ },
67
+ success : function( response, text_status, xhr )
68
+ {
69
+ var additional_styles = [];
70
+ var field_data = response.fields[field];
71
+
72
+ if( !field_data || !( field_data.topTerms && field_data.histogram ) )
73
+ {
74
+ terminfo_element
75
+ .addClass( 'disabled' );
76
+
77
+ return false;
78
+ }
79
+
80
+ var get_width = function get_width()
81
+ {
82
+ return $( this ).width();
83
+ }
84
+
85
+ var topterms_holder_element = $( '.topterms-holder', data_element );
86
+ var histogram_holder_element = $( '.histogram-holder', data_element );
87
+
88
+ if( !field_data.topTerms )
89
+ {
90
+ topterms_holder_element
91
+ .hide();
92
+ }
93
+ else
94
+ {
95
+ topterms_holder_element
96
+ .show();
97
+
98
+ var topterms_table_element = $( 'ul', topterms_holder_element );
99
+
100
+ var topterms = field_data.topTerms;
101
+ var topterms_count = topterms.length;
102
+
103
+ var topterms_content = '';
104
+ var topterms_frq_last = null;
105
+
106
+ for( var i = 0; i < topterms_count; i += 2 )
107
+ {
108
+ if( topterms_frq_last !== topterms[i+1] )
109
+ {
110
+ if( topterms_frq_last )
111
+ {
112
+ topterms_content += '</ul></li>' + "\n";
113
+ }
114
+
115
+ topterms_frq_last = topterms[i+1];
116
+ topterms_content += '<li class="clearfix">'
117
+ + '<p><span>' + app.format_number( topterms_frq_last ) + '</span></p>' + "\n"
118
+ + '<ul>' + "\n";
119
+ }
120
+
121
+ var target = '#/' + current_core + '/query?q=' + field.esc() + ':' + encodeURIComponent( '"' + topterms[i] + '"' );
122
+ topterms_content += '<li><a href="' + target + '">' + topterms[i].esc() + '</a></li>' + "\n";
123
+ }
124
+
125
+ topterms_content += '</li>';
126
+
127
+ topterms_count = topterms_count / 2;
128
+
129
+ $( 'input', trigger_element )
130
+ .val( topterms_count );
131
+
132
+ topterms_table_element
133
+ .html( topterms_content );
134
+
135
+ var max_width = 10 + Math.max.apply( Math, $( 'p', topterms_table_element ).map( get_width ).get() );
136
+ additional_styles.push
137
+ (
138
+ topterms_table_element.selector + ' p { width: ' + max_width + 'px !important; }' + "\n" +
139
+ topterms_table_element.selector + ' ul { margin-left: ' + ( max_width + 5 ) + 'px !important; }'
140
+ );
141
+
142
+ topterms_count_element
143
+ .val( topterms_count );
144
+
145
+ $( 'p.head .max', topterms_holder_element )
146
+ .html( field_data.distinct );
147
+
148
+ $( 'p.head #query_link', topterms_holder_element )
149
+ .attr( 'href', '#/' + current_core + '/query?q=' + field.esc() + ':[* TO *]' );
150
+
151
+ $( 'ul li:even', topterms_table_element )
152
+ .addClass( 'odd' );
153
+ }
154
+
155
+ if( !field_data.histogram )
156
+ {
157
+ histogram_holder_element
158
+ .hide();
159
+ }
160
+ else
161
+ {
162
+ histogram_holder_element
163
+ .show();
164
+
165
+ var histogram_values = luke_array_to_hash( field_data.histogram );
166
+ var histogram_entries = [];
167
+
168
+ var histogram_max = null;
169
+ for( var key in histogram_values )
170
+ {
171
+ histogram_max = Math.max( histogram_max, histogram_values[key] );
172
+ }
173
+
174
+ for( var key in histogram_values )
175
+ {
176
+ histogram_entries.push
177
+ (
178
+ '<li>' + "\n" +
179
+ ' <dl class="clearfix" style="width: ' + ( ( histogram_values[key] / histogram_max ) * 100 ) + '%;">' + "\n" +
180
+ ' <dt><span>' + app.format_number( key ) + '</span></dt>' + "\n" +
181
+ ' <dd><span>' + app.format_number( histogram_values[key] ) + '</span></dd>' + "\n" +
182
+ ' </dl>' + "\n" +
183
+ '</li>'
184
+ );
185
+ }
186
+
187
+ $( 'ul', histogram_holder_element )
188
+ .html( histogram_entries.join( "\n" ) );
189
+
190
+ $( 'ul li:even', histogram_holder_element )
191
+ .addClass( 'odd' );
192
+
193
+ var max_width = 10 + Math.max.apply( Math, $( 'dt', histogram_holder_element ).map( get_width ).get() );
194
+ additional_styles.push
195
+ (
196
+ histogram_holder_element.selector + ' ul { margin-left: ' + max_width + 'px !important; }' + "\n" +
197
+ histogram_holder_element.selector + ' li dt { left: ' + ( max_width * -1 ) + 'px !important; width: ' + max_width + 'px !important; }'
198
+ );
199
+ }
200
+
201
+ if( additional_styles )
202
+ {
203
+ terminfo_element
204
+ .prepend( '<style type="text/css">' + additional_styles.join( "\n" ) + '</style>' );
205
+ }
206
+ },
207
+ error : function( xhr, text_status, error_thrown)
208
+ {
209
+ terminfo_element
210
+ .addClass( 'disabled' );
211
+ },
212
+ complete : function( xhr, text_status )
213
+ {
214
+ $( 'span', trigger_element )
215
+ .removeClass( 'loader' );
216
+ }
217
+ }
218
+ );
219
+ }
220
+
221
+ sammy.bind
222
+ (
223
+ 'schema_browser_navi',
224
+ function( event, params )
225
+ {
226
+ var related_navigation_element = $( '#related dl#f-df-t', params.schema_browser_element );
227
+ var related_navigation_meta = $( '#related dl.ukf-dsf', params.schema_browser_element );
228
+ var related_select_element = $( '#related select', params.schema_browser_element )
229
+ var type = 'index';
230
+
231
+ var sammy_basepath = app.core_menu.find( '.active a' ).attr( 'href' );
232
+
233
+ if( !related_navigation_meta.hasClass( 'done' ) )
234
+ {
235
+ if( app.schema_browser_data.unique_key_field )
236
+ {
237
+ $( '.unique-key-field', related_navigation_meta )
238
+ .show()
239
+ .after
240
+ (
241
+ '<dd class="unique-key-field"><a href="' + sammy_basepath + '?field=' +
242
+ app.schema_browser_data.unique_key_field + '">' +
243
+ app.schema_browser_data.unique_key_field + '</a></dd>'
244
+ );
245
+ }
246
+
247
+ if( app.schema_browser_data.default_search_field )
248
+ {
249
+ $( '.default-search-field', related_navigation_meta )
250
+ .show()
251
+ .after
252
+ (
253
+ '<dd class="default-search-field"><a href="' + sammy_basepath + '?field=' +
254
+ app.schema_browser_data.default_search_field + '">' +
255
+ app.schema_browser_data.default_search_field + '</a></dd>'
256
+ );
257
+ }
258
+
259
+ related_navigation_meta
260
+ .addClass( 'done' );
261
+ }
262
+
263
+ if( params.route_params )
264
+ {
265
+ var type = params.route_params.type;
266
+ var value = params.route_params.value;
267
+
268
+ var navigation_data = {
269
+ 'fields' : [],
270
+ 'copyfield_source' : [],
271
+ 'copyfield_dest' : [],
272
+ 'dynamic_fields' : [],
273
+ 'types' : []
274
+ }
275
+
276
+ $( 'option[value="' + params.route_params.path.esc() + '"]', related_select_element )
277
+ .attr( 'selected', 'selected' );
278
+
279
+ related_select_element
280
+ .trigger( 'liszt:updated' );
281
+
282
+ if( 'field' === type )
283
+ {
284
+ navigation_data.fields.push( value );
285
+
286
+ if( app.schema_browser_data.relations.f_t[value] )
287
+ {
288
+ navigation_data.types.push( app.schema_browser_data.relations.f_t[value] );
289
+ }
290
+
291
+ if( app.schema_browser_data.relations.f_df[value] )
292
+ {
293
+ navigation_data.dynamic_fields.push( app.schema_browser_data.relations.f_df[value] );
294
+ }
295
+
296
+ if( app.schema_browser_data.fields[value].copySources && 0 !== app.schema_browser_data.fields[value].copySources.length )
297
+ {
298
+ navigation_data.copyfield_source = app.schema_browser_data.fields[value].copySources;
299
+ }
300
+
301
+ if( app.schema_browser_data.fields[value].copyDests && 0 !== app.schema_browser_data.fields[value].copyDests.length )
302
+ {
303
+ navigation_data.copyfield_dest = app.schema_browser_data.fields[value].copyDests;
304
+ }
305
+ }
306
+ else if( 'dynamic-field' === type )
307
+ {
308
+ navigation_data.dynamic_fields.push( value );
309
+ navigation_data.types.push( app.schema_browser_data.relations.df_t[value] );
310
+
311
+ if( app.schema_browser_data.relations.df_f[value] )
312
+ {
313
+ navigation_data.fields = app.schema_browser_data.relations.df_f[value];
314
+ }
315
+ }
316
+ else if( 'type' === type )
317
+ {
318
+ navigation_data.types.push( value );
319
+
320
+ if( app.schema_browser_data.relations.t_f[value] )
321
+ {
322
+ navigation_data.fields = app.schema_browser_data.relations.t_f[value];
323
+ }
324
+
325
+ if( app.schema_browser_data.relations.t_df[value] )
326
+ {
327
+ navigation_data.dynamic_fields = app.schema_browser_data.relations.t_df[value];
328
+ }
329
+ }
330
+
331
+ var navigation_content = '';
332
+
333
+ if( 0 !== navigation_data.fields.length )
334
+ {
335
+ navigation_data.fields.sort();
336
+ navigation_content += '<dt class="field">Field</dt>' + "\n";
337
+ for( var i in navigation_data.fields )
338
+ {
339
+ var href = sammy_basepath + '?field=' + navigation_data.fields[i];
340
+ navigation_content += '<dd class="field"><a href="' + href + '">' + navigation_data.fields[i] + '</a></dd>' + "\n";
341
+ }
342
+ }
343
+
344
+ if( 0 !== navigation_data.copyfield_source.length )
345
+ {
346
+ navigation_data.copyfield_source.sort();
347
+ navigation_content += '<dt class="copyfield">Copied from</dt>' + "\n";
348
+ for( var i in navigation_data.copyfield_source )
349
+ {
350
+ var href = sammy_basepath + '?field=' + navigation_data.copyfield_source[i];
351
+ navigation_content += '<dd class="copyfield"><a href="' + href + '">' + navigation_data.copyfield_source[i] + '</a></dd>' + "\n";
352
+ }
353
+ }
354
+
355
+ if( 0 !== navigation_data.copyfield_dest.length )
356
+ {
357
+ navigation_data.copyfield_dest.sort();
358
+ navigation_content += '<dt class="copyfield">Copied to</dt>' + "\n";
359
+ for( var i in navigation_data.copyfield_dest )
360
+ {
361
+ var href = sammy_basepath + '?field=' + navigation_data.copyfield_dest[i];
362
+ navigation_content += '<dd class="copyfield"><a href="' + href + '">' + navigation_data.copyfield_dest[i] + '</a></dd>' + "\n";
363
+ }
364
+ }
365
+
366
+ if( 0 !== navigation_data.dynamic_fields.length )
367
+ {
368
+ navigation_data.dynamic_fields.sort();
369
+ navigation_content += '<dt class="dynamic-field">Dynamic Field</dt>' + "\n";
370
+ for( var i in navigation_data.dynamic_fields )
371
+ {
372
+ var href = sammy_basepath + '?dynamic-field=' + navigation_data.dynamic_fields[i];
373
+ navigation_content += '<dd class="dynamic-field"><a href="' + href + '">' + navigation_data.dynamic_fields[i] + '</a></dd>' + "\n";
374
+ }
375
+ }
376
+
377
+ if( 0 !== navigation_data.types.length )
378
+ {
379
+ navigation_data.types.sort();
380
+ navigation_content += '<dt class="type">Type</dt>' + "\n";
381
+ for( var i in navigation_data.types )
382
+ {
383
+ var href = sammy_basepath + '?type=' + navigation_data.types[i];
384
+ navigation_content += '<dd class="type"><a href="' + href + '">' + navigation_data.types[i] + '</a></dd>' + "\n";
385
+ }
386
+ }
387
+
388
+ related_navigation_element
389
+ .show()
390
+ .attr( 'class', type )
391
+ .html( navigation_content );
392
+ }
393
+ else
394
+ {
395
+ related_navigation_element
396
+ .hide();
397
+
398
+ $( 'option:selected', related_select_element )
399
+ .removeAttr( 'selected' );
400
+ }
401
+
402
+ if( 'field' === type && value === app.schema_browser_data.unique_key_field )
403
+ {
404
+ $( '.unique-key-field', related_navigation_meta )
405
+ .addClass( 'active' );
406
+ }
407
+ else
408
+ {
409
+ $( '.unique-key-field', related_navigation_meta )
410
+ .removeClass( 'active' );
411
+ }
412
+
413
+ if( 'field' === type && value === app.schema_browser_data.default_search_field )
414
+ {
415
+ $( '.default-search-field', related_navigation_meta )
416
+ .addClass( 'active' );
417
+ }
418
+ else
419
+ {
420
+ $( '.default-search-field', related_navigation_meta )
421
+ .removeClass( 'active' );
422
+ }
423
+
424
+ if( params.callback )
425
+ {
426
+ params.callback( app.schema_browser_data, $( '#data', params.schema_browser_element ) );
427
+ }
428
+ }
429
+ );
430
+
431
+ sammy.bind
432
+ (
433
+ 'schema_browser_load',
434
+ function( event, params )
435
+ {
436
+ var core_basepath = params.active_core.attr( 'data-basepath' );
437
+ var content_element = $( '#content' );
438
+
439
+ if( app.schema_browser_data )
440
+ {
441
+ params.schema_browser_element = $( '#schema-browser', content_element );
442
+
443
+ sammy.trigger
444
+ (
445
+ 'schema_browser_navi',
446
+ params
447
+ );
448
+ }
449
+ else
450
+ {
451
+ content_element
452
+ .html( '<div id="schema-browser"><div class="loader">Loading ...</div></div>' );
453
+
454
+ $.ajax
455
+ (
456
+ {
457
+ url : core_basepath + '/admin/luke?numTerms=0&wt=json',
458
+ dataType : 'json',
459
+ beforeSend : function( xhr, settings )
460
+ {
461
+ },
462
+ success : function( response, text_status, xhr )
463
+ {
464
+ app.schema_browser_data = {
465
+ default_search_field : null,
466
+ unique_key_field : null,
467
+ key : {},
468
+ fields : {},
469
+ dynamic_fields : {},
470
+ types : {},
471
+ relations : {
472
+ f_df : {},
473
+ f_t : {},
474
+ df_f : {},
475
+ df_t : {},
476
+ t_f : {},
477
+ t_df : {}
478
+ }
479
+ };
480
+
481
+ app.schema_browser_data.fields = response.fields;
482
+ app.schema_browser_data.key = response.info.key;
483
+
484
+ $.ajax
485
+ (
486
+ {
487
+ url : core_basepath + '/admin/luke?show=schema&wt=json',
488
+ dataType : 'json',
489
+ beforeSend : function( xhr, settings )
490
+ {
491
+ },
492
+ success : function( response, text_status, xhr )
493
+ {
494
+ app.schema_browser_data.default_search_field = response.schema.defaultSearchField;
495
+ app.schema_browser_data.unique_key_field = response.schema.uniqueKeyField;
496
+
497
+ app.schema_browser_data.dynamic_fields = response.schema.dynamicFields;
498
+ app.schema_browser_data.types = response.schema.types;
499
+
500
+ for( var field in response.schema.fields )
501
+ {
502
+ app.schema_browser_data.fields[field] = $.extend
503
+ (
504
+ {},
505
+ app.schema_browser_data.fields[field],
506
+ response.schema.fields[field]
507
+ );
508
+ }
509
+
510
+ for( var field in app.schema_browser_data.fields )
511
+ {
512
+ var copy_dests = app.schema_browser_data.fields[field].copyDests;
513
+ for( var i in copy_dests )
514
+ {
515
+ var copy_dest = copy_dests[i];
516
+ if( !app.schema_browser_data.fields[copy_dest] )
517
+ {
518
+ app.schema_browser_data.fields[copy_dest] = {
519
+ partial : true,
520
+ copySources : []
521
+ };
522
+ }
523
+
524
+ if( app.schema_browser_data.fields[copy_dest].partial )
525
+ {
526
+ app.schema_browser_data.fields[copy_dest].copySources.push( field );
527
+ }
528
+ }
529
+
530
+ var copy_sources = app.schema_browser_data.fields[field].copySources;
531
+ for( var i in copy_sources )
532
+ {
533
+ var copy_source = copy_sources[i];
534
+ if( !app.schema_browser_data.fields[copy_source] )
535
+ {
536
+ app.schema_browser_data.fields[copy_source] = {
537
+ partial : true,
538
+ copyDests : []
539
+ };
540
+ }
541
+
542
+ if( app.schema_browser_data.fields[copy_source].partial )
543
+ {
544
+ app.schema_browser_data.fields[copy_source].copyDests.push( field );
545
+ }
546
+ }
547
+
548
+ app.schema_browser_data.relations.f_t[field] = app.schema_browser_data.fields[field].type;
549
+
550
+ if( !app.schema_browser_data.relations.t_f[app.schema_browser_data.fields[field].type] )
551
+ {
552
+ app.schema_browser_data.relations.t_f[app.schema_browser_data.fields[field].type] = [];
553
+ }
554
+ app.schema_browser_data.relations.t_f[app.schema_browser_data.fields[field].type].push( field );
555
+
556
+ if( app.schema_browser_data.fields[field].dynamicBase )
557
+ {
558
+ app.schema_browser_data.relations.f_df[field] = app.schema_browser_data.fields[field].dynamicBase;
559
+
560
+ if( !app.schema_browser_data.relations.df_f[app.schema_browser_data.fields[field].dynamicBase] )
561
+ {
562
+ app.schema_browser_data.relations.df_f[app.schema_browser_data.fields[field].dynamicBase] = [];
563
+ }
564
+ app.schema_browser_data.relations.df_f[app.schema_browser_data.fields[field].dynamicBase].push( field );
565
+ }
566
+ }
567
+
568
+ for( var dynamic_field in app.schema_browser_data.dynamic_fields )
569
+ {
570
+ app.schema_browser_data.relations.df_t[dynamic_field] = app.schema_browser_data.dynamic_fields[dynamic_field].type;
571
+
572
+ if( !app.schema_browser_data.relations.t_df[app.schema_browser_data.dynamic_fields[dynamic_field].type] )
573
+ {
574
+ app.schema_browser_data.relations.t_df[app.schema_browser_data.dynamic_fields[dynamic_field].type] = [];
575
+ }
576
+ app.schema_browser_data.relations.t_df[app.schema_browser_data.dynamic_fields[dynamic_field].type].push( dynamic_field );
577
+ }
578
+
579
+ $.get
580
+ (
581
+ 'tpl/schema-browser.html',
582
+ function( template )
583
+ {
584
+ content_element
585
+ .html( template );
586
+
587
+ var schema_browser_element = $( '#schema-browser', content_element );
588
+ var related_element = $( '#related', schema_browser_element );
589
+ var related_select_element = $( 'select', related_element );
590
+ var data_element = $( '#data', schema_browser_element );
591
+
592
+ var related_options = '';
593
+
594
+ var fields = [];
595
+ for( var field_name in app.schema_browser_data.fields )
596
+ {
597
+ fields.push
598
+ (
599
+ '<option value="?field=' + field_name.esc() + '">' + field_name.esc() + '</option>'
600
+ );
601
+ }
602
+ if( 0 !== fields.length )
603
+ {
604
+ fields.sort();
605
+ related_options += '<optgroup label="Fields">' + "\n";
606
+ related_options += fields.sort().join( "\n" ) + "\n";
607
+ related_options += '</optgroup>' + "\n";
608
+ }
609
+
610
+ var dynamic_fields = [];
611
+ for( var type_name in app.schema_browser_data.dynamic_fields )
612
+ {
613
+ dynamic_fields.push
614
+ (
615
+ '<option value="?dynamic-field=' + type_name.esc() + '">' + type_name.esc() + '</option>'
616
+ );
617
+ }
618
+ if( 0 !== dynamic_fields.length )
619
+ {
620
+ dynamic_fields.sort();
621
+ related_options += '<optgroup label="DynamicFields">' + "\n";
622
+ related_options += dynamic_fields.sort().join( "\n" ) + "\n";
623
+ related_options += '</optgroup>' + "\n";
624
+ }
625
+
626
+ var types = [];
627
+ for( var type_name in app.schema_browser_data.types )
628
+ {
629
+ types.push
630
+ (
631
+ '<option value="?type=' + type_name.esc() + '">' + type_name.esc() + '</option>'
632
+ );
633
+ }
634
+ if( 0 !== types.length )
635
+ {
636
+ types.sort();
637
+ related_options += '<optgroup label="Types">' + "\n";
638
+ related_options += types.sort().join( "\n" ) + "\n";
639
+ related_options += '</optgroup>' + "\n";
640
+ }
641
+
642
+ related_select_element
643
+ .attr( 'rel', app.core_menu.find( '.active a' ).attr( 'href' ) )
644
+ .append( related_options )
645
+ .chosen();
646
+
647
+ related_select_element
648
+ .die( 'change' )
649
+ .live
650
+ (
651
+ 'change',
652
+ function( event )
653
+ {
654
+ var select_element = $( this );
655
+ var option_element = $( 'option:selected', select_element );
656
+
657
+ location.href = select_element.attr( 'rel' ) + option_element.val();
658
+ return false;
659
+ }
660
+ );
661
+
662
+ params.schema_browser_element = schema_browser_element;
663
+ sammy.trigger
664
+ (
665
+ 'schema_browser_navi',
666
+ params
667
+ );
668
+ }
669
+ );
670
+ },
671
+ error : function( xhr, text_status, error_thrown)
672
+ {
673
+ },
674
+ complete : function( xhr, text_status )
675
+ {
676
+ }
677
+ }
678
+ );
679
+
680
+ },
681
+ error : function( xhr, text_status, error_thrown)
682
+ {
683
+ },
684
+ complete : function( xhr, text_status )
685
+ {
686
+ }
687
+ }
688
+ );
689
+ }
690
+ }
691
+ );
692
+
693
+ // #/:core/schema-browser
694
+ sammy.get
695
+ (
696
+ new RegExp( app.core_regex_base + '\\/(schema-browser)$' ),
697
+ function( context )
698
+ {
699
+ var core_basepath = this.active_core.attr( 'data-basepath' );
700
+ current_core = context.params.splat[0];
701
+
702
+ var trigger_params = {
703
+ active_core : this.active_core
704
+ };
705
+
706
+ var path = context.path.split( '?' );
707
+ if( path && path[1] )
708
+ {
709
+ var param = path[1].split( '=' );
710
+ trigger_params.route_params = {
711
+ path : '?' + path[1],
712
+ type : param[0],
713
+ value : param[1]
714
+ }
715
+
716
+ trigger_params.callback = function( schema_browser_data, data_element )
717
+ {
718
+ var field = trigger_params.route_params.value;
719
+
720
+ var type = trigger_params.route_params.type;
721
+ var is_f = 'field' === type;
722
+ var is_df = 'dynamic-field' === type;
723
+ var is_t = 'type' === type;
724
+
725
+ var options_element = $( '.options', data_element );
726
+ var sammy_basepath = context.path.indexOf( '/', context.path.indexOf( '/', 2 ) + 1 );
727
+
728
+ data_element
729
+ .show();
730
+
731
+ // -- head
732
+
733
+ var head_element = $( '.head', data_element );
734
+ if( is_f )
735
+ {
736
+ $( '.type', head_element ).html( 'Field' );
737
+ }
738
+ else if( is_df )
739
+ {
740
+ $( '.type', head_element ).html( 'Dynamic Field' );
741
+ }
742
+ else if( is_t )
743
+ {
744
+ $( '.type', head_element ).html( 'Type' );
745
+ }
746
+ $( '.name', head_element ).html( field.esc() );
747
+
748
+
749
+ var partial_state = false;
750
+ if( is_f )
751
+ {
752
+ partial_state = !!schema_browser_data.fields[field].partial;
753
+ }
754
+
755
+ $( '.partial', data_element )
756
+ .toggle( partial_state );
757
+
758
+ // -- docs
759
+ var docs_element = $( 'dt.docs', options_element );
760
+ if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].docs )
761
+ {
762
+ $( 'dd.docs', options_element )
763
+ .remove();
764
+
765
+ var target = '#/' + current_core + '/query?q=' + field.esc() + ':[* TO *]';
766
+ docs_element
767
+ .show()
768
+ .after(
769
+ '<dd class="docs">'+
770
+ '<a href="'+target+'">' + schema_browser_data.fields[field].docs + '</a>' +
771
+ '</dd>' );
772
+ }
773
+ else
774
+ {
775
+ $( '.docs', options_element )
776
+ .hide();
777
+ }
778
+
779
+ // -- distinct
780
+ var distinct_element = $( 'dt.distinct', options_element );
781
+ if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].distinct )
782
+ {
783
+ $( 'dd.distinct', options_element )
784
+ .remove();
785
+
786
+ distinct_element
787
+ .show()
788
+ .after( '<dd class="distinct">' + schema_browser_data.fields[field].distinct + '</dd>' );
789
+ }
790
+ else
791
+ {
792
+ $( '.distinct', options_element )
793
+ .hide();
794
+ }
795
+
796
+ // -- position-increment-gap
797
+ var pig_element = $( 'dt.position-increment-gap', options_element );
798
+ if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].positionIncrementGap )
799
+ {
800
+ $( 'dd.position-increment-gap', options_element )
801
+ .remove();
802
+
803
+ pig_element
804
+ .show()
805
+ .after( '<dd class="position-increment-gap">' + schema_browser_data.fields[field].positionIncrementGap + '</dd>' );
806
+ }
807
+ else
808
+ {
809
+ $( '.position-increment-gap', options_element )
810
+ .hide();
811
+ }
812
+
813
+ var similarity_element = $( 'dt.similarity', options_element );
814
+ if ( is_t && schema_browser_data.types[field] && schema_browser_data.types[field].similarity ) {
815
+ var similarity = schema_browser_data.types[field].similarity
816
+ if (similarity.details && similarity.className) {
817
+ $( 'dd.similarity', options_element ).remove();
818
+ similarity_element
819
+ .show()
820
+ .after(['<dd class="similarity">', similarity.details.esc(), ' (', similarity.className.esc(), ') </dd>'].join(""));
821
+ }
822
+ } else {
823
+ $( '.similarity', options_element ).hide();
824
+ }
825
+
826
+
827
+ // -- flags table
828
+ var flags_table = $( 'table.flags', data_element );
829
+
830
+ var flags_arr = [];
831
+ for( var key in schema_browser_data.key )
832
+ {
833
+ flags_arr.push( '<th data-key="' + key + '">' + schema_browser_data.key[key] + '</th>' );
834
+ }
835
+
836
+ $( 'thead tr', flags_table )
837
+ .append( flags_arr.join( "\n" ) );
838
+
839
+
840
+ var flags_body = $( 'tbody', flags_table );
841
+ flags_body.empty();
842
+
843
+ var generate_flags_row = function generate_flags_row( flags_str, title )
844
+ {
845
+ var flags_arr = [ '<th>' + title.esc() + '</th>' ];
846
+
847
+ if( 0 === flags_str.indexOf( '(' ) )
848
+ {
849
+ flags_arr.push( '<td colspan="2" class="text">' + flags_str + '</td>' );
850
+ }
851
+ else
852
+ {
853
+ var i = 0;
854
+ for( var key in schema_browser_data.key )
855
+ {
856
+ var flag_match = key === flags_str[i];
857
+
858
+ var flag_cell = '<td '
859
+ + ' data-key="' + key + '"'
860
+ + ' class="' + ( flag_match ? 'check' : '' ) + '"'
861
+ + '>'
862
+ + ( flag_match ? '<span>√</span>' : '&nbsp;' )
863
+ + '</td>';
864
+
865
+ flags_arr.push( flag_cell );
866
+ i++;
867
+ }
868
+ }
869
+
870
+ flags_body
871
+ .append( '<tr>' + flags_arr.join( "\n" ) + '</tr>' );
872
+ };
873
+
874
+ var flags = null;
875
+ if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].flags )
876
+ {
877
+ flags = schema_browser_data.fields[field].flags;
878
+ }
879
+ else if( is_df && schema_browser_data.dynamic_fields[field] && schema_browser_data.dynamic_fields[field].flags )
880
+ {
881
+ flags = schema_browser_data.dynamic_fields[field].flags;
882
+ }
883
+
884
+ if( flags )
885
+ {
886
+ generate_flags_row( flags, 'Properties' );
887
+ }
888
+
889
+ if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].schema )
890
+ {
891
+ generate_flags_row( schema_browser_data.fields[field].schema, 'Schema' );
892
+ }
893
+
894
+ if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].index )
895
+ {
896
+ generate_flags_row( schema_browser_data.fields[field].index, 'Index' );
897
+ }
898
+
899
+
900
+ if( 0 !== $( 'tr', flags_body ).size() )
901
+ {
902
+ var col_count = 0;
903
+ for( var key in schema_browser_data.key )
904
+ {
905
+ var cols = $( '[data-key="' + key + '"]', flags_table );
906
+
907
+ var col_used = 0 !== cols.filter( '.check' ).size();
908
+ col_count += col_used;
909
+
910
+ cols.toggle( col_used );
911
+ }
912
+
913
+ $( 'td[colspan]', flags_body )
914
+ .attr( 'colspan', col_count );
915
+
916
+ flags_table.show();
917
+ }
918
+ else
919
+ {
920
+ flags_table.hide();
921
+ }
922
+
923
+ var analyzer_element = $( '.analyzer', data_element );
924
+ var analyzer_data = null;
925
+
926
+ var analysis_link = false;
927
+ var analysis_link_elements = $( 'p a', analyzer_element );
928
+ var analysis_target = '#/' + current_core + '/analysis?';
929
+
930
+ if( is_f )
931
+ {
932
+ analyzer_data = schema_browser_data.types[schema_browser_data.relations.f_t[field]];
933
+
934
+ analysis_link = true;
935
+ analysis_target += 'analysis.fieldname=' + field;
936
+ }
937
+ else if( is_df )
938
+ {
939
+ analyzer_data = schema_browser_data.types[schema_browser_data.relations.df_t[field]];
940
+ }
941
+ else if( is_t )
942
+ {
943
+ analyzer_data = schema_browser_data.types[field];
944
+
945
+ analysis_link = true;
946
+ analysis_target += 'analysis.fieldtype=' + field;
947
+ }
948
+
949
+ if( analysis_link )
950
+ {
951
+ analysis_link_elements
952
+ .addClass( 'analysis' )
953
+ .attr( 'href', analysis_target );
954
+ }
955
+ else
956
+ {
957
+ analysis_link_elements
958
+ .removeClass( 'analysis' )
959
+ .removeAttr( 'href' );
960
+ }
961
+
962
+
963
+ if( analyzer_data )
964
+ {
965
+ var transform_analyzer_data_into_list = function( analyzer_data )
966
+ {
967
+ var args = [];
968
+ for( var key in analyzer_data.args )
969
+ {
970
+ var arg_class = '';
971
+ var arg_content = '';
972
+
973
+ if( 'true' === analyzer_data.args[key] || '1' === analyzer_data.args[key] )
974
+ {
975
+ arg_class = 'ico-1';
976
+ arg_content = key;
977
+ }
978
+ else if( 'false' === analyzer_data.args[key] || '0' === analyzer_data.args[key] )
979
+ {
980
+ arg_class = 'ico-0';
981
+ arg_content = key;
982
+ }
983
+ else
984
+ {
985
+ arg_content = key + ': ';
986
+
987
+ if( 'synonyms' === key || 'words' === key )
988
+ {
989
+ // @TODO: set link target for file
990
+ arg_content += '<a>' + analyzer_data.args[key] + '</a>';
991
+ }
992
+ else
993
+ {
994
+ arg_content += analyzer_data.args[key];
995
+ }
996
+ }
997
+
998
+ args.push( '<dd class="' + arg_class + '">' + arg_content + '</dd>' );
999
+ }
1000
+
1001
+ var list_content = '<dt>' + analyzer_data.className + '</dt>';
1002
+ if( 0 !== args.length )
1003
+ {
1004
+ args.sort();
1005
+ list_content += args.join( "\n" );
1006
+ }
1007
+
1008
+ return list_content;
1009
+ }
1010
+
1011
+ // -- field-type
1012
+ var field_type_element = $( 'dt.field-type', options_element );
1013
+
1014
+ $( 'dd.field-type', options_element )
1015
+ .remove();
1016
+
1017
+ field_type_element
1018
+ .show()
1019
+ .after( '<dd class="field-type">' + analyzer_data.className + '</dd>' );
1020
+
1021
+ $( '.toggle', analyzer_element )
1022
+ .die( 'click' )
1023
+ .live
1024
+ (
1025
+ 'click',
1026
+ function( event )
1027
+ {
1028
+ $( this ).closest( 'li' )
1029
+ .toggleClass( 'open' );
1030
+
1031
+ return false;
1032
+ }
1033
+ );
1034
+
1035
+ for( var key in analyzer_data )
1036
+ {
1037
+ var key_match = key.match( /^(.+)Analyzer$/ );
1038
+ if( !key_match )
1039
+ {
1040
+ continue;
1041
+ }
1042
+
1043
+ var analyzer_key_element = $( '.' + key_match[1], analyzer_element );
1044
+ var analyzer_key_data = analyzer_data[key];
1045
+
1046
+ analyzer_element.show();
1047
+ analyzer_key_element.show();
1048
+
1049
+ $( 'ul li', analyzer_key_element )
1050
+ .removeClass( 'data' )
1051
+ .hide();
1052
+
1053
+ for( var type in analyzer_key_data )
1054
+ {
1055
+ if( 'object' !== typeof analyzer_key_data[type] )
1056
+ {
1057
+ continue;
1058
+ }
1059
+
1060
+ var type_element = $( '.' + type, analyzer_key_element );
1061
+ var type_content = [];
1062
+
1063
+ type_element
1064
+ .addClass( 'data' )
1065
+ .show();
1066
+
1067
+ if( analyzer_key_data[type].className )
1068
+ {
1069
+ type_content.push( transform_analyzer_data_into_list( analyzer_key_data[type] ) );
1070
+ }
1071
+ else
1072
+ {
1073
+ for( var entry in analyzer_key_data[type] )
1074
+ {
1075
+ type_content.push( transform_analyzer_data_into_list( analyzer_key_data[type][entry] ) );
1076
+ }
1077
+ }
1078
+
1079
+ $( 'dl', type_element )
1080
+ .empty()
1081
+ .append( type_content.join( "\n" ) );
1082
+ }
1083
+
1084
+ var name_element = $( 'dl:first dt a', analyzer_key_element );
1085
+ if( analyzer_key_data.className )
1086
+ {
1087
+ name_element
1088
+ .html( analyzer_key_data.className );
1089
+ }
1090
+
1091
+ 0 === $( 'ul li.data', analyzer_key_element ).size()
1092
+ ? name_element.removeClass( 'toggle' )
1093
+ : name_element.addClass( 'toggle' );
1094
+ }
1095
+ }
1096
+
1097
+ var terminfo_element = $( '.terminfo-holder', data_element );
1098
+
1099
+ terminfo_element
1100
+ .removeClass( 'disabled' )
1101
+ .removeClass( 'loaded' );
1102
+
1103
+ var trigger_element = $( '.trigger button', terminfo_element );
1104
+ var form_element = $( 'form', terminfo_element );
1105
+
1106
+ trigger_element
1107
+ .die( 'click' )
1108
+ .live
1109
+ (
1110
+ 'click',
1111
+ function( event )
1112
+ {
1113
+ form_element
1114
+ .trigger( 'submit' );
1115
+
1116
+ return false;
1117
+ }
1118
+ );
1119
+
1120
+ form_element
1121
+ .clearForm()
1122
+ .die( 'submit' )
1123
+ .live
1124
+ (
1125
+ 'submit',
1126
+ function( event )
1127
+ {
1128
+ load_terminfo( trigger_element, core_basepath, field, data_element, terminfo_element );
1129
+
1130
+ terminfo_element
1131
+ .addClass( 'loaded' );
1132
+
1133
+ return false;
1134
+ }
1135
+ );
1136
+
1137
+ $( '.max-holder', terminfo_element )
1138
+ .die( 'click' )
1139
+ .live
1140
+ (
1141
+ 'click',
1142
+ function( event )
1143
+ {
1144
+ var element = $( this );
1145
+
1146
+ $( 'input', element.closest( 'form' ) )
1147
+ .val( $( '.max', element ).text() );
1148
+
1149
+ form_element
1150
+ .trigger( 'submit' );
1151
+
1152
+ return false;
1153
+ }
1154
+ );
1155
+
1156
+ $( '.trigger .autoload', terminfo_element )
1157
+ .die( 'click' )
1158
+ .live
1159
+ (
1160
+ 'click',
1161
+ function( event )
1162
+ {
1163
+ $.cookie( cookie_schema_browser_autoload, $.cookie( cookie_schema_browser_autoload ) ? null : true );
1164
+ $( this ).trigger( 'state' );
1165
+
1166
+ return false;
1167
+ }
1168
+ )
1169
+ .die( 'state' )
1170
+ .live
1171
+ (
1172
+ 'state',
1173
+ function( event )
1174
+ {
1175
+ $.cookie( cookie_schema_browser_autoload )
1176
+ ? $( this ).addClass( 'on' )
1177
+ : $( this ).removeClass( 'on' );
1178
+ }
1179
+ )
1180
+ .die( 'init' )
1181
+ .live
1182
+ (
1183
+ 'init',
1184
+ function( event )
1185
+ {
1186
+ if( !$.cookie( cookie_schema_browser_autoload ) )
1187
+ {
1188
+ return false;
1189
+ }
1190
+
1191
+ $( this ).trigger( 'state' );
1192
+ trigger_element.trigger( 'click' );
1193
+ }
1194
+ )
1195
+ .trigger( 'init' );
1196
+
1197
+ $( 'div[class$="-holder"]', terminfo_element )
1198
+ .hide();
1199
+
1200
+ if( !is_f )
1201
+ {
1202
+ terminfo_element
1203
+ .hide();
1204
+ }
1205
+ else
1206
+ {
1207
+ terminfo_element
1208
+ .show();
1209
+ }
1210
+ }
1211
+ }
1212
+ else
1213
+ {
1214
+ trigger_params.callback = function( schema_browser_data, data_element )
1215
+ {
1216
+ data_element
1217
+ .hide();
1218
+ };
1219
+ }
1220
+
1221
+ delete app.schema_browser_data;
1222
+
1223
+ sammy.trigger
1224
+ (
1225
+ 'schema_browser_load',
1226
+ trigger_params
1227
+ );
1228
+ }
1229
+ );