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,1945 +0,0 @@
1
- var node = require('./node');
2
- var Node = node.Node;
3
- var Position = node.Position;
4
-
5
- var util = require('./util');
6
- _indexOf = util._indexOf;
7
- indexOf = util.indexOf;
8
- get_json_stringify_function = util.get_json_stringify_function;
9
-
10
- QUnit.config.testTimeout = 5000;
11
-
12
- /*
13
- example data:
14
-
15
- node1
16
- ---child1
17
- ---child2
18
- -node2
19
- ---child3
20
- */
21
-
22
- var example_data = [
23
- {
24
- label: 'node1',
25
- id: 123, // extra data
26
- int_property: 1,
27
- str_property: '1',
28
- children: [
29
- { label: 'child1', id: 125, int_property: 2 },
30
- { label: 'child2', id: 126 }
31
- ]
32
- },
33
- {
34
- label: 'node2',
35
- id: 124,
36
- int_property: 3,
37
- str_property: '3',
38
- children: [
39
- { label: 'child3', id: 127 }
40
- ]
41
- }
42
- ];
43
-
44
- /*
45
- example data 2:
46
-
47
- -main
48
- ---c1
49
- ---c2
50
- */
51
-
52
- var example_data2 = [
53
- {
54
- label: 'main',
55
- children: [
56
- { label: 'c1' },
57
- { label: 'c2' }
58
- ]
59
- }
60
- ];
61
-
62
- function formatNodes(nodes) {
63
- var strings = $.map(nodes, function(node) {
64
- return node.name;
65
- });
66
- return strings.join(' ');
67
- };
68
-
69
- function isNodeClosed($node) {
70
- return (
71
- ($node.is('li.jqtree-folder.jqtree-closed')) &&
72
- ($node.find('a:eq(0)').is('a.jqtree-toggler.jqtree-closed')) &&
73
- ($node.find('ul:eq(0)').is('ul'))
74
- );
75
- }
76
-
77
- function isNodeOpen($node) {
78
- return (
79
- ($node.is('li.jqtree-folder')) &&
80
- ($node.find('a:eq(0)').is('a.jqtree-toggler')) &&
81
- ($node.find('ul:eq(0)').is('ul')) &&
82
- (! $node.is('li.jqtree-folder.jqtree-closed')) &&
83
- (! $node.find('span:eq(0)').is('a.jqtree-toggler.jqtree-closed'))
84
- );
85
- }
86
-
87
- function formatTitles($node) {
88
- var titles = $node.find('.jqtree-title').map(
89
- function(i, el) {
90
- return $(el).text();
91
- }
92
- );
93
- return titles.toArray().join(' ');
94
- }
95
-
96
-
97
- QUnit.module("jqtree", {
98
- setup: function() {
99
- $('body').append('<div id="tree1"></div>');
100
- },
101
-
102
- teardown: function() {
103
- var $tree = $('#tree1');
104
- $tree.tree('destroy');
105
- $tree.remove();
106
- }
107
- });
108
-
109
- test("create jqtree from data", function() {
110
- $('#tree1').tree({
111
- data: example_data
112
- });
113
-
114
- equal(
115
- $('#tree1').children().length, 1,
116
- 'number of children on level 0'
117
- );
118
- ok(
119
- $('#tree1').children().is('ul.jqtree-tree'),
120
- 'first element is ul.jqtree-tree'
121
- );
122
- equal(
123
- $('#tree1 ul.jqtree-tree > li').length, 2,
124
- 'number of children on level 1'
125
- );
126
- ok(
127
- $('#tree1 ul.jqtree-tree li:eq(0)').is('li.jqtree-folder.jqtree-closed'),
128
- 'first child is li.jqtree-folder.jqtree-closed'
129
- );
130
- ok(
131
- $('#tree1 ul.jqtree-tree li:eq(0) > .jqtree-element > a.jqtree-toggler').is('a.jqtree-toggler.jqtree-closed'),
132
- 'button in first folder'
133
- );
134
- equal(
135
- $('#tree1 ul.jqtree-tree li:eq(0) > .jqtree-element span.jqtree-title').text(),
136
- 'node1'
137
- );
138
- });
139
-
140
- test('toggle', function() {
141
- // create tree
142
- var $tree = $('#tree1');
143
- var $node1;
144
- var node1;
145
-
146
- $tree.tree({
147
- data: example_data
148
- });
149
-
150
- $tree.bind(
151
- 'tree.open',
152
- function(e) {
153
- start();
154
-
155
- ok(! isNodeClosed($node1), 'node1 is open');
156
-
157
- // 2. close node1
158
- $tree.tree('toggle', node1);
159
-
160
- stop();
161
- }
162
- );
163
-
164
- $tree.bind(
165
- 'tree.close',
166
- function(e) {
167
- start();
168
-
169
- ok(isNodeClosed($node1), 'node1 is closed');
170
- }
171
- );
172
-
173
- var tree = $tree.tree('getTree');
174
- node1 = tree.children[0];
175
- $node1 = $tree.find('ul.jqtree-tree li:eq(0)');
176
-
177
- // node1 is initially closed
178
- ok(isNodeClosed($node1), 'node1 is closed');
179
-
180
- // 1. open node1
181
- $tree.tree('toggle', node1);
182
-
183
- stop();
184
- });
185
-
186
- test("click event", function() {
187
- stop();
188
-
189
- // create tree
190
- var $tree = $('#tree1');
191
- $tree.tree({
192
- data: example_data,
193
- selectable: true
194
- });
195
-
196
- $tree.bind('tree.click', function(e) {
197
- equal(e.node.name, 'node1');
198
- });
199
-
200
- $tree.bind('tree.select', function(e) {
201
- start();
202
- equal(e.node.name, 'node1');
203
- });
204
-
205
- // click on node1
206
- var $node1 = $tree.find('ul.jqtree-tree li:first');
207
- var $text_span = $node1.find('span:first');
208
- $text_span.click();
209
- });
210
-
211
- test('saveState', function() {
212
- var $tree = $('#tree1');
213
-
214
- var saved_state;
215
-
216
- function setState(state) {
217
- saved_state = state;
218
- }
219
-
220
- function getState() {
221
- return saved_state;
222
- }
223
-
224
- function createTree() {
225
- $tree.tree({
226
- data: example_data,
227
- saveState: true,
228
- onSetStateFromStorage: setState,
229
- onGetStateFromStorage: getState,
230
- selectable: true
231
- });
232
- }
233
-
234
- // create tree
235
- createTree();
236
-
237
- // nodes are initially closed
238
- var tree = $tree.tree('getTree');
239
- tree.iterate(function(node) {
240
- ok(! node.is_open, 'jqtree-closed');
241
- return true;
242
- });
243
-
244
- // open node1
245
- $tree.tree('toggle', tree.children[0]);
246
-
247
- // node1 is open
248
- ok(tree.children[0].is_open, 'node1 is_open');
249
-
250
- // select node2
251
- $tree.tree('selectNode', tree.children[1]);
252
-
253
- // node2 is selected
254
- equal(
255
- $tree.tree('getSelectedNode').name,
256
- 'node2',
257
- 'getSelectedNode (1)'
258
- );
259
-
260
- // create tree again
261
- $tree.tree('destroy');
262
- createTree();
263
-
264
- tree = $tree.tree('getTree');
265
- ok(tree.children[0].is_open, 'node1 is_open');
266
- ok(! tree.children[1].is_open, 'node2 is closed');
267
-
268
- // node2 is selected
269
- equal(
270
- $tree.tree('getSelectedNode').name,
271
- 'node2',
272
- 'getSelectedNode (2)'
273
- );
274
- });
275
-
276
- test('getSelectedNode', function() {
277
- var $tree = $('#tree1');
278
-
279
- // create tree
280
- $tree.tree({
281
- data: example_data,
282
- selectable: true
283
- });
284
-
285
- // there is no node selected
286
- equal(
287
- $tree.tree('getSelectedNode'),
288
- false,
289
- 'getSelectedNode'
290
- );
291
-
292
- // select node1
293
- var tree = $tree.tree('getTree');
294
- var node1 = tree.children[0];
295
- $tree.tree('selectNode', node1);
296
-
297
- // node1 is selected
298
- equal(
299
- $tree.tree('getSelectedNode').name,
300
- 'node1',
301
- 'getSelectedNode'
302
- );
303
- });
304
-
305
- test("toJson", function() {
306
- // setup
307
- var $tree = $('#tree1');
308
- $tree.tree({
309
- data: example_data
310
- });
311
-
312
- // 1. call toJson
313
- equal(
314
- $tree.tree('toJson'),
315
- '[{"name":"node1","id":123,"int_property":1,"str_property":"1",'+
316
- '"children":[{"name":"child1","id":125,"int_property":2},{"name":'+
317
- '"child2","id":126}]},{"name":"node2","id":124,"int_property":3,'+
318
- '"str_property":"3","children":[{"name":"child3","id":127}]}]'
319
- );
320
-
321
- // Check that properties 'children', 'parent' and 'element' still exist.
322
- var tree = $tree.tree('getTree');
323
- equal(tree.children.length, 2);
324
- ok(tree.children[0].parent != undefined, 'parent');
325
- ok($(tree.children[0].element).is('li'), 'element');
326
- });
327
-
328
- test('loadData', function() {
329
- // setup
330
- var $tree = $('#tree1');
331
- $tree.tree({
332
- data: example_data,
333
- autoOpen: true
334
- });
335
-
336
- // first node is 'node1'
337
- equal(
338
- $tree.find('> ul > li:first .jqtree-element:first > span').text(),
339
- 'node1'
340
- );
341
-
342
- // - load new data
343
- $tree.tree('loadData', example_data2);
344
-
345
- // first node is 'main'
346
- equal(
347
- $tree.find('> ul > li:first .jqtree-element:first > span').text(),
348
- 'main'
349
- );
350
-
351
- // - load new data under node 'child3'
352
- $tree.tree('loadData', example_data);
353
-
354
- var child3 = $tree.tree('getNodeByName', 'child3');
355
-
356
- var data = [
357
- { label: 'c4', id: 200 },
358
- {
359
- label: 'c5', id: 201,
360
- children: [
361
- { label: 'c6', id: 202 }
362
- ]
363
- }
364
- ];
365
- $tree.tree('loadData', data, child3);
366
-
367
- // first node in html is still 'node1'
368
- equal(
369
- $tree.find('li:eq(0)').find('.jqtree-element:eq(0) span.jqtree-title').text(),
370
- 'node1'
371
- );
372
-
373
- // Node 'child3' now has a children 'c4' and 'c5'
374
- var $child3 = $tree.find('span:contains(child3)');
375
- var $li = $child3.closest('li');
376
- equal(
377
- $li.children('ul').children('li:eq(0)').find('.jqtree-element span.jqtree-title').text(),
378
- 'c4'
379
- );
380
-
381
- // Node 'child3' must have toggler button
382
- ok(
383
- $child3.prev().is('a.jqtree-toggler'),
384
- "node 'child3' must have toggler button"
385
- );
386
-
387
- // - select node 'c5' and load new data under 'child3'
388
- var c5 = $tree.tree('getNodeByName', 'c5');
389
- $tree.tree('selectNode', c5);
390
-
391
- equal($tree.tree('getSelectedNode').name, 'c5');
392
-
393
- var data2 = [
394
- { label: 'c7' },
395
- { label: 'c8' }
396
- ];
397
- $tree.tree('loadData', data2, child3);
398
-
399
- // c5 must be deselected
400
- equal($tree.tree('getSelectedNode'), false);
401
-
402
- // - select c7; load new data under child3; note that c7 has no id
403
- $tree.tree('selectNode', $tree.tree('getNodeByName', 'c7'));
404
-
405
- equal($tree.tree('getSelectedNode').name, 'c7');
406
-
407
- $tree.tree('loadData', [ 'c9' ], child3);
408
-
409
- equal($tree.tree('getSelectedNode'), false);
410
-
411
- // - select c9 (which has no id); load new nodes under child2
412
- $tree.tree('selectNode', $tree.tree('getNodeByName', 'c9'));
413
-
414
- var child2 = $tree.tree('getNodeByName', 'child2');
415
- $tree.tree('loadData', [ 'c10' ], child2);
416
-
417
- equal($tree.tree('getSelectedNode').name, 'c9');
418
- });
419
-
420
- test('openNode and closeNode', function() {
421
- // setup
422
- var $tree = $('#tree1');
423
- $tree.tree({
424
- data: example_data
425
- });
426
-
427
- var node2 = $tree.tree('getNodeByName', 'node2');
428
- equal(node2.name, 'node2');
429
- equal(node2.is_open, undefined);
430
-
431
- // 1. open node2
432
- $tree.tree('openNode', node2, false);
433
- equal(node2.is_open, true);
434
- equal(isNodeOpen($(node2.element)), true);
435
-
436
- // 2. close node2
437
- $tree.tree('closeNode', node2, false);
438
- equal(node2.is_open, false);
439
- equal(isNodeClosed($(node2.element)), true);
440
-
441
- // 3. open child1
442
- var node1 = $tree.tree('getNodeByName', 'node1');
443
- var child1 = $tree.tree('getNodeByName', 'child1');
444
-
445
- // add a child to child1 so it is a folder
446
- $tree.tree('appendNode', 'child1a', child1);
447
-
448
- // node1 is initialy closed
449
- equal(node1.is_open, undefined);
450
-
451
- // open child1
452
- $tree.tree('openNode', child1, false);
453
-
454
- // node1 and child1 are now open1
455
- equal(node1.is_open, true);
456
- equal(child1.is_open, true);
457
- });
458
-
459
- test('selectNode', function() {
460
- // setup
461
- var $tree = $('#tree1');
462
- $tree.tree({
463
- data: example_data,
464
- selectable: true
465
- });
466
-
467
- var node1 = $tree.tree('getTree').children[0];
468
- var node2 = $tree.tree('getTree').children[1];
469
- var child3 = node2.children[0];
470
-
471
- equal(child3.name, 'child3');
472
- equal(node1.is_open, undefined);
473
- equal(node2.is_open, undefined);
474
- equal(child3.is_open, undefined);
475
-
476
- // -- select node 'child3', which is a child of 'node2'; must_open_parents = true
477
- $tree.tree('selectNode', child3, true);
478
- equal($tree.tree('getSelectedNode').name, 'child3');
479
-
480
- equal(node1.is_open, undefined);
481
- equal(node2.is_open, true);
482
- equal(child3.is_open, undefined);
483
-
484
- // -- select node 'node1'
485
- $tree.tree('selectNode', node1);
486
- equal($tree.tree('getSelectedNode').name, 'node1');
487
-
488
- // -- is 'node1' selected?
489
- ok($tree.tree('isNodeSelected', node1));
490
- });
491
-
492
- test('selectNode when another node is selected', function() {
493
- // setup
494
- var $tree = $('#tree1');
495
- $tree.tree({
496
- data: example_data,
497
- selectable: true
498
- });
499
-
500
- var node1 = $tree.tree('getTree').children[0];
501
- var node2 = $tree.tree('getTree').children[1];
502
-
503
-
504
- // -- select node 'node2'
505
- $tree.tree('selectNode', node2);
506
- equal($tree.tree('getSelectedNode').name, 'node2');
507
-
508
- // -- setting event
509
- // -- is node 'node2' named 'deselected_node' in object's attributes?
510
- stop();
511
- $tree.bind('tree.select', function(e) {
512
- start();
513
- equal(e.deselected_node, node2);
514
- });
515
-
516
- // -- select node 'node1'; node 'node2' is selected before it
517
- $tree.tree('selectNode', node1);
518
- equal($tree.tree('getSelectedNode').name, 'node1');
519
-
520
- ok($tree.tree('isNodeSelected', node1));
521
- });
522
-
523
- test('click toggler', function() {
524
- // setup
525
- stop();
526
-
527
- var $tree = $('#tree1');
528
- $tree.tree({
529
- data: example_data,
530
- selectable: true
531
- });
532
-
533
- var $title = $tree.find('li:eq(0)').find('> .jqtree-element > span.jqtree-title');
534
- equal($title.text(), 'node1');
535
- var $toggler = $title.prev();
536
- ok($toggler.is('a.jqtree-toggler.jqtree-closed'));
537
-
538
- $tree.bind('tree.open', function(e) {
539
- // 2. handle 'open' event
540
- start();
541
- equal(e.node.name, 'node1');
542
- stop();
543
-
544
- // 3. click toggler again
545
- $toggler.click();
546
- });
547
-
548
- $tree.bind('tree.close', function(e) {
549
- start();
550
- equal(e.node.name, 'node1');
551
- });
552
-
553
- // 1. click toggler of 'node1'
554
- $toggler.click();
555
- });
556
-
557
- test('getNodeById', function() {
558
- // setup
559
- var $tree = $('#tree1');
560
- $tree.tree({
561
- data: example_data
562
- });
563
- var node2 = $tree.tree('getNodeByName', 'node2');
564
-
565
- // 1. get 'node2' by id
566
- equal(
567
- $tree.tree('getNodeById', 124).name,
568
- 'node2'
569
- );
570
-
571
- // 2. get id that does not exist
572
- equal($tree.tree('getNodeById', 333), null);
573
-
574
- // 3. get id by string
575
- equal(
576
- $tree.tree('getNodeById', '124').name,
577
- 'node2'
578
- );
579
-
580
- // 4. add node with string id; search by int
581
- $tree.tree(
582
- 'appendNode',
583
- {
584
- label: 'abc',
585
- id: '234'
586
- }
587
- );
588
-
589
- equal(
590
- $tree.tree('getNodeById', 234).name,
591
- 'abc'
592
- );
593
- equal(
594
- $tree.tree('getNodeById', '234').name,
595
- 'abc'
596
- );
597
-
598
- // 5. load subtree in node2
599
- var subtree_data = [
600
- {
601
- label: 'sub1',
602
- id: 200,
603
- children: [
604
- {label: 'sub2', id: 201}
605
- ]
606
- }
607
- ];
608
- $tree.tree('loadData', subtree_data, node2);
609
- var t = $tree.tree('getTree');
610
-
611
- equal(
612
- $tree.tree('getNodeById', 200).name,
613
- 'sub1'
614
- );
615
- equal(
616
- $tree.tree('getNodeById', 201).name,
617
- 'sub2'
618
- );
619
- });
620
-
621
- test('autoOpen', function() {
622
- var $tree = $('#tree1');
623
-
624
- function formatOpenFolders() {
625
- var open_nodes = [];
626
- $tree.find('li').each(function() {
627
- var $li = $(this);
628
- if ($li.is('.jqtree-folder') && ! $li.is('.jqtree-closed')) {
629
- var label = $li.children('.jqtree-element').find('span').text();
630
- open_nodes.push(label);
631
- };
632
- });
633
-
634
- return open_nodes.join(';');
635
- }
636
-
637
- /*
638
- -l1n1 (level 0)
639
- ----l2n1 (1)
640
- ----l2n2 (1)
641
- -------l3n1 (2)
642
- ----------l4n1 (3)
643
- -l1n2
644
- */
645
- var data = [
646
- {
647
- label: 'l1n1',
648
- children: [
649
- 'l2n1',
650
- {
651
- label: 'l2n2',
652
- children: [
653
- {
654
- label: 'l3n1',
655
- children: [
656
- 'l4n1'
657
- ]
658
- }
659
- ]
660
- }
661
- ]
662
- },
663
- 'l1n2'
664
- ];
665
-
666
- // 1. autoOpen is false
667
- $tree.tree({
668
- data: data,
669
- autoOpen: false
670
- });
671
- equal(formatOpenFolders(), '');
672
-
673
- $tree.tree('destroy');
674
-
675
- // 2. autoOpen is true
676
- $tree.tree({
677
- data: data,
678
- autoOpen: true
679
- });
680
- equal(formatOpenFolders(), 'l1n1;l2n2;l3n1');
681
-
682
- $tree.tree('destroy');
683
-
684
- // 3. autoOpen level 1
685
- $tree.tree({
686
- data: data,
687
- autoOpen: 1
688
- });
689
- equal(formatOpenFolders(), 'l1n1;l2n2');
690
- });
691
-
692
- test('onCreateLi', function() {
693
- // 1. init tree with onCreateLi
694
- var $tree = $('#tree1');
695
- $tree.tree({
696
- data: example_data,
697
- onCreateLi: function(node, $li) {
698
- var $span = $li.children('.jqtree-element').find('span');
699
- $span.html('_' + node.name + '_');
700
- }
701
- });
702
-
703
- equal(
704
- $tree.find('span:eq(0)').text(),
705
- '_node1_'
706
- );
707
- });
708
-
709
- test('save state', function() {
710
- // setup
711
- var state = null;
712
-
713
- // Fake $.cookie plugin for browsers that do not support localstorage
714
- $.cookie = function(key, param2, param3) {
715
- if (typeof param3 == 'object') {
716
- // set
717
- state = param2;
718
- }
719
- else {
720
- // get
721
- return state;
722
- }
723
- }
724
-
725
- // Remove state from localstorage
726
- if (typeof localStorage != 'undefined') {
727
- localStorage.setItem('my_tree', null);
728
- }
729
-
730
- // 1. init tree
731
- var $tree = $('#tree1');
732
- $tree.tree({
733
- data: example_data,
734
- selectable: true,
735
- saveState: 'my_tree'
736
- });
737
-
738
- var tree = $tree.tree('getTree');
739
- equal($tree.tree('getSelectedNode'), false);
740
-
741
- // 2. select node -> state is saved
742
- $tree.tree('selectNode', tree.children[0]);
743
- equal($tree.tree('getSelectedNode').name, 'node1');
744
-
745
- // 3. init tree again
746
- $tree.tree('destroy');
747
-
748
- $tree.tree({
749
- data: example_data,
750
- selectable: true,
751
- saveState: 'my_tree'
752
- });
753
-
754
- equal($tree.tree('getSelectedNode').name, 'node1');
755
-
756
- $.cookie = null;
757
- });
758
-
759
- test('generate hit areas', function() {
760
- // setup
761
- var $tree = $('#tree1');
762
- $tree.tree({
763
- data: example_data
764
- });
765
-
766
- // 1. get hit areas
767
- var node = $tree.tree('getNodeById', 123);
768
- var hit_areas = $tree.tree('testGenerateHitAreas', node);
769
-
770
- var strings = $.map(hit_areas, function(hit_area) {
771
- return hit_area.node.name + ' ' + Position.getName(hit_area.position);
772
- });
773
- equal(strings.join(';'), 'node1 none;node2 inside;node2 after');
774
- });
775
-
776
- test('removeNode', function() {
777
- // setup
778
- var $tree = $('#tree1');
779
- $tree.tree({
780
- data: example_data,
781
- selectable: true
782
- });
783
-
784
- // 1. Remove selected node; node is 'child1'
785
- var child1 = $tree.tree('getNodeByName', 'child1');
786
- $tree.tree('selectNode', child1);
787
-
788
- equal($tree.tree('getSelectedNode').name, 'child1');
789
-
790
- $tree.tree('removeNode', child1);
791
-
792
- equal(
793
- formatTitles($tree),
794
- 'node1 child2 node2 child3'
795
- );
796
-
797
- // getSelectedNode must now return false
798
- equal($tree.tree('getSelectedNode'), false);
799
-
800
- // 2. No node is selected; remove child3
801
- $tree.tree('loadData', example_data);
802
-
803
- var child3 = $tree.tree('getNodeByName', 'child3');
804
- $tree.tree('removeNode', child3);
805
-
806
- equal(
807
- formatTitles($tree),
808
- 'node1 child1 child2 node2'
809
- );
810
-
811
- equal($tree.tree('getSelectedNode'), false);
812
-
813
- // 3. Remove parent of selected node
814
- $tree.tree('loadData', example_data);
815
-
816
- child1 = $tree.tree('getNodeByName', 'child1');
817
- var node1 = $tree.tree('getNodeByName', 'node1');
818
-
819
- $tree.tree('selectNode', child1);
820
-
821
- $tree.tree('removeNode', node1);
822
-
823
- // node is unselected
824
- equal($tree.tree('getSelectedNode'), false);
825
-
826
- // 4. Remove unselected node without an id
827
- $tree.tree('loadData', example_data2);
828
-
829
- var c1 = $tree.tree('getNodeByName', 'c1');
830
-
831
- $tree.tree('removeNode', c1);
832
-
833
- equal(
834
- formatTitles($tree),
835
- 'main c2'
836
- )
837
- });
838
-
839
- test('appendNode', function() {
840
- // setup
841
- var $tree = $('#tree1');
842
- $tree.tree({
843
- data: example_data
844
- });
845
-
846
- var node1 = $tree.tree('getNodeByName', 'node1');
847
-
848
- // 1. Add child3 to node1
849
- $tree.tree('appendNode', 'child3', node1);
850
-
851
- equal(
852
- formatTitles($(node1.element)),
853
- 'node1 child1 child2 child3'
854
- );
855
-
856
- // 2. Add child4 to child1
857
- var child1 = $tree.tree('getNodeByName', 'child1');
858
-
859
- // Node 'child1' does not have a toggler button
860
- equal(
861
- $(child1.element).find('> .jqtree-element > .jqtree-toggler').length,
862
- 0
863
- );
864
-
865
- $tree.tree('appendNode', 'child4', child1);
866
-
867
- equal(formatTitles($(child1.element)), 'child1 child4');
868
-
869
- // Node 'child1' must get a toggler button
870
- equal(
871
- $(child1.element).find('> .jqtree-element > .jqtree-toggler').length,
872
- 1
873
- );
874
- });
875
-
876
- test('prependNode', function() {
877
- // setup
878
- var $tree = $('#tree1');
879
- $tree.tree({
880
- data: example_data
881
- });
882
-
883
- var node1 = $tree.tree('getNodeByName', 'node1');
884
-
885
- // 1. Prepend child0 to node1
886
- $tree.tree('prependNode', 'child0', node1);
887
-
888
- equal(
889
- formatTitles($(node1.element)),
890
- 'node1 child0 child1 child2'
891
- );
892
- });
893
- test('init event', function() {
894
- // setup
895
- var $tree = $('#tree1');
896
-
897
- $tree.bind('tree.init', function() {
898
- start();
899
-
900
- // Check that we can call functions in 'tree.init' event
901
- equal($tree.tree('getNodeByName', 'node2').name, 'node2');
902
- });
903
- stop();
904
-
905
- $tree.tree({
906
- data: example_data
907
- });
908
- });
909
-
910
- test('updateNode', function() {
911
- // setup
912
- var $tree = $('#tree1');
913
-
914
- $tree.tree({ data: example_data });
915
-
916
- equal(formatTitles($tree), 'node1 child1 child2 node2 child3');
917
-
918
- // -- update label
919
- var node2 = $tree.tree('getNodeByName', 'node2');
920
- $tree.tree('updateNode', node2, 'CHANGED');
921
-
922
- equal(formatTitles($tree), 'node1 child1 child2 CHANGED child3');
923
- equal(node2.name, 'CHANGED');
924
-
925
- // -- update data
926
- $tree.tree(
927
- 'updateNode',
928
- node2,
929
- {
930
- name: 'xyz',
931
- tag1: 'abc'
932
- }
933
- );
934
-
935
- equal(formatTitles($tree), 'node1 child1 child2 xyz child3');
936
- equal(node2.name, 'xyz');
937
- equal(node2.tag1, 'abc');
938
-
939
- // - update id
940
- equal(node2.id, 124);
941
-
942
- $tree.tree('updateNode', node2, {id: 555});
943
-
944
- equal(node2.id, 555);
945
- equal(node2.name, 'xyz');
946
-
947
- // get node by id
948
- var node_555 = $tree.tree('getNodeById', 555);
949
- equal(node_555.name, 'xyz');
950
-
951
- var node_124 = $tree.tree('getNodeById', 124);
952
- equal(node_124, undefined);
953
-
954
- // update child1
955
- var child1 = $tree.tree('getNodeByName', 'child1');
956
-
957
- $tree.tree('updateNode', child1, 'child1a');
958
-
959
- equal(formatTitles($tree), 'node1 child1a child2 xyz child3');
960
-
961
- // select child1
962
- $tree.tree('selectNode', child1);
963
- $tree.tree('updateNode', child1, 'child1b');
964
-
965
- ok($(child1.element).hasClass('jqtree-selected'));
966
- });
967
-
968
- test('moveNode', function() {
969
- // setup
970
- var $tree = $('#tree1');
971
-
972
- $tree.tree({ data: example_data });
973
-
974
- var child1 = $tree.tree('getNodeByName', 'child1');
975
- var child2 = $tree.tree('getNodeByName', 'child2');
976
- var node1 = $tree.tree('getNodeByName', 'node1');
977
- var node2 = $tree.tree('getNodeByName', 'node2');
978
-
979
- // -- Move child1 after node2
980
- $tree.tree('moveNode', child1, node2, 'after');
981
-
982
- equal(formatTitles($tree), 'node1 child2 node2 child3 child1');
983
-
984
- // -- Check that illegal moves are skipped
985
- $tree.tree('moveNode', node1, child2, 'inside');
986
- });
987
-
988
- test('load on demand', function() {
989
- // setup
990
- var $tree = $('#tree1');
991
-
992
- $tree.tree({
993
- data: [
994
- {
995
- id: 1,
996
- label: 'node1',
997
- load_on_demand: true
998
- }
999
- ],
1000
- dataUrl: '/tree/'
1001
- });
1002
-
1003
- $.mockjax({
1004
- url: '*',
1005
- response: function(options) {
1006
- equal(options.url, '/tree/', '2');
1007
- deepEqual(options.data, { 'node' : 1 }, '3')
1008
-
1009
- this.responseText = [
1010
- {
1011
- id: 2,
1012
- label: 'child1'
1013
- }
1014
- ];
1015
- },
1016
- logging: false
1017
- });
1018
-
1019
- // -- open node
1020
- $tree.bind('tree.refresh', function(e) {
1021
- start();
1022
-
1023
- equal(formatTitles($tree), 'node1 child1', '4');
1024
- });
1025
-
1026
- var node1 = $tree.tree('getNodeByName', 'node1');
1027
- equal(formatTitles($tree), 'node1', '1');
1028
-
1029
- $tree.tree('openNode', node1, true);
1030
-
1031
- stop();
1032
- });
1033
-
1034
- test('addNodeAfter', function() {
1035
- // setup
1036
- var $tree = $('#tree1');
1037
-
1038
- $tree.tree({ data: example_data });
1039
- var node1 = $tree.tree('getNodeByName', 'node1');
1040
-
1041
- // -- add node after node1
1042
- $tree.tree('addNodeAfter', 'node3', node1);
1043
-
1044
- equal(formatTitles($tree), 'node1 child1 child2 node3 node2 child3');
1045
- });
1046
-
1047
- test('addNodeBefore', function() {
1048
- // setup
1049
- var $tree = $('#tree1');
1050
-
1051
- $tree.tree({ data: example_data });
1052
- var node1 = $tree.tree('getNodeByName', 'node1');
1053
-
1054
- // -- add node before node1
1055
- var new_node = $tree.tree('addNodeBefore', 'node3', node1);
1056
-
1057
- equal(formatTitles($tree), 'node3 node1 child1 child2 node2 child3');
1058
- });
1059
-
1060
- test('addParentNode', function() {
1061
- // setup
1062
- var $tree = $('#tree1');
1063
-
1064
- $tree.tree({ data: example_data });
1065
- var child3 = $tree.tree('getNodeByName', 'child3');
1066
-
1067
- // -- add parent to child3
1068
- $tree.tree('addParentNode', 'node3', child3);
1069
-
1070
- equal(formatTitles($tree), 'node1 child1 child2 node2 node3 child3');
1071
- });
1072
-
1073
- test('mouse events', function() {
1074
- // setup
1075
- var $tree = $('#tree1');
1076
- $tree.tree({
1077
- data: example_data,
1078
- dragAndDrop: true,
1079
- autoOpen: true
1080
- });
1081
- $tree.tree('setMouseDelay', 0);
1082
-
1083
- function getTitleElement(node_name) {
1084
- var node = $tree.tree('getNodeByName', node_name);
1085
- var $el = $(node.element);
1086
- return $($el.find('.jqtree-title'));
1087
- }
1088
-
1089
- var $node1 = getTitleElement('node1');
1090
- var $child3 = getTitleElement('child3');
1091
-
1092
- // Move node1 inside child3
1093
- // trigger mousedown event on node1
1094
- $node1.trigger(
1095
- $.Event('mousedown', { which: 1 })
1096
- );
1097
-
1098
- // trigger mouse move to child3
1099
- var child3_offset = $child3.offset();
1100
- $tree.trigger(
1101
- $.Event('mousemove', { pageX: child3_offset.left, pageY: child3_offset.top })
1102
- );
1103
- $tree.trigger('mouseup');
1104
-
1105
- equal(
1106
- formatTitles($tree),
1107
- 'node2 child3 node1 child1 child2'
1108
- );
1109
- });
1110
-
1111
- test('multiple select', function() {
1112
- // setup
1113
- var $tree = $('#tree1');
1114
- $tree.tree({ data: example_data });
1115
-
1116
- var child1 = $tree.tree('getNodeByName', 'child1');
1117
- var child2 = $tree.tree('getNodeByName', 'child2');
1118
-
1119
- // -- add nodes to selection
1120
- // todo: more nodes as parameters?
1121
- // todo: rename to 'selection.add' or 'selection' 'add'?
1122
- $tree.tree('addToSelection', child1);
1123
- $tree.tree('addToSelection', child2);
1124
-
1125
- // -- get selected nodes
1126
- var selected_nodes = $tree.tree('getSelectedNodes');
1127
- equal(
1128
- formatNodes(selected_nodes),
1129
- 'child1 child2'
1130
- );
1131
- });
1132
-
1133
- test('keyboard', function() {
1134
- // setup
1135
- var $tree = $('#tree1');
1136
-
1137
- function keyDown(key) {
1138
- $tree.trigger(
1139
- $.Event('keydown', { which: key })
1140
- );
1141
- }
1142
-
1143
- $tree.tree({ data: example_data });
1144
-
1145
- var node1 = $tree.tree('getNodeByName', 'node1');
1146
-
1147
- // select node1
1148
- $tree.tree('selectNode', node1);
1149
- equal(node1.is_open, undefined);
1150
-
1151
- // - move down; -> node2
1152
- keyDown(40);
1153
- equal($tree.tree('getSelectedNode').name, 'node2');
1154
-
1155
- // - move up; -> back to node1
1156
- keyDown(38);
1157
- equal($tree.tree('getSelectedNode').name, 'node1');
1158
-
1159
- // - move right; open node1
1160
- keyDown(39);
1161
- equal(node1.is_open, true);
1162
- equal($tree.tree('getSelectedNode').name, 'node1');
1163
-
1164
- // - select child3 and move up -> node2
1165
- $tree.tree('selectNode', $tree.tree('getNodeByName', 'child3'));
1166
- keyDown(38);
1167
- equal($tree.tree('getSelectedNode').name, 'node2');
1168
-
1169
- // - move up -> child2
1170
- keyDown(38);
1171
- equal($tree.tree('getSelectedNode').name, 'child2');
1172
-
1173
- // - select node1 and move left -> close
1174
- $tree.tree('selectNode', node1);
1175
- keyDown(37);
1176
- equal(node1.is_open, false);
1177
- equal($tree.tree('getSelectedNode').name, 'node1');
1178
- });
1179
-
1180
- test('getNodesByProperty', function(){
1181
- // setup
1182
- var $tree = $('#tree1');
1183
- $tree.tree({
1184
- data: example_data
1185
- });
1186
- var node2 = $tree.tree('getNodeByName', 'node2');
1187
-
1188
- // 1. get 'node1' by property
1189
- equal(
1190
- $tree.tree('getNodesByProperty', 'int_property', 1)[0].name,
1191
- 'node1'
1192
- );
1193
-
1194
- // 2. get property that does not exist in any node
1195
- equal($tree.tree('getNodesByProperty', 'int_property', 123).length, 0);
1196
-
1197
- // 3. get string property
1198
- equal(
1199
- $tree.tree('getNodesByProperty', 'str_property', '1')[0].name,
1200
- 'node1'
1201
- );
1202
-
1203
- // 4. add node with string id; search by int
1204
- $tree.tree(
1205
- 'appendNode',
1206
- {
1207
- label: 'abc',
1208
- id: '234',
1209
- str_property: '111',
1210
- int_property: 111
1211
- }
1212
- );
1213
-
1214
- equal(
1215
- $tree.tree('getNodesByProperty', 'int_property', 111)[0].name,
1216
- 'abc'
1217
- );
1218
- equal(
1219
- $tree.tree('getNodesByProperty', 'str_property', '111')[0].name,
1220
- 'abc'
1221
- );
1222
-
1223
- // 5. load subtree in node2
1224
- var subtree_data = [
1225
- {
1226
- label: 'sub1',
1227
- id: 200,
1228
- int_property: 222,
1229
- children: [
1230
- {label: 'sub2', id: 201, int_property: 444}
1231
- ]
1232
- }
1233
- ];
1234
- $tree.tree('loadData', subtree_data, node2);
1235
- var t = $tree.tree('getTree');
1236
-
1237
- equal(
1238
- $tree.tree('getNodesByProperty', 'int_property', 222)[0].name,
1239
- 'sub1'
1240
- );
1241
- equal(
1242
- $tree.tree('getNodesByProperty', 'int_property', 444)[0].name,
1243
- 'sub2'
1244
- );
1245
- });
1246
-
1247
- QUnit.module("Tree");
1248
- test('constructor', function() {
1249
- // 1. Create node from string
1250
- var node = new Node('n1');
1251
-
1252
- equal(node.name, 'n1');
1253
- equal(node.children.length, 0);
1254
- equal(node.parent, null);
1255
-
1256
- // 2. Create node from object
1257
- node = new Node({
1258
- label: 'n2',
1259
- id: 123,
1260
- parent: 'abc', // parent must be ignored
1261
- children: ['c'], // children must be ignored
1262
- url: '/'
1263
- });
1264
-
1265
- equal(node.name, 'n2');
1266
- equal(node.id, 123);
1267
- equal(node.url, '/');
1268
- equal(node.label, undefined);
1269
- equal(node.children.length, 0);
1270
- equal(node.parent, null);
1271
- });
1272
-
1273
- test("create tree from data", function() {
1274
- function checkData(tree) {
1275
- equal(
1276
- formatNodes(tree.children),
1277
- 'node1 node2',
1278
- 'nodes on level 1'
1279
- );
1280
- equal(
1281
- formatNodes(tree.children[0].children),
1282
- 'child1 child2',
1283
- 'children of node1'
1284
- );
1285
- equal(
1286
- formatNodes(tree.children[1].children),
1287
- 'child3',
1288
- 'children of node2'
1289
- );
1290
- equal(
1291
- tree.children[0].id,
1292
- 123,
1293
- 'id'
1294
- );
1295
- }
1296
-
1297
- // - create tree from example data
1298
- var tree = new Node(null, true);
1299
- tree.loadFromData(example_data);
1300
- checkData(tree);
1301
-
1302
- // - create tree from new data format
1303
- var data = [
1304
- {
1305
- label: 'node1',
1306
- id: 123,
1307
- children: ['child1', 'child2'] // nodes are only defined by a string
1308
- },
1309
- {
1310
- label: 'node2',
1311
- id: 124,
1312
- children: ['child3']
1313
- }
1314
- ];
1315
- var tree = new Node(null, true);
1316
- tree.loadFromData(data);
1317
- checkData(tree);
1318
- });
1319
-
1320
- test("addChild", function() {
1321
- var tree = new Node('tree1', true);
1322
- tree.addChild(
1323
- new Node('abc')
1324
- );
1325
- tree.addChild(
1326
- new Node('def')
1327
- );
1328
-
1329
- equal(
1330
- formatNodes(tree.children),
1331
- 'abc def',
1332
- 'children'
1333
- );
1334
-
1335
- var node = tree.children[0];
1336
- equal(
1337
- node.parent.name,
1338
- 'tree1',
1339
- 'parent of node'
1340
- );
1341
- });
1342
-
1343
- test('addChildAtPosition', function() {
1344
- var tree = new Node(null, true);
1345
- tree.addChildAtPosition(new Node('abc'), 0); // first
1346
- tree.addChildAtPosition(new Node('ghi'), 2); // index 2 does not exist
1347
- tree.addChildAtPosition(new Node('def'), 1);
1348
- tree.addChildAtPosition(new Node('123'), 0);
1349
-
1350
- equal(
1351
- formatNodes(tree.children),
1352
- '123 abc def ghi',
1353
- 'children'
1354
- );
1355
- });
1356
-
1357
- test('removeChild', function() {
1358
- var tree = new Node(null, true);
1359
-
1360
- var abc = new Node({'label': 'abc', 'id': 1});
1361
- var def = new Node({'label': 'def', 'id': 2});
1362
- var ghi = new Node({'label': 'ghi', 'id': 3});
1363
-
1364
- tree.addChild(abc);
1365
- tree.addChild(def);
1366
- tree.addChild(ghi);
1367
-
1368
- var jkl = new Node({'label': 'jkl', 'id': 4});
1369
- def.addChild(jkl);
1370
-
1371
- equal(
1372
- formatNodes(tree.children),
1373
- 'abc def ghi',
1374
- 'children'
1375
- );
1376
-
1377
- equal(tree.id_mapping[2].name, 'def');
1378
- equal(tree.id_mapping[4].name, 'jkl');
1379
-
1380
- // remove 'def'
1381
- tree.removeChild(def);
1382
- equal(
1383
- formatNodes(tree.children),
1384
- 'abc ghi',
1385
- 'children'
1386
- );
1387
-
1388
- equal(tree.id_mapping[2], null);
1389
- equal(tree.id_mapping[4], null);
1390
-
1391
- // remove 'ghi'
1392
- tree.removeChild(ghi);
1393
- equal(
1394
- formatNodes(tree.children),
1395
- 'abc',
1396
- 'children'
1397
- );
1398
-
1399
- // remove 'abc'
1400
- tree.removeChild(abc);
1401
- equal(
1402
- formatNodes(tree.children),
1403
- '',
1404
- 'children'
1405
- );
1406
- });
1407
-
1408
- test('getChildIndex', function() {
1409
- // setup
1410
- var tree = new Node(null, true);
1411
-
1412
- var abc = new Node('abc');
1413
- var def = new Node('def');
1414
- var ghi = new Node('ghi');
1415
- tree.addChild(abc);
1416
- tree.addChild(def);
1417
- tree.addChild(ghi);
1418
-
1419
- // 1. Get child index of 'def'
1420
- equal(tree.getChildIndex(def), 1);
1421
-
1422
- // 2. Get child index of non-existing node
1423
- equal(tree.getChildIndex(new Node('xyz')), -1);
1424
- });
1425
-
1426
- test('hasChildren', function() {
1427
- var tree = new Node(null, true);
1428
- equal(
1429
- tree.hasChildren(),
1430
- false,
1431
- 'tree without children'
1432
- );
1433
-
1434
- tree.addChild(new Node('abc'));
1435
- equal(
1436
- tree.hasChildren(),
1437
- true,
1438
- 'tree has children'
1439
- );
1440
- });
1441
-
1442
- test('iterate', function() {
1443
- var tree = new Node(null, true);
1444
- tree.loadFromData(example_data);
1445
-
1446
- // iterate over all the nodes
1447
- var nodes = [];
1448
- tree.iterate(
1449
- function(node, level) {
1450
- nodes.push(node);
1451
- return true;
1452
- }
1453
- );
1454
-
1455
- equal(
1456
- formatNodes(nodes),
1457
- 'node1 child1 child2 node2 child3',
1458
- 'all nodes'
1459
- );
1460
-
1461
- // iterate over nodes on first level
1462
- nodes = [];
1463
- tree.iterate(
1464
- function(node, level) {
1465
- nodes.push(node);
1466
- return false;
1467
- }
1468
- );
1469
-
1470
- equal(
1471
- formatNodes(nodes),
1472
- 'node1 node2',
1473
- 'nodes on first level'
1474
- );
1475
-
1476
- // add child 4
1477
- var node3 = tree.getNodeById(124).children[0];
1478
- node3.addChild(
1479
- new Node('child4')
1480
- );
1481
-
1482
- // test level parameter
1483
- nodes = [];
1484
- tree.iterate(
1485
- function(node, level) {
1486
- nodes.push(node.name + ' ' + level);
1487
- return true;
1488
- }
1489
- );
1490
-
1491
- equal(
1492
- nodes.join(','),
1493
- 'node1 0,child1 1,child2 1,node2 0,child3 1,child4 2'
1494
- );
1495
- });
1496
-
1497
- test('moveNode', function() {
1498
- var tree = new Node(null, true);
1499
- tree.loadFromData(example_data);
1500
-
1501
- /*
1502
- node1
1503
- ---child1
1504
- ---child2
1505
- node2
1506
- ---child3
1507
- */
1508
-
1509
- var node1 = tree.children[0];
1510
- var node2 = tree.children[1];
1511
- var child1 = node1.children[0];
1512
- var child2 = node1.children[1];
1513
- equal(node2.name, 'node2', 'node2 name');
1514
- equal(child2.name, 'child2', 'child2 name');
1515
-
1516
- // move child2 after node2
1517
- tree.moveNode(child2, node2, Position.AFTER);
1518
-
1519
- /*
1520
- node1
1521
- ---child1
1522
- node2
1523
- ---child3
1524
- child2
1525
- */
1526
- equal(
1527
- formatNodes(tree.children),
1528
- 'node1 node2 child2',
1529
- 'tree nodes at first level'
1530
- );
1531
- equal(
1532
- formatNodes(node1.children),
1533
- 'child1',
1534
- 'node1 children'
1535
- );
1536
-
1537
- // move child1 inside node2
1538
- // this means it's the first child
1539
- tree.moveNode(child1, node2, Position.INSIDE);
1540
-
1541
- /*
1542
- node1
1543
- node2
1544
- ---child1
1545
- ---child3
1546
- child2
1547
- */
1548
- equal(
1549
- formatNodes(node2.children),
1550
- 'child1 child3',
1551
- 'node2 children'
1552
- );
1553
- equal(
1554
- formatNodes(node1.children),
1555
- '',
1556
- 'node1 has no children'
1557
- );
1558
-
1559
- // move child2 before child1
1560
- tree.moveNode(child2, child1, Position.BEFORE);
1561
-
1562
- /*
1563
- node1
1564
- node2
1565
- ---child2
1566
- ---child1
1567
- ---child3
1568
- */
1569
- equal(
1570
- formatNodes(node2.children),
1571
- 'child2 child1 child3',
1572
- 'node2 children'
1573
- );
1574
- equal(
1575
- formatNodes(tree.children),
1576
- 'node1 node2',
1577
- 'tree nodes at first level'
1578
- );
1579
- });
1580
-
1581
- test('initFromData', function() {
1582
- var data =
1583
- {
1584
- label: 'main',
1585
- children: [
1586
- 'c1',
1587
- {
1588
- label: 'c2',
1589
- id: 201
1590
- }
1591
- ]
1592
- };
1593
- var node = new Node(null, true);
1594
- node.initFromData(data);
1595
-
1596
- equal(node.name, 'main')
1597
- equal(
1598
- formatNodes(node.children),
1599
- 'c1 c2',
1600
- 'children'
1601
- );
1602
- equal(node.children[1].id, 201);
1603
- });
1604
-
1605
- test('getData', function() {
1606
- // 1. empty node
1607
- var node = new Node(null, true);
1608
- deepEqual(node.getData(), []);
1609
-
1610
- // 2.node with data
1611
- node.loadFromData(
1612
- [
1613
- {
1614
- label: 'n1',
1615
- children: [
1616
- {
1617
- label: 'c1'
1618
- }
1619
- ]
1620
- }
1621
- ]
1622
- );
1623
- deepEqual(
1624
- node.getData(),
1625
- [
1626
- {
1627
- name: 'n1',
1628
- children: [
1629
- {
1630
- name: 'c1'
1631
- }
1632
- ]
1633
- }
1634
- ]
1635
- );
1636
- });
1637
-
1638
- test('addAfter', function() {
1639
- // setup
1640
- var tree = new Node(null, true);
1641
- tree.loadFromData(example_data);
1642
-
1643
- /*
1644
- -node1
1645
- ---c1
1646
- ---c2
1647
- -node2
1648
- ---c3
1649
- */
1650
-
1651
- equal(formatNodes(tree.children), 'node1 node2');
1652
-
1653
- // - Add 'node_b' after node2
1654
- var node2 = tree.getNodeByName('node2');
1655
- node2.addAfter('node_b');
1656
-
1657
- equal(formatNodes(tree.children), 'node1 node2 node_b');
1658
-
1659
- var node_b = tree.getNodeByName('node_b');
1660
- equal(node_b.name, 'node_b');
1661
-
1662
- // - Add 'node_a' after node1
1663
- var node1 = tree.getNodeByName('node1');
1664
- node1.addAfter('node_a');
1665
-
1666
- equal(formatNodes(tree.children), 'node1 node_a node2 node_b');
1667
-
1668
- // - Add 'node_c' after node_b; new node is an object
1669
- node_b.addAfter({
1670
- label: 'node_c',
1671
- id: 789
1672
- });
1673
-
1674
- var node_c = tree.getNodeByName('node_c');
1675
- equal(node_c.id, 789);
1676
-
1677
- equal(formatNodes(tree.children), 'node1 node_a node2 node_b node_c');
1678
-
1679
- // - Add after root node; this is not possible
1680
- equal(tree.addAfter('node_x'), null);
1681
- });
1682
-
1683
- test('addBefore', function() {
1684
- // setup
1685
- var tree = new Node(null, true);
1686
- tree.loadFromData(example_data);
1687
-
1688
- // - Add 'node_0' before node1
1689
- var node1 = tree.getNodeByName('node1');
1690
- node1.addBefore('node0');
1691
- equal(formatNodes(tree.children), 'node0 node1 node2');
1692
-
1693
- // - Add before root node; this is not possile
1694
- equal(tree.addBefore('x'), null);
1695
- });
1696
-
1697
- test('addParent', function() {
1698
- // setup
1699
- var tree = new Node(null, true);
1700
- tree.loadFromData(example_data);
1701
-
1702
- // - Add node 'root' as parent of node1
1703
- // Note that node also becomes a child of 'root'
1704
- var node1 = tree.getNodeByName('node1');
1705
- node1.addParent('root');
1706
-
1707
- var root = tree.getNodeByName('root');
1708
- equal(formatNodes(root.children), 'node1 node2');
1709
-
1710
- // - Add parent to root node; not possible
1711
- equal(tree.addParent('x'), null);
1712
- });
1713
-
1714
- test('remove', function() {
1715
- // setup
1716
- var tree = new Node(null, true);
1717
- tree.loadFromData(example_data);
1718
-
1719
- var child1 = tree.getNodeByName('child1');
1720
- var node1 = tree.getNodeByName('node1');
1721
-
1722
- equal(formatNodes(node1.children), 'child1 child2');
1723
- equal(child1.parent, node1);
1724
-
1725
- // 1. Remove child1
1726
- child1.remove();
1727
-
1728
- equal(formatNodes(node1.children), 'child2');
1729
- equal(child1.parent, null);
1730
- });
1731
-
1732
- test('append', function() {
1733
- // setup
1734
- var tree = new Node(null, true);
1735
- tree.loadFromData(example_data);
1736
-
1737
- var node1 = tree.getNodeByName('node1');
1738
-
1739
- // 1. Add child3 to node1
1740
- node1.append('child3');
1741
-
1742
- equal(formatNodes(node1.children), 'child1 child2 child3');
1743
- });
1744
-
1745
- test('prepend', function() {
1746
- // setup
1747
- var tree = new Node(null, true);
1748
- tree.loadFromData(example_data);
1749
-
1750
- var node1 = tree.getNodeByName('node1');
1751
-
1752
- // 1. Prepend child0 to node1
1753
- node1.prepend('child0');
1754
-
1755
- equal(formatNodes(node1.children), 'child0 child1 child2');
1756
- });
1757
-
1758
- test('getNodeById', function() {
1759
- // setup
1760
- var tree = new Node(null, true);
1761
- tree.loadFromData(example_data);
1762
-
1763
- // 1. Get node with id 124
1764
- var node = tree.getNodeById(124);
1765
- equal(node.name, 'node2');
1766
-
1767
- // 2. Delete node with id 124 and search again
1768
- node.remove();
1769
-
1770
- equal(tree.getNodeById(124), null);
1771
-
1772
- // 3. Add node with id 456 and search for it
1773
- var child3 = tree.getNodeByName('child2');
1774
- child3.append({
1775
- id: 456,
1776
- label: 'new node'
1777
- });
1778
-
1779
- node = tree.getNodeById(456);
1780
- equal(node.name, 'new node');
1781
- });
1782
-
1783
- test('getLevel', function() {
1784
- // setup
1785
- var tree = new Node(null, true);
1786
- tree.loadFromData(example_data);
1787
-
1788
- // 1. get level for node1 and child1
1789
- equal(tree.getNodeByName('node1').getLevel(), 1);
1790
- equal(tree.getNodeByName('child1').getLevel(), 2);
1791
- });
1792
-
1793
- test('loadFromData and id mapping', function() {
1794
- // - get node from empty tree
1795
- var tree = new Node(null, true);
1796
- equal(tree.getNodeById(999), null);
1797
-
1798
- // - load example data in tree
1799
- tree.loadFromData(example_data);
1800
- equal(tree.getNodeById(124).name, 'node2');
1801
-
1802
- var child2 = tree.getNodeById(126);
1803
- child2.addChild(
1804
- new Node({label: 'child4', id: 128})
1805
- );
1806
- child2.addChild(
1807
- new Node({label: 'child5', id: 129})
1808
- );
1809
-
1810
- // - load data in node child2
1811
- child2.loadFromData(['abc', 'def']);
1812
-
1813
- equal(tree.getNodeById(128), null);
1814
- equal(child2.children.length, 2);
1815
- equal(child2.children[0].name, 'abc');
1816
- });
1817
-
1818
- test('removeChildren', function() {
1819
- // - load example data
1820
- var tree = new Node(null, true);
1821
- tree.loadFromData(example_data);
1822
-
1823
- // add child4 and child5
1824
- var child2 = tree.getNodeById(126);
1825
- equal(child2.name, 'child2');
1826
-
1827
- child2.addChild(
1828
- new Node({label: 'child4', id: 128})
1829
- );
1830
- child2.addChild(
1831
- new Node({label: 'child5', id: 129})
1832
- );
1833
- equal(tree.getNodeById(128).name, 'child4');
1834
-
1835
- // - remove children from child2
1836
- child2.removeChildren();
1837
- equal(tree.getNodeById(128), null);
1838
- equal(child2.children.length, 0);
1839
- });
1840
-
1841
- test('node with id 0', function() {
1842
- // - load node with id 0
1843
- var tree = new Node(null, true);
1844
- tree.loadFromData([
1845
- {
1846
- id: 0,
1847
- label: 'mynode'
1848
- }
1849
- ]);
1850
-
1851
- // - get node by id
1852
- var node = tree.getNodeById(0);
1853
- equal(node.name, 'mynode');
1854
-
1855
- // -- remove the node
1856
- node.remove();
1857
-
1858
- equal(tree.getNodeById(0), undefined);
1859
- });
1860
-
1861
- test('getPreviousSibling', function() {
1862
- // setup
1863
- var tree = new Node(null, true);
1864
- tree.loadFromData(example_data);
1865
-
1866
- // - getPreviousSibling
1867
- equal(
1868
- tree.getNodeByName('child2').getPreviousSibling().name,
1869
- 'child1'
1870
- );
1871
- equal(tree.getPreviousSibling(), null);
1872
- equal(
1873
- tree.getNodeByName('child1').getPreviousSibling(),
1874
- null
1875
- );
1876
- });
1877
-
1878
- test('getNextSibling', function() {
1879
- // setup
1880
- var tree = new Node(null, true);
1881
- tree.loadFromData(example_data);
1882
-
1883
- // - getNextSibling
1884
- equal(
1885
- tree.getNodeByName('node1').getNextSibling().name,
1886
- 'node2'
1887
- );
1888
- equal(
1889
- tree.getNodeByName('node2').getNextSibling(),
1890
- null
1891
- );
1892
- equal(tree.getNextSibling(), null);
1893
- });
1894
-
1895
- test('getNodesByProperty', function() {
1896
- var tree = new Node(null, true);
1897
- tree.loadFromData(example_data);
1898
-
1899
- nodes = tree.getNodesByProperty('name', 'child1');
1900
-
1901
- equal(nodes.length, 1);
1902
- equal(nodes[0].name, 'child1');
1903
- });
1904
-
1905
-
1906
- QUnit.module('util');
1907
-
1908
- test('JSON.stringify', function() {
1909
- function test_stringify(stringify) {
1910
- equal(stringify('abc'), '"abc"');
1911
- equal(stringify(123), '123');
1912
- equal(stringify(true), 'true');
1913
- equal(stringify({abc: 'def'}), '{"abc":"def"}');
1914
- equal(stringify({}), '{}');
1915
- equal(stringify([1, 2, 3]), '[1,2,3]');
1916
- equal(stringify(null), 'null');
1917
- equal(stringify(Number.NEGATIVE_INFINITY), 'null');
1918
-
1919
- // test escapable
1920
- JSON.stringify("\u200c");
1921
- }
1922
-
1923
- test_stringify(JSON.stringify);
1924
- test_stringify(get_json_stringify_function());
1925
- });
1926
-
1927
- test('indexOf', function() {
1928
- equal(indexOf([3, 2, 1], 1), 2);
1929
- equal(_indexOf([3, 2, 1], 1), 2);
1930
- equal(indexOf([4, 5, 6], 1), -1);
1931
- equal(_indexOf([4, 5, 6], 1), -1);
1932
- });
1933
-
1934
- test('Position.getName', function() {
1935
- equal(Position.getName(Position.BEFORE), 'before');
1936
- equal(Position.getName(Position.AFTER), 'after');
1937
- equal(Position.getName(Position.INSIDE), 'inside');
1938
- equal(Position.getName(Position.NONE), 'none');
1939
- });
1940
-
1941
- test('Position.nameToIndex', function() {
1942
- equal(Position.nameToIndex('before'), Position.BEFORE);
1943
- equal(Position.nameToIndex('after'), Position.AFTER);
1944
- equal(Position.nameToIndex(''), 0);
1945
- });