rjack-solr 3.6.2.0-java → 4.0.0.0-java

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 (315) hide show
  1. data/History.rdoc +5 -0
  2. data/Manifest.txt +268 -33
  3. data/NOTICE.txt +1 -1
  4. data/README.rdoc +6 -6
  5. data/assembly.xml +2 -2
  6. data/bin/rjack-solr-fg +1 -1
  7. data/init/rjack-solr +2 -2
  8. data/lib/rjack-solr.rb +7 -2
  9. data/lib/rjack-solr/base.rb +2 -2
  10. data/lib/rjack-solr/commons-cli-1.2.jar +0 -0
  11. data/lib/rjack-solr/config.rb +1 -1
  12. data/lib/rjack-solr/server.rb +1 -1
  13. data/lib/rjack-solr/solr-core-4.0.0.jar +0 -0
  14. data/lib/rjack-solr/solr-solrj-4.0.0.jar +0 -0
  15. data/pom.xml +19 -6
  16. data/test/test_solr.rb +7 -5
  17. data/webapp/META-INF/LICENSE.txt +0 -940
  18. data/webapp/META-INF/MANIFEST.MF +5 -5
  19. data/webapp/META-INF/NOTICE.txt +160 -93
  20. data/webapp/WEB-INF/web.xml +57 -43
  21. data/webapp/admin.html +140 -0
  22. data/webapp/css/chosen.css +392 -0
  23. data/webapp/css/styles/analysis.css +293 -0
  24. data/webapp/css/styles/cloud.css +331 -0
  25. data/webapp/css/styles/common.css +593 -0
  26. data/webapp/css/styles/cores.css +203 -0
  27. data/webapp/css/styles/dashboard.css +127 -0
  28. data/webapp/css/styles/dataimport.css +222 -0
  29. data/webapp/css/styles/index.css +195 -0
  30. data/webapp/css/styles/java-properties.css +33 -0
  31. data/webapp/css/styles/logging.css +323 -0
  32. data/webapp/css/styles/menu.css +272 -0
  33. data/webapp/css/styles/plugins.css +175 -0
  34. data/webapp/css/styles/query.css +137 -0
  35. data/webapp/css/styles/replication.css +494 -0
  36. data/webapp/css/styles/schema-browser.css +476 -0
  37. data/webapp/css/styles/threads.css +153 -0
  38. data/webapp/img/ZeroClipboard.swf +0 -0
  39. data/webapp/img/chosen-sprite.png +0 -0
  40. data/webapp/img/div.gif +0 -0
  41. data/webapp/{admin → img}/favicon.ico +0 -0
  42. data/webapp/img/filetypes/7z.png +0 -0
  43. data/webapp/img/filetypes/README +27 -0
  44. data/webapp/img/filetypes/ai.png +0 -0
  45. data/webapp/img/filetypes/aiff.png +0 -0
  46. data/webapp/img/filetypes/asc.png +0 -0
  47. data/webapp/img/filetypes/audio.png +0 -0
  48. data/webapp/img/filetypes/bin.png +0 -0
  49. data/webapp/img/filetypes/bz2.png +0 -0
  50. data/webapp/img/filetypes/c.png +0 -0
  51. data/webapp/img/filetypes/cfc.png +0 -0
  52. data/webapp/img/filetypes/cfm.png +0 -0
  53. data/webapp/img/filetypes/chm.png +0 -0
  54. data/webapp/img/filetypes/class.png +0 -0
  55. data/webapp/img/filetypes/conf.png +0 -0
  56. data/webapp/img/filetypes/cpp.png +0 -0
  57. data/webapp/img/filetypes/cs.png +0 -0
  58. data/webapp/img/filetypes/css.png +0 -0
  59. data/webapp/img/filetypes/csv.png +0 -0
  60. data/webapp/img/filetypes/deb.png +0 -0
  61. data/webapp/img/filetypes/divx.png +0 -0
  62. data/webapp/img/filetypes/doc.png +0 -0
  63. data/webapp/img/filetypes/dot.png +0 -0
  64. data/webapp/img/filetypes/eml.png +0 -0
  65. data/webapp/img/filetypes/enc.png +0 -0
  66. data/webapp/img/filetypes/file.png +0 -0
  67. data/webapp/img/filetypes/gif.png +0 -0
  68. data/webapp/img/filetypes/gz.png +0 -0
  69. data/webapp/img/filetypes/hlp.png +0 -0
  70. data/webapp/img/filetypes/htm.png +0 -0
  71. data/webapp/img/filetypes/html.png +0 -0
  72. data/webapp/img/filetypes/image.png +0 -0
  73. data/webapp/img/filetypes/iso.png +0 -0
  74. data/webapp/img/filetypes/jar.png +0 -0
  75. data/webapp/img/filetypes/java.png +0 -0
  76. data/webapp/img/filetypes/jpeg.png +0 -0
  77. data/webapp/img/filetypes/jpg.png +0 -0
  78. data/webapp/img/filetypes/js.png +0 -0
  79. data/webapp/img/filetypes/lua.png +0 -0
  80. data/webapp/img/filetypes/m.png +0 -0
  81. data/webapp/img/filetypes/mm.png +0 -0
  82. data/webapp/img/filetypes/mov.png +0 -0
  83. data/webapp/img/filetypes/mp3.png +0 -0
  84. data/webapp/img/filetypes/mpg.png +0 -0
  85. data/webapp/img/filetypes/odc.png +0 -0
  86. data/webapp/img/filetypes/odf.png +0 -0
  87. data/webapp/img/filetypes/odg.png +0 -0
  88. data/webapp/img/filetypes/odi.png +0 -0
  89. data/webapp/img/filetypes/odp.png +0 -0
  90. data/webapp/img/filetypes/ods.png +0 -0
  91. data/webapp/img/filetypes/odt.png +0 -0
  92. data/webapp/img/filetypes/ogg.png +0 -0
  93. data/webapp/img/filetypes/pdf.png +0 -0
  94. data/webapp/img/filetypes/pgp.png +0 -0
  95. data/webapp/img/filetypes/php.png +0 -0
  96. data/webapp/img/filetypes/pl.png +0 -0
  97. data/webapp/img/filetypes/png.png +0 -0
  98. data/webapp/img/filetypes/ppt.png +0 -0
  99. data/webapp/img/filetypes/ps.png +0 -0
  100. data/webapp/img/filetypes/py.png +0 -0
  101. data/webapp/img/filetypes/ram.png +0 -0
  102. data/webapp/img/filetypes/rar.png +0 -0
  103. data/webapp/img/filetypes/rb.png +0 -0
  104. data/webapp/img/filetypes/rm.png +0 -0
  105. data/webapp/img/filetypes/rpm.png +0 -0
  106. data/webapp/img/filetypes/rtf.png +0 -0
  107. data/webapp/img/filetypes/sig.png +0 -0
  108. data/webapp/img/filetypes/sql.png +0 -0
  109. data/webapp/img/filetypes/swf.png +0 -0
  110. data/webapp/img/filetypes/sxc.png +0 -0
  111. data/webapp/img/filetypes/sxd.png +0 -0
  112. data/webapp/img/filetypes/sxi.png +0 -0
  113. data/webapp/img/filetypes/sxw.png +0 -0
  114. data/webapp/img/filetypes/tar.png +0 -0
  115. data/webapp/img/filetypes/tex.png +0 -0
  116. data/webapp/img/filetypes/tgz.png +0 -0
  117. data/webapp/img/filetypes/txt.png +0 -0
  118. data/webapp/img/filetypes/vcf.png +0 -0
  119. data/webapp/img/filetypes/video.png +0 -0
  120. data/webapp/img/filetypes/vsd.png +0 -0
  121. data/webapp/img/filetypes/wav.png +0 -0
  122. data/webapp/img/filetypes/wma.png +0 -0
  123. data/webapp/img/filetypes/wmv.png +0 -0
  124. data/webapp/img/filetypes/xls.png +0 -0
  125. data/webapp/img/filetypes/xml.png +0 -0
  126. data/webapp/img/filetypes/xpi.png +0 -0
  127. data/webapp/img/filetypes/xvid.png +0 -0
  128. data/webapp/img/filetypes/zip.png +0 -0
  129. data/webapp/img/ico/arrow-000-small.png +0 -0
  130. data/webapp/img/ico/arrow-circle.png +0 -0
  131. data/webapp/img/ico/arrow-switch.png +0 -0
  132. data/webapp/img/ico/asterisk.png +0 -0
  133. data/webapp/img/ico/battery.png +0 -0
  134. data/webapp/img/ico/block-small.png +0 -0
  135. data/webapp/img/ico/block.png +0 -0
  136. data/webapp/img/ico/book-open-text.png +0 -0
  137. data/webapp/img/ico/box.png +0 -0
  138. data/webapp/img/ico/bug.png +0 -0
  139. data/webapp/img/ico/chart.png +0 -0
  140. data/webapp/img/ico/chevron-small-expand.png +0 -0
  141. data/webapp/img/ico/chevron-small.png +0 -0
  142. data/webapp/img/ico/clipboard-list.png +0 -0
  143. data/webapp/img/ico/clipboard-paste-document-text.png +0 -0
  144. data/webapp/img/ico/clipboard-paste.png +0 -0
  145. data/webapp/img/ico/clock-select-remain.png +0 -0
  146. data/webapp/img/ico/clock-select.png +0 -0
  147. data/webapp/img/ico/construction.png +0 -0
  148. data/webapp/img/ico/cross-0.png +0 -0
  149. data/webapp/img/ico/cross-1.png +0 -0
  150. data/webapp/img/ico/cross.png +0 -0
  151. data/webapp/img/ico/dashboard.png +0 -0
  152. data/webapp/img/ico/database.png +0 -0
  153. data/webapp/img/ico/databases.png +0 -0
  154. data/webapp/img/ico/disk-black.png +0 -0
  155. data/webapp/img/ico/document-convert.png +0 -0
  156. data/webapp/img/ico/document-import.png +0 -0
  157. data/webapp/img/ico/document-list.png +0 -0
  158. data/webapp/img/ico/document-text.png +0 -0
  159. data/webapp/img/ico/download-cloud.png +0 -0
  160. data/webapp/img/ico/exclamation-button.png +0 -0
  161. data/webapp/img/ico/eye.png +0 -0
  162. data/webapp/img/ico/folder-export.png +0 -0
  163. data/webapp/img/ico/folder-tree.png +0 -0
  164. data/webapp/img/ico/folder.png +0 -0
  165. data/webapp/img/ico/funnel-small.png +0 -0
  166. data/webapp/img/ico/funnel.png +0 -0
  167. data/webapp/img/ico/gear.png +0 -0
  168. data/webapp/img/ico/globe-network.png +0 -0
  169. data/webapp/img/ico/globe.png +0 -0
  170. data/webapp/img/ico/hammer-screwdriver.png +0 -0
  171. data/webapp/img/ico/hand.png +0 -0
  172. data/webapp/img/ico/highlighter-text.png +0 -0
  173. data/webapp/img/ico/hourglass--exclamation.png +0 -0
  174. data/webapp/img/ico/hourglass.png +0 -0
  175. data/webapp/img/ico/inbox-document-text.png +0 -0
  176. data/webapp/img/ico/information-button.png +0 -0
  177. data/webapp/img/ico/information-small.png +0 -0
  178. data/webapp/img/ico/information-white.png +0 -0
  179. data/webapp/img/ico/information.png +0 -0
  180. data/webapp/img/ico/jar.png +0 -0
  181. data/webapp/img/ico/magnifier.png +0 -0
  182. data/webapp/img/ico/mail.png +0 -0
  183. data/webapp/img/ico/memory.png +0 -0
  184. data/webapp/img/ico/molecule.png +0 -0
  185. data/webapp/img/ico/network-cloud.png +0 -0
  186. data/webapp/img/ico/network-status-away.png +0 -0
  187. data/webapp/img/ico/network-status-busy.png +0 -0
  188. data/webapp/img/ico/network-status-offline.png +0 -0
  189. data/webapp/img/ico/network-status.png +0 -0
  190. data/webapp/img/ico/network.png +0 -0
  191. data/webapp/img/ico/node-design.png +0 -0
  192. data/webapp/img/ico/node-master.png +0 -0
  193. data/webapp/img/ico/node-select.png +0 -0
  194. data/webapp/img/ico/node-slave.png +0 -0
  195. data/webapp/img/ico/node.png +0 -0
  196. data/webapp/img/ico/pencil-small.png +0 -0
  197. data/webapp/img/ico/plus-button.png +0 -0
  198. data/webapp/img/ico/processor.png +0 -0
  199. data/webapp/img/ico/prohibition.png +0 -0
  200. data/webapp/img/ico/property.png +0 -0
  201. data/webapp/img/ico/question-small-white.png +0 -0
  202. data/webapp/img/ico/question-white.png +0 -0
  203. data/webapp/img/ico/question.png +0 -0
  204. data/webapp/img/ico/receipt-invoice.png +0 -0
  205. data/webapp/img/ico/receipt.png +0 -0
  206. data/webapp/img/ico/script-code.png +0 -0
  207. data/webapp/img/ico/server-cast.png +0 -0
  208. data/webapp/img/ico/server.png +0 -0
  209. data/webapp/img/ico/sitemap.png +0 -0
  210. data/webapp/img/ico/slash.png +0 -0
  211. data/webapp/img/ico/status-away.png +0 -0
  212. data/webapp/img/ico/status-busy.png +0 -0
  213. data/webapp/img/ico/status-offline.png +0 -0
  214. data/webapp/img/ico/status.png +0 -0
  215. data/webapp/img/ico/system-monitor--exclamation.png +0 -0
  216. data/webapp/img/ico/system-monitor.png +0 -0
  217. data/webapp/img/ico/table.png +0 -0
  218. data/webapp/img/ico/terminal.png +0 -0
  219. data/webapp/img/ico/tick-circle.png +0 -0
  220. data/webapp/img/ico/tick-red.png +0 -0
  221. data/webapp/img/ico/tick.png +0 -0
  222. data/webapp/img/ico/toggle-small-expand.png +0 -0
  223. data/webapp/img/ico/toggle-small.png +0 -0
  224. data/webapp/img/ico/toolbox.png +0 -0
  225. data/webapp/img/ico/ui-accordion.png +0 -0
  226. data/webapp/img/ico/ui-address-bar.png +0 -0
  227. data/webapp/img/ico/ui-check-box-uncheck.png +0 -0
  228. data/webapp/img/ico/ui-check-box.png +0 -0
  229. data/webapp/img/ico/ui-radio-button-uncheck.png +0 -0
  230. data/webapp/img/ico/ui-radio-button.png +0 -0
  231. data/webapp/img/ico/ui-text-field-select.png +0 -0
  232. data/webapp/img/ico/users.png +0 -0
  233. data/webapp/img/ico/wooden-box.png +0 -0
  234. data/webapp/img/ico/zone.png +0 -0
  235. data/webapp/img/loader-light.gif +0 -0
  236. data/webapp/img/loader.gif +0 -0
  237. data/webapp/img/lucene-ico.png +0 -0
  238. data/webapp/img/solr-ico.png +0 -0
  239. data/webapp/{admin/solr_small.png → img/solr.png} +0 -0
  240. data/webapp/img/tree.png +0 -0
  241. data/webapp/js/lib/ZeroClipboard.js +317 -0
  242. data/webapp/js/lib/chosen.js +953 -0
  243. data/webapp/{admin/get-properties.jsp → js/lib/console.js} +13 -10
  244. data/webapp/js/lib/d3.js +9342 -0
  245. data/webapp/js/lib/highlight.js +1 -0
  246. data/webapp/{admin/jquery-1.4.3.min.js → js/lib/jquery-1.7.2.min.js} +0 -0
  247. data/webapp/js/lib/jquery.blockUI.js +499 -0
  248. data/webapp/js/lib/jquery.cookie.js +47 -0
  249. data/webapp/js/lib/jquery.form.js +782 -0
  250. data/webapp/js/lib/jquery.jstree.js +3510 -0
  251. data/webapp/js/lib/jquery.sammy.js +1856 -0
  252. data/webapp/js/lib/jquery.sparkline.js +1271 -0
  253. data/webapp/js/lib/jquery.timeago.js +165 -0
  254. data/webapp/js/lib/linker.js +48 -0
  255. data/webapp/js/lib/order.js +189 -0
  256. data/webapp/js/main.js +57 -0
  257. data/webapp/js/require.js +11319 -0
  258. data/webapp/js/scripts/analysis.js +549 -0
  259. data/webapp/js/scripts/app.js +368 -0
  260. data/webapp/js/scripts/cloud.js +719 -0
  261. data/webapp/js/scripts/cores.js +540 -0
  262. data/webapp/js/scripts/dashboard.js +540 -0
  263. data/webapp/js/scripts/dataimport.js +567 -0
  264. data/webapp/js/scripts/file.js +56 -0
  265. data/webapp/js/scripts/index.js +344 -0
  266. data/webapp/js/scripts/java-properties.js +107 -0
  267. data/webapp/js/scripts/logging.js +519 -0
  268. data/webapp/js/scripts/ping.js +72 -0
  269. data/webapp/js/scripts/plugins.js +426 -0
  270. data/webapp/js/scripts/query.js +170 -0
  271. data/webapp/js/scripts/replication.js +557 -0
  272. data/webapp/js/scripts/schema-browser.js +1206 -0
  273. data/webapp/js/scripts/threads.js +159 -0
  274. data/webapp/tpl/analysis.html +83 -0
  275. data/webapp/tpl/cloud.html +54 -0
  276. data/webapp/tpl/cores.html +215 -0
  277. data/webapp/tpl/dashboard.html +164 -0
  278. data/webapp/tpl/dataimport.html +123 -0
  279. data/webapp/tpl/index.html +250 -0
  280. data/webapp/tpl/logging.html +23 -0
  281. data/webapp/tpl/plugins.html +39 -0
  282. data/webapp/tpl/query.html +318 -0
  283. data/webapp/tpl/replication.html +207 -0
  284. data/webapp/tpl/schema-browser.html +178 -0
  285. data/webapp/tpl/threads.html +56 -0
  286. metadata +307 -40
  287. data/lib/rjack-solr/solr-core-3.6.2.jar +0 -0
  288. data/lib/rjack-solr/solr-solrj-3.6.2.jar +0 -0
  289. data/webapp/admin/_info.jsp +0 -120
  290. data/webapp/admin/action.jsp +0 -94
  291. data/webapp/admin/analysis.jsp +0 -496
  292. data/webapp/admin/analysis.xsl +0 -179
  293. data/webapp/admin/dataimport.jsp +0 -53
  294. data/webapp/admin/debug.jsp +0 -103
  295. data/webapp/admin/distributiondump.jsp +0 -160
  296. data/webapp/admin/form.jsp +0 -152
  297. data/webapp/admin/get-file.jsp +0 -72
  298. data/webapp/admin/header.jsp +0 -44
  299. data/webapp/admin/index.jsp +0 -162
  300. data/webapp/admin/meta.xsl +0 -34
  301. data/webapp/admin/ping.jsp +0 -52
  302. data/webapp/admin/ping.xsl +0 -71
  303. data/webapp/admin/raw-schema.jsp +0 -38
  304. data/webapp/admin/registry.jsp +0 -107
  305. data/webapp/admin/registry.xsl +0 -321
  306. data/webapp/admin/replication/header.jsp +0 -89
  307. data/webapp/admin/replication/index.jsp +0 -378
  308. data/webapp/admin/schema.jsp +0 -690
  309. data/webapp/admin/solr-admin.css +0 -215
  310. data/webapp/admin/stats.jsp +0 -92
  311. data/webapp/admin/stats.xsl +0 -220
  312. data/webapp/admin/tabular.xsl +0 -141
  313. data/webapp/admin/threaddump.jsp +0 -110
  314. data/webapp/admin/threaddump.xsl +0 -103
  315. data/webapp/index.jsp +0 -49
@@ -0,0 +1,567 @@
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 convert_duration_to_seconds = function( str )
19
+ {
20
+ var ret = 0;
21
+ var parts = new String( str ).split( '.' ).shift().split( ':' ).reverse();
22
+ var parts_count = parts.length;
23
+
24
+ for( var i = 0; i < parts_count; i++ )
25
+ {
26
+ ret += parseInt( parts[i], 10 ) * Math.pow( 60, i );
27
+ }
28
+
29
+ return ret;
30
+ }
31
+
32
+ var convert_seconds_to_readable_time = function( value )
33
+ {
34
+ var text = [];
35
+ value = parseInt( value );
36
+
37
+ var minutes = Math.floor( value / 60 );
38
+ var hours = Math.floor( minutes / 60 );
39
+
40
+ if( 0 !== hours )
41
+ {
42
+ text.push( hours + 'h' );
43
+ value -= hours * 60 * 60;
44
+ minutes -= hours * 60;
45
+ }
46
+
47
+ if( 0 !== minutes )
48
+ {
49
+ text.push( minutes + 'm' );
50
+ value -= minutes * 60;
51
+ }
52
+
53
+ if( 0 !== value )
54
+ {
55
+ text.push( value + 's' );
56
+ }
57
+
58
+ return text.join( ' ' );
59
+ }
60
+
61
+ sammy.bind
62
+ (
63
+ 'dataimport_queryhandler_load',
64
+ function( event, params )
65
+ {
66
+ var core_basepath = params.active_core.attr( 'data-basepath' );
67
+
68
+ $.ajax
69
+ (
70
+ {
71
+ url : core_basepath + '/admin/mbeans?cat=QUERYHANDLER&wt=json',
72
+ dataType : 'json',
73
+ beforeSend : function( xhr, settings )
74
+ {
75
+ },
76
+ success : function( response, text_status, xhr )
77
+ {
78
+ var handlers = response['solr-mbeans'][1];
79
+ var dataimport_handlers = [];
80
+ for( var key in handlers )
81
+ {
82
+ if( handlers[key]['class'] !== key &&
83
+ handlers[key]['class'] === 'org.apache.solr.handler.dataimport.DataImportHandler' )
84
+ {
85
+ dataimport_handlers.push( key );
86
+ }
87
+ }
88
+ params.callback( dataimport_handlers );
89
+ },
90
+ error : function( xhr, text_status, error_thrown)
91
+ {
92
+ },
93
+ complete : function( xhr, text_status )
94
+ {
95
+ }
96
+ }
97
+ );
98
+ }
99
+ );
100
+
101
+ // #/:core/dataimport
102
+ sammy.get
103
+ (
104
+ /^#\/([\w\d-]+)\/(dataimport)$/,
105
+ function( context )
106
+ {
107
+ sammy.trigger
108
+ (
109
+ 'dataimport_queryhandler_load',
110
+ {
111
+ active_core : this.active_core,
112
+ callback : function( dataimport_handlers )
113
+ {
114
+ if( 0 === dataimport_handlers.length )
115
+ {
116
+ $( '#content' )
117
+ .html( 'sorry, no dataimport-handler defined!' );
118
+
119
+ return false;
120
+ }
121
+
122
+ context.redirect( context.path + '/' + dataimport_handlers[0] );
123
+ }
124
+ }
125
+ );
126
+ }
127
+ );
128
+
129
+ // #/:core/dataimport
130
+ sammy.get
131
+ (
132
+ /^#\/([\w\d-]+)\/(dataimport)\//,
133
+ function( context )
134
+ {
135
+ var core_basepath = this.active_core.attr( 'data-basepath' );
136
+ var content_element = $( '#content' );
137
+
138
+ var path_parts = this.path.match( /^(.+\/dataimport\/)(.*)$/ );
139
+ var handler_url = core_basepath + path_parts[2];
140
+
141
+ $( 'li.dataimport', this.active_core )
142
+ .addClass( 'active' );
143
+
144
+ $.get
145
+ (
146
+ 'tpl/dataimport.html',
147
+ function( template )
148
+ {
149
+ content_element
150
+ .html( template );
151
+
152
+ var dataimport_element = $( '#dataimport', content_element );
153
+ var form_element = $( '#form', dataimport_element );
154
+ var config_element = $( '#config', dataimport_element );
155
+ var config_error_element = $( '#config-error', dataimport_element );
156
+
157
+ // handler
158
+
159
+ sammy.trigger
160
+ (
161
+ 'dataimport_queryhandler_load',
162
+ {
163
+ active_core : context.active_core,
164
+ callback : function( dataimport_handlers )
165
+ {
166
+ var handlers_element = $( '#navigation ul', form_element );
167
+ var handlers = [];
168
+
169
+ for( var i = 0; i < dataimport_handlers.length; i++ )
170
+ {
171
+ handlers.push
172
+ (
173
+ '<li><a href="' + path_parts[1] + dataimport_handlers[i] + '">' +
174
+ dataimport_handlers[i] +
175
+ '</a></li>'
176
+ );
177
+ }
178
+
179
+ $( handlers_element )
180
+ .html( handlers.join( "\n") ) ;
181
+
182
+ $( 'a[href="' + context.path + '"]', handlers_element ).closest( 'li' )
183
+ .addClass( 'current' );
184
+
185
+ $( 'form', form_element )
186
+ .show();
187
+ }
188
+ }
189
+ );
190
+
191
+ // config
192
+
193
+ function dataimport_fetch_config()
194
+ {
195
+ $.ajax
196
+ (
197
+ {
198
+ url : handler_url + '?command=show-config',
199
+ dataType : 'xml',
200
+ context : $( '#dataimport_config', config_element ),
201
+ beforeSend : function( xhr, settings )
202
+ {
203
+ },
204
+ success : function( config, text_status, xhr )
205
+ {
206
+ dataimport_element
207
+ .removeClass( 'error' );
208
+
209
+ config_error_element
210
+ .hide();
211
+
212
+ config_element
213
+ .addClass( 'hidden' );
214
+
215
+
216
+ var entities = [ '<option value=""></option>' ];
217
+
218
+ $( 'document > entity', config )
219
+ .each
220
+ (
221
+ function( i, element )
222
+ {
223
+ entities.push( '<option>' + $( element ).attr( 'name' ).esc() + '</option>' );
224
+ }
225
+ );
226
+
227
+ $( '#entity', form_element )
228
+ .html( entities.join( "\n" ) );
229
+ },
230
+ error : function( xhr, text_status, error_thrown )
231
+ {
232
+ if( 'parsererror' === error_thrown )
233
+ {
234
+ dataimport_element
235
+ .addClass( 'error' );
236
+
237
+ config_error_element
238
+ .show();
239
+
240
+ config_element
241
+ .removeClass( 'hidden' );
242
+ }
243
+ },
244
+ complete : function( xhr, text_status )
245
+ {
246
+ var code = $(
247
+ '<pre class="syntax language-xml"><code>' +
248
+ xhr.responseText.esc() +
249
+ '</code></pre>'
250
+ );
251
+ this.html( code );
252
+
253
+ if( 'success' === text_status )
254
+ {
255
+ hljs.highlightBlock( code.get(0) );
256
+ }
257
+ }
258
+ }
259
+ );
260
+ }
261
+ dataimport_fetch_config();
262
+
263
+ $( '.toggle', config_element )
264
+ .die( 'click' )
265
+ .live
266
+ (
267
+ 'click',
268
+ function( event )
269
+ {
270
+ $( this ).parents( '.block' )
271
+ .toggleClass( 'hidden' );
272
+
273
+ return false;
274
+ }
275
+ )
276
+
277
+ var reload_config_element = $( '.reload_config', config_element );
278
+ reload_config_element
279
+ .die( 'click' )
280
+ .live
281
+ (
282
+ 'click',
283
+ function( event )
284
+ {
285
+ $.ajax
286
+ (
287
+ {
288
+ url : handler_url + '?command=reload-config',
289
+ dataType : 'xml',
290
+ context: $( this ),
291
+ beforeSend : function( xhr, settings )
292
+ {
293
+ this
294
+ .removeClass( 'error' )
295
+ .addClass( 'loader' );
296
+ },
297
+ success : function( response, text_status, xhr )
298
+ {
299
+ this
300
+ .addClass( 'success' );
301
+
302
+ window.setTimeout
303
+ (
304
+ function()
305
+ {
306
+ reload_config_element
307
+ .removeClass( 'success' );
308
+ },
309
+ 5000
310
+ );
311
+ },
312
+ error : function( xhr, text_status, error_thrown )
313
+ {
314
+ this
315
+ .addClass( 'error' );
316
+ },
317
+ complete : function( xhr, text_status )
318
+ {
319
+ this
320
+ .removeClass( 'loader' );
321
+
322
+ dataimport_fetch_config();
323
+ }
324
+ }
325
+ );
326
+ return false;
327
+ }
328
+ )
329
+
330
+ // state
331
+
332
+ function dataimport_fetch_status()
333
+ {
334
+ $.ajax
335
+ (
336
+ {
337
+ url : handler_url + '?command=status',
338
+ dataType : 'xml',
339
+ beforeSend : function( xhr, settings )
340
+ {
341
+ },
342
+ success : function( response, text_status, xhr )
343
+ {
344
+ var state_element = $( '#current_state', content_element );
345
+
346
+ var status = $( 'str[name="status"]', response ).text();
347
+ var rollback_element = $( 'str[name="Rolledback"]', response );
348
+ var messages_count = $( 'lst[name="statusMessages"] str', response ).size();
349
+
350
+ var started_at = $( 'str[name="Full Dump Started"]', response ).text();
351
+ if( !started_at )
352
+ {
353
+ started_at = (new Date()).toGMTString();
354
+ }
355
+
356
+ function dataimport_compute_details( response, details_element )
357
+ {
358
+ var details = [];
359
+
360
+ var requests = parseInt( $( 'str[name="Total Requests made to DataSource"]', response ).text(), 10 );
361
+ if( requests )
362
+ {
363
+ details.push
364
+ (
365
+ '<abbr title="Total Requests made to DataSource">Requests</abbr>: ' +
366
+ requests
367
+ );
368
+ }
369
+
370
+ var fetched = parseInt( $( 'str[name="Total Rows Fetched"]', response ).text(), 10 );
371
+ if( fetched )
372
+ {
373
+ details.push
374
+ (
375
+ '<abbr title="Total Rows Fetched">Fetched</abbr>: ' +
376
+ fetched
377
+ );
378
+ }
379
+
380
+ var skipped = parseInt( $( 'str[name="Total Documents Skipped"]', response ).text(), 10 );
381
+ if( requests )
382
+ {
383
+ details.push
384
+ (
385
+ '<abbr title="Total Documents Skipped">Skipped</abbr>: ' +
386
+ skipped
387
+ );
388
+ }
389
+
390
+ var processed = parseInt( $( 'str[name="Total Documents Processed"]', response ).text(), 10 );
391
+ if( processed )
392
+ {
393
+ details.push
394
+ (
395
+ '<abbr title="Total Documents Processed">Processed</abbr>: ' +
396
+ processed
397
+ );
398
+ }
399
+
400
+ details_element
401
+ .html( details.join( ', ' ) )
402
+ .show();
403
+ }
404
+
405
+ state_element
406
+ .removeClass( 'indexing' )
407
+ .removeClass( 'success' )
408
+ .removeClass( 'failure' );
409
+
410
+ $( '.info', state_element )
411
+ .removeClass( 'loader' );
412
+
413
+ if( 0 !== rollback_element.size() )
414
+ {
415
+ state_element
416
+ .addClass( 'failure' )
417
+ .show();
418
+
419
+ $( '.time', state_element )
420
+ .text( rollback_element.text() )
421
+ .timeago()
422
+ .show();
423
+
424
+ $( '.info strong', state_element )
425
+ .text( $( 'str[name=""]', response ).text() );
426
+
427
+ $( '.info .details', state_element )
428
+ .hide();
429
+
430
+ console.debug( 'rollback @ ', rollback_element.text() );
431
+ }
432
+ else if( 'idle' === status && 0 !== messages_count )
433
+ {
434
+ state_element
435
+ .addClass( 'success' )
436
+ .show();
437
+
438
+ $( '.time', state_element )
439
+ .text( started_at )
440
+ .timeago()
441
+ .show();
442
+
443
+ $( '.info strong', state_element )
444
+ .text( $( 'str[name=""]', response ).text() );
445
+
446
+ dataimport_compute_details( response, $( '.info .details', state_element ) );
447
+ }
448
+ else if( 'busy' === status )
449
+ {
450
+ state_element
451
+ .addClass( 'indexing' )
452
+ .show();
453
+
454
+ $( '.time', state_element )
455
+ .text( started_at )
456
+ .timeago()
457
+ .show();
458
+
459
+ $( '.info', state_element )
460
+ .addClass( 'loader' );
461
+
462
+ var indexing_text = 'Indexing ...';
463
+
464
+ var time_elapsed_text = $( 'str[name="Time Elapsed"]', response ).text();
465
+ time_elapsed_text = convert_seconds_to_readable_time( convert_duration_to_seconds( time_elapsed_text ) );
466
+ if( time_elapsed_text.length )
467
+ {
468
+ indexing_text = 'Indexing since ' + time_elapsed_text
469
+ }
470
+
471
+ $( '.info strong', state_element )
472
+ .text( indexing_text );
473
+
474
+ dataimport_compute_details( response, $( '.info .details', state_element ) );
475
+
476
+ window.setTimeout( dataimport_fetch_status, 2000 );
477
+ }
478
+ else
479
+ {
480
+ state_element.hide();
481
+ }
482
+ },
483
+ error : function( xhr, text_status, error_thrown )
484
+ {
485
+ console.debug( arguments );
486
+
487
+ reload_config_element
488
+ .addClass( 'error' );
489
+ },
490
+ complete : function( xhr, text_status )
491
+ {
492
+ }
493
+ }
494
+ );
495
+ }
496
+ dataimport_fetch_status();
497
+
498
+ // form
499
+
500
+ $( 'form', form_element )
501
+ .ajaxForm
502
+ (
503
+ {
504
+ url : handler_url,
505
+ dataType : 'xml',
506
+ beforeSend : function( xhr, settings )
507
+ {
508
+ $( 'form button', form_element )
509
+ .addClass( 'loader' );
510
+ },
511
+ beforeSubmit : function( array, form, options )
512
+ {
513
+ var entity = $( '#entity', form ).val();
514
+ if( entity.length )
515
+ {
516
+ array.push( { name : 'entity', value: entity } );
517
+ }
518
+
519
+ var start = parseInt( $( '#start', form ).val(), 10 );
520
+ if( start )
521
+ {
522
+ array.push( { name : 'start', value: start } );
523
+ }
524
+
525
+ var rows = parseInt( $( '#rows', form ).val(), 10 );
526
+ if( rows )
527
+ {
528
+ array.push( { name : 'rows', value: rows } );
529
+ }
530
+
531
+ $( 'input:checkbox', form ).not( ':checked' )
532
+ .each( function( i, input )
533
+ {
534
+ array.push( { name: input.name, value: 'false' } );
535
+ }
536
+ );
537
+
538
+ var custom_parameters = $( '#custom_parameters', form ).val();
539
+ if( custom_parameters.length )
540
+ {
541
+ var params = custom_parameters.split( '&' );
542
+ for( var i in params )
543
+ {
544
+ var tmp = params[i].split( '=' );
545
+ array.push( { name : tmp[0], value: tmp[1] } );
546
+ }
547
+ }
548
+ },
549
+ success : function( response, text_status, xhr )
550
+ {
551
+ dataimport_fetch_status();
552
+ },
553
+ error : function( xhr, text_status, error_thrown )
554
+ {
555
+ console.debug( arguments );
556
+ },
557
+ complete : function( xhr, text_status )
558
+ {
559
+ $( 'form button', form_element )
560
+ .removeClass( 'loader' );
561
+ }
562
+ }
563
+ );
564
+ }
565
+ );
566
+ }
567
+ );