rjack-solr 3.6.2.0-java → 4.0.0.0-java

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