iqvoc 4.12.1 → 4.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (977) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/Gemfile +26 -42
  4. data/Gemfile.lock +372 -340
  5. data/README.md +3 -3
  6. data/{vendor → app}/assets/images/ajax-loader.gif +0 -0
  7. data/{vendor → app}/assets/images/treeview-default-line.gif +0 -0
  8. data/app/assets/javascripts/framework.js +5 -9
  9. data/app/assets/javascripts/iqvoc/autocomplete.js +2 -0
  10. data/app/assets/javascripts/iqvoc/concept_mapping_manager.js +141 -123
  11. data/app/assets/javascripts/iqvoc/create_note.js +52 -0
  12. data/app/assets/javascripts/iqvoc/debounce.js +21 -0
  13. data/app/assets/javascripts/iqvoc/{entityselect.js.erb → entityselect.js} +7 -5
  14. data/app/assets/javascripts/iqvoc/entityselect_qualified.js +51 -0
  15. data/app/assets/javascripts/iqvoc/federated_concept_mapper.js +126 -56
  16. data/app/assets/javascripts/iqvoc/iqvoc.js +16 -115
  17. data/app/assets/javascripts/iqvoc/label_resolver.js +35 -30
  18. data/app/assets/javascripts/iqvoc/langselect.js +2 -2
  19. data/app/assets/javascripts/iqvoc/manifest.js +11 -12
  20. data/app/assets/javascripts/iqvoc/treeview.js +227 -228
  21. data/app/assets/javascripts/manifest.js +2 -2
  22. data/app/assets/stylesheets/_framework.scss +3 -4
  23. data/app/assets/stylesheets/iqvoc/{settings/_bootstrap.scss → _bootstrap_overrides.scss} +54 -6
  24. data/app/assets/stylesheets/iqvoc/_manifest.scss +15 -17
  25. data/app/assets/stylesheets/iqvoc/components/_components.scss +31 -50
  26. data/app/assets/stylesheets/iqvoc/components/_entity_select.scss +0 -1
  27. data/app/assets/stylesheets/iqvoc/components/_label-list.scss +3 -3
  28. data/app/assets/stylesheets/iqvoc/components/_modals.scss +3 -5
  29. data/app/assets/stylesheets/iqvoc/components/_notes.scss +5 -0
  30. data/app/assets/stylesheets/iqvoc/components/_onebox.scss +18 -0
  31. data/app/assets/stylesheets/iqvoc/components/_sidebars.scss +6 -2
  32. data/app/assets/stylesheets/iqvoc/components/_simplete.scss +37 -0
  33. data/app/assets/stylesheets/iqvoc/components/{_treeview.scss.erb → _treeview.scss} +11 -3
  34. data/app/assets/stylesheets/iqvoc/components/typeahead.scss +4 -2
  35. data/app/assets/stylesheets/iqvoc/settings/_bootstrap-variables.scss +1 -853
  36. data/app/assets/stylesheets/iqvoc/settings/_fonts.scss +35 -35
  37. data/app/assets/stylesheets/iqvoc/settings/_manifest.scss +4 -0
  38. data/app/assets/stylesheets/iqvoc/{mixins → settings}/_mixins.scss +4 -0
  39. data/app/assets/stylesheets/{manifest.css.scss → manifest.scss} +1 -1
  40. data/app/controllers/collections_controller.rb +6 -3
  41. data/app/controllers/concepts/alphabetical_controller.rb +18 -16
  42. data/app/controllers/concepts/expired_controller.rb +9 -10
  43. data/app/controllers/concepts/hierarchical_controller.rb +1 -3
  44. data/app/controllers/concepts/scheme_controller.rb +4 -1
  45. data/app/controllers/concepts/untranslated_controller.rb +1 -1
  46. data/app/controllers/concepts/versions_controller.rb +1 -0
  47. data/app/controllers/concepts_controller.rb +4 -0
  48. data/app/controllers/concerns/controller_extensions.rb +37 -3
  49. data/app/controllers/errors_controller.rb +8 -0
  50. data/app/controllers/exports_controller.rb +1 -1
  51. data/app/controllers/frontpage_controller.rb +8 -1
  52. data/app/controllers/hierarchy_controller.rb +7 -1
  53. data/app/controllers/imports_controller.rb +1 -1
  54. data/app/controllers/rdf_controller.rb +3 -0
  55. data/app/controllers/search_results_controller.rb +7 -1
  56. data/app/controllers/user_sessions_controller.rb +5 -3
  57. data/app/controllers/users_controller.rb +2 -2
  58. data/app/helpers/application_helper.rb +1 -1
  59. data/app/helpers/concepts_helper.rb +2 -1
  60. data/app/helpers/dashboard_helper.rb +6 -2
  61. data/app/helpers/form_helper.rb +1 -1
  62. data/app/helpers/navigation_helper.rb +20 -9
  63. data/app/helpers/rdf_helper.rb +14 -0
  64. data/app/helpers/search_results_helper.rb +1 -1
  65. data/app/models/ability.rb +3 -0
  66. data/app/models/abstract_user.rb +19 -7
  67. data/app/models/application_record.rb +3 -0
  68. data/app/models/collection/base.rb +9 -9
  69. data/app/models/collection/member/base.rb +6 -3
  70. data/app/models/concept/base.rb +102 -32
  71. data/app/models/concept/relation/base.rb +3 -3
  72. data/app/models/concept/skos/base.rb +10 -0
  73. data/app/models/concerns/search_extension.rb +1 -1
  74. data/app/models/concerns/versioning.rb +11 -4
  75. data/app/models/configuration_setting.rb +1 -1
  76. data/app/models/dataset/iqvoc_dataset.rb +3 -2
  77. data/app/models/export.rb +2 -2
  78. data/app/models/import.rb +1 -1
  79. data/app/models/label/base.rb +26 -7
  80. data/app/models/labeling/base.rb +1 -1
  81. data/app/models/labeling/skos/alt_label.rb +4 -0
  82. data/app/models/labeling/skos/base.rb +1 -1
  83. data/app/models/labeling/skos/hidden_label.rb +2 -2
  84. data/app/models/match/base.rb +5 -3
  85. data/app/models/notation/base.rb +4 -1
  86. data/app/models/note/annotated/base.rb +1 -1
  87. data/app/models/note/base.rb +23 -5
  88. data/app/views/collections/_data.html.erb +16 -2
  89. data/app/views/collections/_form.html.erb +2 -2
  90. data/app/views/collections/_sidebar.html.erb +16 -8
  91. data/app/views/collections/show_published.html.erb +4 -4
  92. data/app/views/collections/show_unpublished.html.erb +6 -6
  93. data/app/views/concepts/_form.html.erb +2 -3
  94. data/app/views/concepts/alphabetical/_search_result.html.erb +10 -11
  95. data/app/views/concepts/alphabetical/index.html.erb +7 -2
  96. data/app/views/concepts/expired/index.html.erb +10 -5
  97. data/app/views/concepts/glance.html.erb +5 -4
  98. data/app/views/concepts/scheme/edit.html.erb +1 -1
  99. data/app/views/concepts/scheme/show.html.erb +2 -2
  100. data/app/views/concepts/scheme/show.iqrdf +1 -6
  101. data/app/views/concepts/show_published.html.erb +4 -4
  102. data/app/views/concepts/show_unpublished.html.erb +6 -6
  103. data/app/views/concepts/sidebars/_plural.html.erb +7 -2
  104. data/app/views/concepts/sidebars/_singular.html.erb +12 -7
  105. data/app/views/dashboard/_sidebar.html.erb +3 -0
  106. data/app/views/dashboard/_table.html.erb +20 -9
  107. data/app/views/dashboard/glance.html.erb +5 -4
  108. data/app/views/dashboard/index.html.erb +4 -1
  109. data/app/views/errors/access_denied.html.erb +17 -2
  110. data/app/views/errors/not_found.html.erb +17 -3
  111. data/app/views/errors/server_error.html.erb +38 -0
  112. data/app/views/frontpage/index.html.erb +28 -7
  113. data/app/views/instance_configuration/index.html.erb +4 -4
  114. data/app/views/kaminari/_first_page.html.erb +13 -0
  115. data/app/views/kaminari/_gap.html.erb +10 -0
  116. data/app/views/kaminari/_last_page.html.erb +13 -0
  117. data/app/views/kaminari/_next_page.html.erb +13 -0
  118. data/app/views/kaminari/_page.html.erb +18 -0
  119. data/app/views/kaminari/_paginator.html.erb +25 -0
  120. data/app/views/kaminari/_prev_page.html.erb +13 -0
  121. data/app/views/layouts/_controls.html.erb +30 -27
  122. data/app/views/layouts/_navigation.html.erb +15 -15
  123. data/app/views/layouts/_sections.html.erb +3 -1
  124. data/app/views/layouts/_user_navigation.html.erb +24 -34
  125. data/app/views/layouts/application.html.erb +41 -41
  126. data/app/views/pages/components.html.erb +5 -5
  127. data/app/views/pages/version.html.erb +12 -14
  128. data/app/views/partials/collection/_new_link_base.html.erb +5 -3
  129. data/app/views/partials/concept/_new_link_base.html.erb +5 -3
  130. data/app/views/partials/labeling/skos/_edit_base.html.erb +3 -1
  131. data/app/views/partials/match/_edit_base.html.erb +1 -1
  132. data/app/views/partials/notation/_edit_base.html.erb +1 -1
  133. data/app/views/partials/note/_edit_base.html.erb +19 -6
  134. data/app/views/partials/note/_note.html.erb +1 -1
  135. data/app/views/partials/note/_search_result.html.erb +1 -1
  136. data/app/views/partials/note/skos/_edit_change_note.html.erb +1 -0
  137. data/app/views/partials/note/skos/change_note/_search_result.html.erb +1 -1
  138. data/app/views/partials/note/skos/definition/_search_result.html.erb +1 -1
  139. data/app/views/search_results/_form.html.erb +4 -4
  140. data/app/views/search_results/_result_list.html.erb +15 -0
  141. data/app/views/search_results/_sidebar.html.erb +2 -0
  142. data/app/views/search_results/index.html.erb +1 -11
  143. data/app/views/search_results/index.iqrdf +2 -2
  144. data/app/views/search_results/sections/_change_note.html.erb +8 -8
  145. data/app/views/search_results/sections/_collection.html.erb +2 -2
  146. data/app/views/search_results/sections/_datasets.html.erb +9 -6
  147. data/app/views/search_results/sections/_klass.html.erb +2 -2
  148. data/app/views/search_results/sections/_languages.html.erb +11 -8
  149. data/app/views/search_results/sections/_mode.html.erb +2 -2
  150. data/app/views/search_results/sections/_note.html.erb +1 -1
  151. data/app/views/search_results/sections/_terms.html.erb +10 -11
  152. data/app/views/search_results/sections/_type.html.erb +14 -11
  153. data/app/views/triplestore_sync/index.html.erb +1 -1
  154. data/app/views/users/_form.html.erb +3 -1
  155. data/app/views/users/index.html.erb +8 -5
  156. data/config/application.rb +19 -32
  157. data/config/boot.rb +2 -17
  158. data/config/cable.yml +10 -0
  159. data/config/database.yml +12 -11
  160. data/config/database.yml.postgresql +14 -12
  161. data/config/engine.rb +4 -10
  162. data/config/environment.rb +4 -20
  163. data/config/environments/heroku.rb +0 -13
  164. data/config/initializers/apipie.rb +2 -0
  165. data/config/initializers/application_controller_renderer.rb +8 -0
  166. data/config/initializers/backtrace_silencers.rb +0 -16
  167. data/config/initializers/content_security_policy.rb +25 -0
  168. data/config/initializers/cookies_serializer.rb +2 -0
  169. data/config/initializers/delayed_job.rb +0 -1
  170. data/config/initializers/inflections.rb +0 -16
  171. data/config/initializers/iqvoc.rb +0 -2
  172. data/config/initializers/linked_data.rb +5 -0
  173. data/config/initializers/mime_types.rb +0 -16
  174. data/config/initializers/new_framework_defaults_5_1.rb +14 -0
  175. data/config/initializers/session_store.rb +0 -16
  176. data/config/initializers/sqlite3_booleans.rb +1 -0
  177. data/config/initializers/wrap_parameters.rb +2 -2
  178. data/config/locales/activerecord.de.yml +8 -7
  179. data/config/locales/activerecord.en.yml +2 -0
  180. data/config/locales/de.yml +25 -17
  181. data/config/locales/en.yml +15 -3
  182. data/config/puma.rb +37 -0
  183. data/config/routes.rb +3 -0
  184. data/config/secrets.yml +24 -0
  185. data/config/storage.yml +34 -0
  186. data/db/migrate/20100927101502_create_schema.rb +1 -1
  187. data/db/migrate/20101125141218_add_collection_tables.rb +1 -1
  188. data/db/migrate/20101129161528_add_type_to_collections.rb +1 -1
  189. data/db/migrate/20101202094602_add_origin_to_collections.rb +1 -1
  190. data/db/migrate/20101202135420_rename_collection_contents_to_collection_members.rb +1 -1
  191. data/db/migrate/20101208103531_add_type_to_collection_contents.rb +1 -1
  192. data/db/migrate/20101210153916_add_indexes_to_collections.rb +1 -1
  193. data/db/migrate/20110204121244_create_collection_labels.rb +1 -1
  194. data/db/migrate/20110208084250_change_origin_lengths.rb +1 -1
  195. data/db/migrate/20110328124300_discard_collection_specifics.rb +1 -1
  196. data/db/migrate/20110408120357_remove_classifications_and_classifiers.rb +1 -1
  197. data/db/migrate/20110408120740_remove_xl_specfic_stuff.rb +1 -1
  198. data/db/migrate/20110420133640_change_value_in_notes.rb +1 -1
  199. data/db/migrate/20110427120534_add_published_at_to_labels.rb +1 -1
  200. data/db/migrate/20110510162719_use_mono_hierarchy_instead_of_poly_hierarchy.rb +1 -1
  201. data/db/migrate/20110512132624_extend_notes_value_field_length.rb +1 -1
  202. data/db/migrate/20110525103100_separate_note_annotation_predicates.rb +1 -1
  203. data/db/migrate/20110615134040_change_umt_note_annotations_to_dct.rb +1 -1
  204. data/db/migrate/20120119000000_create_configuration_settings.rb +1 -1
  205. data/db/migrate/20120201120736_add_top_term_to_concepts.rb +1 -1
  206. data/db/migrate/20120326102037_add_rank_to_concept_relations.rb +1 -1
  207. data/db/migrate/20130227145825_fix_collection_type.rb +1 -1
  208. data/db/migrate/20130315093255_add_notations.rb +1 -1
  209. data/db/migrate/20130315141952_add_indexes_to_notations.rb +1 -1
  210. data/db/migrate/20130418093837_add_language_to_note_annotations.rb +1 -1
  211. data/db/migrate/20130502151221_fix_collection_member_types.rb +1 -1
  212. data/db/migrate/20130508103137_adjust_note_languages_setting.rb +2 -2
  213. data/db/migrate/20131220134356_create_delayed_jobs.rb +1 -1
  214. data/db/migrate/20131220144601_create_imports.rb +1 -1
  215. data/db/migrate/20140423095147_create_exports.rb +1 -1
  216. data/db/migrate/20140425130615_add_fk_indexes_to_exports_and_imports.rb +1 -1
  217. data/db/migrate/20140505144919_add_import_file_to_imports.rb +1 -1
  218. data/db/migrate/20140506073428_add_missing_imports_attributes.rb +1 -1
  219. data/db/migrate/20140506133619_add_namespace_to_exports.rb +1 -1
  220. data/db/migrate/20140730132113_add_type_to_users.rb +1 -1
  221. data/db/migrate/20140807072457_create_job_relations.rb +1 -1
  222. data/db/migrate/20140807123413_add_response_error_to_job_relation.rb +1 -1
  223. data/db/migrate/20141204151558_add_foreign_key_constraints.rb +1 -1
  224. data/db/migrate/20150316103756_delayed_jobs_optimizations.rb +1 -1
  225. data/db/migrate/20150317162953_drop_job_relation.rb +1 -1
  226. data/db/migrate/20170608093748_extend_job_output_log.rb +1 -1
  227. data/db/migrate/20170626074649_add_note_annotations_index.rb +1 -1
  228. data/db/migrate/20180430163647_utf8mb4_conversion.rb +1 -1
  229. data/db/migrate/20180525135715_fix_note_annotations_index.rb +1 -1
  230. data/db/migrate/20190403133600_change_collation.rb +1 -1
  231. data/db/migrate/20200220134024_add_position_to_notes.rb +5 -0
  232. data/db/migrate/20200529053158_extend_users.rb +14 -0
  233. data/db/migrate/20200901143030_add_collection_type_index.rb +5 -0
  234. data/db/schema.rb +120 -123
  235. data/iqvoc.gemspec +15 -13
  236. data/lib/iqvoc/configuration/core.rb +1 -3
  237. data/lib/iqvoc/configuration/navigation.rb +6 -0
  238. data/lib/iqvoc/environments/development.rb +29 -47
  239. data/lib/iqvoc/environments/production.rb +37 -30
  240. data/lib/iqvoc/environments/test.rb +11 -9
  241. data/lib/iqvoc/version.rb +1 -1
  242. data/lib/tasks/cleanup.rake +37 -0
  243. data/lib/tasks/db.rake +32 -0
  244. data/public/assets/fonts/FiraMono-Regular-0b6138c5b386dc9125473fd851926f29.ttf +0 -0
  245. data/public/assets/fonts/FiraMono-Regular-690950e8d89c92cba41eeeb13f1de93e.woff +0 -0
  246. data/public/assets/fonts/FiraMono-Regular-98f97ed2dbf9d94d4fa5df048434b88d.eot +0 -0
  247. data/public/assets/fonts/FiraMono-Regular.eot +0 -0
  248. data/public/assets/fonts/FiraMono-Regular.ttf +0 -0
  249. data/public/assets/fonts/FiraMono-Regular.woff +0 -0
  250. data/public/assets/fonts/FiraSans-Bold-0de5f536bd0dc370449c0c67a49a6fe7.eot +0 -0
  251. data/public/assets/fonts/FiraSans-Bold-25037ef8d155e38b5df0c242a4c6cf2d.ttf +0 -0
  252. data/public/assets/fonts/FiraSans-Bold-494219a9639084eb9528ff47f79fcda1.woff +0 -0
  253. data/public/assets/fonts/FiraSans-Bold.eot +0 -0
  254. data/public/assets/fonts/FiraSans-Bold.ttf +0 -0
  255. data/public/assets/fonts/FiraSans-Bold.woff +0 -0
  256. data/public/assets/fonts/FiraSans-BoldItalic-5b3b812df9e1cb2b1f34baad65a2bdfb.ttf +0 -0
  257. data/public/assets/fonts/FiraSans-BoldItalic-90b8087c48feff2e828f658c49de5399.eot +0 -0
  258. data/public/assets/fonts/FiraSans-BoldItalic-b10e46158d50bf9b78968112acf87310.woff +0 -0
  259. data/public/assets/fonts/FiraSans-BoldItalic.eot +0 -0
  260. data/public/assets/fonts/FiraSans-BoldItalic.ttf +0 -0
  261. data/public/assets/fonts/FiraSans-BoldItalic.woff +0 -0
  262. data/public/assets/fonts/FiraSans-Book-659d252627051e785260ba445da8930f.woff +0 -0
  263. data/public/assets/fonts/FiraSans-Book-abc65ceb7bfaed729bff7a9d1367b7d4.eot +0 -0
  264. data/public/assets/fonts/FiraSans-Book-f0410501d5ecc5fe66bcdbc02b482c81.ttf +0 -0
  265. data/public/assets/fonts/FiraSans-Book.eot +0 -0
  266. data/public/assets/fonts/FiraSans-Book.ttf +0 -0
  267. data/public/assets/fonts/FiraSans-Book.woff +0 -0
  268. data/public/assets/fonts/FiraSans-ExtraLight-140f15ee97cb2099ff01c2b57dcd1a24.woff +0 -0
  269. data/public/assets/fonts/FiraSans-ExtraLight-28e5c2679df66406ebd117fbdded6753.eot +0 -0
  270. data/public/assets/fonts/FiraSans-ExtraLight-c15de70ebceffce178cbd2e82aa2c373.ttf +0 -0
  271. data/public/assets/fonts/FiraSans-ExtraLight.eot +0 -0
  272. data/public/assets/fonts/FiraSans-ExtraLight.ttf +0 -0
  273. data/public/assets/fonts/FiraSans-ExtraLight.woff +0 -0
  274. data/public/assets/fonts/FiraSans-Italic-ac4cb18fe14a7c90f29cdd2ce499ba59.woff +0 -0
  275. data/public/assets/fonts/FiraSans-Italic-bdea00fee0da5ca9176061e00c26a0da.eot +0 -0
  276. data/public/assets/fonts/FiraSans-Italic-e7e76a0ee170fd29b5d8100753eff569.ttf +0 -0
  277. data/public/assets/fonts/FiraSans-Italic.eot +0 -0
  278. data/public/assets/fonts/FiraSans-Italic.ttf +0 -0
  279. data/public/assets/fonts/FiraSans-Italic.woff +0 -0
  280. data/public/assets/fonts/FiraSans-Light-20adaf630b690c3e3184daaeae585f22.woff +0 -0
  281. data/public/assets/fonts/FiraSans-Light-3689e18b38d335ec0c43823adb6a2984.eot +0 -0
  282. data/public/assets/fonts/FiraSans-Light-55b04531e7a9ecdf58090d70b94b68e2.ttf +0 -0
  283. data/public/assets/fonts/FiraSans-Light-SC-098407a72b7ad46f7c2480d7ac11baf2.eot +0 -0
  284. data/public/assets/fonts/FiraSans-Light-SC-82763fe2ce9e6b897556c6f3c2aceb29.woff2 +0 -0
  285. data/public/assets/fonts/FiraSans-Light-SC-c73985985f0501c1845a5185b180fe6b.woff +0 -0
  286. data/public/assets/fonts/FiraSans-Light-SC-c9563f48d9cccd91f07e46801c27130f.ttf +0 -0
  287. data/public/assets/fonts/FiraSans-Light-SC.eot +0 -0
  288. data/public/assets/fonts/FiraSans-Light-SC.ttf +0 -0
  289. data/public/assets/fonts/FiraSans-Light-SC.woff +0 -0
  290. data/public/assets/fonts/FiraSans-Light-SC.woff2 +0 -0
  291. data/public/assets/fonts/FiraSans-Light.eot +0 -0
  292. data/public/assets/fonts/FiraSans-Light.ttf +0 -0
  293. data/public/assets/fonts/FiraSans-Light.woff +0 -0
  294. data/public/assets/fonts/FiraSans-Medium-082fab59048189168006bf2e914ba8b7.woff +0 -0
  295. data/public/assets/fonts/FiraSans-Medium-11706edfe8651c355b413bd24b4b5e10.eot +0 -0
  296. data/public/assets/fonts/FiraSans-Medium-3a0dacdeaba1b4c054f2d6cb5061965d.ttf +0 -0
  297. data/public/assets/fonts/FiraSans-Medium.eot +0 -0
  298. data/public/assets/fonts/FiraSans-Medium.ttf +0 -0
  299. data/public/assets/fonts/FiraSans-Medium.woff +0 -0
  300. data/public/assets/fonts/FiraSans-MediumItalic-6c8a2646d72641226527d574a8485b66.woff +0 -0
  301. data/public/assets/fonts/FiraSans-MediumItalic-b81e92794a6878b6c578d97b3ad5e6d7.ttf +0 -0
  302. data/public/assets/fonts/FiraSans-MediumItalic-eae7f4a3c4db9fe83025909ebfae5ad9.eot +0 -0
  303. data/public/assets/fonts/FiraSans-MediumItalic.eot +0 -0
  304. data/public/assets/fonts/FiraSans-MediumItalic.ttf +0 -0
  305. data/public/assets/fonts/FiraSans-MediumItalic.woff +0 -0
  306. data/public/assets/fonts/FiraSans-Regular-537188a19aeebdd74a92e114af7a02cb.ttf +0 -0
  307. data/public/assets/fonts/FiraSans-Regular-5d6a923de9be80ff5c2995cc03d93127.woff +0 -0
  308. data/public/assets/fonts/FiraSans-Regular-db689e5fea21ed4b7890811151968dc6.eot +0 -0
  309. data/public/assets/fonts/FiraSans-Regular.eot +0 -0
  310. data/public/assets/fonts/FiraSans-Regular.ttf +0 -0
  311. data/public/assets/fonts/FiraSans-Regular.woff +0 -0
  312. data/public/assets/fonts/FiraSans-UltraLight-3baefce4c224a0f0b26cdafe37dfa55d.eot +0 -0
  313. data/public/assets/fonts/FiraSans-UltraLight-e3909a352b87f853bb464836adfd602a.ttf +0 -0
  314. data/public/assets/fonts/FiraSans-UltraLight-f7289beeaa2353caf487553ee8b8ef03.woff +0 -0
  315. data/public/assets/fonts/FiraSans-UltraLight.eot +0 -0
  316. data/public/assets/fonts/FiraSans-UltraLight.ttf +0 -0
  317. data/public/assets/fonts/FiraSans-UltraLight.woff +0 -0
  318. data/public/assets/fonts/FontAwesome.otf +0 -0
  319. data/public/assets/fonts/fontawesome-webfont.eot +0 -0
  320. data/public/assets/fonts/fontawesome-webfont.svg +2671 -0
  321. data/public/assets/fonts/fontawesome-webfont.ttf +0 -0
  322. data/public/assets/fonts/fontawesome-webfont.woff +0 -0
  323. data/public/assets/fonts/fontawesome-webfont.woff2 +0 -0
  324. data/public/assets/images/ajax-loader-30d8e72bfdae694b1938658e1b087df0.gif +0 -0
  325. data/public/assets/images/ajax-loader.gif +0 -0
  326. data/public/assets/images/iqvoc_logo-165f17a46cf0a1bf9464db9d136fb843.svg +41 -0
  327. data/public/assets/images/iqvoc_logo.svg +41 -0
  328. data/public/assets/images/treeview-default-line-5e3c0e0c48f48c23c45aef7b72c739c0.gif +0 -0
  329. data/public/assets/images/treeview-default-line.gif +0 -0
  330. data/public/assets/javascripts/bootstrap.bundle.min-68b3c2f1c1f636f947fff1229d3ffbf5.js +7 -0
  331. data/public/assets/javascripts/bootstrap.bundle.min.js +42 -0
  332. data/public/assets/javascripts/jquery-17e41799d7fba03a313ca6b67d8a0954.js +26 -0
  333. data/public/assets/javascripts/jquery-d52dc3a9171f1fc89dd0f8e35e42c9d2.js +26 -0
  334. data/{vendor/assets/bower_components/jquery/dist → public/assets/javascripts}/jquery.js +5142 -3472
  335. data/public/assets/javascripts/manifest-7708201f7c24d5186cd075c3317f9b70.js +7311 -0
  336. data/public/assets/javascripts/manifest-89894d9f630fa57378a0c28e2a3d9ea9.js +7325 -0
  337. data/public/assets/javascripts/manifest.js +5660 -0
  338. data/public/assets/manifest.json +1 -0
  339. data/public/assets/stylesheets/manifest-893c7de3dee9ed1295bc1b5b4c1f0c34.css +13 -0
  340. data/public/assets/stylesheets/manifest-94b7be92a9b1cfeafea4ea71af910324.css +13 -0
  341. data/public/assets/stylesheets/manifest-e576edf92efaaad86b15b565fa473d0b.css +7 -0
  342. data/public/assets/stylesheets/manifest.css +14314 -0
  343. data/public/export/{192518761412858257538294365837284445543.nt → 12750.nt} +0 -0
  344. data/public/export/{222655544999381011796369687711131211507.nt → 17385303752427181100115432751692126521.nt} +0 -0
  345. data/public/export/{28094.nt → 181196830007276319343907883650755121680.nt} +0 -0
  346. data/public/export/{317743731342877661346578631544287380698.nt → 194669028845730209313058462140064732442.nt} +0 -0
  347. data/public/export/{59040722386799844495905115730928244680.nt → 21988.nt} +0 -0
  348. data/public/export/{65316.nt → 230655012044692637365356891394989635995.nt} +0 -0
  349. data/public/export/233590502327750705645106563554497694497.nt +28 -0
  350. data/public/export/245884359537367641918690456207690070316.nt +28 -0
  351. data/public/export/250386066048669747259363837063223215204.nt +28 -0
  352. data/public/export/256041066575224861739818511470898486442.nt +28 -0
  353. data/public/export/287138383024694264939471429022965897163.nt +28 -0
  354. data/public/export/31892.nt +28 -0
  355. data/public/export/333774437366008328346740356666975078086.nt +28 -0
  356. data/public/export/34639390376251419382098415225771775708.nt +28 -0
  357. data/public/export/4098.nt +28 -0
  358. data/public/export/47070.nt +28 -0
  359. data/public/export/49947.nt +28 -0
  360. data/public/export/5793.nt +28 -0
  361. data/public/export/64089124325772410079516909502763866955.nt +28 -0
  362. data/public/export/64718.nt +28 -0
  363. data/public/export/71200590939430584664474292378126383577.nt +28 -0
  364. data/public/export/81965533953024918329855744567916239964.nt +28 -0
  365. data/public/uploads/import/{0090c45f8a575ba948e9e1f9346e8bd8.nt → 213b73161661ebbad4e5ee3f543ae617.nt} +0 -0
  366. data/public/uploads/import/{10b55d476cc7905edd5bf2ea3339266f.nt → 22ad4d7419b7914c7319c46a66839f77.nt} +0 -0
  367. data/public/uploads/import/{29f4bdb935b9ba14344c38808e2fc172.nt → 22b78e01b9b5876851578cf9a8373c07.nt} +0 -0
  368. data/public/uploads/import/{5686fe12a4157c537fe4f83de393e436.nt → 2ab75781f8141010699dd272f681b245.nt} +0 -0
  369. data/public/uploads/import/{a46e5777d14959f0a264fc27170a9aca.nt → 4c7fe47a2c21a681fd8f0eb3af0ebf19.nt} +0 -0
  370. data/public/uploads/import/{f47c4c34a7652d03188ef8815667a546.nt → 5265d7cb194f017c592a68914ecf8d9f.nt} +0 -0
  371. data/public/uploads/{tmp/1565090696-8977-0904/hobbies.nt → import/5cb5414a66e4ae5dbe05eb763c367bd1.nt} +0 -0
  372. data/public/uploads/{tmp/1565092660-26284-7315/hobbies.nt → import/6b042e00c2e2abf9241d2ece3e67ed27.nt} +0 -0
  373. data/public/uploads/{tmp/1565092837-26720-3638/hobbies.nt → import/749edd3918db157202b00f89418b87d1.nt} +0 -0
  374. data/public/uploads/{tmp/1565093111-27724-9556/hobbies.nt → import/7aeb9d76b78ba67674caa53a96e1caa0.nt} +0 -0
  375. data/public/uploads/{tmp/1565093198-28993-6950/hobbies.nt → import/7b7fc425b8926e586ca10d0f1385aa4e.nt} +0 -0
  376. data/public/uploads/{tmp/1565093353-29520-6028/hobbies.nt → import/8319d34702375718b20e72a6af71c503.nt} +0 -0
  377. data/public/uploads/import/9ec48f5aaece8d2a8770439e34199b19.nt +259 -0
  378. data/public/uploads/import/a22750632c35587057285920142c2db8.nt +259 -0
  379. data/public/uploads/import/a6d9eeb5e76ce0032614c8142a33c90b.nt +259 -0
  380. data/public/uploads/import/a7ec826e32e80d1fc61f5e89f7442199.nt +259 -0
  381. data/public/uploads/import/af2ac8cb84a194da9871ea701f915a25.nt +259 -0
  382. data/public/uploads/import/b50c67ef8cb51fa12812ac2601faaa75.nt +259 -0
  383. data/public/uploads/import/b66560ac9cc4aecd50f82d4fcec8bde4.nt +259 -0
  384. data/public/uploads/import/c1a12245a41d9105585fb48a0b5244ab.nt +259 -0
  385. data/public/uploads/import/c4b23750b9f72a7f93bcd979a9afded3.nt +259 -0
  386. data/public/uploads/import/d1edac76626a35a6e72a592c98e97b1a.nt +259 -0
  387. data/public/uploads/import/eca92dbeff4aec30e3072103bb5f565f.nt +259 -0
  388. data/public/uploads/import/f7996f8826062cd8dcfc8fac70e830b9.nt +259 -0
  389. data/public/uploads/tmp/1609926599-187261935008931-0002-5418/hobbies.nt +259 -0
  390. data/public/uploads/tmp/1610450700-516890595554445-0002-2685/hobbies.nt +259 -0
  391. data/public/uploads/tmp/1610450844-597126333235543-0001-0714/hobbies.nt +259 -0
  392. data/public/uploads/tmp/1611054155-443031323634581-0001-9192/hobbies.nt +259 -0
  393. data/public/uploads/tmp/1611225485-767301590714814-0002-6904/hobbies.nt +259 -0
  394. data/public/uploads/tmp/1611225661-919900076415463-0002-0657/hobbies.nt +259 -0
  395. data/public/uploads/tmp/1611227389-36557097935032-0002-4613/hobbies.nt +259 -0
  396. data/public/uploads/tmp/1611585376-822293462114758-0001-9752/hobbies.nt +259 -0
  397. data/public/uploads/tmp/1611585431-703460698560673-0002-7522/hobbies.nt +259 -0
  398. data/public/uploads/tmp/1611586554-483369300394995-0002-0872/hobbies.nt +259 -0
  399. data/public/uploads/tmp/1619777137-609890333749067-0002-0264/hobbies.nt +259 -0
  400. data/public/uploads/tmp/1627291050-163284787457980-0001-2701/hobbies.nt +259 -0
  401. data/public/uploads/tmp/1627291589-952446089963663-0002-3171/hobbies.nt +259 -0
  402. data/public/uploads/tmp/1627291819-788250283200541-0002-2503/hobbies.nt +259 -0
  403. data/public/uploads/tmp/1627292534-103362378955855-0001-7089/hobbies.nt +259 -0
  404. data/public/uploads/tmp/1627293799-506613299368066-0002-1247/hobbies.nt +259 -0
  405. data/public/uploads/tmp/1627293863-868842521367397-0001-4656/hobbies.nt +259 -0
  406. data/public/uploads/tmp/1636993960-338364327912413-0002-8049/hobbies.nt +259 -0
  407. data/public/uploads/tmp/1641550181-434480636271400-0002-7928/hobbies.nt +259 -0
  408. data/public/uploads/tmp/1641550416-6444469569098-0002-2156/hobbies.nt +259 -0
  409. data/public/uploads/tmp/1641550691-848542458162760-0002-6815/hobbies.nt +259 -0
  410. data/public/uploads/tmp/1641550716-647719127292471-0002-9954/hobbies.nt +259 -0
  411. data/public/uploads/tmp/1641551058-78248622355227-0002-3663/hobbies.nt +259 -0
  412. data/public/uploads/tmp/1641551220-744894908610606-0001-3879/hobbies.nt +259 -0
  413. data/test/controllers/concepts_movement_controller_test.rb +41 -36
  414. data/test/controllers/hierarchy_test.rb +38 -43
  415. data/test/controllers/rdf_rendering_test.rb +2 -4
  416. data/test/controllers/reverse_match_test.rb +49 -39
  417. data/test/integration/authentication_test.rb +1 -1
  418. data/test/integration/browse_concepts_and_labels_test.rb +3 -1
  419. data/test/integration/client_edit_concept_test.rb +1 -1
  420. data/test/integration/export_test.rb +2 -2
  421. data/test/integration/import_test.rb +2 -2
  422. data/test/integration/instance_configuration_browsing_test.rb +2 -2
  423. data/test/integration/navigation_test.rb +30 -3
  424. data/test/integration/note_annotations_test.rb +1 -1
  425. data/test/integration/search_test.rb +2 -2
  426. data/test/integration_test_helper.rb +1 -0
  427. data/test/models/hygiene_test.rb +1 -1
  428. data/test/test_helper.rb +0 -5
  429. metadata +305 -645
  430. data/app/assets/javascripts/iqvoc/concept_mapper.js +0 -73
  431. data/app/assets/javascripts/iqvoc/entityselect_qualified.js.erb +0 -45
  432. data/app/assets/javascripts/iqvoc/moving_sidebar.js +0 -37
  433. data/app/assets/javascripts/iqvoc/onebox.js.erb +0 -62
  434. data/app/assets/javascripts/iqvoc/quicksearch.js +0 -59
  435. data/app/assets/stylesheets/iqvoc/ie_fixes.css.scss +0 -6
  436. data/app/models/concerns/deep_cloning.rb +0 -94
  437. data/config/initializers/assets.rb +0 -5
  438. data/config/initializers/mysql_column_limit.rb +0 -14
  439. data/config/travis/database.yml.mysql +0 -9
  440. data/config/travis/database.yml.postgresql +0 -7
  441. data/config/travis/database.yml.sqlite +0 -5
  442. data/public/404.html +0 -58
  443. data/public/500.html +0 -57
  444. data/vendor/assets/bower_components/URIjs/LICENSE.txt +0 -21
  445. data/vendor/assets/bower_components/URIjs/README.md +0 -496
  446. data/vendor/assets/bower_components/URIjs/bower.json +0 -29
  447. data/vendor/assets/bower_components/URIjs/contributing.md +0 -19
  448. data/vendor/assets/bower_components/URIjs/src/IPv6.js +0 -188
  449. data/vendor/assets/bower_components/URIjs/src/SecondLevelDomains.js +0 -241
  450. data/vendor/assets/bower_components/URIjs/src/URI.fragmentQuery.js +0 -104
  451. data/vendor/assets/bower_components/URIjs/src/URI.fragmentURI.js +0 -97
  452. data/vendor/assets/bower_components/URIjs/src/URI.js +0 -2002
  453. data/vendor/assets/bower_components/URIjs/src/URI.min.js +0 -84
  454. data/vendor/assets/bower_components/URIjs/src/URITemplate.js +0 -499
  455. data/vendor/assets/bower_components/URIjs/src/jquery.URI.js +0 -235
  456. data/vendor/assets/bower_components/URIjs/src/jquery.URI.min.js +0 -7
  457. data/vendor/assets/bower_components/URIjs/src/punycode.js +0 -508
  458. data/vendor/assets/bower_components/bootstrap-sass/CHANGELOG.md +0 -189
  459. data/vendor/assets/bower_components/bootstrap-sass/CONTRIBUTING.md +0 -86
  460. data/vendor/assets/bower_components/bootstrap-sass/LICENSE +0 -21
  461. data/vendor/assets/bower_components/bootstrap-sass/README.md +0 -352
  462. data/vendor/assets/bower_components/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
  463. data/vendor/assets/bower_components/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.svg +0 -288
  464. data/vendor/assets/bower_components/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  465. data/vendor/assets/bower_components/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  466. data/vendor/assets/bower_components/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  467. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/affix.js +0 -162
  468. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/alert.js +0 -94
  469. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/button.js +0 -116
  470. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/carousel.js +0 -237
  471. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/collapse.js +0 -211
  472. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js +0 -161
  473. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/modal.js +0 -339
  474. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/popover.js +0 -108
  475. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js +0 -172
  476. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/tab.js +0 -153
  477. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js +0 -476
  478. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/transition.js +0 -59
  479. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap-sprockets.js +0 -12
  480. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap.js +0 -2317
  481. data/vendor/assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap.min.js +0 -7
  482. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/_bootstrap-compass.scss +0 -9
  483. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/_bootstrap-mincer.scss +0 -19
  484. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/_bootstrap-sprockets.scss +0 -9
  485. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/_bootstrap.scss +0 -50
  486. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_alerts.scss +0 -73
  487. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_badges.scss +0 -68
  488. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_breadcrumbs.scss +0 -26
  489. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_button-groups.scss +0 -243
  490. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_buttons.scss +0 -160
  491. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_carousel.scss +0 -269
  492. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_close.scss +0 -36
  493. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_code.scss +0 -69
  494. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_component-animations.scss +0 -37
  495. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_dropdowns.scss +0 -214
  496. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_forms.scss +0 -578
  497. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_glyphicons.scss +0 -305
  498. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_grid.scss +0 -84
  499. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_input-groups.scss +0 -166
  500. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_jumbotron.scss +0 -50
  501. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_labels.scss +0 -66
  502. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_list-group.scss +0 -124
  503. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_media.scss +0 -61
  504. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_mixins.scss +0 -39
  505. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_modals.scss +0 -150
  506. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_navbar.scss +0 -662
  507. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_navs.scss +0 -242
  508. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_normalize.scss +0 -427
  509. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_pager.scss +0 -54
  510. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_pagination.scss +0 -88
  511. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_panels.scss +0 -265
  512. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_popovers.scss +0 -135
  513. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_print.scss +0 -107
  514. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_progress-bars.scss +0 -87
  515. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_responsive-embed.scss +0 -35
  516. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_responsive-utilities.scss +0 -177
  517. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_scaffolding.scss +0 -162
  518. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_tables.scss +0 -234
  519. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_theme.scss +0 -273
  520. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_thumbnails.scss +0 -38
  521. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_tooltip.scss +0 -102
  522. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_type.scss +0 -298
  523. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_utilities.scss +0 -55
  524. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_variables.scss +0 -866
  525. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_wells.scss +0 -29
  526. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_alerts.scss +0 -14
  527. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -11
  528. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_border-radius.scss +0 -18
  529. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_buttons.scss +0 -52
  530. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_center-block.scss +0 -7
  531. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_clearfix.scss +0 -22
  532. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_forms.scss +0 -88
  533. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_gradients.scss +0 -58
  534. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -81
  535. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_grid.scss +0 -122
  536. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_hide-text.scss +0 -21
  537. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_image.scss +0 -33
  538. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_labels.scss +0 -12
  539. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_list-group.scss +0 -31
  540. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
  541. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  542. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_opacity.scss +0 -8
  543. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_pagination.scss +0 -23
  544. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_panels.scss +0 -24
  545. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_progress-bar.scss +0 -10
  546. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_reset-filter.scss +0 -8
  547. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_resize.scss +0 -6
  548. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss +0 -21
  549. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_size.scss +0 -10
  550. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_tab-focus.scss +0 -9
  551. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -28
  552. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -11
  553. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_text-overflow.scss +0 -8
  554. data/vendor/assets/bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +0 -222
  555. data/vendor/assets/bower_components/bootstrap-sass/bower.json +0 -40
  556. data/vendor/assets/bower_components/bootstrap-sass/composer.json +0 -35
  557. data/vendor/assets/bower_components/bootstrap-sass/package.json +0 -30
  558. data/vendor/assets/bower_components/bootstrap-sass/sache.json +0 -5
  559. data/vendor/assets/bower_components/html5shiv/Gruntfile.js +0 -61
  560. data/vendor/assets/bower_components/html5shiv/bower.json +0 -15
  561. data/vendor/assets/bower_components/html5shiv/dist/html5shiv-printshiv.js +0 -520
  562. data/vendor/assets/bower_components/html5shiv/dist/html5shiv-printshiv.min.js +0 -4
  563. data/vendor/assets/bower_components/html5shiv/dist/html5shiv.js +0 -322
  564. data/vendor/assets/bower_components/html5shiv/dist/html5shiv.min.js +0 -4
  565. data/vendor/assets/bower_components/html5shiv/package.json +0 -16
  566. data/vendor/assets/bower_components/html5shiv/readme.md +0 -152
  567. data/vendor/assets/bower_components/jqtree/LICENSE +0 -202
  568. data/vendor/assets/bower_components/jqtree/README.md +0 -24
  569. data/vendor/assets/bower_components/jqtree/_config.yml +0 -18
  570. data/vendor/assets/bower_components/jqtree/_entries/01_general.md +0 -7
  571. data/vendor/assets/bower_components/jqtree/_entries/02_introduction.md +0 -9
  572. data/vendor/assets/bower_components/jqtree/_entries/03_features.md +0 -15
  573. data/vendor/assets/bower_components/jqtree/_entries/04_demo.html +0 -34
  574. data/vendor/assets/bower_components/jqtree/_entries/05_requirements.md +0 -6
  575. data/vendor/assets/bower_components/jqtree/_entries/06_downloads.md +0 -9
  576. data/vendor/assets/bower_components/jqtree/_entries/07_tutorial.md +0 -77
  577. data/vendor/assets/bower_components/jqtree/_entries/08_examples.md +0 -8
  578. data/vendor/assets/bower_components/jqtree/_entries/09_changelog.md +0 -179
  579. data/vendor/assets/bower_components/jqtree/_entries/10_options.md +0 -6
  580. data/vendor/assets/bower_components/jqtree/_entries/11_autoescape.md +0 -6
  581. data/vendor/assets/bower_components/jqtree/_entries/12_autoopen.md +0 -28
  582. data/vendor/assets/bower_components/jqtree/_entries/13_closedicon.md +0 -12
  583. data/vendor/assets/bower_components/jqtree/_entries/14_data.md +0 -41
  584. data/vendor/assets/bower_components/jqtree/_entries/15_datafilter.md +0 -17
  585. data/vendor/assets/bower_components/jqtree/_entries/16_data-url.md +0 -21
  586. data/vendor/assets/bower_components/jqtree/_entries/17_draganddrop.md +0 -18
  587. data/vendor/assets/bower_components/jqtree/_entries/18_keyboardsupport.md +0 -14
  588. data/vendor/assets/bower_components/jqtree/_entries/19_oncanmove.md +0 -22
  589. data/vendor/assets/bower_components/jqtree/_entries/20_oncanmoveto.md +0 -22
  590. data/vendor/assets/bower_components/jqtree/_entries/21_oncanselectnode.md +0 -26
  591. data/vendor/assets/bower_components/jqtree/_entries/22_oncreateli.md +0 -16
  592. data/vendor/assets/bower_components/jqtree/_entries/23_onismovehandle.md +0 -17
  593. data/vendor/assets/bower_components/jqtree/_entries/24_onloadfailed.md +0 -15
  594. data/vendor/assets/bower_components/jqtree/_entries/25_openedicon.md +0 -12
  595. data/vendor/assets/bower_components/jqtree/_entries/26_openfolderdelay.md +0 -13
  596. data/vendor/assets/bower_components/jqtree/_entries/27_savestate.md +0 -42
  597. data/vendor/assets/bower_components/jqtree/_entries/28_selectable.md +0 -18
  598. data/vendor/assets/bower_components/jqtree/_entries/29_slide.md +0 -12
  599. data/vendor/assets/bower_components/jqtree/_entries/30_usecontextmenu.md +0 -14
  600. data/vendor/assets/bower_components/jqtree/_entries/31_functions.md +0 -6
  601. data/vendor/assets/bower_components/jqtree/_entries/32_addnodeafter.md +0 -20
  602. data/vendor/assets/bower_components/jqtree/_entries/33_addnodebefore.md +0 -8
  603. data/vendor/assets/bower_components/jqtree/_entries/34_appendnode.md +0 -33
  604. data/vendor/assets/bower_components/jqtree/_entries/35_closenode.md +0 -23
  605. data/vendor/assets/bower_components/jqtree/_entries/36_getnodebyid.md +0 -21
  606. data/vendor/assets/bower_components/jqtree/_entries/37_getselectednode.md +0 -10
  607. data/vendor/assets/bower_components/jqtree/_entries/38_getstate.md +0 -19
  608. data/vendor/assets/bower_components/jqtree/_entries/39_gettree.md +0 -8
  609. data/vendor/assets/bower_components/jqtree/_entries/40_loaddata.md +0 -46
  610. data/vendor/assets/bower_components/jqtree/_entries/41_loaddatafromurl.md +0 -55
  611. data/vendor/assets/bower_components/jqtree/_entries/42_movedown.md +0 -8
  612. data/vendor/assets/bower_components/jqtree/_entries/43_movenode.md +0 -15
  613. data/vendor/assets/bower_components/jqtree/_entries/44_moveup.md +0 -8
  614. data/vendor/assets/bower_components/jqtree/_entries/45_opennode.md +0 -29
  615. data/vendor/assets/bower_components/jqtree/_entries/46_addparentnode.md +0 -20
  616. data/vendor/assets/bower_components/jqtree/_entries/47_reload.md +0 -12
  617. data/vendor/assets/bower_components/jqtree/_entries/48_removenode.md +0 -12
  618. data/vendor/assets/bower_components/jqtree/_entries/49_selectnode.md +0 -24
  619. data/vendor/assets/bower_components/jqtree/_entries/50_scrolltonode.md +0 -13
  620. data/vendor/assets/bower_components/jqtree/_entries/51_setoption.md +0 -12
  621. data/vendor/assets/bower_components/jqtree/_entries/52_setstate.md +0 -8
  622. data/vendor/assets/bower_components/jqtree/_entries/53_toggle.md +0 -8
  623. data/vendor/assets/bower_components/jqtree/_entries/54_tojson.md +0 -13
  624. data/vendor/assets/bower_components/jqtree/_entries/55_updatenode.md +0 -33
  625. data/vendor/assets/bower_components/jqtree/_entries/56_events.md +0 -6
  626. data/vendor/assets/bower_components/jqtree/_entries/57_tree-click.md +0 -37
  627. data/vendor/assets/bower_components/jqtree/_entries/58_tree-close.md +0 -15
  628. data/vendor/assets/bower_components/jqtree/_entries/59_tree-contextmenu.md +0 -21
  629. data/vendor/assets/bower_components/jqtree/_entries/60_tree-dblclick.md +0 -19
  630. data/vendor/assets/bower_components/jqtree/_entries/61_tree-init.md +0 -15
  631. data/vendor/assets/bower_components/jqtree/_entries/62_tree-move.md +0 -71
  632. data/vendor/assets/bower_components/jqtree/_entries/63_tree-open.md +0 -15
  633. data/vendor/assets/bower_components/jqtree/_entries/64_tree-select.md +0 -28
  634. data/vendor/assets/bower_components/jqtree/_entries/65_multiple-selection.md +0 -9
  635. data/vendor/assets/bower_components/jqtree/_entries/66_add-to-selection.md +0 -11
  636. data/vendor/assets/bower_components/jqtree/_entries/67_get-selected-nodes.md +0 -10
  637. data/vendor/assets/bower_components/jqtree/_entries/68_is-node-selected.md +0 -11
  638. data/vendor/assets/bower_components/jqtree/_entries/69_remove-from-selection.md +0 -11
  639. data/vendor/assets/bower_components/jqtree/_entries/70_node-functions.md +0 -13
  640. data/vendor/assets/bower_components/jqtree/_entries/71_children.md +0 -12
  641. data/vendor/assets/bower_components/jqtree/_entries/72_getdata.md +0 -10
  642. data/vendor/assets/bower_components/jqtree/_entries/73_getlevel.md +0 -13
  643. data/vendor/assets/bower_components/jqtree/_entries/74_getnextnode.md +0 -12
  644. data/vendor/assets/bower_components/jqtree/_entries/75_getnextsibling.md +0 -10
  645. data/vendor/assets/bower_components/jqtree/_entries/76_getpreviousnode.md +0 -12
  646. data/vendor/assets/bower_components/jqtree/_entries/77_getprevioussibling.md +0 -10
  647. data/vendor/assets/bower_components/jqtree/_entries/78_parent.md +0 -10
  648. data/vendor/assets/bower_components/jqtree/_examples/01_load_json_data.html +0 -47
  649. data/vendor/assets/bower_components/jqtree/_examples/02_load_json_data_from_server.html +0 -31
  650. data/vendor/assets/bower_components/jqtree/_examples/03_drag_and_drop.html +0 -45
  651. data/vendor/assets/bower_components/jqtree/_examples/04_save_state.html +0 -52
  652. data/vendor/assets/bower_components/jqtree/_examples/05_load_on_demand.html +0 -70
  653. data/vendor/assets/bower_components/jqtree/_examples/06_autoescape.html +0 -47
  654. data/vendor/assets/bower_components/jqtree/_examples/07_autoscroll.html +0 -23
  655. data/vendor/assets/bower_components/jqtree/_examples/08_multiple_select.html +0 -72
  656. data/vendor/assets/bower_components/jqtree/_examples/09_custom_html.html +0 -68
  657. data/vendor/assets/bower_components/jqtree/_examples/10_icon_buttons.html +0 -27
  658. data/vendor/assets/bower_components/jqtree/_layouts/base.html +0 -48
  659. data/vendor/assets/bower_components/jqtree/_layouts/frontpage.html +0 -20
  660. data/vendor/assets/bower_components/jqtree/_layouts/page.html +0 -7
  661. data/vendor/assets/bower_components/jqtree/bower.json +0 -12
  662. data/vendor/assets/bower_components/jqtree/gulpfile.coffee +0 -30
  663. data/vendor/assets/bower_components/jqtree/gulpfile.js +0 -2
  664. data/vendor/assets/bower_components/jqtree/index.html +0 -48
  665. data/vendor/assets/bower_components/jqtree/jqtree-circle.png +0 -0
  666. data/vendor/assets/bower_components/jqtree/jqtree.css +0 -143
  667. data/vendor/assets/bower_components/jqtree/jqtree.jquery.json +0 -23
  668. data/vendor/assets/bower_components/jqtree/package.json +0 -23
  669. data/vendor/assets/bower_components/jqtree/phantomjs/runner.js +0 -193
  670. data/vendor/assets/bower_components/jqtree/phantomjs/server.js +0 -14
  671. data/vendor/assets/bower_components/jqtree/screenshot.png +0 -0
  672. data/vendor/assets/bower_components/jqtree/sitemap.txt +0 -11
  673. data/vendor/assets/bower_components/jqtree/src/drag_and_drop_handler.coffee +0 -466
  674. data/vendor/assets/bower_components/jqtree/src/elements_renderer.coffee +0 -198
  675. data/vendor/assets/bower_components/jqtree/src/key_handler.coffee +0 -92
  676. data/vendor/assets/bower_components/jqtree/src/mouse.widget.coffee +0 -181
  677. data/vendor/assets/bower_components/jqtree/src/node.coffee +0 -431
  678. data/vendor/assets/bower_components/jqtree/src/node_element.coffee +0 -144
  679. data/vendor/assets/bower_components/jqtree/src/save_state_handler.coffee +0 -191
  680. data/vendor/assets/bower_components/jqtree/src/scroll_handler.coffee +0 -100
  681. data/vendor/assets/bower_components/jqtree/src/select_node_handler.coffee +0 -76
  682. data/vendor/assets/bower_components/jqtree/src/simple.widget.coffee +0 -102
  683. data/vendor/assets/bower_components/jqtree/src/test.js +0 -1945
  684. data/vendor/assets/bower_components/jqtree/src/tree.jquery.coffee +0 -772
  685. data/vendor/assets/bower_components/jqtree/src/util.coffee +0 -117
  686. data/vendor/assets/bower_components/jqtree/src/version.coffee +0 -1
  687. data/vendor/assets/bower_components/jqtree/static/bower.json +0 -13
  688. data/vendor/assets/bower_components/jqtree/static/bower_components/blanket/dist/qunit/blanket.js +0 -5430
  689. data/vendor/assets/bower_components/jqtree/static/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +0 -5
  690. data/vendor/assets/bower_components/jqtree/static/bower_components/bootstrap/dist/css/bootstrap.min.css +0 -5
  691. data/vendor/assets/bower_components/jqtree/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  692. data/vendor/assets/bower_components/jqtree/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +0 -229
  693. data/vendor/assets/bower_components/jqtree/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  694. data/vendor/assets/bower_components/jqtree/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  695. data/vendor/assets/bower_components/jqtree/static/bower_components/bootstrap/dist/js/bootstrap.min.js +0 -7
  696. data/vendor/assets/bower_components/jqtree/static/bower_components/fontawesome/css/font-awesome.min.css +0 -4
  697. data/vendor/assets/bower_components/jqtree/static/bower_components/fontawesome/fonts/FontAwesome.otf +0 -0
  698. data/vendor/assets/bower_components/jqtree/static/bower_components/fontawesome/fonts/fontawesome-webfont.eot +0 -0
  699. data/vendor/assets/bower_components/jqtree/static/bower_components/fontawesome/fonts/fontawesome-webfont.svg +0 -520
  700. data/vendor/assets/bower_components/jqtree/static/bower_components/fontawesome/fonts/fontawesome-webfont.ttf +0 -0
  701. data/vendor/assets/bower_components/jqtree/static/bower_components/fontawesome/fonts/fontawesome-webfont.woff +0 -0
  702. data/vendor/assets/bower_components/jqtree/static/bower_components/jquery/dist/jquery.min.js +0 -5
  703. data/vendor/assets/bower_components/jqtree/static/bower_components/jquery-cookie/jquery.cookie.js +0 -117
  704. data/vendor/assets/bower_components/jqtree/static/bower_components/jquery-mockjax/jquery.mockjax.js +0 -692
  705. data/vendor/assets/bower_components/jqtree/static/bower_components/pygments/css/monokai.css +0 -63
  706. data/vendor/assets/bower_components/jqtree/static/bower_components/qunit/qunit/qunit.css +0 -264
  707. data/vendor/assets/bower_components/jqtree/static/bower_components/qunit/qunit/qunit.js +0 -2819
  708. data/vendor/assets/bower_components/jqtree/static/documentation.css +0 -165
  709. data/vendor/assets/bower_components/jqtree/static/documentation.js +0 -51
  710. data/vendor/assets/bower_components/jqtree/static/example.css +0 -53
  711. data/vendor/assets/bower_components/jqtree/static/example_data.js +0 -128
  712. data/vendor/assets/bower_components/jqtree/static/examples/autoescape.js +0 -19
  713. data/vendor/assets/bower_components/jqtree/static/examples/autoscroll.js +0 -8
  714. data/vendor/assets/bower_components/jqtree/static/examples/custom_html.js +0 -32
  715. data/vendor/assets/bower_components/jqtree/static/examples/drag_and_drop.js +0 -15
  716. data/vendor/assets/bower_components/jqtree/static/examples/icon_buttons.js +0 -14
  717. data/vendor/assets/bower_components/jqtree/static/examples/load_json_data.js +0 -21
  718. data/vendor/assets/bower_components/jqtree/static/examples/load_json_data_from_server.js +0 -11
  719. data/vendor/assets/bower_components/jqtree/static/examples/load_on_demand.js +0 -20
  720. data/vendor/assets/bower_components/jqtree/static/examples/multiple_select.js +0 -27
  721. data/vendor/assets/bower_components/jqtree/static/examples/save_state.js +0 -13
  722. data/vendor/assets/bower_components/jqtree/static/jquery-1.11.2.min.js +0 -4
  723. data/vendor/assets/bower_components/jqtree/static/spinner.gif +0 -0
  724. data/vendor/assets/bower_components/jqtree/test/test.html +0 -23
  725. data/vendor/assets/bower_components/jqtree/test/test.js +0 -2604
  726. data/vendor/assets/bower_components/jqtree/tree.jquery.js +0 -3388
  727. data/vendor/assets/bower_components/jquery/MIT-LICENSE.txt +0 -21
  728. data/vendor/assets/bower_components/jquery/bower.json +0 -27
  729. data/vendor/assets/bower_components/jquery/dist/jquery.min.js +0 -5
  730. data/vendor/assets/bower_components/jquery/dist/jquery.min.map +0 -1
  731. data/vendor/assets/bower_components/jquery/src/ajax/jsonp.js +0 -89
  732. data/vendor/assets/bower_components/jquery/src/ajax/load.js +0 -75
  733. data/vendor/assets/bower_components/jquery/src/ajax/parseJSON.js +0 -13
  734. data/vendor/assets/bower_components/jquery/src/ajax/parseXML.js +0 -28
  735. data/vendor/assets/bower_components/jquery/src/ajax/script.js +0 -64
  736. data/vendor/assets/bower_components/jquery/src/ajax/var/nonce.js +0 -5
  737. data/vendor/assets/bower_components/jquery/src/ajax/var/rquery.js +0 -3
  738. data/vendor/assets/bower_components/jquery/src/ajax/xhr.js +0 -136
  739. data/vendor/assets/bower_components/jquery/src/ajax.js +0 -786
  740. data/vendor/assets/bower_components/jquery/src/attributes/attr.js +0 -141
  741. data/vendor/assets/bower_components/jquery/src/attributes/classes.js +0 -158
  742. data/vendor/assets/bower_components/jquery/src/attributes/prop.js +0 -94
  743. data/vendor/assets/bower_components/jquery/src/attributes/support.js +0 -35
  744. data/vendor/assets/bower_components/jquery/src/attributes/val.js +0 -161
  745. data/vendor/assets/bower_components/jquery/src/attributes.js +0 -11
  746. data/vendor/assets/bower_components/jquery/src/callbacks.js +0 -205
  747. data/vendor/assets/bower_components/jquery/src/core/access.js +0 -60
  748. data/vendor/assets/bower_components/jquery/src/core/init.js +0 -123
  749. data/vendor/assets/bower_components/jquery/src/core/parseHTML.js +0 -39
  750. data/vendor/assets/bower_components/jquery/src/core/ready.js +0 -97
  751. data/vendor/assets/bower_components/jquery/src/core/var/rsingleTag.js +0 -4
  752. data/vendor/assets/bower_components/jquery/src/core.js +0 -497
  753. data/vendor/assets/bower_components/jquery/src/css/addGetHookIf.js +0 -22
  754. data/vendor/assets/bower_components/jquery/src/css/curCSS.js +0 -57
  755. data/vendor/assets/bower_components/jquery/src/css/defaultDisplay.js +0 -70
  756. data/vendor/assets/bower_components/jquery/src/css/hiddenVisibleSelectors.js +0 -15
  757. data/vendor/assets/bower_components/jquery/src/css/support.js +0 -96
  758. data/vendor/assets/bower_components/jquery/src/css/swap.js +0 -28
  759. data/vendor/assets/bower_components/jquery/src/css/var/cssExpand.js +0 -3
  760. data/vendor/assets/bower_components/jquery/src/css/var/getStyles.js +0 -12
  761. data/vendor/assets/bower_components/jquery/src/css/var/isHidden.js +0 -13
  762. data/vendor/assets/bower_components/jquery/src/css/var/rmargin.js +0 -3
  763. data/vendor/assets/bower_components/jquery/src/css/var/rnumnonpx.js +0 -5
  764. data/vendor/assets/bower_components/jquery/src/css.js +0 -450
  765. data/vendor/assets/bower_components/jquery/src/data/Data.js +0 -181
  766. data/vendor/assets/bower_components/jquery/src/data/accepts.js +0 -20
  767. data/vendor/assets/bower_components/jquery/src/data/var/data_priv.js +0 -5
  768. data/vendor/assets/bower_components/jquery/src/data/var/data_user.js +0 -5
  769. data/vendor/assets/bower_components/jquery/src/data.js +0 -178
  770. data/vendor/assets/bower_components/jquery/src/deferred.js +0 -149
  771. data/vendor/assets/bower_components/jquery/src/deprecated.js +0 -13
  772. data/vendor/assets/bower_components/jquery/src/dimensions.js +0 -50
  773. data/vendor/assets/bower_components/jquery/src/effects/Tween.js +0 -114
  774. data/vendor/assets/bower_components/jquery/src/effects/animatedSelector.js +0 -13
  775. data/vendor/assets/bower_components/jquery/src/effects.js +0 -648
  776. data/vendor/assets/bower_components/jquery/src/event/ajax.js +0 -13
  777. data/vendor/assets/bower_components/jquery/src/event/alias.js +0 -39
  778. data/vendor/assets/bower_components/jquery/src/event/support.js +0 -9
  779. data/vendor/assets/bower_components/jquery/src/event.js +0 -868
  780. data/vendor/assets/bower_components/jquery/src/exports/amd.js +0 -24
  781. data/vendor/assets/bower_components/jquery/src/exports/global.js +0 -32
  782. data/vendor/assets/bower_components/jquery/src/intro.js +0 -44
  783. data/vendor/assets/bower_components/jquery/src/jquery.js +0 -37
  784. data/vendor/assets/bower_components/jquery/src/manipulation/_evalUrl.js +0 -18
  785. data/vendor/assets/bower_components/jquery/src/manipulation/support.js +0 -32
  786. data/vendor/assets/bower_components/jquery/src/manipulation/var/rcheckableType.js +0 -3
  787. data/vendor/assets/bower_components/jquery/src/manipulation.js +0 -580
  788. data/vendor/assets/bower_components/jquery/src/offset.js +0 -207
  789. data/vendor/assets/bower_components/jquery/src/outro.js +0 -1
  790. data/vendor/assets/bower_components/jquery/src/queue/delay.js +0 -22
  791. data/vendor/assets/bower_components/jquery/src/queue.js +0 -142
  792. data/vendor/assets/bower_components/jquery/src/selector-native.js +0 -172
  793. data/vendor/assets/bower_components/jquery/src/selector-sizzle.js +0 -14
  794. data/vendor/assets/bower_components/jquery/src/selector.js +0 -1
  795. data/vendor/assets/bower_components/jquery/src/serialize.js +0 -111
  796. data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.js +0 -2067
  797. data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.js +0 -3
  798. data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.map +0 -1
  799. data/vendor/assets/bower_components/jquery/src/traversing/findFilter.js +0 -100
  800. data/vendor/assets/bower_components/jquery/src/traversing/var/rneedsContext.js +0 -6
  801. data/vendor/assets/bower_components/jquery/src/traversing.js +0 -199
  802. data/vendor/assets/bower_components/jquery/src/var/arr.js +0 -3
  803. data/vendor/assets/bower_components/jquery/src/var/class2type.js +0 -4
  804. data/vendor/assets/bower_components/jquery/src/var/concat.js +0 -5
  805. data/vendor/assets/bower_components/jquery/src/var/hasOwn.js +0 -5
  806. data/vendor/assets/bower_components/jquery/src/var/indexOf.js +0 -5
  807. data/vendor/assets/bower_components/jquery/src/var/pnum.js +0 -3
  808. data/vendor/assets/bower_components/jquery/src/var/push.js +0 -5
  809. data/vendor/assets/bower_components/jquery/src/var/rnotwhite.js +0 -3
  810. data/vendor/assets/bower_components/jquery/src/var/slice.js +0 -5
  811. data/vendor/assets/bower_components/jquery/src/var/strundefined.js +0 -3
  812. data/vendor/assets/bower_components/jquery/src/var/support.js +0 -4
  813. data/vendor/assets/bower_components/jquery/src/var/toString.js +0 -5
  814. data/vendor/assets/bower_components/jquery/src/wrap.js +0 -79
  815. data/vendor/assets/bower_components/jquery-ujs/CHANGELOG.md +0 -24
  816. data/vendor/assets/bower_components/jquery-ujs/MIT-LICENSE.txt +0 -20
  817. data/vendor/assets/bower_components/jquery-ujs/README.md +0 -72
  818. data/vendor/assets/bower_components/jquery-ujs/bower.json +0 -20
  819. data/vendor/assets/bower_components/jquery-ujs/src/rails.js +0 -469
  820. data/vendor/assets/bower_components/typeahead.js/CHANGELOG.md +0 -222
  821. data/vendor/assets/bower_components/typeahead.js/CONTRIBUTING.md +0 -120
  822. data/vendor/assets/bower_components/typeahead.js/Gruntfile.js +0 -265
  823. data/vendor/assets/bower_components/typeahead.js/LICENSE +0 -19
  824. data/vendor/assets/bower_components/typeahead.js/README.md +0 -188
  825. data/vendor/assets/bower_components/typeahead.js/bower.json +0 -13
  826. data/vendor/assets/bower_components/typeahead.js/composer.json +0 -17
  827. data/vendor/assets/bower_components/typeahead.js/dist/bloodhound.js +0 -727
  828. data/vendor/assets/bower_components/typeahead.js/dist/bloodhound.min.js +0 -7
  829. data/vendor/assets/bower_components/typeahead.js/dist/typeahead.bundle.js +0 -1782
  830. data/vendor/assets/bower_components/typeahead.js/dist/typeahead.bundle.min.js +0 -7
  831. data/vendor/assets/bower_components/typeahead.js/dist/typeahead.jquery.js +0 -1184
  832. data/vendor/assets/bower_components/typeahead.js/dist/typeahead.jquery.min.js +0 -7
  833. data/vendor/assets/bower_components/typeahead.js/doc/bloodhound.md +0 -279
  834. data/vendor/assets/bower_components/typeahead.js/doc/jquery_typeahead.md +0 -383
  835. data/vendor/assets/bower_components/typeahead.js/doc/migration/0.10.0.md +0 -234
  836. data/vendor/assets/bower_components/typeahead.js/karma.conf.js +0 -98
  837. data/vendor/assets/bower_components/typeahead.js/package.json +0 -57
  838. data/vendor/assets/bower_components/typeahead.js/src/bloodhound/bloodhound.js +0 -234
  839. data/vendor/assets/bower_components/typeahead.js/src/bloodhound/lru_cache.js +0 -99
  840. data/vendor/assets/bower_components/typeahead.js/src/bloodhound/options_parser.js +0 -89
  841. data/vendor/assets/bower_components/typeahead.js/src/bloodhound/persistent_storage.js +0 -131
  842. data/vendor/assets/bower_components/typeahead.js/src/bloodhound/search_index.js +0 -169
  843. data/vendor/assets/bower_components/typeahead.js/src/bloodhound/tokenizers.js +0 -44
  844. data/vendor/assets/bower_components/typeahead.js/src/bloodhound/transport.js +0 -152
  845. data/vendor/assets/bower_components/typeahead.js/src/bloodhound/version.js +0 -7
  846. data/vendor/assets/bower_components/typeahead.js/src/common/utils.js +0 -152
  847. data/vendor/assets/bower_components/typeahead.js/src/typeahead/css.js +0 -77
  848. data/vendor/assets/bower_components/typeahead.js/src/typeahead/dataset.js +0 -210
  849. data/vendor/assets/bower_components/typeahead.js/src/typeahead/dropdown.js +0 -245
  850. data/vendor/assets/bower_components/typeahead.js/src/typeahead/event_bus.js +0 -38
  851. data/vendor/assets/bower_components/typeahead.js/src/typeahead/event_emitter.js +0 -119
  852. data/vendor/assets/bower_components/typeahead.js/src/typeahead/highlight.js +0 -84
  853. data/vendor/assets/bower_components/typeahead.js/src/typeahead/html.js +0 -15
  854. data/vendor/assets/bower_components/typeahead.js/src/typeahead/input.js +0 -311
  855. data/vendor/assets/bower_components/typeahead.js/src/typeahead/plugin.js +0 -129
  856. data/vendor/assets/bower_components/typeahead.js/src/typeahead/typeahead.js +0 -391
  857. data/vendor/assets/bower_components/typeahead.js/test/bloodhound_spec.js +0 -592
  858. data/vendor/assets/bower_components/typeahead.js/test/ci +0 -12
  859. data/vendor/assets/bower_components/typeahead.js/test/dataset_view_spec.js +0 -222
  860. data/vendor/assets/bower_components/typeahead.js/test/dropdown_view_spec.js +0 -353
  861. data/vendor/assets/bower_components/typeahead.js/test/event_emitter_spec.js +0 -111
  862. data/vendor/assets/bower_components/typeahead.js/test/fixtures/ajax_responses.js +0 -19
  863. data/vendor/assets/bower_components/typeahead.js/test/fixtures/data.js +0 -116
  864. data/vendor/assets/bower_components/typeahead.js/test/fixtures/html.js +0 -17
  865. data/vendor/assets/bower_components/typeahead.js/test/helpers/typeahead_mocks.js +0 -71
  866. data/vendor/assets/bower_components/typeahead.js/test/highlight_spec.js +0 -117
  867. data/vendor/assets/bower_components/typeahead.js/test/input_view_spec.js +0 -449
  868. data/vendor/assets/bower_components/typeahead.js/test/integration/test.html +0 -112
  869. data/vendor/assets/bower_components/typeahead.js/test/integration/test.js +0 -397
  870. data/vendor/assets/bower_components/typeahead.js/test/lru_cache_spec.js +0 -42
  871. data/vendor/assets/bower_components/typeahead.js/test/persistent_storage_spec.js +0 -131
  872. data/vendor/assets/bower_components/typeahead.js/test/playground.html +0 -347
  873. data/vendor/assets/bower_components/typeahead.js/test/search_index_spec.js +0 -60
  874. data/vendor/assets/bower_components/typeahead.js/test/tokenizers_spec.js +0 -60
  875. data/vendor/assets/bower_components/typeahead.js/test/transport_spec.js +0 -197
  876. data/vendor/assets/bower_components/typeahead.js/test/typeahead_view_spec.js +0 -570
  877. data/vendor/assets/bower_components/typeahead.js/typeahead.js.jquery.json +0 -40
  878. data/vendor/assets/images/animated-overlay.gif +0 -0
  879. data/vendor/assets/images/file.gif +0 -0
  880. data/vendor/assets/images/folder-closed.gif +0 -0
  881. data/vendor/assets/images/folder.gif +0 -0
  882. data/vendor/assets/images/minus.gif +0 -0
  883. data/vendor/assets/images/plus.gif +0 -0
  884. data/vendor/assets/images/treeview-black-line.gif +0 -0
  885. data/vendor/assets/images/treeview-black.gif +0 -0
  886. data/vendor/assets/images/treeview-default.gif +0 -0
  887. data/vendor/assets/images/treeview-famfamfam-line.gif +0 -0
  888. data/vendor/assets/images/treeview-famfamfam.gif +0 -0
  889. data/vendor/assets/images/treeview-gray-line.gif +0 -0
  890. data/vendor/assets/images/treeview-gray.gif +0 -0
  891. data/vendor/assets/images/treeview-red-line.gif +0 -0
  892. data/vendor/assets/images/treeview-red.gif +0 -0
  893. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker.css +0 -471
  894. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker.css.map +0 -1
  895. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker.min.css +0 -9
  896. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker.min.css.map +0 -1
  897. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker.standalone.css +0 -504
  898. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker.standalone.css.map +0 -1
  899. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker.standalone.min.css +0 -9
  900. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker.standalone.min.css.map +0 -1
  901. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker3.css +0 -678
  902. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker3.css.map +0 -1
  903. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker3.min.css +0 -9
  904. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker3.min.css.map +0 -1
  905. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker3.standalone.css +0 -707
  906. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker3.standalone.css.map +0 -1
  907. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker3.standalone.min.css +0 -9
  908. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/css/bootstrap-datepicker3.standalone.min.css.map +0 -1
  909. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/js/bootstrap-datepicker.js +0 -2096
  910. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/js/bootstrap-datepicker.min.js +0 -9
  911. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.ar.min.js +0 -1
  912. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.az.min.js +0 -1
  913. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.bg.min.js +0 -1
  914. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.bs.min.js +0 -1
  915. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.ca.min.js +0 -1
  916. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.cs.min.js +0 -1
  917. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.cy.min.js +0 -1
  918. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.da.min.js +0 -1
  919. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.de.min.js +0 -1
  920. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.el.min.js +0 -1
  921. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.en-AU.min.js +0 -1
  922. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.en-GB.min.js +0 -1
  923. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.eo.min.js +0 -1
  924. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.es.min.js +0 -1
  925. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.et.min.js +0 -1
  926. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.eu.min.js +0 -1
  927. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.fa.min.js +0 -1
  928. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.fi.min.js +0 -1
  929. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.fo.min.js +0 -1
  930. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.fr-CH.min.js +0 -1
  931. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.fr.min.js +0 -1
  932. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.gl.min.js +0 -1
  933. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.he.min.js +0 -1
  934. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.hr.min.js +0 -1
  935. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.hu.min.js +0 -1
  936. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.hy.min.js +0 -1
  937. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.id.min.js +0 -1
  938. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.is.min.js +0 -1
  939. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.it-CH.min.js +0 -1
  940. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.it.min.js +0 -1
  941. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.ja.min.js +0 -1
  942. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.ka.min.js +0 -1
  943. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.kh.min.js +0 -1
  944. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.kk.min.js +0 -1
  945. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.ko.min.js +0 -1
  946. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.kr.min.js +0 -1
  947. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.lt.min.js +0 -1
  948. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.lv.min.js +0 -1
  949. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.me.min.js +0 -1
  950. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.mk.min.js +0 -1
  951. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.mn.min.js +0 -1
  952. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.ms.min.js +0 -1
  953. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.nb.min.js +0 -1
  954. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.nl-BE.min.js +0 -1
  955. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.nl.min.js +0 -1
  956. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.no.min.js +0 -1
  957. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.pl.min.js +0 -1
  958. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.pt-BR.min.js +0 -1
  959. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.pt.min.js +0 -1
  960. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.ro.min.js +0 -1
  961. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.rs-latin.min.js +0 -1
  962. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.rs.min.js +0 -1
  963. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.ru.min.js +0 -1
  964. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.sk.min.js +0 -1
  965. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.sl.min.js +0 -1
  966. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.sq.min.js +0 -1
  967. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.sr-latin.min.js +0 -1
  968. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.sr.min.js +0 -1
  969. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.sv.min.js +0 -1
  970. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.sw.min.js +0 -1
  971. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.th.min.js +0 -1
  972. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.tr.min.js +0 -1
  973. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.uk.min.js +0 -1
  974. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.vi.min.js +0 -1
  975. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.zh-CN.min.js +0 -1
  976. data/vendor/assets/javascripts/bootstrap-datepicker-1.6.4-dist/locales/bootstrap-datepicker.zh-TW.min.js +0 -1
  977. data/vendor/assets/javascripts/storage.js +0 -122
@@ -1,2604 +0,0 @@
1
- (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
2
- var node = require('./node');
3
- var Node = node.Node;
4
- var Position = node.Position;
5
-
6
- var util = require('./util');
7
- _indexOf = util._indexOf;
8
- indexOf = util.indexOf;
9
- get_json_stringify_function = util.get_json_stringify_function;
10
-
11
- QUnit.config.testTimeout = 5000;
12
-
13
- /*
14
- example data:
15
-
16
- node1
17
- ---child1
18
- ---child2
19
- -node2
20
- ---child3
21
- */
22
-
23
- var example_data = [
24
- {
25
- label: 'node1',
26
- id: 123, // extra data
27
- int_property: 1,
28
- str_property: '1',
29
- children: [
30
- { label: 'child1', id: 125, int_property: 2 },
31
- { label: 'child2', id: 126 }
32
- ]
33
- },
34
- {
35
- label: 'node2',
36
- id: 124,
37
- int_property: 3,
38
- str_property: '3',
39
- children: [
40
- { label: 'child3', id: 127 }
41
- ]
42
- }
43
- ];
44
-
45
- /*
46
- example data 2:
47
-
48
- -main
49
- ---c1
50
- ---c2
51
- */
52
-
53
- var example_data2 = [
54
- {
55
- label: 'main',
56
- children: [
57
- { label: 'c1' },
58
- { label: 'c2' }
59
- ]
60
- }
61
- ];
62
-
63
- function formatNodes(nodes) {
64
- var strings = $.map(nodes, function(node) {
65
- return node.name;
66
- });
67
- return strings.join(' ');
68
- };
69
-
70
- function isNodeClosed($node) {
71
- return (
72
- ($node.is('li.jqtree-folder.jqtree-closed')) &&
73
- ($node.find('a:eq(0)').is('a.jqtree-toggler.jqtree-closed')) &&
74
- ($node.find('ul:eq(0)').is('ul'))
75
- );
76
- }
77
-
78
- function isNodeOpen($node) {
79
- return (
80
- ($node.is('li.jqtree-folder')) &&
81
- ($node.find('a:eq(0)').is('a.jqtree-toggler')) &&
82
- ($node.find('ul:eq(0)').is('ul')) &&
83
- (! $node.is('li.jqtree-folder.jqtree-closed')) &&
84
- (! $node.find('span:eq(0)').is('a.jqtree-toggler.jqtree-closed'))
85
- );
86
- }
87
-
88
- function formatTitles($node) {
89
- var titles = $node.find('.jqtree-title').map(
90
- function(i, el) {
91
- return $(el).text();
92
- }
93
- );
94
- return titles.toArray().join(' ');
95
- }
96
-
97
-
98
- QUnit.module("jqtree", {
99
- setup: function() {
100
- $('body').append('<div id="tree1"></div>');
101
- },
102
-
103
- teardown: function() {
104
- var $tree = $('#tree1');
105
- $tree.tree('destroy');
106
- $tree.remove();
107
- }
108
- });
109
-
110
- test("create jqtree from data", function() {
111
- $('#tree1').tree({
112
- data: example_data
113
- });
114
-
115
- equal(
116
- $('#tree1').children().length, 1,
117
- 'number of children on level 0'
118
- );
119
- ok(
120
- $('#tree1').children().is('ul.jqtree-tree'),
121
- 'first element is ul.jqtree-tree'
122
- );
123
- equal(
124
- $('#tree1 ul.jqtree-tree > li').length, 2,
125
- 'number of children on level 1'
126
- );
127
- ok(
128
- $('#tree1 ul.jqtree-tree li:eq(0)').is('li.jqtree-folder.jqtree-closed'),
129
- 'first child is li.jqtree-folder.jqtree-closed'
130
- );
131
- ok(
132
- $('#tree1 ul.jqtree-tree li:eq(0) > .jqtree-element > a.jqtree-toggler').is('a.jqtree-toggler.jqtree-closed'),
133
- 'button in first folder'
134
- );
135
- equal(
136
- $('#tree1 ul.jqtree-tree li:eq(0) > .jqtree-element span.jqtree-title').text(),
137
- 'node1'
138
- );
139
- });
140
-
141
- test('toggle', function() {
142
- // create tree
143
- var $tree = $('#tree1');
144
- var $node1;
145
- var node1;
146
-
147
- $tree.tree({
148
- data: example_data
149
- });
150
-
151
- $tree.bind(
152
- 'tree.open',
153
- function(e) {
154
- start();
155
-
156
- ok(! isNodeClosed($node1), 'node1 is open');
157
-
158
- // 2. close node1
159
- $tree.tree('toggle', node1);
160
-
161
- stop();
162
- }
163
- );
164
-
165
- $tree.bind(
166
- 'tree.close',
167
- function(e) {
168
- start();
169
-
170
- ok(isNodeClosed($node1), 'node1 is closed');
171
- }
172
- );
173
-
174
- var tree = $tree.tree('getTree');
175
- node1 = tree.children[0];
176
- $node1 = $tree.find('ul.jqtree-tree li:eq(0)');
177
-
178
- // node1 is initially closed
179
- ok(isNodeClosed($node1), 'node1 is closed');
180
-
181
- // 1. open node1
182
- $tree.tree('toggle', node1);
183
-
184
- stop();
185
- });
186
-
187
- test("click event", function() {
188
- stop();
189
-
190
- // create tree
191
- var $tree = $('#tree1');
192
- $tree.tree({
193
- data: example_data,
194
- selectable: true
195
- });
196
-
197
- $tree.bind('tree.click', function(e) {
198
- equal(e.node.name, 'node1');
199
- });
200
-
201
- $tree.bind('tree.select', function(e) {
202
- start();
203
- equal(e.node.name, 'node1');
204
- });
205
-
206
- // click on node1
207
- var $node1 = $tree.find('ul.jqtree-tree li:first');
208
- var $text_span = $node1.find('span:first');
209
- $text_span.click();
210
- });
211
-
212
- test('saveState', function() {
213
- var $tree = $('#tree1');
214
-
215
- var saved_state;
216
-
217
- function setState(state) {
218
- saved_state = state;
219
- }
220
-
221
- function getState() {
222
- return saved_state;
223
- }
224
-
225
- function createTree() {
226
- $tree.tree({
227
- data: example_data,
228
- saveState: true,
229
- onSetStateFromStorage: setState,
230
- onGetStateFromStorage: getState,
231
- selectable: true
232
- });
233
- }
234
-
235
- // create tree
236
- createTree();
237
-
238
- // nodes are initially closed
239
- var tree = $tree.tree('getTree');
240
- tree.iterate(function(node) {
241
- ok(! node.is_open, 'jqtree-closed');
242
- return true;
243
- });
244
-
245
- // open node1
246
- $tree.tree('toggle', tree.children[0]);
247
-
248
- // node1 is open
249
- ok(tree.children[0].is_open, 'node1 is_open');
250
-
251
- // select node2
252
- $tree.tree('selectNode', tree.children[1]);
253
-
254
- // node2 is selected
255
- equal(
256
- $tree.tree('getSelectedNode').name,
257
- 'node2',
258
- 'getSelectedNode (1)'
259
- );
260
-
261
- // create tree again
262
- $tree.tree('destroy');
263
- createTree();
264
-
265
- tree = $tree.tree('getTree');
266
- ok(tree.children[0].is_open, 'node1 is_open');
267
- ok(! tree.children[1].is_open, 'node2 is closed');
268
-
269
- // node2 is selected
270
- equal(
271
- $tree.tree('getSelectedNode').name,
272
- 'node2',
273
- 'getSelectedNode (2)'
274
- );
275
- });
276
-
277
- test('getSelectedNode', function() {
278
- var $tree = $('#tree1');
279
-
280
- // create tree
281
- $tree.tree({
282
- data: example_data,
283
- selectable: true
284
- });
285
-
286
- // there is no node selected
287
- equal(
288
- $tree.tree('getSelectedNode'),
289
- false,
290
- 'getSelectedNode'
291
- );
292
-
293
- // select node1
294
- var tree = $tree.tree('getTree');
295
- var node1 = tree.children[0];
296
- $tree.tree('selectNode', node1);
297
-
298
- // node1 is selected
299
- equal(
300
- $tree.tree('getSelectedNode').name,
301
- 'node1',
302
- 'getSelectedNode'
303
- );
304
- });
305
-
306
- test("toJson", function() {
307
- // setup
308
- var $tree = $('#tree1');
309
- $tree.tree({
310
- data: example_data
311
- });
312
-
313
- // 1. call toJson
314
- equal(
315
- $tree.tree('toJson'),
316
- '[{"name":"node1","id":123,"int_property":1,"str_property":"1",'+
317
- '"children":[{"name":"child1","id":125,"int_property":2},{"name":'+
318
- '"child2","id":126}]},{"name":"node2","id":124,"int_property":3,'+
319
- '"str_property":"3","children":[{"name":"child3","id":127}]}]'
320
- );
321
-
322
- // Check that properties 'children', 'parent' and 'element' still exist.
323
- var tree = $tree.tree('getTree');
324
- equal(tree.children.length, 2);
325
- ok(tree.children[0].parent != undefined, 'parent');
326
- ok($(tree.children[0].element).is('li'), 'element');
327
- });
328
-
329
- test('loadData', function() {
330
- // setup
331
- var $tree = $('#tree1');
332
- $tree.tree({
333
- data: example_data,
334
- autoOpen: true
335
- });
336
-
337
- // first node is 'node1'
338
- equal(
339
- $tree.find('> ul > li:first .jqtree-element:first > span').text(),
340
- 'node1'
341
- );
342
-
343
- // - load new data
344
- $tree.tree('loadData', example_data2);
345
-
346
- // first node is 'main'
347
- equal(
348
- $tree.find('> ul > li:first .jqtree-element:first > span').text(),
349
- 'main'
350
- );
351
-
352
- // - load new data under node 'child3'
353
- $tree.tree('loadData', example_data);
354
-
355
- var child3 = $tree.tree('getNodeByName', 'child3');
356
-
357
- var data = [
358
- { label: 'c4', id: 200 },
359
- {
360
- label: 'c5', id: 201,
361
- children: [
362
- { label: 'c6', id: 202 }
363
- ]
364
- }
365
- ];
366
- $tree.tree('loadData', data, child3);
367
-
368
- // first node in html is still 'node1'
369
- equal(
370
- $tree.find('li:eq(0)').find('.jqtree-element:eq(0) span.jqtree-title').text(),
371
- 'node1'
372
- );
373
-
374
- // Node 'child3' now has a children 'c4' and 'c5'
375
- var $child3 = $tree.find('span:contains(child3)');
376
- var $li = $child3.closest('li');
377
- equal(
378
- $li.children('ul').children('li:eq(0)').find('.jqtree-element span.jqtree-title').text(),
379
- 'c4'
380
- );
381
-
382
- // Node 'child3' must have toggler button
383
- ok(
384
- $child3.prev().is('a.jqtree-toggler'),
385
- "node 'child3' must have toggler button"
386
- );
387
-
388
- // - select node 'c5' and load new data under 'child3'
389
- var c5 = $tree.tree('getNodeByName', 'c5');
390
- $tree.tree('selectNode', c5);
391
-
392
- equal($tree.tree('getSelectedNode').name, 'c5');
393
-
394
- var data2 = [
395
- { label: 'c7' },
396
- { label: 'c8' }
397
- ];
398
- $tree.tree('loadData', data2, child3);
399
-
400
- // c5 must be deselected
401
- equal($tree.tree('getSelectedNode'), false);
402
-
403
- // - select c7; load new data under child3; note that c7 has no id
404
- $tree.tree('selectNode', $tree.tree('getNodeByName', 'c7'));
405
-
406
- equal($tree.tree('getSelectedNode').name, 'c7');
407
-
408
- $tree.tree('loadData', [ 'c9' ], child3);
409
-
410
- equal($tree.tree('getSelectedNode'), false);
411
-
412
- // - select c9 (which has no id); load new nodes under child2
413
- $tree.tree('selectNode', $tree.tree('getNodeByName', 'c9'));
414
-
415
- var child2 = $tree.tree('getNodeByName', 'child2');
416
- $tree.tree('loadData', [ 'c10' ], child2);
417
-
418
- equal($tree.tree('getSelectedNode').name, 'c9');
419
- });
420
-
421
- test('openNode and closeNode', function() {
422
- // setup
423
- var $tree = $('#tree1');
424
- $tree.tree({
425
- data: example_data
426
- });
427
-
428
- var node2 = $tree.tree('getNodeByName', 'node2');
429
- equal(node2.name, 'node2');
430
- equal(node2.is_open, undefined);
431
-
432
- // 1. open node2
433
- $tree.tree('openNode', node2, false);
434
- equal(node2.is_open, true);
435
- equal(isNodeOpen($(node2.element)), true);
436
-
437
- // 2. close node2
438
- $tree.tree('closeNode', node2, false);
439
- equal(node2.is_open, false);
440
- equal(isNodeClosed($(node2.element)), true);
441
-
442
- // 3. open child1
443
- var node1 = $tree.tree('getNodeByName', 'node1');
444
- var child1 = $tree.tree('getNodeByName', 'child1');
445
-
446
- // add a child to child1 so it is a folder
447
- $tree.tree('appendNode', 'child1a', child1);
448
-
449
- // node1 is initialy closed
450
- equal(node1.is_open, undefined);
451
-
452
- // open child1
453
- $tree.tree('openNode', child1, false);
454
-
455
- // node1 and child1 are now open1
456
- equal(node1.is_open, true);
457
- equal(child1.is_open, true);
458
- });
459
-
460
- test('selectNode', function() {
461
- // setup
462
- var $tree = $('#tree1');
463
- $tree.tree({
464
- data: example_data,
465
- selectable: true
466
- });
467
-
468
- var node1 = $tree.tree('getTree').children[0];
469
- var node2 = $tree.tree('getTree').children[1];
470
- var child3 = node2.children[0];
471
-
472
- equal(child3.name, 'child3');
473
- equal(node1.is_open, undefined);
474
- equal(node2.is_open, undefined);
475
- equal(child3.is_open, undefined);
476
-
477
- // -- select node 'child3', which is a child of 'node2'; must_open_parents = true
478
- $tree.tree('selectNode', child3, true);
479
- equal($tree.tree('getSelectedNode').name, 'child3');
480
-
481
- equal(node1.is_open, undefined);
482
- equal(node2.is_open, true);
483
- equal(child3.is_open, undefined);
484
-
485
- // -- select node 'node1'
486
- $tree.tree('selectNode', node1);
487
- equal($tree.tree('getSelectedNode').name, 'node1');
488
-
489
- // -- is 'node1' selected?
490
- ok($tree.tree('isNodeSelected', node1));
491
- });
492
-
493
- test('selectNode when another node is selected', function() {
494
- // setup
495
- var $tree = $('#tree1');
496
- $tree.tree({
497
- data: example_data,
498
- selectable: true
499
- });
500
-
501
- var node1 = $tree.tree('getTree').children[0];
502
- var node2 = $tree.tree('getTree').children[1];
503
-
504
-
505
- // -- select node 'node2'
506
- $tree.tree('selectNode', node2);
507
- equal($tree.tree('getSelectedNode').name, 'node2');
508
-
509
- // -- setting event
510
- // -- is node 'node2' named 'deselected_node' in object's attributes?
511
- stop();
512
- $tree.bind('tree.select', function(e) {
513
- start();
514
- equal(e.deselected_node, node2);
515
- });
516
-
517
- // -- select node 'node1'; node 'node2' is selected before it
518
- $tree.tree('selectNode', node1);
519
- equal($tree.tree('getSelectedNode').name, 'node1');
520
-
521
- ok($tree.tree('isNodeSelected', node1));
522
- });
523
-
524
- test('click toggler', function() {
525
- // setup
526
- stop();
527
-
528
- var $tree = $('#tree1');
529
- $tree.tree({
530
- data: example_data,
531
- selectable: true
532
- });
533
-
534
- var $title = $tree.find('li:eq(0)').find('> .jqtree-element > span.jqtree-title');
535
- equal($title.text(), 'node1');
536
- var $toggler = $title.prev();
537
- ok($toggler.is('a.jqtree-toggler.jqtree-closed'));
538
-
539
- $tree.bind('tree.open', function(e) {
540
- // 2. handle 'open' event
541
- start();
542
- equal(e.node.name, 'node1');
543
- stop();
544
-
545
- // 3. click toggler again
546
- $toggler.click();
547
- });
548
-
549
- $tree.bind('tree.close', function(e) {
550
- start();
551
- equal(e.node.name, 'node1');
552
- });
553
-
554
- // 1. click toggler of 'node1'
555
- $toggler.click();
556
- });
557
-
558
- test('getNodeById', function() {
559
- // setup
560
- var $tree = $('#tree1');
561
- $tree.tree({
562
- data: example_data
563
- });
564
- var node2 = $tree.tree('getNodeByName', 'node2');
565
-
566
- // 1. get 'node2' by id
567
- equal(
568
- $tree.tree('getNodeById', 124).name,
569
- 'node2'
570
- );
571
-
572
- // 2. get id that does not exist
573
- equal($tree.tree('getNodeById', 333), null);
574
-
575
- // 3. get id by string
576
- equal(
577
- $tree.tree('getNodeById', '124').name,
578
- 'node2'
579
- );
580
-
581
- // 4. add node with string id; search by int
582
- $tree.tree(
583
- 'appendNode',
584
- {
585
- label: 'abc',
586
- id: '234'
587
- }
588
- );
589
-
590
- equal(
591
- $tree.tree('getNodeById', 234).name,
592
- 'abc'
593
- );
594
- equal(
595
- $tree.tree('getNodeById', '234').name,
596
- 'abc'
597
- );
598
-
599
- // 5. load subtree in node2
600
- var subtree_data = [
601
- {
602
- label: 'sub1',
603
- id: 200,
604
- children: [
605
- {label: 'sub2', id: 201}
606
- ]
607
- }
608
- ];
609
- $tree.tree('loadData', subtree_data, node2);
610
- var t = $tree.tree('getTree');
611
-
612
- equal(
613
- $tree.tree('getNodeById', 200).name,
614
- 'sub1'
615
- );
616
- equal(
617
- $tree.tree('getNodeById', 201).name,
618
- 'sub2'
619
- );
620
- });
621
-
622
- test('autoOpen', function() {
623
- var $tree = $('#tree1');
624
-
625
- function formatOpenFolders() {
626
- var open_nodes = [];
627
- $tree.find('li').each(function() {
628
- var $li = $(this);
629
- if ($li.is('.jqtree-folder') && ! $li.is('.jqtree-closed')) {
630
- var label = $li.children('.jqtree-element').find('span').text();
631
- open_nodes.push(label);
632
- };
633
- });
634
-
635
- return open_nodes.join(';');
636
- }
637
-
638
- /*
639
- -l1n1 (level 0)
640
- ----l2n1 (1)
641
- ----l2n2 (1)
642
- -------l3n1 (2)
643
- ----------l4n1 (3)
644
- -l1n2
645
- */
646
- var data = [
647
- {
648
- label: 'l1n1',
649
- children: [
650
- 'l2n1',
651
- {
652
- label: 'l2n2',
653
- children: [
654
- {
655
- label: 'l3n1',
656
- children: [
657
- 'l4n1'
658
- ]
659
- }
660
- ]
661
- }
662
- ]
663
- },
664
- 'l1n2'
665
- ];
666
-
667
- // 1. autoOpen is false
668
- $tree.tree({
669
- data: data,
670
- autoOpen: false
671
- });
672
- equal(formatOpenFolders(), '');
673
-
674
- $tree.tree('destroy');
675
-
676
- // 2. autoOpen is true
677
- $tree.tree({
678
- data: data,
679
- autoOpen: true
680
- });
681
- equal(formatOpenFolders(), 'l1n1;l2n2;l3n1');
682
-
683
- $tree.tree('destroy');
684
-
685
- // 3. autoOpen level 1
686
- $tree.tree({
687
- data: data,
688
- autoOpen: 1
689
- });
690
- equal(formatOpenFolders(), 'l1n1;l2n2');
691
- });
692
-
693
- test('onCreateLi', function() {
694
- // 1. init tree with onCreateLi
695
- var $tree = $('#tree1');
696
- $tree.tree({
697
- data: example_data,
698
- onCreateLi: function(node, $li) {
699
- var $span = $li.children('.jqtree-element').find('span');
700
- $span.html('_' + node.name + '_');
701
- }
702
- });
703
-
704
- equal(
705
- $tree.find('span:eq(0)').text(),
706
- '_node1_'
707
- );
708
- });
709
-
710
- test('save state', function() {
711
- // setup
712
- var state = null;
713
-
714
- // Fake $.cookie plugin for browsers that do not support localstorage
715
- $.cookie = function(key, param2, param3) {
716
- if (typeof param3 == 'object') {
717
- // set
718
- state = param2;
719
- }
720
- else {
721
- // get
722
- return state;
723
- }
724
- }
725
-
726
- // Remove state from localstorage
727
- if (typeof localStorage != 'undefined') {
728
- localStorage.setItem('my_tree', null);
729
- }
730
-
731
- // 1. init tree
732
- var $tree = $('#tree1');
733
- $tree.tree({
734
- data: example_data,
735
- selectable: true,
736
- saveState: 'my_tree'
737
- });
738
-
739
- var tree = $tree.tree('getTree');
740
- equal($tree.tree('getSelectedNode'), false);
741
-
742
- // 2. select node -> state is saved
743
- $tree.tree('selectNode', tree.children[0]);
744
- equal($tree.tree('getSelectedNode').name, 'node1');
745
-
746
- // 3. init tree again
747
- $tree.tree('destroy');
748
-
749
- $tree.tree({
750
- data: example_data,
751
- selectable: true,
752
- saveState: 'my_tree'
753
- });
754
-
755
- equal($tree.tree('getSelectedNode').name, 'node1');
756
-
757
- $.cookie = null;
758
- });
759
-
760
- test('generate hit areas', function() {
761
- // setup
762
- var $tree = $('#tree1');
763
- $tree.tree({
764
- data: example_data
765
- });
766
-
767
- // 1. get hit areas
768
- var node = $tree.tree('getNodeById', 123);
769
- var hit_areas = $tree.tree('testGenerateHitAreas', node);
770
-
771
- var strings = $.map(hit_areas, function(hit_area) {
772
- return hit_area.node.name + ' ' + Position.getName(hit_area.position);
773
- });
774
- equal(strings.join(';'), 'node1 none;node2 inside;node2 after');
775
- });
776
-
777
- test('removeNode', function() {
778
- // setup
779
- var $tree = $('#tree1');
780
- $tree.tree({
781
- data: example_data,
782
- selectable: true
783
- });
784
-
785
- // 1. Remove selected node; node is 'child1'
786
- var child1 = $tree.tree('getNodeByName', 'child1');
787
- $tree.tree('selectNode', child1);
788
-
789
- equal($tree.tree('getSelectedNode').name, 'child1');
790
-
791
- $tree.tree('removeNode', child1);
792
-
793
- equal(
794
- formatTitles($tree),
795
- 'node1 child2 node2 child3'
796
- );
797
-
798
- // getSelectedNode must now return false
799
- equal($tree.tree('getSelectedNode'), false);
800
-
801
- // 2. No node is selected; remove child3
802
- $tree.tree('loadData', example_data);
803
-
804
- var child3 = $tree.tree('getNodeByName', 'child3');
805
- $tree.tree('removeNode', child3);
806
-
807
- equal(
808
- formatTitles($tree),
809
- 'node1 child1 child2 node2'
810
- );
811
-
812
- equal($tree.tree('getSelectedNode'), false);
813
-
814
- // 3. Remove parent of selected node
815
- $tree.tree('loadData', example_data);
816
-
817
- child1 = $tree.tree('getNodeByName', 'child1');
818
- var node1 = $tree.tree('getNodeByName', 'node1');
819
-
820
- $tree.tree('selectNode', child1);
821
-
822
- $tree.tree('removeNode', node1);
823
-
824
- // node is unselected
825
- equal($tree.tree('getSelectedNode'), false);
826
-
827
- // 4. Remove unselected node without an id
828
- $tree.tree('loadData', example_data2);
829
-
830
- var c1 = $tree.tree('getNodeByName', 'c1');
831
-
832
- $tree.tree('removeNode', c1);
833
-
834
- equal(
835
- formatTitles($tree),
836
- 'main c2'
837
- )
838
- });
839
-
840
- test('appendNode', function() {
841
- // setup
842
- var $tree = $('#tree1');
843
- $tree.tree({
844
- data: example_data
845
- });
846
-
847
- var node1 = $tree.tree('getNodeByName', 'node1');
848
-
849
- // 1. Add child3 to node1
850
- $tree.tree('appendNode', 'child3', node1);
851
-
852
- equal(
853
- formatTitles($(node1.element)),
854
- 'node1 child1 child2 child3'
855
- );
856
-
857
- // 2. Add child4 to child1
858
- var child1 = $tree.tree('getNodeByName', 'child1');
859
-
860
- // Node 'child1' does not have a toggler button
861
- equal(
862
- $(child1.element).find('> .jqtree-element > .jqtree-toggler').length,
863
- 0
864
- );
865
-
866
- $tree.tree('appendNode', 'child4', child1);
867
-
868
- equal(formatTitles($(child1.element)), 'child1 child4');
869
-
870
- // Node 'child1' must get a toggler button
871
- equal(
872
- $(child1.element).find('> .jqtree-element > .jqtree-toggler').length,
873
- 1
874
- );
875
- });
876
-
877
- test('prependNode', function() {
878
- // setup
879
- var $tree = $('#tree1');
880
- $tree.tree({
881
- data: example_data
882
- });
883
-
884
- var node1 = $tree.tree('getNodeByName', 'node1');
885
-
886
- // 1. Prepend child0 to node1
887
- $tree.tree('prependNode', 'child0', node1);
888
-
889
- equal(
890
- formatTitles($(node1.element)),
891
- 'node1 child0 child1 child2'
892
- );
893
- });
894
- test('init event', function() {
895
- // setup
896
- var $tree = $('#tree1');
897
-
898
- $tree.bind('tree.init', function() {
899
- start();
900
-
901
- // Check that we can call functions in 'tree.init' event
902
- equal($tree.tree('getNodeByName', 'node2').name, 'node2');
903
- });
904
- stop();
905
-
906
- $tree.tree({
907
- data: example_data
908
- });
909
- });
910
-
911
- test('updateNode', function() {
912
- // setup
913
- var $tree = $('#tree1');
914
-
915
- $tree.tree({ data: example_data });
916
-
917
- equal(formatTitles($tree), 'node1 child1 child2 node2 child3');
918
-
919
- // -- update label
920
- var node2 = $tree.tree('getNodeByName', 'node2');
921
- $tree.tree('updateNode', node2, 'CHANGED');
922
-
923
- equal(formatTitles($tree), 'node1 child1 child2 CHANGED child3');
924
- equal(node2.name, 'CHANGED');
925
-
926
- // -- update data
927
- $tree.tree(
928
- 'updateNode',
929
- node2,
930
- {
931
- name: 'xyz',
932
- tag1: 'abc'
933
- }
934
- );
935
-
936
- equal(formatTitles($tree), 'node1 child1 child2 xyz child3');
937
- equal(node2.name, 'xyz');
938
- equal(node2.tag1, 'abc');
939
-
940
- // - update id
941
- equal(node2.id, 124);
942
-
943
- $tree.tree('updateNode', node2, {id: 555});
944
-
945
- equal(node2.id, 555);
946
- equal(node2.name, 'xyz');
947
-
948
- // get node by id
949
- var node_555 = $tree.tree('getNodeById', 555);
950
- equal(node_555.name, 'xyz');
951
-
952
- var node_124 = $tree.tree('getNodeById', 124);
953
- equal(node_124, undefined);
954
-
955
- // update child1
956
- var child1 = $tree.tree('getNodeByName', 'child1');
957
-
958
- $tree.tree('updateNode', child1, 'child1a');
959
-
960
- equal(formatTitles($tree), 'node1 child1a child2 xyz child3');
961
-
962
- // select child1
963
- $tree.tree('selectNode', child1);
964
- $tree.tree('updateNode', child1, 'child1b');
965
-
966
- ok($(child1.element).hasClass('jqtree-selected'));
967
- });
968
-
969
- test('moveNode', function() {
970
- // setup
971
- var $tree = $('#tree1');
972
-
973
- $tree.tree({ data: example_data });
974
-
975
- var child1 = $tree.tree('getNodeByName', 'child1');
976
- var child2 = $tree.tree('getNodeByName', 'child2');
977
- var node1 = $tree.tree('getNodeByName', 'node1');
978
- var node2 = $tree.tree('getNodeByName', 'node2');
979
-
980
- // -- Move child1 after node2
981
- $tree.tree('moveNode', child1, node2, 'after');
982
-
983
- equal(formatTitles($tree), 'node1 child2 node2 child3 child1');
984
-
985
- // -- Check that illegal moves are skipped
986
- $tree.tree('moveNode', node1, child2, 'inside');
987
- });
988
-
989
- test('load on demand', function() {
990
- // setup
991
- var $tree = $('#tree1');
992
-
993
- $tree.tree({
994
- data: [
995
- {
996
- id: 1,
997
- label: 'node1',
998
- load_on_demand: true
999
- }
1000
- ],
1001
- dataUrl: '/tree/'
1002
- });
1003
-
1004
- $.mockjax({
1005
- url: '*',
1006
- response: function(options) {
1007
- equal(options.url, '/tree/', '2');
1008
- deepEqual(options.data, { 'node' : 1 }, '3')
1009
-
1010
- this.responseText = [
1011
- {
1012
- id: 2,
1013
- label: 'child1'
1014
- }
1015
- ];
1016
- },
1017
- logging: false
1018
- });
1019
-
1020
- // -- open node
1021
- $tree.bind('tree.refresh', function(e) {
1022
- start();
1023
-
1024
- equal(formatTitles($tree), 'node1 child1', '4');
1025
- });
1026
-
1027
- var node1 = $tree.tree('getNodeByName', 'node1');
1028
- equal(formatTitles($tree), 'node1', '1');
1029
-
1030
- $tree.tree('openNode', node1, true);
1031
-
1032
- stop();
1033
- });
1034
-
1035
- test('addNodeAfter', function() {
1036
- // setup
1037
- var $tree = $('#tree1');
1038
-
1039
- $tree.tree({ data: example_data });
1040
- var node1 = $tree.tree('getNodeByName', 'node1');
1041
-
1042
- // -- add node after node1
1043
- $tree.tree('addNodeAfter', 'node3', node1);
1044
-
1045
- equal(formatTitles($tree), 'node1 child1 child2 node3 node2 child3');
1046
- });
1047
-
1048
- test('addNodeBefore', function() {
1049
- // setup
1050
- var $tree = $('#tree1');
1051
-
1052
- $tree.tree({ data: example_data });
1053
- var node1 = $tree.tree('getNodeByName', 'node1');
1054
-
1055
- // -- add node before node1
1056
- var new_node = $tree.tree('addNodeBefore', 'node3', node1);
1057
-
1058
- equal(formatTitles($tree), 'node3 node1 child1 child2 node2 child3');
1059
- });
1060
-
1061
- test('addParentNode', function() {
1062
- // setup
1063
- var $tree = $('#tree1');
1064
-
1065
- $tree.tree({ data: example_data });
1066
- var child3 = $tree.tree('getNodeByName', 'child3');
1067
-
1068
- // -- add parent to child3
1069
- $tree.tree('addParentNode', 'node3', child3);
1070
-
1071
- equal(formatTitles($tree), 'node1 child1 child2 node2 node3 child3');
1072
- });
1073
-
1074
- test('mouse events', function() {
1075
- // setup
1076
- var $tree = $('#tree1');
1077
- $tree.tree({
1078
- data: example_data,
1079
- dragAndDrop: true,
1080
- autoOpen: true
1081
- });
1082
- $tree.tree('setMouseDelay', 0);
1083
-
1084
- function getTitleElement(node_name) {
1085
- var node = $tree.tree('getNodeByName', node_name);
1086
- var $el = $(node.element);
1087
- return $($el.find('.jqtree-title'));
1088
- }
1089
-
1090
- var $node1 = getTitleElement('node1');
1091
- var $child3 = getTitleElement('child3');
1092
-
1093
- // Move node1 inside child3
1094
- // trigger mousedown event on node1
1095
- $node1.trigger(
1096
- $.Event('mousedown', { which: 1 })
1097
- );
1098
-
1099
- // trigger mouse move to child3
1100
- var child3_offset = $child3.offset();
1101
- $tree.trigger(
1102
- $.Event('mousemove', { pageX: child3_offset.left, pageY: child3_offset.top })
1103
- );
1104
- $tree.trigger('mouseup');
1105
-
1106
- equal(
1107
- formatTitles($tree),
1108
- 'node2 child3 node1 child1 child2'
1109
- );
1110
- });
1111
-
1112
- test('multiple select', function() {
1113
- // setup
1114
- var $tree = $('#tree1');
1115
- $tree.tree({ data: example_data });
1116
-
1117
- var child1 = $tree.tree('getNodeByName', 'child1');
1118
- var child2 = $tree.tree('getNodeByName', 'child2');
1119
-
1120
- // -- add nodes to selection
1121
- // todo: more nodes as parameters?
1122
- // todo: rename to 'selection.add' or 'selection' 'add'?
1123
- $tree.tree('addToSelection', child1);
1124
- $tree.tree('addToSelection', child2);
1125
-
1126
- // -- get selected nodes
1127
- var selected_nodes = $tree.tree('getSelectedNodes');
1128
- equal(
1129
- formatNodes(selected_nodes),
1130
- 'child1 child2'
1131
- );
1132
- });
1133
-
1134
- test('keyboard', function() {
1135
- // setup
1136
- var $tree = $('#tree1');
1137
-
1138
- function keyDown(key) {
1139
- $tree.trigger(
1140
- $.Event('keydown', { which: key })
1141
- );
1142
- }
1143
-
1144
- $tree.tree({ data: example_data });
1145
-
1146
- var node1 = $tree.tree('getNodeByName', 'node1');
1147
-
1148
- // select node1
1149
- $tree.tree('selectNode', node1);
1150
- equal(node1.is_open, undefined);
1151
-
1152
- // - move down; -> node2
1153
- keyDown(40);
1154
- equal($tree.tree('getSelectedNode').name, 'node2');
1155
-
1156
- // - move up; -> back to node1
1157
- keyDown(38);
1158
- equal($tree.tree('getSelectedNode').name, 'node1');
1159
-
1160
- // - move right; open node1
1161
- keyDown(39);
1162
- equal(node1.is_open, true);
1163
- equal($tree.tree('getSelectedNode').name, 'node1');
1164
-
1165
- // - select child3 and move up -> node2
1166
- $tree.tree('selectNode', $tree.tree('getNodeByName', 'child3'));
1167
- keyDown(38);
1168
- equal($tree.tree('getSelectedNode').name, 'node2');
1169
-
1170
- // - move up -> child2
1171
- keyDown(38);
1172
- equal($tree.tree('getSelectedNode').name, 'child2');
1173
-
1174
- // - select node1 and move left -> close
1175
- $tree.tree('selectNode', node1);
1176
- keyDown(37);
1177
- equal(node1.is_open, false);
1178
- equal($tree.tree('getSelectedNode').name, 'node1');
1179
- });
1180
-
1181
- test('getNodesByProperty', function(){
1182
- // setup
1183
- var $tree = $('#tree1');
1184
- $tree.tree({
1185
- data: example_data
1186
- });
1187
- var node2 = $tree.tree('getNodeByName', 'node2');
1188
-
1189
- // 1. get 'node1' by property
1190
- equal(
1191
- $tree.tree('getNodesByProperty', 'int_property', 1)[0].name,
1192
- 'node1'
1193
- );
1194
-
1195
- // 2. get property that does not exist in any node
1196
- equal($tree.tree('getNodesByProperty', 'int_property', 123).length, 0);
1197
-
1198
- // 3. get string property
1199
- equal(
1200
- $tree.tree('getNodesByProperty', 'str_property', '1')[0].name,
1201
- 'node1'
1202
- );
1203
-
1204
- // 4. add node with string id; search by int
1205
- $tree.tree(
1206
- 'appendNode',
1207
- {
1208
- label: 'abc',
1209
- id: '234',
1210
- str_property: '111',
1211
- int_property: 111
1212
- }
1213
- );
1214
-
1215
- equal(
1216
- $tree.tree('getNodesByProperty', 'int_property', 111)[0].name,
1217
- 'abc'
1218
- );
1219
- equal(
1220
- $tree.tree('getNodesByProperty', 'str_property', '111')[0].name,
1221
- 'abc'
1222
- );
1223
-
1224
- // 5. load subtree in node2
1225
- var subtree_data = [
1226
- {
1227
- label: 'sub1',
1228
- id: 200,
1229
- int_property: 222,
1230
- children: [
1231
- {label: 'sub2', id: 201, int_property: 444}
1232
- ]
1233
- }
1234
- ];
1235
- $tree.tree('loadData', subtree_data, node2);
1236
- var t = $tree.tree('getTree');
1237
-
1238
- equal(
1239
- $tree.tree('getNodesByProperty', 'int_property', 222)[0].name,
1240
- 'sub1'
1241
- );
1242
- equal(
1243
- $tree.tree('getNodesByProperty', 'int_property', 444)[0].name,
1244
- 'sub2'
1245
- );
1246
- });
1247
-
1248
- QUnit.module("Tree");
1249
- test('constructor', function() {
1250
- // 1. Create node from string
1251
- var node = new Node('n1');
1252
-
1253
- equal(node.name, 'n1');
1254
- equal(node.children.length, 0);
1255
- equal(node.parent, null);
1256
-
1257
- // 2. Create node from object
1258
- node = new Node({
1259
- label: 'n2',
1260
- id: 123,
1261
- parent: 'abc', // parent must be ignored
1262
- children: ['c'], // children must be ignored
1263
- url: '/'
1264
- });
1265
-
1266
- equal(node.name, 'n2');
1267
- equal(node.id, 123);
1268
- equal(node.url, '/');
1269
- equal(node.label, undefined);
1270
- equal(node.children.length, 0);
1271
- equal(node.parent, null);
1272
- });
1273
-
1274
- test("create tree from data", function() {
1275
- function checkData(tree) {
1276
- equal(
1277
- formatNodes(tree.children),
1278
- 'node1 node2',
1279
- 'nodes on level 1'
1280
- );
1281
- equal(
1282
- formatNodes(tree.children[0].children),
1283
- 'child1 child2',
1284
- 'children of node1'
1285
- );
1286
- equal(
1287
- formatNodes(tree.children[1].children),
1288
- 'child3',
1289
- 'children of node2'
1290
- );
1291
- equal(
1292
- tree.children[0].id,
1293
- 123,
1294
- 'id'
1295
- );
1296
- }
1297
-
1298
- // - create tree from example data
1299
- var tree = new Node(null, true);
1300
- tree.loadFromData(example_data);
1301
- checkData(tree);
1302
-
1303
- // - create tree from new data format
1304
- var data = [
1305
- {
1306
- label: 'node1',
1307
- id: 123,
1308
- children: ['child1', 'child2'] // nodes are only defined by a string
1309
- },
1310
- {
1311
- label: 'node2',
1312
- id: 124,
1313
- children: ['child3']
1314
- }
1315
- ];
1316
- var tree = new Node(null, true);
1317
- tree.loadFromData(data);
1318
- checkData(tree);
1319
- });
1320
-
1321
- test("addChild", function() {
1322
- var tree = new Node('tree1', true);
1323
- tree.addChild(
1324
- new Node('abc')
1325
- );
1326
- tree.addChild(
1327
- new Node('def')
1328
- );
1329
-
1330
- equal(
1331
- formatNodes(tree.children),
1332
- 'abc def',
1333
- 'children'
1334
- );
1335
-
1336
- var node = tree.children[0];
1337
- equal(
1338
- node.parent.name,
1339
- 'tree1',
1340
- 'parent of node'
1341
- );
1342
- });
1343
-
1344
- test('addChildAtPosition', function() {
1345
- var tree = new Node(null, true);
1346
- tree.addChildAtPosition(new Node('abc'), 0); // first
1347
- tree.addChildAtPosition(new Node('ghi'), 2); // index 2 does not exist
1348
- tree.addChildAtPosition(new Node('def'), 1);
1349
- tree.addChildAtPosition(new Node('123'), 0);
1350
-
1351
- equal(
1352
- formatNodes(tree.children),
1353
- '123 abc def ghi',
1354
- 'children'
1355
- );
1356
- });
1357
-
1358
- test('removeChild', function() {
1359
- var tree = new Node(null, true);
1360
-
1361
- var abc = new Node({'label': 'abc', 'id': 1});
1362
- var def = new Node({'label': 'def', 'id': 2});
1363
- var ghi = new Node({'label': 'ghi', 'id': 3});
1364
-
1365
- tree.addChild(abc);
1366
- tree.addChild(def);
1367
- tree.addChild(ghi);
1368
-
1369
- var jkl = new Node({'label': 'jkl', 'id': 4});
1370
- def.addChild(jkl);
1371
-
1372
- equal(
1373
- formatNodes(tree.children),
1374
- 'abc def ghi',
1375
- 'children'
1376
- );
1377
-
1378
- equal(tree.id_mapping[2].name, 'def');
1379
- equal(tree.id_mapping[4].name, 'jkl');
1380
-
1381
- // remove 'def'
1382
- tree.removeChild(def);
1383
- equal(
1384
- formatNodes(tree.children),
1385
- 'abc ghi',
1386
- 'children'
1387
- );
1388
-
1389
- equal(tree.id_mapping[2], null);
1390
- equal(tree.id_mapping[4], null);
1391
-
1392
- // remove 'ghi'
1393
- tree.removeChild(ghi);
1394
- equal(
1395
- formatNodes(tree.children),
1396
- 'abc',
1397
- 'children'
1398
- );
1399
-
1400
- // remove 'abc'
1401
- tree.removeChild(abc);
1402
- equal(
1403
- formatNodes(tree.children),
1404
- '',
1405
- 'children'
1406
- );
1407
- });
1408
-
1409
- test('getChildIndex', function() {
1410
- // setup
1411
- var tree = new Node(null, true);
1412
-
1413
- var abc = new Node('abc');
1414
- var def = new Node('def');
1415
- var ghi = new Node('ghi');
1416
- tree.addChild(abc);
1417
- tree.addChild(def);
1418
- tree.addChild(ghi);
1419
-
1420
- // 1. Get child index of 'def'
1421
- equal(tree.getChildIndex(def), 1);
1422
-
1423
- // 2. Get child index of non-existing node
1424
- equal(tree.getChildIndex(new Node('xyz')), -1);
1425
- });
1426
-
1427
- test('hasChildren', function() {
1428
- var tree = new Node(null, true);
1429
- equal(
1430
- tree.hasChildren(),
1431
- false,
1432
- 'tree without children'
1433
- );
1434
-
1435
- tree.addChild(new Node('abc'));
1436
- equal(
1437
- tree.hasChildren(),
1438
- true,
1439
- 'tree has children'
1440
- );
1441
- });
1442
-
1443
- test('iterate', function() {
1444
- var tree = new Node(null, true);
1445
- tree.loadFromData(example_data);
1446
-
1447
- // iterate over all the nodes
1448
- var nodes = [];
1449
- tree.iterate(
1450
- function(node, level) {
1451
- nodes.push(node);
1452
- return true;
1453
- }
1454
- );
1455
-
1456
- equal(
1457
- formatNodes(nodes),
1458
- 'node1 child1 child2 node2 child3',
1459
- 'all nodes'
1460
- );
1461
-
1462
- // iterate over nodes on first level
1463
- nodes = [];
1464
- tree.iterate(
1465
- function(node, level) {
1466
- nodes.push(node);
1467
- return false;
1468
- }
1469
- );
1470
-
1471
- equal(
1472
- formatNodes(nodes),
1473
- 'node1 node2',
1474
- 'nodes on first level'
1475
- );
1476
-
1477
- // add child 4
1478
- var node3 = tree.getNodeById(124).children[0];
1479
- node3.addChild(
1480
- new Node('child4')
1481
- );
1482
-
1483
- // test level parameter
1484
- nodes = [];
1485
- tree.iterate(
1486
- function(node, level) {
1487
- nodes.push(node.name + ' ' + level);
1488
- return true;
1489
- }
1490
- );
1491
-
1492
- equal(
1493
- nodes.join(','),
1494
- 'node1 0,child1 1,child2 1,node2 0,child3 1,child4 2'
1495
- );
1496
- });
1497
-
1498
- test('moveNode', function() {
1499
- var tree = new Node(null, true);
1500
- tree.loadFromData(example_data);
1501
-
1502
- /*
1503
- node1
1504
- ---child1
1505
- ---child2
1506
- node2
1507
- ---child3
1508
- */
1509
-
1510
- var node1 = tree.children[0];
1511
- var node2 = tree.children[1];
1512
- var child1 = node1.children[0];
1513
- var child2 = node1.children[1];
1514
- equal(node2.name, 'node2', 'node2 name');
1515
- equal(child2.name, 'child2', 'child2 name');
1516
-
1517
- // move child2 after node2
1518
- tree.moveNode(child2, node2, Position.AFTER);
1519
-
1520
- /*
1521
- node1
1522
- ---child1
1523
- node2
1524
- ---child3
1525
- child2
1526
- */
1527
- equal(
1528
- formatNodes(tree.children),
1529
- 'node1 node2 child2',
1530
- 'tree nodes at first level'
1531
- );
1532
- equal(
1533
- formatNodes(node1.children),
1534
- 'child1',
1535
- 'node1 children'
1536
- );
1537
-
1538
- // move child1 inside node2
1539
- // this means it's the first child
1540
- tree.moveNode(child1, node2, Position.INSIDE);
1541
-
1542
- /*
1543
- node1
1544
- node2
1545
- ---child1
1546
- ---child3
1547
- child2
1548
- */
1549
- equal(
1550
- formatNodes(node2.children),
1551
- 'child1 child3',
1552
- 'node2 children'
1553
- );
1554
- equal(
1555
- formatNodes(node1.children),
1556
- '',
1557
- 'node1 has no children'
1558
- );
1559
-
1560
- // move child2 before child1
1561
- tree.moveNode(child2, child1, Position.BEFORE);
1562
-
1563
- /*
1564
- node1
1565
- node2
1566
- ---child2
1567
- ---child1
1568
- ---child3
1569
- */
1570
- equal(
1571
- formatNodes(node2.children),
1572
- 'child2 child1 child3',
1573
- 'node2 children'
1574
- );
1575
- equal(
1576
- formatNodes(tree.children),
1577
- 'node1 node2',
1578
- 'tree nodes at first level'
1579
- );
1580
- });
1581
-
1582
- test('initFromData', function() {
1583
- var data =
1584
- {
1585
- label: 'main',
1586
- children: [
1587
- 'c1',
1588
- {
1589
- label: 'c2',
1590
- id: 201
1591
- }
1592
- ]
1593
- };
1594
- var node = new Node(null, true);
1595
- node.initFromData(data);
1596
-
1597
- equal(node.name, 'main')
1598
- equal(
1599
- formatNodes(node.children),
1600
- 'c1 c2',
1601
- 'children'
1602
- );
1603
- equal(node.children[1].id, 201);
1604
- });
1605
-
1606
- test('getData', function() {
1607
- // 1. empty node
1608
- var node = new Node(null, true);
1609
- deepEqual(node.getData(), []);
1610
-
1611
- // 2.node with data
1612
- node.loadFromData(
1613
- [
1614
- {
1615
- label: 'n1',
1616
- children: [
1617
- {
1618
- label: 'c1'
1619
- }
1620
- ]
1621
- }
1622
- ]
1623
- );
1624
- deepEqual(
1625
- node.getData(),
1626
- [
1627
- {
1628
- name: 'n1',
1629
- children: [
1630
- {
1631
- name: 'c1'
1632
- }
1633
- ]
1634
- }
1635
- ]
1636
- );
1637
- });
1638
-
1639
- test('addAfter', function() {
1640
- // setup
1641
- var tree = new Node(null, true);
1642
- tree.loadFromData(example_data);
1643
-
1644
- /*
1645
- -node1
1646
- ---c1
1647
- ---c2
1648
- -node2
1649
- ---c3
1650
- */
1651
-
1652
- equal(formatNodes(tree.children), 'node1 node2');
1653
-
1654
- // - Add 'node_b' after node2
1655
- var node2 = tree.getNodeByName('node2');
1656
- node2.addAfter('node_b');
1657
-
1658
- equal(formatNodes(tree.children), 'node1 node2 node_b');
1659
-
1660
- var node_b = tree.getNodeByName('node_b');
1661
- equal(node_b.name, 'node_b');
1662
-
1663
- // - Add 'node_a' after node1
1664
- var node1 = tree.getNodeByName('node1');
1665
- node1.addAfter('node_a');
1666
-
1667
- equal(formatNodes(tree.children), 'node1 node_a node2 node_b');
1668
-
1669
- // - Add 'node_c' after node_b; new node is an object
1670
- node_b.addAfter({
1671
- label: 'node_c',
1672
- id: 789
1673
- });
1674
-
1675
- var node_c = tree.getNodeByName('node_c');
1676
- equal(node_c.id, 789);
1677
-
1678
- equal(formatNodes(tree.children), 'node1 node_a node2 node_b node_c');
1679
-
1680
- // - Add after root node; this is not possible
1681
- equal(tree.addAfter('node_x'), null);
1682
- });
1683
-
1684
- test('addBefore', function() {
1685
- // setup
1686
- var tree = new Node(null, true);
1687
- tree.loadFromData(example_data);
1688
-
1689
- // - Add 'node_0' before node1
1690
- var node1 = tree.getNodeByName('node1');
1691
- node1.addBefore('node0');
1692
- equal(formatNodes(tree.children), 'node0 node1 node2');
1693
-
1694
- // - Add before root node; this is not possile
1695
- equal(tree.addBefore('x'), null);
1696
- });
1697
-
1698
- test('addParent', function() {
1699
- // setup
1700
- var tree = new Node(null, true);
1701
- tree.loadFromData(example_data);
1702
-
1703
- // - Add node 'root' as parent of node1
1704
- // Note that node also becomes a child of 'root'
1705
- var node1 = tree.getNodeByName('node1');
1706
- node1.addParent('root');
1707
-
1708
- var root = tree.getNodeByName('root');
1709
- equal(formatNodes(root.children), 'node1 node2');
1710
-
1711
- // - Add parent to root node; not possible
1712
- equal(tree.addParent('x'), null);
1713
- });
1714
-
1715
- test('remove', function() {
1716
- // setup
1717
- var tree = new Node(null, true);
1718
- tree.loadFromData(example_data);
1719
-
1720
- var child1 = tree.getNodeByName('child1');
1721
- var node1 = tree.getNodeByName('node1');
1722
-
1723
- equal(formatNodes(node1.children), 'child1 child2');
1724
- equal(child1.parent, node1);
1725
-
1726
- // 1. Remove child1
1727
- child1.remove();
1728
-
1729
- equal(formatNodes(node1.children), 'child2');
1730
- equal(child1.parent, null);
1731
- });
1732
-
1733
- test('append', function() {
1734
- // setup
1735
- var tree = new Node(null, true);
1736
- tree.loadFromData(example_data);
1737
-
1738
- var node1 = tree.getNodeByName('node1');
1739
-
1740
- // 1. Add child3 to node1
1741
- node1.append('child3');
1742
-
1743
- equal(formatNodes(node1.children), 'child1 child2 child3');
1744
- });
1745
-
1746
- test('prepend', function() {
1747
- // setup
1748
- var tree = new Node(null, true);
1749
- tree.loadFromData(example_data);
1750
-
1751
- var node1 = tree.getNodeByName('node1');
1752
-
1753
- // 1. Prepend child0 to node1
1754
- node1.prepend('child0');
1755
-
1756
- equal(formatNodes(node1.children), 'child0 child1 child2');
1757
- });
1758
-
1759
- test('getNodeById', function() {
1760
- // setup
1761
- var tree = new Node(null, true);
1762
- tree.loadFromData(example_data);
1763
-
1764
- // 1. Get node with id 124
1765
- var node = tree.getNodeById(124);
1766
- equal(node.name, 'node2');
1767
-
1768
- // 2. Delete node with id 124 and search again
1769
- node.remove();
1770
-
1771
- equal(tree.getNodeById(124), null);
1772
-
1773
- // 3. Add node with id 456 and search for it
1774
- var child3 = tree.getNodeByName('child2');
1775
- child3.append({
1776
- id: 456,
1777
- label: 'new node'
1778
- });
1779
-
1780
- node = tree.getNodeById(456);
1781
- equal(node.name, 'new node');
1782
- });
1783
-
1784
- test('getLevel', function() {
1785
- // setup
1786
- var tree = new Node(null, true);
1787
- tree.loadFromData(example_data);
1788
-
1789
- // 1. get level for node1 and child1
1790
- equal(tree.getNodeByName('node1').getLevel(), 1);
1791
- equal(tree.getNodeByName('child1').getLevel(), 2);
1792
- });
1793
-
1794
- test('loadFromData and id mapping', function() {
1795
- // - get node from empty tree
1796
- var tree = new Node(null, true);
1797
- equal(tree.getNodeById(999), null);
1798
-
1799
- // - load example data in tree
1800
- tree.loadFromData(example_data);
1801
- equal(tree.getNodeById(124).name, 'node2');
1802
-
1803
- var child2 = tree.getNodeById(126);
1804
- child2.addChild(
1805
- new Node({label: 'child4', id: 128})
1806
- );
1807
- child2.addChild(
1808
- new Node({label: 'child5', id: 129})
1809
- );
1810
-
1811
- // - load data in node child2
1812
- child2.loadFromData(['abc', 'def']);
1813
-
1814
- equal(tree.getNodeById(128), null);
1815
- equal(child2.children.length, 2);
1816
- equal(child2.children[0].name, 'abc');
1817
- });
1818
-
1819
- test('removeChildren', function() {
1820
- // - load example data
1821
- var tree = new Node(null, true);
1822
- tree.loadFromData(example_data);
1823
-
1824
- // add child4 and child5
1825
- var child2 = tree.getNodeById(126);
1826
- equal(child2.name, 'child2');
1827
-
1828
- child2.addChild(
1829
- new Node({label: 'child4', id: 128})
1830
- );
1831
- child2.addChild(
1832
- new Node({label: 'child5', id: 129})
1833
- );
1834
- equal(tree.getNodeById(128).name, 'child4');
1835
-
1836
- // - remove children from child2
1837
- child2.removeChildren();
1838
- equal(tree.getNodeById(128), null);
1839
- equal(child2.children.length, 0);
1840
- });
1841
-
1842
- test('node with id 0', function() {
1843
- // - load node with id 0
1844
- var tree = new Node(null, true);
1845
- tree.loadFromData([
1846
- {
1847
- id: 0,
1848
- label: 'mynode'
1849
- }
1850
- ]);
1851
-
1852
- // - get node by id
1853
- var node = tree.getNodeById(0);
1854
- equal(node.name, 'mynode');
1855
-
1856
- // -- remove the node
1857
- node.remove();
1858
-
1859
- equal(tree.getNodeById(0), undefined);
1860
- });
1861
-
1862
- test('getPreviousSibling', function() {
1863
- // setup
1864
- var tree = new Node(null, true);
1865
- tree.loadFromData(example_data);
1866
-
1867
- // - getPreviousSibling
1868
- equal(
1869
- tree.getNodeByName('child2').getPreviousSibling().name,
1870
- 'child1'
1871
- );
1872
- equal(tree.getPreviousSibling(), null);
1873
- equal(
1874
- tree.getNodeByName('child1').getPreviousSibling(),
1875
- null
1876
- );
1877
- });
1878
-
1879
- test('getNextSibling', function() {
1880
- // setup
1881
- var tree = new Node(null, true);
1882
- tree.loadFromData(example_data);
1883
-
1884
- // - getNextSibling
1885
- equal(
1886
- tree.getNodeByName('node1').getNextSibling().name,
1887
- 'node2'
1888
- );
1889
- equal(
1890
- tree.getNodeByName('node2').getNextSibling(),
1891
- null
1892
- );
1893
- equal(tree.getNextSibling(), null);
1894
- });
1895
-
1896
- test('getNodesByProperty', function() {
1897
- var tree = new Node(null, true);
1898
- tree.loadFromData(example_data);
1899
-
1900
- nodes = tree.getNodesByProperty('name', 'child1');
1901
-
1902
- equal(nodes.length, 1);
1903
- equal(nodes[0].name, 'child1');
1904
- });
1905
-
1906
-
1907
- QUnit.module('util');
1908
-
1909
- test('JSON.stringify', function() {
1910
- function test_stringify(stringify) {
1911
- equal(stringify('abc'), '"abc"');
1912
- equal(stringify(123), '123');
1913
- equal(stringify(true), 'true');
1914
- equal(stringify({abc: 'def'}), '{"abc":"def"}');
1915
- equal(stringify({}), '{}');
1916
- equal(stringify([1, 2, 3]), '[1,2,3]');
1917
- equal(stringify(null), 'null');
1918
- equal(stringify(Number.NEGATIVE_INFINITY), 'null');
1919
-
1920
- // test escapable
1921
- JSON.stringify("\u200c");
1922
- }
1923
-
1924
- test_stringify(JSON.stringify);
1925
- test_stringify(get_json_stringify_function());
1926
- });
1927
-
1928
- test('indexOf', function() {
1929
- equal(indexOf([3, 2, 1], 1), 2);
1930
- equal(_indexOf([3, 2, 1], 1), 2);
1931
- equal(indexOf([4, 5, 6], 1), -1);
1932
- equal(_indexOf([4, 5, 6], 1), -1);
1933
- });
1934
-
1935
- test('Position.getName', function() {
1936
- equal(Position.getName(Position.BEFORE), 'before');
1937
- equal(Position.getName(Position.AFTER), 'after');
1938
- equal(Position.getName(Position.INSIDE), 'inside');
1939
- equal(Position.getName(Position.NONE), 'none');
1940
- });
1941
-
1942
- test('Position.nameToIndex', function() {
1943
- equal(Position.nameToIndex('before'), Position.BEFORE);
1944
- equal(Position.nameToIndex('after'), Position.AFTER);
1945
- equal(Position.nameToIndex(''), 0);
1946
- });
1947
-
1948
- },{"./node":2,"./util":3}],2:[function(require,module,exports){
1949
- (function() {
1950
- var Node, Position;
1951
-
1952
- Position = {
1953
- getName: function(position) {
1954
- return Position.strings[position - 1];
1955
- },
1956
- nameToIndex: function(name) {
1957
- var i, _i, _ref;
1958
- for (i = _i = 1, _ref = Position.strings.length; 1 <= _ref ? _i <= _ref : _i >= _ref; i = 1 <= _ref ? ++_i : --_i) {
1959
- if (Position.strings[i - 1] === name) {
1960
- return i;
1961
- }
1962
- }
1963
- return 0;
1964
- }
1965
- };
1966
-
1967
- Position.BEFORE = 1;
1968
-
1969
- Position.AFTER = 2;
1970
-
1971
- Position.INSIDE = 3;
1972
-
1973
- Position.NONE = 4;
1974
-
1975
- Position.strings = ['before', 'after', 'inside', 'none'];
1976
-
1977
- Node = (function() {
1978
- function Node(o, is_root, node_class) {
1979
- if (is_root == null) {
1980
- is_root = false;
1981
- }
1982
- if (node_class == null) {
1983
- node_class = Node;
1984
- }
1985
- this.setData(o);
1986
- this.children = [];
1987
- this.parent = null;
1988
- if (is_root) {
1989
- this.id_mapping = {};
1990
- this.tree = this;
1991
- this.node_class = node_class;
1992
- }
1993
- }
1994
-
1995
- Node.prototype.setData = function(o) {
1996
- var key, value, _results;
1997
- if (typeof o !== 'object') {
1998
- return this.name = o;
1999
- } else {
2000
- _results = [];
2001
- for (key in o) {
2002
- value = o[key];
2003
- if (key === 'label') {
2004
- _results.push(this.name = value);
2005
- } else {
2006
- _results.push(this[key] = value);
2007
- }
2008
- }
2009
- return _results;
2010
- }
2011
- };
2012
-
2013
- Node.prototype.initFromData = function(data) {
2014
- var addChildren, addNode;
2015
- addNode = (function(_this) {
2016
- return function(node_data) {
2017
- _this.setData(node_data);
2018
- if (node_data.children) {
2019
- return addChildren(node_data.children);
2020
- }
2021
- };
2022
- })(this);
2023
- addChildren = (function(_this) {
2024
- return function(children_data) {
2025
- var child, node, _i, _len;
2026
- for (_i = 0, _len = children_data.length; _i < _len; _i++) {
2027
- child = children_data[_i];
2028
- node = new _this.tree.node_class('');
2029
- node.initFromData(child);
2030
- _this.addChild(node);
2031
- }
2032
- return null;
2033
- };
2034
- })(this);
2035
- addNode(data);
2036
- return null;
2037
- };
2038
-
2039
-
2040
- /*
2041
- Create tree from data.
2042
-
2043
- Structure of data is:
2044
- [
2045
- {
2046
- label: 'node1',
2047
- children: [
2048
- { label: 'child1' },
2049
- { label: 'child2' }
2050
- ]
2051
- },
2052
- {
2053
- label: 'node2'
2054
- }
2055
- ]
2056
- */
2057
-
2058
- Node.prototype.loadFromData = function(data) {
2059
- var node, o, _i, _len;
2060
- this.removeChildren();
2061
- for (_i = 0, _len = data.length; _i < _len; _i++) {
2062
- o = data[_i];
2063
- node = new this.tree.node_class(o);
2064
- this.addChild(node);
2065
- if (typeof o === 'object' && o.children) {
2066
- node.loadFromData(o.children);
2067
- }
2068
- }
2069
- return null;
2070
- };
2071
-
2072
-
2073
- /*
2074
- Add child.
2075
-
2076
- tree.addChild(
2077
- new Node('child1')
2078
- );
2079
- */
2080
-
2081
- Node.prototype.addChild = function(node) {
2082
- this.children.push(node);
2083
- return node._setParent(this);
2084
- };
2085
-
2086
-
2087
- /*
2088
- Add child at position. Index starts at 0.
2089
-
2090
- tree.addChildAtPosition(
2091
- new Node('abc'),
2092
- 1
2093
- );
2094
- */
2095
-
2096
- Node.prototype.addChildAtPosition = function(node, index) {
2097
- this.children.splice(index, 0, node);
2098
- return node._setParent(this);
2099
- };
2100
-
2101
- Node.prototype._setParent = function(parent) {
2102
- this.parent = parent;
2103
- this.tree = parent.tree;
2104
- return this.tree.addNodeToIndex(this);
2105
- };
2106
-
2107
-
2108
- /*
2109
- Remove child. This also removes the children of the node.
2110
-
2111
- tree.removeChild(tree.children[0]);
2112
- */
2113
-
2114
- Node.prototype.removeChild = function(node) {
2115
- node.removeChildren();
2116
- return this._removeChild(node);
2117
- };
2118
-
2119
- Node.prototype._removeChild = function(node) {
2120
- this.children.splice(this.getChildIndex(node), 1);
2121
- return this.tree.removeNodeFromIndex(node);
2122
- };
2123
-
2124
-
2125
- /*
2126
- Get child index.
2127
-
2128
- var index = getChildIndex(node);
2129
- */
2130
-
2131
- Node.prototype.getChildIndex = function(node) {
2132
- return $.inArray(node, this.children);
2133
- };
2134
-
2135
-
2136
- /*
2137
- Does the tree have children?
2138
-
2139
- if (tree.hasChildren()) {
2140
- //
2141
- }
2142
- */
2143
-
2144
- Node.prototype.hasChildren = function() {
2145
- return this.children.length !== 0;
2146
- };
2147
-
2148
- Node.prototype.isFolder = function() {
2149
- return this.hasChildren() || this.load_on_demand;
2150
- };
2151
-
2152
-
2153
- /*
2154
- Iterate over all the nodes in the tree.
2155
-
2156
- Calls callback with (node, level).
2157
-
2158
- The callback must return true to continue the iteration on current node.
2159
-
2160
- tree.iterate(
2161
- function(node, level) {
2162
- console.log(node.name);
2163
-
2164
- // stop iteration after level 2
2165
- return (level <= 2);
2166
- }
2167
- );
2168
- */
2169
-
2170
- Node.prototype.iterate = function(callback) {
2171
- var _iterate;
2172
- _iterate = function(node, level) {
2173
- var child, result, _i, _len, _ref;
2174
- if (node.children) {
2175
- _ref = node.children;
2176
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
2177
- child = _ref[_i];
2178
- result = callback(child, level);
2179
- if (result && child.hasChildren()) {
2180
- _iterate(child, level + 1);
2181
- }
2182
- }
2183
- return null;
2184
- }
2185
- };
2186
- _iterate(this, 0);
2187
- return null;
2188
- };
2189
-
2190
-
2191
- /*
2192
- Move node relative to another node.
2193
-
2194
- Argument position: Position.BEFORE, Position.AFTER or Position.Inside
2195
-
2196
- // move node1 after node2
2197
- tree.moveNode(node1, node2, Position.AFTER);
2198
- */
2199
-
2200
- Node.prototype.moveNode = function(moved_node, target_node, position) {
2201
- if (moved_node.isParentOf(target_node)) {
2202
- return;
2203
- }
2204
- moved_node.parent._removeChild(moved_node);
2205
- if (position === Position.AFTER) {
2206
- return target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node) + 1);
2207
- } else if (position === Position.BEFORE) {
2208
- return target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node));
2209
- } else if (position === Position.INSIDE) {
2210
- return target_node.addChildAtPosition(moved_node, 0);
2211
- }
2212
- };
2213
-
2214
-
2215
- /*
2216
- Get the tree as data.
2217
- */
2218
-
2219
- Node.prototype.getData = function() {
2220
- var getDataFromNodes;
2221
- getDataFromNodes = (function(_this) {
2222
- return function(nodes) {
2223
- var data, k, node, tmp_node, v, _i, _len;
2224
- data = [];
2225
- for (_i = 0, _len = nodes.length; _i < _len; _i++) {
2226
- node = nodes[_i];
2227
- tmp_node = {};
2228
- for (k in node) {
2229
- v = node[k];
2230
- if ((k !== 'parent' && k !== 'children' && k !== 'element' && k !== 'tree') && Object.prototype.hasOwnProperty.call(node, k)) {
2231
- tmp_node[k] = v;
2232
- }
2233
- }
2234
- if (node.hasChildren()) {
2235
- tmp_node.children = getDataFromNodes(node.children);
2236
- }
2237
- data.push(tmp_node);
2238
- }
2239
- return data;
2240
- };
2241
- })(this);
2242
- return getDataFromNodes(this.children);
2243
- };
2244
-
2245
- Node.prototype.getNodeByName = function(name) {
2246
- var result;
2247
- result = null;
2248
- this.iterate(function(node) {
2249
- if (node.name === name) {
2250
- result = node;
2251
- return false;
2252
- } else {
2253
- return true;
2254
- }
2255
- });
2256
- return result;
2257
- };
2258
-
2259
- Node.prototype.addAfter = function(node_info) {
2260
- var child_index, node;
2261
- if (!this.parent) {
2262
- return null;
2263
- } else {
2264
- node = new this.tree.node_class(node_info);
2265
- child_index = this.parent.getChildIndex(this);
2266
- this.parent.addChildAtPosition(node, child_index + 1);
2267
- return node;
2268
- }
2269
- };
2270
-
2271
- Node.prototype.addBefore = function(node_info) {
2272
- var child_index, node;
2273
- if (!this.parent) {
2274
- return null;
2275
- } else {
2276
- node = new this.tree.node_class(node_info);
2277
- child_index = this.parent.getChildIndex(this);
2278
- this.parent.addChildAtPosition(node, child_index);
2279
- return node;
2280
- }
2281
- };
2282
-
2283
- Node.prototype.addParent = function(node_info) {
2284
- var child, new_parent, original_parent, _i, _len, _ref;
2285
- if (!this.parent) {
2286
- return null;
2287
- } else {
2288
- new_parent = new this.tree.node_class(node_info);
2289
- new_parent._setParent(this.tree);
2290
- original_parent = this.parent;
2291
- _ref = original_parent.children;
2292
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
2293
- child = _ref[_i];
2294
- new_parent.addChild(child);
2295
- }
2296
- original_parent.children = [];
2297
- original_parent.addChild(new_parent);
2298
- return new_parent;
2299
- }
2300
- };
2301
-
2302
- Node.prototype.remove = function() {
2303
- if (this.parent) {
2304
- this.parent.removeChild(this);
2305
- return this.parent = null;
2306
- }
2307
- };
2308
-
2309
- Node.prototype.append = function(node_info) {
2310
- var node;
2311
- node = new this.tree.node_class(node_info);
2312
- this.addChild(node);
2313
- return node;
2314
- };
2315
-
2316
- Node.prototype.prepend = function(node_info) {
2317
- var node;
2318
- node = new this.tree.node_class(node_info);
2319
- this.addChildAtPosition(node, 0);
2320
- return node;
2321
- };
2322
-
2323
- Node.prototype.isParentOf = function(node) {
2324
- var parent;
2325
- parent = node.parent;
2326
- while (parent) {
2327
- if (parent === this) {
2328
- return true;
2329
- }
2330
- parent = parent.parent;
2331
- }
2332
- return false;
2333
- };
2334
-
2335
- Node.prototype.getLevel = function() {
2336
- var level, node;
2337
- level = 0;
2338
- node = this;
2339
- while (node.parent) {
2340
- level += 1;
2341
- node = node.parent;
2342
- }
2343
- return level;
2344
- };
2345
-
2346
- Node.prototype.getNodeById = function(node_id) {
2347
- return this.id_mapping[node_id];
2348
- };
2349
-
2350
- Node.prototype.addNodeToIndex = function(node) {
2351
- if (node.id != null) {
2352
- return this.id_mapping[node.id] = node;
2353
- }
2354
- };
2355
-
2356
- Node.prototype.removeNodeFromIndex = function(node) {
2357
- if (node.id != null) {
2358
- return delete this.id_mapping[node.id];
2359
- }
2360
- };
2361
-
2362
- Node.prototype.removeChildren = function() {
2363
- this.iterate((function(_this) {
2364
- return function(child) {
2365
- _this.tree.removeNodeFromIndex(child);
2366
- return true;
2367
- };
2368
- })(this));
2369
- return this.children = [];
2370
- };
2371
-
2372
- Node.prototype.getPreviousSibling = function() {
2373
- var previous_index;
2374
- if (!this.parent) {
2375
- return null;
2376
- } else {
2377
- previous_index = this.parent.getChildIndex(this) - 1;
2378
- if (previous_index >= 0) {
2379
- return this.parent.children[previous_index];
2380
- } else {
2381
- return null;
2382
- }
2383
- }
2384
- };
2385
-
2386
- Node.prototype.getNextSibling = function() {
2387
- var next_index;
2388
- if (!this.parent) {
2389
- return null;
2390
- } else {
2391
- next_index = this.parent.getChildIndex(this) + 1;
2392
- if (next_index < this.parent.children.length) {
2393
- return this.parent.children[next_index];
2394
- } else {
2395
- return null;
2396
- }
2397
- }
2398
- };
2399
-
2400
- Node.prototype.getNodesByProperty = function(key, value) {
2401
- return this.filter(function(node) {
2402
- return node[key] === value;
2403
- });
2404
- };
2405
-
2406
- Node.prototype.filter = function(f) {
2407
- var result;
2408
- result = [];
2409
- this.iterate(function(node) {
2410
- if (f(node)) {
2411
- result.push(node);
2412
- }
2413
- return true;
2414
- });
2415
- return result;
2416
- };
2417
-
2418
- Node.prototype.getNextNode = function(include_children) {
2419
- var next_sibling;
2420
- if (include_children == null) {
2421
- include_children = true;
2422
- }
2423
- if (include_children && this.hasChildren() && this.is_open) {
2424
- return this.children[0];
2425
- } else {
2426
- if (!this.parent) {
2427
- return null;
2428
- } else {
2429
- next_sibling = this.getNextSibling();
2430
- if (next_sibling) {
2431
- return next_sibling;
2432
- } else {
2433
- return this.parent.getNextNode(false);
2434
- }
2435
- }
2436
- }
2437
- };
2438
-
2439
- Node.prototype.getPreviousNode = function() {
2440
- var previous_sibling;
2441
- if (!this.parent) {
2442
- return null;
2443
- } else {
2444
- previous_sibling = this.getPreviousSibling();
2445
- if (previous_sibling) {
2446
- if (!previous_sibling.hasChildren() || !previous_sibling.is_open) {
2447
- return previous_sibling;
2448
- } else {
2449
- return previous_sibling.getLastChild();
2450
- }
2451
- } else {
2452
- if (this.parent.parent) {
2453
- return this.parent;
2454
- } else {
2455
- return null;
2456
- }
2457
- }
2458
- }
2459
- };
2460
-
2461
- Node.prototype.getLastChild = function() {
2462
- var last_child;
2463
- if (!this.hasChildren()) {
2464
- return null;
2465
- } else {
2466
- last_child = this.children[this.children.length - 1];
2467
- if (!last_child.hasChildren() || !last_child.is_open) {
2468
- return last_child;
2469
- } else {
2470
- return last_child.getLastChild();
2471
- }
2472
- }
2473
- };
2474
-
2475
- return Node;
2476
-
2477
- })();
2478
-
2479
- module.exports = {
2480
- Node: Node,
2481
- Position: Position
2482
- };
2483
-
2484
- }).call(this);
2485
-
2486
- },{}],3:[function(require,module,exports){
2487
- (function() {
2488
- var get_json_stringify_function, html_escape, indexOf, isInt, _indexOf;
2489
-
2490
- _indexOf = function(array, item) {
2491
- var i, value, _i, _len;
2492
- for (i = _i = 0, _len = array.length; _i < _len; i = ++_i) {
2493
- value = array[i];
2494
- if (value === item) {
2495
- return i;
2496
- }
2497
- }
2498
- return -1;
2499
- };
2500
-
2501
- indexOf = function(array, item) {
2502
- if (array.indexOf) {
2503
- return array.indexOf(item);
2504
- } else {
2505
- return _indexOf(array, item);
2506
- }
2507
- };
2508
-
2509
- isInt = function(n) {
2510
- return typeof n === 'number' && n % 1 === 0;
2511
- };
2512
-
2513
- get_json_stringify_function = function() {
2514
- var json_escapable, json_meta, json_quote, json_str, stringify;
2515
- json_escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
2516
- json_meta = {
2517
- '\b': '\\b',
2518
- '\t': '\\t',
2519
- '\n': '\\n',
2520
- '\f': '\\f',
2521
- '\r': '\\r',
2522
- '"': '\\"',
2523
- '\\': '\\\\'
2524
- };
2525
- json_quote = function(string) {
2526
- json_escapable.lastIndex = 0;
2527
- if (json_escapable.test(string)) {
2528
- return '"' + string.replace(json_escapable, function(a) {
2529
- var c;
2530
- c = json_meta[a];
2531
- return (typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4));
2532
- }) + '"';
2533
- } else {
2534
- return '"' + string + '"';
2535
- }
2536
- };
2537
- json_str = function(key, holder) {
2538
- var i, k, partial, v, value, _i, _len;
2539
- value = holder[key];
2540
- switch (typeof value) {
2541
- case 'string':
2542
- return json_quote(value);
2543
- case 'number':
2544
- if (isFinite(value)) {
2545
- return String(value);
2546
- } else {
2547
- return 'null';
2548
- }
2549
- case 'boolean':
2550
- case 'null':
2551
- return String(value);
2552
- case 'object':
2553
- if (!value) {
2554
- return 'null';
2555
- }
2556
- partial = [];
2557
- if (Object.prototype.toString.apply(value) === '[object Array]') {
2558
- for (i = _i = 0, _len = value.length; _i < _len; i = ++_i) {
2559
- v = value[i];
2560
- partial[i] = json_str(i, value) || 'null';
2561
- }
2562
- return (partial.length === 0 ? '[]' : '[' + partial.join(',') + ']');
2563
- }
2564
- for (k in value) {
2565
- if (Object.prototype.hasOwnProperty.call(value, k)) {
2566
- v = json_str(k, value);
2567
- if (v) {
2568
- partial.push(json_quote(k) + ':' + v);
2569
- }
2570
- }
2571
- }
2572
- return (partial.length === 0 ? '{}' : '{' + partial.join(',') + '}');
2573
- }
2574
- };
2575
- stringify = function(value) {
2576
- return json_str('', {
2577
- '': value
2578
- });
2579
- };
2580
- return stringify;
2581
- };
2582
-
2583
- if (!((this.JSON != null) && (this.JSON.stringify != null) && typeof this.JSON.stringify === 'function')) {
2584
- if (this.JSON == null) {
2585
- this.JSON = {};
2586
- }
2587
- this.JSON.stringify = get_json_stringify_function();
2588
- }
2589
-
2590
- html_escape = function(string) {
2591
- return ('' + string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g, '&#x2F;');
2592
- };
2593
-
2594
- module.exports = {
2595
- _indexOf: _indexOf,
2596
- get_json_stringify_function: get_json_stringify_function,
2597
- html_escape: html_escape,
2598
- indexOf: indexOf,
2599
- isInt: isInt
2600
- };
2601
-
2602
- }).call(this);
2603
-
2604
- },{}]},{},[1])