alchemy 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +20 -0
- data/README.md +6 -0
- data/Rakefile +21 -0
- data/app/assets/fonts/alchemy/LiberationSans-Bold-webfont.eot +0 -0
- data/app/assets/fonts/alchemy/LiberationSans-Bold-webfont.svg +154 -0
- data/app/assets/fonts/alchemy/LiberationSans-Bold-webfont.ttf +0 -0
- data/app/assets/fonts/alchemy/LiberationSans-Bold-webfont.woff +0 -0
- data/app/assets/fonts/alchemy/LiberationSans-BoldItalic-webfont.eot +0 -0
- data/app/assets/fonts/alchemy/LiberationSans-BoldItalic-webfont.svg +154 -0
- data/app/assets/fonts/alchemy/LiberationSans-BoldItalic-webfont.ttf +0 -0
- data/app/assets/fonts/alchemy/LiberationSans-BoldItalic-webfont.woff +0 -0
- data/app/assets/fonts/alchemy/LiberationSans-Italic-webfont.eot +0 -0
- data/app/assets/fonts/alchemy/LiberationSans-Italic-webfont.svg +154 -0
- data/app/assets/fonts/alchemy/LiberationSans-Italic-webfont.ttf +0 -0
- data/app/assets/fonts/alchemy/LiberationSans-Italic-webfont.woff +0 -0
- data/app/assets/fonts/alchemy/LiberationSans-Regular-webfont.eot +0 -0
- data/app/assets/fonts/alchemy/LiberationSans-Regular-webfont.svg +154 -0
- data/app/assets/fonts/alchemy/LiberationSans-Regular-webfont.ttf +0 -0
- data/app/assets/fonts/alchemy/LiberationSans-Regular-webfont.woff +0 -0
- data/app/assets/fonts/alchemy/Red Hat Liberation License.txt +78 -0
- data/app/assets/fonts/alchemy/overpass_bold-web.eot +0 -0
- data/app/assets/fonts/alchemy/overpass_bold-web.svg +470 -0
- data/app/assets/fonts/alchemy/overpass_bold-web.ttf +0 -0
- data/app/assets/fonts/alchemy/overpass_bold-web.woff +0 -0
- data/app/assets/fonts/alchemy/overpass_regular-web.eot +0 -0
- data/app/assets/fonts/alchemy/overpass_regular-web.svg +470 -0
- data/app/assets/fonts/alchemy/overpass_regular-web.ttf +0 -0
- data/app/assets/fonts/alchemy/overpass_regular-web.woff +0 -0
- data/app/assets/images/alchemy/icons/action-icons.png +0 -0
- data/app/assets/images/alchemy/icons/arrow_icon.png +0 -0
- data/app/assets/images/alchemy/icons/chosen-sprite.png +0 -0
- data/app/assets/images/alchemy/icons/error_icon.png +0 -0
- data/app/assets/images/alchemy/icons/objects.png +0 -0
- data/app/assets/images/alchemy/icons/spinner.gif +0 -0
- data/app/assets/images/alchemy/icons/spinner_head.gif +0 -0
- data/app/assets/images/alchemy/icons/success_icon.png +0 -0
- data/app/assets/images/alchemy/icons/warning_icon.png +0 -0
- data/app/assets/javascripts/alchemy/flash_messages.js +12 -0
- data/app/assets/javascripts/alchemy/forms.js +25 -0
- data/app/assets/javascripts/alchemy/i18n.js +36 -0
- data/app/assets/javascripts/alchemy/login.js +130 -0
- data/app/assets/javascripts/alchemy/password.js +99 -0
- data/app/assets/stylesheets/alchemy/components/_chosen.scss +423 -0
- data/app/assets/stylesheets/alchemy/components/_content.scss +58 -0
- data/app/assets/stylesheets/alchemy/components/_helpers.scss +38 -0
- data/app/assets/stylesheets/alchemy/components/_media.scss +49 -0
- data/app/assets/stylesheets/alchemy/components/_normalize.scss +448 -0
- data/app/assets/stylesheets/alchemy/components/_shared.scss +18 -0
- data/app/assets/stylesheets/alchemy/components/buttons/_buttons.scss +241 -0
- data/app/assets/stylesheets/alchemy/components/buttons/_buttons_vars.scss +10 -0
- data/app/assets/stylesheets/alchemy/components/flash_messages/_flash_messages.scss +93 -0
- data/app/assets/stylesheets/alchemy/components/flash_messages/_flash_messages_vars.scss +3 -0
- data/app/assets/stylesheets/alchemy/components/fonts/_liberation.scss +44 -0
- data/app/assets/stylesheets/alchemy/components/fonts/_overpass.scss +24 -0
- data/app/assets/stylesheets/alchemy/components/footer/_footer.scss +53 -0
- data/app/assets/stylesheets/alchemy/components/footer/_footer_vars.scss +4 -0
- data/app/assets/stylesheets/alchemy/components/forms/_forms.scss +536 -0
- data/app/assets/stylesheets/alchemy/components/forms/_forms_ie.scss +45 -0
- data/app/assets/stylesheets/alchemy/components/forms/_forms_mixins.scss +18 -0
- data/app/assets/stylesheets/alchemy/components/forms/_forms_responsive.scss +161 -0
- data/app/assets/stylesheets/alchemy/components/forms/_forms_vars.scss +25 -0
- data/app/assets/stylesheets/alchemy/components/header/_header.scss +214 -0
- data/app/assets/stylesheets/alchemy/components/header/_header_vars.scss +11 -0
- data/app/assets/stylesheets/alchemy/components/login/_login.scss +169 -0
- data/app/assets/stylesheets/alchemy/components/login/_login_mixins.scss +7 -0
- data/app/assets/stylesheets/alchemy/components/login/_login_vars.scss +19 -0
- data/app/assets/stylesheets/alchemy/components/sprites/_sprites.scss +110 -0
- data/app/assets/stylesheets/alchemy/components/sprites/_sprites_mixins.scss +9 -0
- data/app/assets/stylesheets/alchemy/components/text/_text.scss +30 -0
- data/app/assets/stylesheets/alchemy/components/text/_text_vars.scss +1 -0
- data/app/assets/stylesheets/alchemy/composites/content_elements.scss +6 -0
- data/app/assets/stylesheets/alchemy/composites/login.scss +9 -0
- data/app/assets/stylesheets/alchemy/composites/shell.scss +4 -0
- data/app/assets/stylesheets/alchemy/partials/_base.scss +8 -0
- data/app/assets/stylesheets/alchemy/partials/_colors.scss +99 -0
- data/app/assets/stylesheets/alchemy/partials/_mixins.scss +24 -0
- data/app/assets/stylesheets/alchemy/partials/_vars.scss +31 -0
- data/app/helpers/alchemy/gettext_translations.rb +27 -0
- data/app/helpers/alchemy/layout_helper.rb +19 -0
- data/app/helpers/alchemy/rails_translations.rb +21 -0
- data/app/helpers/alchemy/translation_helper.rb +19 -0
- data/app/views/alchemy/layouts/_base.haml +20 -0
- data/app/views/alchemy/layouts/_change_password_layout.html.haml +20 -0
- data/app/views/alchemy/layouts/_common_i18n.haml +4 -0
- data/app/views/alchemy/layouts/_header_layout.haml +13 -0
- data/app/views/alchemy/layouts/_login_layout.html.haml +58 -0
- data/app/views/alchemy/layouts/_user_session_layout.haml +17 -0
- data/app/views/alchemy/layouts/shell_layout.haml +10 -0
- data/lib/alchemy.rb +6 -0
- data/lib/alchemy/version.rb +3 -0
- data/test/alchemy_test.rb +7 -0
- data/test/test_helper.rb +9 -0
- data/vendor/assets/javascripts/alchemy/html5shiv.js +298 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/css/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/css/custom-theme/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/css/custom-theme/images/ui-bg_highlight-hard_75_dadada_1x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/css/custom-theme/images/ui-bg_highlight-hard_75_e6e6e6_1x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/css/custom-theme/images/ui-bg_highlight-hard_95_ffffff_1x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/css/custom-theme/images/ui-bg_highlight-soft_80_e0e0e0_1x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/css/custom-theme/images/ui-bg_inset-hard_65_ffffff_1x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/css/custom-theme/images/ui-icons_8f8f8f_256x240.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/css/custom-theme/images/ui-icons_97baed_256x240.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/css/custom-theme/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/css/custom-theme/jquery-ui-1.8.11.custom.css +573 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/AUTHORS.txt +30 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/GPL-LICENSE.txt +278 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/MIT-LICENSE.txt +25 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/accordion/collapsible.html +57 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/accordion/custom-icons.html +69 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/accordion/default.html +85 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/accordion/fillspace.html +76 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/accordion/hoverintent.html +134 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/accordion/index.html +25 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/accordion/mouseover.html +57 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/accordion/no-auto-height.html +60 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/accordion/sortable.html +83 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/addClass/default.html +52 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/addClass/index.html +18 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/animate/default.html +61 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/animate/index.html +18 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/categories.html +71 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/combobox.html +171 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/custom-data.html +95 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/default.html +64 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/folding.html +62 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/images/jquery_32x32.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/images/jqueryui_32x32.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/images/sizzlejs_32x32.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/images/transparent_1x1.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/images/ui-anim_basic_16x16.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/index.html +27 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/london.xml +114 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/maxheight.html +79 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/multiple-remote.html +84 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/multiple.html +99 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/remote-jsonp.html +86 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/remote-with-cache.html +59 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/remote.html +59 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/search.php +640 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/autocomplete/xml.html +72 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/button/checkbox.html +44 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/button/default.html +38 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/button/icons.html +56 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/button/index.html +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/button/radio.html +39 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/button/splitbutton.html +55 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/button/toolbar.html +120 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/alt-field.html +36 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/animation.html +58 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/buttonbar.html +35 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/date-formats.html +47 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/date-range.html +49 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/default.html +33 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/dropdown-month-year.html +36 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/icon-trigger.html +37 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/images/calendar.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/index.html +31 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/inline.html +33 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/localization.html +162 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/min-max.html +33 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/multiple-calendars.html +36 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/other-months.html +37 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/datepicker/show-week.html +39 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/demos.css +334 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/dialog/animated.html +56 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/dialog/default.html +54 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/dialog/index.html +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/dialog/modal-confirmation.html +69 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/dialog/modal-form.html +167 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/dialog/modal-message.html +71 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/dialog/modal.html +60 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/draggable/constrain-movement.html +69 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/draggable/cursor-style.html +49 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/draggable/default.html +39 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/draggable/delay-start.html +45 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/draggable/events.html +77 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/draggable/handle.html +50 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/draggable/index.html +28 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/draggable/revert.html +44 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/draggable/scroll.html +51 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/draggable/snap-to.html +68 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/draggable/sortable.html +57 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/draggable/visual-feedback.html +77 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/accepted-elements.html +60 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/default.html +53 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/images/high_tatras.jpg +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/images/high_tatras2.jpg +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/images/high_tatras2_min.jpg +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/images/high_tatras3.jpg +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/images/high_tatras3_min.jpg +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/images/high_tatras4.jpg +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/images/high_tatras4_min.jpg +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/images/high_tatras_min.jpg +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/index.html +24 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/photo-manager.html +184 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/propagation.html +80 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/revert.html +61 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/shopping-cart.html +101 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/droppable/visual-feedback.html +78 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/effect/default.html +109 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/effect/easing.html +108 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/effect/index.html +19 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/hide/default.html +102 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/hide/index.html +18 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/images/calendar.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/images/demo-config-on-tile.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/images/demo-config-on.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/images/demo-spindown-closed.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/images/demo-spindown-open.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/images/icon-docs-info.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/images/pbar-ani.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/index.html +321 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/position/cycler.html +122 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/position/default.html +153 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/position/images/earth.jpg +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/position/images/flight.jpg +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/position/images/rocket.jpg +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/position/index.html +19 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/progressbar/animated.html +44 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/progressbar/default.html +35 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/progressbar/images/pbar-ani.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/progressbar/index.html +20 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/progressbar/resize.html +40 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/removeClass/default.html +52 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/removeClass/index.html +18 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/resizable/animate.html +43 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/resizable/aspect-ratio.html +42 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/resizable/constrain-area.html +47 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/resizable/default.html +40 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/resizable/delay-start.html +52 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/resizable/helper.html +43 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/resizable/index.html +28 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/resizable/max-min.html +45 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/resizable/snap-to-grid.html +42 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/resizable/synchronous-resize.html +49 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/resizable/textarea.html +41 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/resizable/visual-feedback.html +43 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/selectable/default.html +50 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/selectable/display-grid.html +55 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/selectable/index.html +20 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/selectable/serialize.html +61 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/show/default.html +104 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/show/index.html +18 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/slider/colorpicker.html +95 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/slider/default.html +37 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/slider/hotelrooms.html +59 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/slider/index.html +29 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/slider/multiple-vertical.html +77 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/slider/range-vertical.html +51 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/slider/range.html +52 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/slider/rangemax.html +50 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/slider/rangemin.html +51 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/slider/side-scroll.html +140 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/slider/slider-vertical.html +52 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/slider/steps.html +51 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/slider/tabs.html +67 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/sortable/connect-lists-through-tabs.html +78 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/sortable/connect-lists.html +58 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/sortable/default.html +51 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/sortable/delay-start.html +67 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/sortable/display-grid.html +54 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/sortable/empty-lists.html +69 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/sortable/index.html +26 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/sortable/items.html +70 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/sortable/placeholder.html +56 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/sortable/portlets.html +96 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/switchClass/default.html +47 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/switchClass/index.html +18 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/ajax.html +53 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/ajax/content1.html +4 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/ajax/content2.html +4 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/ajax/content3-slow.php +7 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/ajax/content4-broken.php +3 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/bottom.html +60 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/collapsible.html +55 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/cookie.html +56 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/default.html +49 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/index.html +25 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/manipulation.html +124 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/mouseover.html +53 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/sortable.html +58 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/tabs/vertical.html +61 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/toggle/default.html +94 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/toggle/index.html +18 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/toggleClass/default.html +46 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/demos/toggleClass/index.html +18 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/accordion.html +1017 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/addClass.html +109 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/animate.html +78 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/autocomplete.html +833 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/button.html +500 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/datepicker.html +2570 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/dialog.html +1698 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/draggable.html +1577 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/droppable.html +829 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/effect.html +143 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/hide.html +144 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/position.html +227 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/progressbar.html +460 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/removeClass.html +113 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/resizable.html +1201 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/selectable.html +848 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/show.html +144 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/slider.html +860 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/sortable.html +1952 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/switchClass.html +129 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/tabs.html +1549 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/toggle.html +144 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/docs/toggleClass.html +111 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/external/jquery.bgiframe-2.1.2.js +39 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/external/jquery.cookie.js +89 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/external/jquery.metadata.js +122 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/external/qunit.css +153 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/external/qunit.js +1261 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/jquery-1.5.1.js +8316 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/images/ui-icons_222222_256x240.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/images/ui-icons_2e83ff_256x240.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/images/ui-icons_454545_256x240.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/images/ui-icons_888888_256x240.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.accordion.css +19 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.all.css +11 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.autocomplete.css +53 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.base.css +11 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.button.css +38 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.core.css +41 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.datepicker.css +68 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.dialog.css +21 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.progressbar.css +11 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.resizable.css +20 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.selectable.css +10 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.slider.css +24 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.tabs.css +18 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/base/jquery.ui.theme.css +252 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/images/ui-bg_highlight-hard_75_dadada_1x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/images/ui-bg_highlight-hard_75_e6e6e6_1x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/images/ui-bg_highlight-hard_95_ffffff_1x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/images/ui-bg_highlight-soft_80_e0e0e0_1x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/images/ui-bg_inset-hard_65_ffffff_1x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/images/ui-icons_8f8f8f_256x240.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/images/ui-icons_97baed_256x240.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery-ui-1.8.11.custom.css +573 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.accordion.css +19 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.all.css +11 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.autocomplete.css +53 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.base.css +11 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.button.css +38 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.core.css +41 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.datepicker.css +68 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.dialog.css +21 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.progressbar.css +11 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.resizable.css +20 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.selectable.css +10 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.slider.css +24 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.tabs.css +18 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/themes/custom-theme/jquery.ui.theme.css +254 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery-ui-i18n.js +1379 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-af.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-ar-DZ.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-ar.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-az.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-bg.js +24 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-bs.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-ca.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-cs.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-da.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-de.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-el.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-en-AU.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-en-GB.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-en-NZ.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-eo.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-es.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-et.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-eu.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-fa.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-fi.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-fo.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-fr-CH.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-fr.js +25 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-gl.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-he.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-hr.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-hu.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-hy.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-id.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-is.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-it.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-ja.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-ko.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-kz.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-lt.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-lv.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-ml.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-ms.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-nl.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-no.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-pl.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-pt-BR.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-pt.js +22 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-rm.js +21 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-ro.js +26 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-ru.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-sk.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-sl.js +24 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-sq.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-sr-SR.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-sr.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-sv.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-ta.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-th.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-tj.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-tr.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-uk.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-vi.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-zh-CN.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-zh-HK.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/i18n/jquery.ui.datepicker-zh-TW.js +23 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery-ui-1.8.11.custom.js +11577 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.blind.js +49 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.bounce.js +78 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.clip.js +54 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.core.js +747 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.drop.js +50 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.explode.js +79 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.fade.js +32 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.fold.js +56 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.highlight.js +50 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.pulsate.js +51 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.scale.js +178 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.shake.js +57 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.slide.js +50 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.effects.transfer.js +45 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.accordion.js +611 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.autocomplete.js +612 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.button.js +387 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.core.js +308 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.datepicker.js +1773 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.dialog.js +857 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.draggable.js +799 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.droppable.js +285 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.mouse.js +156 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.position.js +252 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.progressbar.js +108 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.resizable.js +812 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.selectable.js +266 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.slider.js +682 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.sortable.js +1073 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.tabs.js +758 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/jquery.ui.widget.js +262 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.blind.min.js +14 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.bounce.min.js +15 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.clip.min.js +14 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.core.min.js +30 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.drop.min.js +14 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.explode.min.js +15 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.fade.min.js +13 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.fold.min.js +14 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.highlight.min.js +14 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.pulsate.min.js +14 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.scale.min.js +20 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.shake.min.js +14 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.slide.min.js +14 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.effects.transfer.min.js +14 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.accordion.min.js +30 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.autocomplete.min.js +32 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.button.min.js +25 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.core.min.js +17 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.datepicker.min.js +82 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.dialog.min.js +40 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.draggable.min.js +50 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.droppable.min.js +26 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.mouse.min.js +17 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.position.min.js +16 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.progressbar.min.js +16 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.resizable.min.js +47 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.selectable.min.js +22 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.slider.min.js +33 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.sortable.min.js +60 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.tabs.min.js +35 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/ui/minified/jquery.ui.widget.min.js +15 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/development-bundle/version.txt +1 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/js/jquery-1.5.1.min.js +16 -0
- data/vendor/assets/javascripts/alchemy/jquery-ui-1.8.11.custom/js/jquery-ui-1.8.11.custom.min.js +783 -0
- data/vendor/assets/javascripts/alchemy/jquery/jquery-1.6.2.js +8981 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/chosen.jquery.js +1003 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/API.txt +1201 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/FAQ.txt +76 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/LICENSE.txt +22 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/Makefile +9 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/NEWS.txt +508 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/PLUGINS.txt +137 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/README.txt +90 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/ajax.html +143 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/annotating.html +75 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/arrow-down.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/arrow-left.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/arrow-right.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/arrow-up.gif +0 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/basic.html +38 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/data-eu-gdp-growth-1.json +4 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/data-eu-gdp-growth-2.json +4 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/data-eu-gdp-growth-3.json +4 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/data-eu-gdp-growth-4.json +4 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/data-eu-gdp-growth-5.json +4 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/data-eu-gdp-growth.json +4 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/data-japan-gdp-growth.json +4 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/data-usa-gdp-growth.json +4 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/graph-types.html +75 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/hs-2004-27-a-large_web.jpg +0 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/image.html +45 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/index.html +44 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/interacting-axes.html +97 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/interacting.html +93 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/layout.css +6 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/multiple-axes.html +60 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/navigate.html +118 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/percentiles.html +57 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/pie.html +756 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/realtime.html +83 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/resize.html +61 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/selection.html +114 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/setting-options.html +61 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/stacking.html +77 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/symbols.html +49 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/thresholding.html +54 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/time.html +71 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/tracking.html +95 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/turning-series.html +98 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/visitors.html +90 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/examples/zooming.html +98 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/excanvas.js +1427 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/excanvas.min.js +1 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.colorhelpers.js +179 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.colorhelpers.min.js +1 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.crosshair.js +167 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.crosshair.min.js +1 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.fillbetween.js +183 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.fillbetween.min.js +1 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.image.js +238 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.image.min.js +1 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.js +2599 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.min.js +6 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.navigate.js +336 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.navigate.min.js +1 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.pie.js +750 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.pie.min.js +1 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.resize.js +60 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.resize.min.js +1 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.selection.js +344 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.selection.min.js +1 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.stack.js +184 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.stack.min.js +1 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.symbol.js +70 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.symbol.min.js +1 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.threshold.js +103 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/flot-0.7/jquery.flot.threshold.min.js +1 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/blank.svg +3 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/custom_test.js +67 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/jquery.svg.css +9 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/jquery.svg.js +1101 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/jquery.svg.min.js +7 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/jquery.svg.pack.js +7 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/jquery.svgfilter.js +396 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/jquery.svgfilter.min.js +7 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/jquery.svgfilter.pack.js +7 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/jquery.svggraph.js +1337 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/jquery.svggraph.min.js +7 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/jquery.svggraph.pack.js +7 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/lion.svg +161 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery-svg/test.js +714 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.ajaxfileupload.js +205 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.ba-bbq.js +1137 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.ba-resize.js +246 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.cookie.js +92 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.easing.1.3.js +205 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.fancyqueries.js +106 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.flash.js +288 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.form.js +964 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.hoverIntent.js +106 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.jeditable.ajaxupload.js +62 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.jeditable.js +556 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.jnotify.js +210 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.jscrollpane.js +1390 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.jscrollpane.min.js +11 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.linkHover.js +89 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.loadmask.min.js +10 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.mousewheel.js +78 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.multiselect.filter.js +176 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.multiselect.js +668 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.pack.js +11 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.periodicalupdater.js +175 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.sortElements.js +75 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.sparkline.min.js +94 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.text-overflow.js +60 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.timepickr.js +214 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.timers.js +142 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.tipsy.js +358 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.treeTable.js +226 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.trunk8.js +203 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.ui.multiselect.js +338 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.ui.totop.js +58 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/jquery.uitablefilter.js +95 -0
- data/vendor/assets/javascripts/alchemy/jquery/plugins/ui.spinner.js +683 -0
- data/vendor/assets/javascripts/alchemy/rails.js +331 -0
- data/vendor/assets/javascripts/alchemy/underscore-1.3.1.js +999 -0
- metadata +683 -0
@@ -0,0 +1 @@
|
|
1
|
+
(function(b){var a={series:{stack:null}};function c(f){function d(k,j){var h=null;for(var g=0;g<j.length;++g){if(k==j[g]){break}if(j[g].stack==k.stack){h=j[g]}}return h}function e(C,v,g){if(v.stack==null){return}var p=d(v,C.getData());if(!p){return}var z=g.pointsize,F=g.points,h=p.datapoints.pointsize,y=p.datapoints.points,t=[],x,w,k,J,I,r,u=v.lines.show,G=v.bars.horizontal,o=z>2&&(G?g.format[2].x:g.format[2].y),n=u&&v.lines.steps,E=true,q=G?1:0,H=G?0:1,D=0,B=0,A;while(true){if(D>=F.length){break}A=t.length;if(F[D]==null){for(m=0;m<z;++m){t.push(F[D+m])}D+=z}else{if(B>=y.length){if(!u){for(m=0;m<z;++m){t.push(F[D+m])}}D+=z}else{if(y[B]==null){for(m=0;m<z;++m){t.push(null)}E=true;B+=h}else{x=F[D+q];w=F[D+H];J=y[B+q];I=y[B+H];r=0;if(x==J){for(m=0;m<z;++m){t.push(F[D+m])}t[A+H]+=I;r=I;D+=z;B+=h}else{if(x>J){if(u&&D>0&&F[D-z]!=null){k=w+(F[D-z+H]-w)*(J-x)/(F[D-z+q]-x);t.push(J);t.push(k+I);for(m=2;m<z;++m){t.push(F[D+m])}r=I}B+=h}else{if(E&&u){D+=z;continue}for(m=0;m<z;++m){t.push(F[D+m])}if(u&&B>0&&y[B-h]!=null){r=I+(y[B-h+H]-I)*(x-J)/(y[B-h+q]-J)}t[A+H]+=r;D+=z}}E=false;if(A!=t.length&&o){t[A+2]+=r}}}}if(n&&A!=t.length&&A>0&&t[A]!=null&&t[A]!=t[A-z]&&t[A+1]!=t[A-z+1]){for(m=0;m<z;++m){t[A+z+m]=t[A+m]}t[A+1]=t[A-z+1]}}g.points=t}f.hooks.processDatapoints.push(e)}b.plot.plugins.push({init:c,options:a,name:"stack",version:"1.2"})})(jQuery);
|
@@ -0,0 +1,70 @@
|
|
1
|
+
/*
|
2
|
+
Flot plugin that adds some extra symbols for plotting points.
|
3
|
+
|
4
|
+
The symbols are accessed as strings through the standard symbol
|
5
|
+
choice:
|
6
|
+
|
7
|
+
series: {
|
8
|
+
points: {
|
9
|
+
symbol: "square" // or "diamond", "triangle", "cross"
|
10
|
+
}
|
11
|
+
}
|
12
|
+
|
13
|
+
*/
|
14
|
+
|
15
|
+
(function ($) {
|
16
|
+
function processRawData(plot, series, datapoints) {
|
17
|
+
// we normalize the area of each symbol so it is approximately the
|
18
|
+
// same as a circle of the given radius
|
19
|
+
|
20
|
+
var handlers = {
|
21
|
+
square: function (ctx, x, y, radius, shadow) {
|
22
|
+
// pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2
|
23
|
+
var size = radius * Math.sqrt(Math.PI) / 2;
|
24
|
+
ctx.rect(x - size, y - size, size + size, size + size);
|
25
|
+
},
|
26
|
+
diamond: function (ctx, x, y, radius, shadow) {
|
27
|
+
// pi * r^2 = 2s^2 => s = r * sqrt(pi/2)
|
28
|
+
var size = radius * Math.sqrt(Math.PI / 2);
|
29
|
+
ctx.moveTo(x - size, y);
|
30
|
+
ctx.lineTo(x, y - size);
|
31
|
+
ctx.lineTo(x + size, y);
|
32
|
+
ctx.lineTo(x, y + size);
|
33
|
+
ctx.lineTo(x - size, y);
|
34
|
+
},
|
35
|
+
triangle: function (ctx, x, y, radius, shadow) {
|
36
|
+
// pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3))
|
37
|
+
var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3));
|
38
|
+
var height = size * Math.sin(Math.PI / 3);
|
39
|
+
ctx.moveTo(x - size/2, y + height/2);
|
40
|
+
ctx.lineTo(x + size/2, y + height/2);
|
41
|
+
if (!shadow) {
|
42
|
+
ctx.lineTo(x, y - height/2);
|
43
|
+
ctx.lineTo(x - size/2, y + height/2);
|
44
|
+
}
|
45
|
+
},
|
46
|
+
cross: function (ctx, x, y, radius, shadow) {
|
47
|
+
// pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2
|
48
|
+
var size = radius * Math.sqrt(Math.PI) / 2;
|
49
|
+
ctx.moveTo(x - size, y - size);
|
50
|
+
ctx.lineTo(x + size, y + size);
|
51
|
+
ctx.moveTo(x - size, y + size);
|
52
|
+
ctx.lineTo(x + size, y - size);
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
var s = series.points.symbol;
|
57
|
+
if (handlers[s])
|
58
|
+
series.points.symbol = handlers[s];
|
59
|
+
}
|
60
|
+
|
61
|
+
function init(plot) {
|
62
|
+
plot.hooks.processDatapoints.push(processRawData);
|
63
|
+
}
|
64
|
+
|
65
|
+
$.plot.plugins.push({
|
66
|
+
init: init,
|
67
|
+
name: 'symbols',
|
68
|
+
version: '1.0'
|
69
|
+
});
|
70
|
+
})(jQuery);
|
@@ -0,0 +1 @@
|
|
1
|
+
(function(b){function a(h,e,g){var d={square:function(k,j,n,i,m){var l=i*Math.sqrt(Math.PI)/2;k.rect(j-l,n-l,l+l,l+l)},diamond:function(k,j,n,i,m){var l=i*Math.sqrt(Math.PI/2);k.moveTo(j-l,n);k.lineTo(j,n-l);k.lineTo(j+l,n);k.lineTo(j,n+l);k.lineTo(j-l,n)},triangle:function(l,k,o,j,n){var m=j*Math.sqrt(2*Math.PI/Math.sin(Math.PI/3));var i=m*Math.sin(Math.PI/3);l.moveTo(k-m/2,o+i/2);l.lineTo(k+m/2,o+i/2);if(!n){l.lineTo(k,o-i/2);l.lineTo(k-m/2,o+i/2)}},cross:function(k,j,n,i,m){var l=i*Math.sqrt(Math.PI)/2;k.moveTo(j-l,n-l);k.lineTo(j+l,n+l);k.moveTo(j-l,n+l);k.lineTo(j+l,n-l)}};var f=e.points.symbol;if(d[f]){e.points.symbol=d[f]}}function c(d){d.hooks.processDatapoints.push(a)}b.plot.plugins.push({init:c,name:"symbols",version:"1.0"})})(jQuery);
|
@@ -0,0 +1,103 @@
|
|
1
|
+
/*
|
2
|
+
Flot plugin for thresholding data. Controlled through the option
|
3
|
+
"threshold" in either the global series options
|
4
|
+
|
5
|
+
series: {
|
6
|
+
threshold: {
|
7
|
+
below: number
|
8
|
+
color: colorspec
|
9
|
+
}
|
10
|
+
}
|
11
|
+
|
12
|
+
or in a specific series
|
13
|
+
|
14
|
+
$.plot($("#placeholder"), [{ data: [ ... ], threshold: { ... }}])
|
15
|
+
|
16
|
+
The data points below "below" are drawn with the specified color. This
|
17
|
+
makes it easy to mark points below 0, e.g. for budget data.
|
18
|
+
|
19
|
+
Internally, the plugin works by splitting the data into two series,
|
20
|
+
above and below the threshold. The extra series below the threshold
|
21
|
+
will have its label cleared and the special "originSeries" attribute
|
22
|
+
set to the original series. You may need to check for this in hover
|
23
|
+
events.
|
24
|
+
*/
|
25
|
+
|
26
|
+
(function ($) {
|
27
|
+
var options = {
|
28
|
+
series: { threshold: null } // or { below: number, color: color spec}
|
29
|
+
};
|
30
|
+
|
31
|
+
function init(plot) {
|
32
|
+
function thresholdData(plot, s, datapoints) {
|
33
|
+
if (!s.threshold)
|
34
|
+
return;
|
35
|
+
|
36
|
+
var ps = datapoints.pointsize, i, x, y, p, prevp,
|
37
|
+
thresholded = $.extend({}, s); // note: shallow copy
|
38
|
+
|
39
|
+
thresholded.datapoints = { points: [], pointsize: ps };
|
40
|
+
thresholded.label = null;
|
41
|
+
thresholded.color = s.threshold.color;
|
42
|
+
thresholded.threshold = null;
|
43
|
+
thresholded.originSeries = s;
|
44
|
+
thresholded.data = [];
|
45
|
+
|
46
|
+
var below = s.threshold.below,
|
47
|
+
origpoints = datapoints.points,
|
48
|
+
addCrossingPoints = s.lines.show;
|
49
|
+
|
50
|
+
threspoints = [];
|
51
|
+
newpoints = [];
|
52
|
+
|
53
|
+
for (i = 0; i < origpoints.length; i += ps) {
|
54
|
+
x = origpoints[i]
|
55
|
+
y = origpoints[i + 1];
|
56
|
+
|
57
|
+
prevp = p;
|
58
|
+
if (y < below)
|
59
|
+
p = threspoints;
|
60
|
+
else
|
61
|
+
p = newpoints;
|
62
|
+
|
63
|
+
if (addCrossingPoints && prevp != p && x != null
|
64
|
+
&& i > 0 && origpoints[i - ps] != null) {
|
65
|
+
var interx = (x - origpoints[i - ps]) / (y - origpoints[i - ps + 1]) * (below - y) + x;
|
66
|
+
prevp.push(interx);
|
67
|
+
prevp.push(below);
|
68
|
+
for (m = 2; m < ps; ++m)
|
69
|
+
prevp.push(origpoints[i + m]);
|
70
|
+
|
71
|
+
p.push(null); // start new segment
|
72
|
+
p.push(null);
|
73
|
+
for (m = 2; m < ps; ++m)
|
74
|
+
p.push(origpoints[i + m]);
|
75
|
+
p.push(interx);
|
76
|
+
p.push(below);
|
77
|
+
for (m = 2; m < ps; ++m)
|
78
|
+
p.push(origpoints[i + m]);
|
79
|
+
}
|
80
|
+
|
81
|
+
p.push(x);
|
82
|
+
p.push(y);
|
83
|
+
}
|
84
|
+
|
85
|
+
datapoints.points = newpoints;
|
86
|
+
thresholded.datapoints.points = threspoints;
|
87
|
+
|
88
|
+
if (thresholded.datapoints.points.length > 0)
|
89
|
+
plot.getData().push(thresholded);
|
90
|
+
|
91
|
+
// FIXME: there are probably some edge cases left in bars
|
92
|
+
}
|
93
|
+
|
94
|
+
plot.hooks.processDatapoints.push(thresholdData);
|
95
|
+
}
|
96
|
+
|
97
|
+
$.plot.plugins.push({
|
98
|
+
init: init,
|
99
|
+
options: options,
|
100
|
+
name: 'threshold',
|
101
|
+
version: '1.0'
|
102
|
+
});
|
103
|
+
})(jQuery);
|
@@ -0,0 +1 @@
|
|
1
|
+
(function(B){var A={series:{threshold:null}};function C(D){function E(L,S,M){if(!S.threshold){return }var F=M.pointsize,I,O,N,G,K,H=B.extend({},S);H.datapoints={points:[],pointsize:F};H.label=null;H.color=S.threshold.color;H.threshold=null;H.originSeries=S;H.data=[];var P=S.threshold.below,Q=M.points,R=S.lines.show;threspoints=[];newpoints=[];for(I=0;I<Q.length;I+=F){O=Q[I];N=Q[I+1];K=G;if(N<P){G=threspoints}else{G=newpoints}if(R&&K!=G&&O!=null&&I>0&&Q[I-F]!=null){var J=(O-Q[I-F])/(N-Q[I-F+1])*(P-N)+O;K.push(J);K.push(P);for(m=2;m<F;++m){K.push(Q[I+m])}G.push(null);G.push(null);for(m=2;m<F;++m){G.push(Q[I+m])}G.push(J);G.push(P);for(m=2;m<F;++m){G.push(Q[I+m])}}G.push(O);G.push(N)}M.points=newpoints;H.datapoints.points=threspoints;if(H.datapoints.points.length>0){L.getData().push(H)}}D.hooks.processDatapoints.push(E)}B.plot.plugins.push({init:C,options:A,name:"threshold",version:"1.0"})})(jQuery);
|
@@ -0,0 +1,67 @@
|
|
1
|
+
//var chartArea = [[0.1, 0.1, 0.95, 0.9], [0.2, 0.1, 0.95, 0.9],
|
2
|
+
// [0.1, 0.1, 0.8, 0.9], [0.1, 0.25, 0.9, 0.9], [0.1, 0.1, 0.9, 0.8]];
|
3
|
+
//var legendArea = [[0.0, 0.0, 0.0, 0.0], [0.005, 0.1, 0.125, 0.5],
|
4
|
+
// [0.875, 0.1, 0.995, 0.5], [0.2, 0.1, 0.8, 0.2], [0.2, 0.9, 0.8, 0.995]];
|
5
|
+
//var fills = [['lightblue', 'url(#fadeBlue)'], ['pink', 'url(#fadeRed)'],
|
6
|
+
// ['lightgreen', 'url(#fadeGreen)']];
|
7
|
+
function buildGraph(options) {
|
8
|
+
var settings = $.extend({
|
9
|
+
svg_container: "",
|
10
|
+
graph_url: "test",
|
11
|
+
id: 1,
|
12
|
+
dataType: "summary",
|
13
|
+
chartType: "line", //tell svg plugin if we want line, bar, or pie graphs
|
14
|
+
chartTitle: "",
|
15
|
+
timeframe: "7 days",
|
16
|
+
xTitle: "",
|
17
|
+
yTitle: ""
|
18
|
+
},options||{});
|
19
|
+
var svg = svgManager.getSVGFor(settings.svg_container);
|
20
|
+
var params = {
|
21
|
+
id:settings.id, //id of the node to get graph data for
|
22
|
+
type:settings.dataType, /*this will be what we pass in to tell
|
23
|
+
*the data api what kind of data to return*/
|
24
|
+
timeframe:settings.timeframe, //what time period do we want back from the data api?
|
25
|
+
isJSON:true}; /*while this is not used right now, there is the chance we will want to
|
26
|
+
call the data api before rendering the page, this is a flag to allow that*/
|
27
|
+
$.getJSON(settings.graph_url, params, function(response) {
|
28
|
+
var defs = svg.defs();
|
29
|
+
var legendPos = 1;
|
30
|
+
/*
|
31
|
+
* Everything else that is commented out from here down is experimental stuff that we shouldn't need right away,
|
32
|
+
* but may want to play with as we make this look nicer.
|
33
|
+
*/
|
34
|
+
//svg.linearGradient(defs, 'fadeBlue', [[0, 'lightblue'], [1, 'blue']]);
|
35
|
+
//svg.linearGradient(defs, 'fadeRed', [[0, 'pink'], [1, 'red']]);
|
36
|
+
//svg.linearGradient(defs, 'fadeGreen', [[0, 'lightgreen'], [1, 'green']]);
|
37
|
+
svg.graph.noDraw().title(settings.chartTitle,10).
|
38
|
+
chartFormat('lightyellow', 'gray').
|
39
|
+
//gridlines({stroke: 'gray', stroke_dasharray: '2,2'}, 'gray').
|
40
|
+
status(setStatus);
|
41
|
+
$(response.dataset).each(function(){
|
42
|
+
svg.graph.noDraw().
|
43
|
+
addSeries(this.name, this.values, this.fill, this.stroke, this.strokeWidth);
|
44
|
+
|
45
|
+
});
|
46
|
+
svg.graph.xAxis.title(settings.xTitle).scale(0, 3);
|
47
|
+
if (response.timepoints.length > 0){
|
48
|
+
svg.graph.xAxis.ticks(1, 0).labels(response.timepoints);
|
49
|
+
}
|
50
|
+
svg.graph.yAxis.title(settings.yTitle).scale(-5, 105).ticks(10, 5);
|
51
|
+
//svg.graph.legend.settings({fill: 'lightgoldenrodyellow', stroke: 'gray'});
|
52
|
+
svg.graph.legend.show(legendPos).area([0.0, 0.0, 0.0, 0.0]);
|
53
|
+
//for (var i = 0; i < 3; i++) {
|
54
|
+
// svg.graph.series()[i].format((fills[i])[0]);
|
55
|
+
//}
|
56
|
+
svg.graph.noDraw().//chartArea(chartArea[legendPos]).
|
57
|
+
chartType(settings.chartType, {explode: [2], explodeDist: 10}).redraw();
|
58
|
+
|
59
|
+
});
|
60
|
+
}
|
61
|
+
/*callback function for when you mouse over the data.
|
62
|
+
*I hope for this eventually to highlight the datapoint and show any additional information
|
63
|
+
*the design may call for.
|
64
|
+
**/
|
65
|
+
function setStatus(value) {
|
66
|
+
//alert(value);
|
67
|
+
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
/* http://home.iprimus.com.au/kbwood/jquery/svg.html
|
2
|
+
SVG for jQuery v1.0.0.
|
3
|
+
Written by Keith Wood (kbwood@iprimus.com.au) August 2007.
|
4
|
+
Under the Creative Commons Licence http://creativecommons.org/licenses/by/3.0/
|
5
|
+
Share or Remix it but please Attribute the author. */
|
6
|
+
|
7
|
+
svg\:svg { display: none; }
|
8
|
+
|
9
|
+
.svg_error { color: red; font-weight: bold; }
|
@@ -0,0 +1,1101 @@
|
|
1
|
+
/* http://keith-wood.name/svg.html
|
2
|
+
SVG for jQuery v1.0.1.
|
3
|
+
Written by Keith Wood (kbwood@iprimus.com.au) August 2007.
|
4
|
+
Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and
|
5
|
+
MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses.
|
6
|
+
Please attribute the author if you use it. */
|
7
|
+
|
8
|
+
var svgManager = null;
|
9
|
+
|
10
|
+
(function($) { // Hide scope, no $ conflict
|
11
|
+
|
12
|
+
/* SVG manager.
|
13
|
+
Use the singleton instance of this class, svgManager,
|
14
|
+
to interact with the SVG functionality. */
|
15
|
+
function SVGManager() {
|
16
|
+
this._nextId = 0; // Next ID for a SVG root
|
17
|
+
this._svgs = []; // List of SVG roots indexed by ID
|
18
|
+
this._settings = []; // Settings to be remembered per SVG object:
|
19
|
+
// [0] is width, [1] is height, [2] is URL to load initially, [3] is callback function
|
20
|
+
this._extensions = []; // List of SVG extensions added to SVGRoot
|
21
|
+
// for each entry [0] is extension name, [1] is extension class (function)
|
22
|
+
// the function takes one parameter - the SVGRoot instance
|
23
|
+
this.regional = []; // Localisations, indexed by language, '' for default (English)
|
24
|
+
this.regional[''] = {notSupportedText: 'This browser does not support SVG',
|
25
|
+
errorLoadingText: 'Error loading'};
|
26
|
+
this.local = this.regional['']; // Current localisation
|
27
|
+
}
|
28
|
+
|
29
|
+
$.extend(SVGManager.prototype, {
|
30
|
+
/* SVG namespace. */
|
31
|
+
svgNS: 'http://www.w3.org/2000/svg',
|
32
|
+
/* XLink namespace. */
|
33
|
+
xlinkNS: 'http://www.w3.org/1999/xlink',
|
34
|
+
|
35
|
+
/* SVG root class. */
|
36
|
+
_rootClass: SVGRoot,
|
37
|
+
|
38
|
+
/* Add the SVG object to its container. */
|
39
|
+
_connectSVG: function(container, loadURL, onLoad, settings) {
|
40
|
+
var id = this._nextId++;
|
41
|
+
container._svgId = id;
|
42
|
+
var svg = null;
|
43
|
+
if ($.browser.msie) {
|
44
|
+
container.innerHTML = '<embed type="image/svg+xml" width="' + container.clientWidth +
|
45
|
+
'" height="' + container.clientHeight + '" src="blank.svg"/>';
|
46
|
+
this._settings[id] = [container, loadURL, settings, onLoad];
|
47
|
+
}
|
48
|
+
else if (document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#SVG","1.1") ||
|
49
|
+
document.implementation.hasFeature("org.w3c.svg", "1.1")) {
|
50
|
+
svg = document.createElementNS(this.svgNS, 'svg');
|
51
|
+
svg.setAttribute('version', '1.1');
|
52
|
+
svg.setAttribute('width', container.clientWidth);
|
53
|
+
svg.setAttribute('height', container.clientHeight);
|
54
|
+
container.appendChild(svg);
|
55
|
+
this._afterLoad(id, svg, [container, loadURL, settings, onLoad]);
|
56
|
+
}
|
57
|
+
else {
|
58
|
+
container.innerHTML = '<p class="svg_error">' + this.local.notSupportedText + '</p>';
|
59
|
+
}
|
60
|
+
return id;
|
61
|
+
},
|
62
|
+
|
63
|
+
/* SVG callback after loading - register SVG root. */
|
64
|
+
_registerSVG: function() {
|
65
|
+
for (var i = 0; i < document.embeds.length; i++) { // Check all
|
66
|
+
var id = document.embeds[i].parentNode._svgId;
|
67
|
+
var svg = document.embeds[i].getSVGDocument();
|
68
|
+
svg = (svg ? svg.documentElement : null);
|
69
|
+
if (id != null && svg && !this._svgs[id]) { // Valid and not already done
|
70
|
+
this._afterLoad(id, svg);
|
71
|
+
}
|
72
|
+
}
|
73
|
+
},
|
74
|
+
|
75
|
+
/* Post-processing once loaded. */
|
76
|
+
_afterLoad: function(id, svg, settings) {
|
77
|
+
var settings = settings || this._settings[id];
|
78
|
+
var root = this._svgs[id] = new this._rootClass(svg, settings[0]);
|
79
|
+
if (settings[1]) { // Load URL
|
80
|
+
root.load(settings[1]);
|
81
|
+
}
|
82
|
+
if (settings[2]) { // Additional settings
|
83
|
+
root.configure(settings[2]);
|
84
|
+
}
|
85
|
+
if (settings[3]) { // Onload callback
|
86
|
+
settings[3](settings[0]);
|
87
|
+
}
|
88
|
+
},
|
89
|
+
|
90
|
+
/* Return the SVG root created for a given container.
|
91
|
+
@param container string - selector for the container or
|
92
|
+
element - the container for the SVG object or
|
93
|
+
jQuery collection - first entry is the container
|
94
|
+
@return the corresponding SVG root element, or null if not attached */
|
95
|
+
getSVGFor: function(container) {
|
96
|
+
container = (typeof container == 'string' ? $(container)[0] :
|
97
|
+
(container.jquery ? container[0] : container));
|
98
|
+
return this._svgs[container._svgId];
|
99
|
+
},
|
100
|
+
|
101
|
+
/* Extend the SVGRoot object with an embedded class.
|
102
|
+
The constructor function must take a single parameter that is
|
103
|
+
a reference to the owning SVG root object. This allows the
|
104
|
+
extension to access the basic SVG functionality.
|
105
|
+
@param name string - the name of the SVGRoot attribute to access the new class
|
106
|
+
@param extClass function - the extension class constructor */
|
107
|
+
addExtension: function(name, extClass) {
|
108
|
+
this._extensions[this._extensions.length] = [name, extClass];
|
109
|
+
}
|
110
|
+
});
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
/* The main SVG interface, which encapsulates the SVG element.
|
115
|
+
Obtain a reference from svgManager.getSVGFor(). */
|
116
|
+
function SVGRoot(svg, container) {
|
117
|
+
this._svg = svg; // The SVG root node
|
118
|
+
this._container = container; // The containing div
|
119
|
+
for (var i = 0; i < svgManager._extensions.length; i++) {
|
120
|
+
var extension = svgManager._extensions[i];
|
121
|
+
this[extension[0]] = new extension[1](this);
|
122
|
+
}
|
123
|
+
}
|
124
|
+
|
125
|
+
$.extend(SVGRoot.prototype, {
|
126
|
+
|
127
|
+
/* Retrieve the width of the SVG object. */
|
128
|
+
_width: function() {
|
129
|
+
return this._container.clientWidth;
|
130
|
+
},
|
131
|
+
|
132
|
+
/* Retrieve the height of the SVG object. */
|
133
|
+
_height: function() {
|
134
|
+
return this._container.clientHeight;
|
135
|
+
},
|
136
|
+
|
137
|
+
/* Configure the SVG root.
|
138
|
+
@param settings object - additional settings for the root
|
139
|
+
@param clear boolean - true to remove existing attributes first,
|
140
|
+
false to add to what is already there (optional)
|
141
|
+
@return this root */
|
142
|
+
configure: function(settings, clear) {
|
143
|
+
if (clear) {
|
144
|
+
for (var i = this._svg.attributes.length - 1; i >= 0; i--) {
|
145
|
+
var attr = this._svg.attributes.item(i);
|
146
|
+
if (!(attr.nodeName == 'onload' || attr.nodeName == 'version' ||
|
147
|
+
attr.nodeName.substring(0, 5) == 'xmlns')) {
|
148
|
+
this._svg.attributes.removeNamedItem(attr.nodeName);
|
149
|
+
}
|
150
|
+
}
|
151
|
+
}
|
152
|
+
for (var attrName in settings) {
|
153
|
+
this._svg.setAttribute(attrName, settings[attrName]);
|
154
|
+
}
|
155
|
+
return this;
|
156
|
+
},
|
157
|
+
|
158
|
+
/* Locate a specific element in the SVG document.
|
159
|
+
@param id the element's identifier
|
160
|
+
@return the element reference, or null if not found */
|
161
|
+
getElementById: function(id) {
|
162
|
+
return this._svg.getElementById(id);
|
163
|
+
},
|
164
|
+
|
165
|
+
/* Add a title.
|
166
|
+
@param parent element - the parent node for the new title
|
167
|
+
@param text string - the text of the title
|
168
|
+
@param settings object - additional settings for the title (optional)
|
169
|
+
@return the new title node */
|
170
|
+
title: function(parent, text, settings) {
|
171
|
+
var node = this._makeNode(parent, 'title', settings || {});
|
172
|
+
node.appendChild(this._svg.ownerDocument.createTextNode(text));
|
173
|
+
return node;
|
174
|
+
},
|
175
|
+
|
176
|
+
/* Add a description.
|
177
|
+
@param parent element - the parent node for the new description
|
178
|
+
@param text string - the text of the description
|
179
|
+
@param settings object - additional settings for the description (optional)
|
180
|
+
@return the new description node */
|
181
|
+
describe: function(parent, text, settings) {
|
182
|
+
var node = this._makeNode(parent, 'desc', settings || {});
|
183
|
+
node.appendChild(this._svg.ownerDocument.createTextNode(text));
|
184
|
+
return node;
|
185
|
+
},
|
186
|
+
|
187
|
+
/* Add a definitions node.
|
188
|
+
@param parent element - the parent node for the new definitions
|
189
|
+
@param id string - the ID of this definitions (optional)
|
190
|
+
@param settings object - additional settings for the definitions (optional)
|
191
|
+
@return the new definitions node */
|
192
|
+
defs: function(parent, id, settings) {
|
193
|
+
if (typeof id != 'string') {
|
194
|
+
settings = id;
|
195
|
+
id = null;
|
196
|
+
}
|
197
|
+
return this._makeNode(parent, 'defs', $.extend(
|
198
|
+
(id ? {id: id} : {}), settings || {}));
|
199
|
+
},
|
200
|
+
|
201
|
+
/* Add a symbol definition.
|
202
|
+
@param parent element - the parent node for the new symbol
|
203
|
+
@param id string - the ID of this symbol
|
204
|
+
@param x1 number - the left coordinate for this symbol
|
205
|
+
@param y1 number - the top coordinate for this symbol
|
206
|
+
@param x2 number - the right coordinate for this symbol
|
207
|
+
@param y2 number - the bottom coordinate for this symbol
|
208
|
+
@param settings object - additional settings for the symbol (optional)
|
209
|
+
@return the new symbol node */
|
210
|
+
symbol: function(parent, id, x1, y1, x2, y2, settings) {
|
211
|
+
return this._makeNode(parent, 'symbol', $.extend(
|
212
|
+
{id: id, viewBox: x1 + ' ' + y1 + ' ' + x2 + ' ' + y2}, settings || {}));
|
213
|
+
},
|
214
|
+
|
215
|
+
/* Add a marker definition.
|
216
|
+
@param parent element - the parent node for the new marker
|
217
|
+
@param id string - the ID of this marker
|
218
|
+
@param refX number - the x-coordinate for the reference point
|
219
|
+
@param refY number - the y-coordinate for the reference point
|
220
|
+
@param mWidth number - the marker viewport width
|
221
|
+
@param mHeight number - the marker viewport height
|
222
|
+
@param orient string or int - 'auto' or angle (degrees) (optional)
|
223
|
+
@param settings object - additional settings for the marker (optional)
|
224
|
+
@return the new marker node */
|
225
|
+
marker: function(parent, id, refX, refY, mWidth, mHeight, orient, settings) {
|
226
|
+
if (typeof orient == 'object') {
|
227
|
+
settings = orient;
|
228
|
+
orient = null;
|
229
|
+
}
|
230
|
+
return this._makeNode(parent, 'marker', $.extend(
|
231
|
+
{id: id, refX: refX, refY: refY, markerWidth: mWidth,
|
232
|
+
markerHeight: mHeight, orient: orient || 'auto'}, settings || {}));
|
233
|
+
},
|
234
|
+
|
235
|
+
/* Add a style node.
|
236
|
+
@param parent element - the parent node for the new node
|
237
|
+
@param styles string - the CSS styles
|
238
|
+
@param settings object - additional settings for the node (optional)
|
239
|
+
@return the new style node */
|
240
|
+
style: function(parent, styles, settings) {
|
241
|
+
var node = this._makeNode(parent, 'style', $.extend(
|
242
|
+
{type: 'text/css'}, settings || {}));
|
243
|
+
node.appendChild(this._svg.ownerDocument.createTextNode(this._escapeXML(styles)));
|
244
|
+
return node;
|
245
|
+
},
|
246
|
+
|
247
|
+
/* Add a script node.
|
248
|
+
@param parent element - the parent node for the new node
|
249
|
+
@param script string - the JavaScript code
|
250
|
+
@param type string - the MIME type for the code (optional, default 'text/javascript')
|
251
|
+
@param settings object - additional settings for the node (optional)
|
252
|
+
@return the new script node */
|
253
|
+
script: function(parent, script, type, settings) {
|
254
|
+
if (typeof type == 'object') {
|
255
|
+
settings = type;
|
256
|
+
type = null;
|
257
|
+
}
|
258
|
+
var node = this._makeNode(parent, 'script', $.extend(
|
259
|
+
{type: type || 'text/javascript'}, settings || {}));
|
260
|
+
node.appendChild(this._svg.ownerDocument.createTextNode(this._escapeXML(script)));
|
261
|
+
return node;
|
262
|
+
},
|
263
|
+
|
264
|
+
/* Add a linear gradient definition.
|
265
|
+
Specify all of x1, y1, x2, y2 or none of them.
|
266
|
+
@param parent element - the parent node for the new gradient
|
267
|
+
@param id string - the ID for this gradient
|
268
|
+
@param stops string[][] - the gradient stops, each entry is
|
269
|
+
[0] is offset (0.0-1.0 or 0%-100%), [1] is colour,
|
270
|
+
[2] is opacity (optional)
|
271
|
+
@param x1 number - the x-coordinate of the gradient start (optional)
|
272
|
+
@param y1 number - the y-coordinate of the gradient start (optional)
|
273
|
+
@param x2 number - the x-coordinate of the gradient end (optional)
|
274
|
+
@param y2 number - the y-coordinate of the gradient end (optional)
|
275
|
+
@param settings object - additional settings for the gradient (optional)
|
276
|
+
@return the new gradient node */
|
277
|
+
linearGradient: function(parent, id, stops, x1, y1, x2, y2, settings) {
|
278
|
+
if (typeof x1 == 'object') {
|
279
|
+
settings = x1;
|
280
|
+
x1 = null;
|
281
|
+
}
|
282
|
+
var sets = $.extend({id: id},
|
283
|
+
(x1 != null ? {x1: x1, y1: y1, x2: x2, y2: y2} : {}));
|
284
|
+
return this._gradient(parent, 'linearGradient',
|
285
|
+
$.extend(sets, settings || {}), stops);
|
286
|
+
},
|
287
|
+
|
288
|
+
/* Add a radial gradient definition.
|
289
|
+
Specify all of cx, cy, r, fx, fy or none of them.
|
290
|
+
@param parent element - the parent node for the new gradient
|
291
|
+
@param id string - the ID for this gradient
|
292
|
+
@param stops string[][] - the gradient stops, each entry
|
293
|
+
[0] is offset, [1] is colour, [2] is opacity (optional)
|
294
|
+
@param cx number - the x-coordinate of the largest circle centre (optional)
|
295
|
+
@param cy number - the y-coordinate of the largest circle centre (optional)
|
296
|
+
@param r number - the radius of the largest circle (optional)
|
297
|
+
@param fx number - the x-coordinate of the gradient focus (optional)
|
298
|
+
@param fy number - the y-coordinate of the gradient focus (optional)
|
299
|
+
@param settings object - additional settings for the gradient (optional)
|
300
|
+
@return the new gradient node */
|
301
|
+
radialGradient: function(parent, id, stops, cx, cy, r, fx, fy, settings) {
|
302
|
+
if (typeof cx == 'object') {
|
303
|
+
settings = cx;
|
304
|
+
cx = null;
|
305
|
+
}
|
306
|
+
var sets = $.extend({id: id},
|
307
|
+
(cx != null ? {cx: cx, cy: cy, r: r, fx: fx, fy: fy} : {}));
|
308
|
+
return this._gradient(parent, 'radialGradient',
|
309
|
+
$.extend(sets, settings || {}), stops);
|
310
|
+
},
|
311
|
+
|
312
|
+
/* Add a gradient node. */
|
313
|
+
_gradient: function(parent, name, settings, stops) {
|
314
|
+
var node = this._makeNode(parent, name, settings);
|
315
|
+
for (var i = 0; i < stops.length; i++) {
|
316
|
+
var stop = stops[i];
|
317
|
+
this._makeNode(node, 'stop', $.extend(
|
318
|
+
{offset: stop[0], stop_color: stop[1]},
|
319
|
+
(stop[2] != null ? {stop_opacity: stop[2]} : {})));
|
320
|
+
}
|
321
|
+
return node;
|
322
|
+
},
|
323
|
+
|
324
|
+
/* Add a pattern definition.
|
325
|
+
Specify all of vx, vy, xwidth, vheight or none of them.
|
326
|
+
@param parent element - the parent node for the new pattern
|
327
|
+
@param id string - the ID for this pattern
|
328
|
+
@param x number - the x-coordinate for the left edge of the pattern
|
329
|
+
@param y number - the y-coordinate for the top edge of the pattern
|
330
|
+
@param width number - the width of the pattern
|
331
|
+
@param height number - the height of the pattern
|
332
|
+
@param vx number - the minimum x-coordinate for view box (optional)
|
333
|
+
@param vy number - the minimum y-coordinate for the view box (optional)
|
334
|
+
@param vwidth number - the width of the view box (optional)
|
335
|
+
@param vheight number - the height of the view box (optional)
|
336
|
+
@param settings object - additional settings for the pattern (optional)
|
337
|
+
@return the new pattern node */
|
338
|
+
pattern: function(parent, id, x, y, width, height, vx, vy, vwidth, vheight, settings) {
|
339
|
+
if (typeof vx == 'object') {
|
340
|
+
settings = vx;
|
341
|
+
vx = null;
|
342
|
+
}
|
343
|
+
var sets = $.extend({id: id, x: x, y: y, width: width, height: height},
|
344
|
+
(vx != null ? {viewBox: vx + ' ' + vy + ' ' + vwidth + ' ' + vheight} : {}));
|
345
|
+
return this._makeNode(parent, 'pattern', $.extend(sets, settings || {}));
|
346
|
+
},
|
347
|
+
|
348
|
+
/* Add a mask definition.
|
349
|
+
@param parent element - the parent node for the new mask
|
350
|
+
@param id string - the ID for this mask
|
351
|
+
@param x number - the x-coordinate for the left edge of the mask
|
352
|
+
@param y number - the y-coordinate for the top edge of the mask
|
353
|
+
@param width number - the width of the mask
|
354
|
+
@param height number - the height of the mask
|
355
|
+
@param settings object - additional settings for the mask (optional)
|
356
|
+
@return the new mask node */
|
357
|
+
mask: function(parent, id, x, y, width, height, settings) {
|
358
|
+
return this._makeNode(parent, 'mask', $.extend(
|
359
|
+
{id: id, x: x, y: y, width: width, height: height}, settings || {}));
|
360
|
+
},
|
361
|
+
|
362
|
+
/* Create a new path object.
|
363
|
+
@return a new path object */
|
364
|
+
createPath: function() {
|
365
|
+
return new SVGPath();
|
366
|
+
},
|
367
|
+
|
368
|
+
/* Create a new text object.
|
369
|
+
@return a new text object */
|
370
|
+
createText: function() {
|
371
|
+
return new SVGText();
|
372
|
+
},
|
373
|
+
|
374
|
+
/* Add an embedded SVG element.
|
375
|
+
Specify all of vx, vy, vwidth, vheight or none of them.
|
376
|
+
@param parent element - the parent node for the new node
|
377
|
+
@param x number - the x-coordinate for the left edge of the node
|
378
|
+
@param y number - the y-coordinate for the top edge of the node
|
379
|
+
@param width number - the width of the node
|
380
|
+
@param height number - the height of the node
|
381
|
+
@param vx number - the minimum x-coordinate for view box (optional)
|
382
|
+
@param vy number - the minimum y-coordinate for the view box (optional)
|
383
|
+
@param vwidth number - the width of the view box (optional)
|
384
|
+
@param vheight number - the height of the view box (optional)
|
385
|
+
@param settings object - additional settings for the node (optional)
|
386
|
+
@return the new node */
|
387
|
+
svg: function(parent, x, y, width, height, vx, vy, vwidth, vheight, settings) {
|
388
|
+
if (typeof vx == 'object') {
|
389
|
+
settings = vx;
|
390
|
+
vx = null;
|
391
|
+
}
|
392
|
+
var sets = $.extend({x: x, y: y, width: width, height: height},
|
393
|
+
(vx != null ? {viewBox: vx + ' ' + vy + ' ' + vwidth + ' ' + vheight} : {}));
|
394
|
+
return this._makeNode(parent, 'svg', $.extend(sets, settings || {}));
|
395
|
+
},
|
396
|
+
|
397
|
+
/* Create a group.
|
398
|
+
@param parent element - the parent node for the new group
|
399
|
+
@param id string - the ID of this group (optional)
|
400
|
+
@param settings object - additional settings for the group (optional)
|
401
|
+
@return the new group node */
|
402
|
+
group: function(parent, id, settings) {
|
403
|
+
if (typeof id == 'object') {
|
404
|
+
settings = id;
|
405
|
+
id = null;
|
406
|
+
}
|
407
|
+
return this._makeNode(parent, 'g', $.extend({id: id}, settings || {}));
|
408
|
+
},
|
409
|
+
|
410
|
+
/* Add a usage reference.
|
411
|
+
Specify all of x, y, width, height or none of them.
|
412
|
+
@param parent element - the parent node for the new node
|
413
|
+
@param x number - the x-coordinate for the left edge of the node (optional)
|
414
|
+
@param y number - the y-coordinate for the top edge of the node (optional)
|
415
|
+
@param width number - the width of the node (optional)
|
416
|
+
@param height number - the height of the node (optional)
|
417
|
+
@param ref string - the ID of the definition node
|
418
|
+
@param settings object - additional settings for the node (optional)
|
419
|
+
@return the new node */
|
420
|
+
use: function(parent, x, y, width, height, ref, settings) {
|
421
|
+
if (typeof x == 'string') {
|
422
|
+
ref = x;
|
423
|
+
settings = y;
|
424
|
+
x = y = width = height = null;
|
425
|
+
}
|
426
|
+
var node = this._makeNode(parent, 'use', $.extend(
|
427
|
+
{x: x, y: y, width: width, height: height}, settings || {}));
|
428
|
+
node.setAttributeNS(svgManager.xlinkNS, 'href', ref);
|
429
|
+
return node;
|
430
|
+
},
|
431
|
+
|
432
|
+
/* Add a link, which applies to all child elements.
|
433
|
+
@param parent element - the parent node for the new link
|
434
|
+
@param ref string - the target URL
|
435
|
+
@param settings object - additional settings for the link (optional)
|
436
|
+
@return the new link node */
|
437
|
+
link: function(parent, ref, settings) {
|
438
|
+
var node = this._makeNode(parent, 'a', settings);
|
439
|
+
node.setAttributeNS(svgManager.xlinkNS, 'href', ref);
|
440
|
+
return node;
|
441
|
+
},
|
442
|
+
|
443
|
+
/* Add an image.
|
444
|
+
@param parent element - the parent node for the new image
|
445
|
+
@param x number - the x-coordinate for the left edge of the image
|
446
|
+
@param y number - the y-coordinate for the top edge of the image
|
447
|
+
@param width number - the width of the image
|
448
|
+
@param height number - the height of the image
|
449
|
+
@param ref string - the path to the image
|
450
|
+
@param settings object - additional settings for the image (optional)
|
451
|
+
@return the new image node */
|
452
|
+
image: function(parent, x, y, width, height, ref, settings) {
|
453
|
+
var node = this._makeNode(parent, 'image', $.extend(
|
454
|
+
{x: x, y: y, width: width, height: height}, settings || {}));
|
455
|
+
node.setAttributeNS(svgManager.xlinkNS, 'href', ref);
|
456
|
+
return node;
|
457
|
+
},
|
458
|
+
|
459
|
+
/* Draw a path.
|
460
|
+
@param parent element - the parent node for the new shape
|
461
|
+
@param path string or SVGPath - the path to draw
|
462
|
+
@param settings object - additional settings for the shape (optional)
|
463
|
+
@return the new shape node */
|
464
|
+
path: function(parent, path, settings) {
|
465
|
+
return this._makeNode(parent, 'path', $.extend(
|
466
|
+
{d: (path.path ? path.path() : path)}, settings || {}));
|
467
|
+
},
|
468
|
+
|
469
|
+
/* Draw a rectangle.
|
470
|
+
@param parent element - the parent node for the new shape
|
471
|
+
@param x number - the x-coordinate for the left edge of the rectangle
|
472
|
+
@param y number - the y-coordinate for the top edge of the rectangle
|
473
|
+
@param width number - the width of the rectangle
|
474
|
+
@param height number - the height of the rectangle
|
475
|
+
@param settings object - additional settings for the shape (optional)
|
476
|
+
@return the new shape node */
|
477
|
+
rect: function(parent, x, y, width, height, settings) {
|
478
|
+
return this._makeNode(parent, 'rect', $.extend(
|
479
|
+
{x: x, y: y, width: width, height: height}, settings || {}));
|
480
|
+
},
|
481
|
+
|
482
|
+
/* Draw a rounded rectangle.
|
483
|
+
@param parent element - the parent node for the new shape
|
484
|
+
@param x number - the x-coordinate for the left edge of the rectangle
|
485
|
+
@param y number - the y-coordinate for the top edge of the rectangle
|
486
|
+
@param width number - the width of the rectangle
|
487
|
+
@param height number - the height of the rectangle
|
488
|
+
@param rx number - the x-radius of the ellipse for the rounded corners
|
489
|
+
@param ry number - the y-radius of the ellipse for the rounded corners
|
490
|
+
@param settings object - additional settings for the shape (optional)
|
491
|
+
@return the new shape node */
|
492
|
+
roundrect: function(parent, x, y, width, height, rx, ry, settings) {
|
493
|
+
return this._makeNode(parent, 'rect', $.extend(
|
494
|
+
{x: x, y: y, width: width, height: height, rx: rx, ry: ry}, settings || {}));
|
495
|
+
},
|
496
|
+
|
497
|
+
/* Draw a circle.
|
498
|
+
@param parent element - the parent node for the new shape
|
499
|
+
@param cx number - the x-coordinate for the centre of the circle
|
500
|
+
@param cy number - the y-coordinate for the centre of the circle
|
501
|
+
@param r number - the radius of the circle
|
502
|
+
@param settings object - additional settings for the shape (optional)
|
503
|
+
@return the new shape node */
|
504
|
+
circle: function(parent, cx, cy, r, settings) {
|
505
|
+
return this._makeNode(parent, 'circle', $.extend(
|
506
|
+
{cx: cx, cy: cy, r: r}, settings || {}));
|
507
|
+
},
|
508
|
+
|
509
|
+
/* Draw an ellipse.
|
510
|
+
@param parent element - the parent node for the new shape
|
511
|
+
@param cx number - the x-coordinate for the centre of the ellipse
|
512
|
+
@param cy number - the y-coordinate for the centre of the ellipse
|
513
|
+
@param rx number - the x-radius of the ellipse
|
514
|
+
@param ry number - the y-radius of the ellipse
|
515
|
+
@param settings object - additional settings for the shape (optional)
|
516
|
+
@return the new shape node */
|
517
|
+
ellipse: function(parent, cx, cy, rx, ry, settings) {
|
518
|
+
return this._makeNode(parent, 'ellipse', $.extend(
|
519
|
+
{cx: cx, cy: cy, rx: rx, ry: ry}, settings || {}));
|
520
|
+
},
|
521
|
+
|
522
|
+
/* Draw a line.
|
523
|
+
@param parent element - the parent node for the new shape
|
524
|
+
@param x1 number - the x-coordinate for the start of the line
|
525
|
+
@param y1 number - the y-coordinate for the start of the line
|
526
|
+
@param x2 number - the x-coordinate for the end of the line
|
527
|
+
@param y2 number - the y-coordinate for the end of the line
|
528
|
+
@param settings object - additional settings for the shape (optional)
|
529
|
+
@return the new shape node */
|
530
|
+
line: function(parent, x1, y1, x2, y2, settings) {
|
531
|
+
return this._makeNode(parent, 'line', $.extend(
|
532
|
+
{x1: x1, y1: y1, x2: x2, y2: y2}, settings || {}));
|
533
|
+
},
|
534
|
+
|
535
|
+
/* Draw a polygonal line.
|
536
|
+
@param parent element - the parent node for the new shape
|
537
|
+
@param points number[][] - the x-/y-coordinates for the points on the line
|
538
|
+
@param settings object - additional settings for the shape (optional)
|
539
|
+
@return the new shape node */
|
540
|
+
polyline: function(parent, points, settings) {
|
541
|
+
return this._poly(parent, 'polyline', points, settings);
|
542
|
+
},
|
543
|
+
|
544
|
+
/* Draw a polygonal shape.
|
545
|
+
@param parent element - the parent node for the new shape
|
546
|
+
@param points number[][] - the x-/y-coordinates for the points on the shape
|
547
|
+
@param settings object - additional settings for the shape (optional)
|
548
|
+
@return the new shape node */
|
549
|
+
polygon: function(parent, points, settings) {
|
550
|
+
return this._poly(parent, 'polygon', points, settings);
|
551
|
+
},
|
552
|
+
|
553
|
+
/* Draw a polygonal line or shape. */
|
554
|
+
_poly: function(parent, name, points, settings) {
|
555
|
+
var ps = '';
|
556
|
+
for (var i = 0; i < points.length; i++) {
|
557
|
+
ps += points[i].join() + ' ';
|
558
|
+
}
|
559
|
+
return this._makeNode(parent, name, $.extend(
|
560
|
+
{points: ps}, settings || {}));
|
561
|
+
},
|
562
|
+
|
563
|
+
/* Draw text.
|
564
|
+
Specify both of x and y or neither of them.
|
565
|
+
@param parent element - the parent node for the text
|
566
|
+
@param x number or number[] - the x-coordinate(s) for the text (optional)
|
567
|
+
@param y number or number[] - the y-coordinate(s) for the text (optional)
|
568
|
+
@param value string - the text content or
|
569
|
+
SVGText - text with spans and references
|
570
|
+
@param settings object - additional settings for the text (optional)
|
571
|
+
@return the new text node */
|
572
|
+
text: function(parent, x, y, value, settings) {
|
573
|
+
if (typeof x == 'string' && arguments.length < 4) {
|
574
|
+
value = x;
|
575
|
+
settings = y;
|
576
|
+
x = y = null;
|
577
|
+
}
|
578
|
+
return this._text(parent, 'text', value, $.extend(
|
579
|
+
{x: (x && isArray(x) ? x.join(' ') : x), y: (y && isArray(y) ? y.join(' ') : y)},
|
580
|
+
settings || {}));
|
581
|
+
},
|
582
|
+
|
583
|
+
/* Draw text along a path.
|
584
|
+
@param parent element - the parent node for the text
|
585
|
+
@param path string - the ID of the path
|
586
|
+
@param value string - the text content or
|
587
|
+
SVGText - text with spans and references
|
588
|
+
@param settings object - additional settings for the text (optional)
|
589
|
+
@return the new text node */
|
590
|
+
textpath: function(parent, path, value, settings) {
|
591
|
+
var node = this._text(parent, 'textPath', value, settings || {});
|
592
|
+
node.setAttributeNS(svgManager.xlinkNS, 'href', path);
|
593
|
+
return node;
|
594
|
+
},
|
595
|
+
|
596
|
+
/* Draw text. */
|
597
|
+
_text: function(parent, name, value, settings) {
|
598
|
+
var node = this._makeNode(parent, name, settings);
|
599
|
+
if (typeof value == 'string') {
|
600
|
+
node.appendChild(node.ownerDocument.createTextNode(value));
|
601
|
+
}
|
602
|
+
else {
|
603
|
+
for (var i = 0; i < value._parts.length; i++) {
|
604
|
+
var part = value._parts[i];
|
605
|
+
if (part[0] == 'tspan') {
|
606
|
+
var child = this._makeNode(node, part[0], part[2]);
|
607
|
+
child.appendChild(node.ownerDocument.createTextNode(part[1]));
|
608
|
+
node.appendChild(child);
|
609
|
+
}
|
610
|
+
else if (part[0] == 'tref') {
|
611
|
+
var child = this._makeNode(node, part[0], part[2]);
|
612
|
+
child.setAttributeNS(svgManager.xlinkNS, 'href', part[1]);
|
613
|
+
node.appendChild(child);
|
614
|
+
}
|
615
|
+
else if (part[0] == 'textpath') {
|
616
|
+
var pathId = part[2].href;
|
617
|
+
part[2].href = null;
|
618
|
+
var child = this._makeNode(node, part[0], part[2]);
|
619
|
+
child.setAttributeNS(svgManager.xlinkNS, 'href', pathId);
|
620
|
+
child.appendChild(node.ownerDocument.createTextNode(part[1]));
|
621
|
+
node.appendChild(child);
|
622
|
+
}
|
623
|
+
else { // straight text
|
624
|
+
node.appendChild(node.ownerDocument.createTextNode(part[1]));
|
625
|
+
}
|
626
|
+
}
|
627
|
+
}
|
628
|
+
return node;
|
629
|
+
},
|
630
|
+
|
631
|
+
/* Add a custom SVG element.
|
632
|
+
@param parent element - the parent node for the new element
|
633
|
+
@param name string - the name of the element
|
634
|
+
@param settings object - additional settings for the element (optional)
|
635
|
+
@return the new title node */
|
636
|
+
other: function(parent, name, settings) {
|
637
|
+
return this._makeNode(parent, other, settings || {});
|
638
|
+
},
|
639
|
+
|
640
|
+
/* Create a shape node with the given settings. */
|
641
|
+
_makeNode: function(parent, name, settings) {
|
642
|
+
parent = parent || this._svg;
|
643
|
+
var node = this._svg.ownerDocument.createElementNS(svgManager.svgNS, name);
|
644
|
+
for (var name in settings) {
|
645
|
+
var value = settings[name];
|
646
|
+
if (value != null && value != null &&
|
647
|
+
(typeof value != 'string' || value != '')) {
|
648
|
+
node.setAttribute(this._fromJSName(name), value);
|
649
|
+
}
|
650
|
+
}
|
651
|
+
parent.appendChild(node);
|
652
|
+
return node;
|
653
|
+
},
|
654
|
+
|
655
|
+
/* JavaScript identifiers can't use '-', so convert from '_'. */
|
656
|
+
_fromJSName: function(name) {
|
657
|
+
return name.replace(/^_/, '').replace(/_/g, '-');
|
658
|
+
},
|
659
|
+
|
660
|
+
/* Add an existing SVG node to the diagram.
|
661
|
+
@param parent element - the parent node for the new node
|
662
|
+
@param node element - the new node to add or
|
663
|
+
string - the jQuery selector for the node or
|
664
|
+
jQuery collection - set of nodes to add */
|
665
|
+
add: function(parent, node) {
|
666
|
+
var svg = this;
|
667
|
+
parent = parent || this._svg;
|
668
|
+
node = (node.jquery ? node : $(node));
|
669
|
+
node.each(function() {
|
670
|
+
var child = svg._cloneAsSVG(this);
|
671
|
+
if (child) {
|
672
|
+
parent.appendChild(child);
|
673
|
+
}
|
674
|
+
});
|
675
|
+
},
|
676
|
+
|
677
|
+
/* SVG nodes must belong to the SVG namespace, so clone and ensure this is so. */
|
678
|
+
_cloneAsSVG: function(node) {
|
679
|
+
var newNode = null;
|
680
|
+
if (node.nodeType == 1) { // element
|
681
|
+
newNode = this._svg.ownerDocument.createElementNS(
|
682
|
+
node.namespaceURI || svgManager.svgNS, this._checkName(node.nodeName));
|
683
|
+
for (var i = 0; i < node.attributes.length; i++) {
|
684
|
+
var attr = node.attributes.item(i);
|
685
|
+
if (attr.nodeName != 'xmlns') {
|
686
|
+
if (attr.prefix == 'xlink') {
|
687
|
+
newNode.setAttributeNS(svgManager.xlinkNS, attr.localName, attr.nodeValue);
|
688
|
+
}
|
689
|
+
else {
|
690
|
+
newNode.setAttribute(this._checkName(attr.nodeName), attr.nodeValue);
|
691
|
+
}
|
692
|
+
}
|
693
|
+
}
|
694
|
+
for (var i = 0; i < node.childNodes.length; i++) {
|
695
|
+
var child = this._cloneAsSVG(node.childNodes[i]);
|
696
|
+
if (child) {
|
697
|
+
newNode.appendChild(child);
|
698
|
+
}
|
699
|
+
}
|
700
|
+
}
|
701
|
+
else if (node.nodeType == 3) { // text
|
702
|
+
if ($.trim(node.nodeValue)) {
|
703
|
+
newNode = this._svg.ownerDocument.createTextNode(node.nodeValue);
|
704
|
+
}
|
705
|
+
}
|
706
|
+
else if (node.nodeType == 4) { // CDATA
|
707
|
+
if ($.trim(node.nodeValue)) {
|
708
|
+
newNode = this._svg.ownerDocument.createCDATASection(node.nodeValue);
|
709
|
+
}
|
710
|
+
}
|
711
|
+
return newNode;
|
712
|
+
},
|
713
|
+
|
714
|
+
/* Node names must be lower case and without SVG namespace prefix. */
|
715
|
+
_checkName: function(name) {
|
716
|
+
name = (name.substring(0, 1) >= 'A' && name.substring(0, 1) <= 'Z' ? name.toLowerCase() : name);
|
717
|
+
return (name.substring(0, 4) == 'svg:' ? name.substring(4) : name);
|
718
|
+
},
|
719
|
+
|
720
|
+
/* Load an external SVG document.
|
721
|
+
@param url string - the location of the SVG document
|
722
|
+
@param addTo boolean - true to add to what's already there, or false to clear the canvas first */
|
723
|
+
load: function(url, addTo) {
|
724
|
+
if (!addTo) {
|
725
|
+
this.clear(true);
|
726
|
+
}
|
727
|
+
var root = this;
|
728
|
+
var http = $.ajax({url: url, dataType: 'xml', success: function(data) {
|
729
|
+
if ($.browser.msie) { // Doesn't load properly!
|
730
|
+
data.loadXML(http.responseText);
|
731
|
+
if (data.parseError.errorCode != 0) {
|
732
|
+
root.text(null, 10, 20, svgManager.local.errorLoadingText + ': ' +
|
733
|
+
data.parseError.reason);
|
734
|
+
return;
|
735
|
+
}
|
736
|
+
}
|
737
|
+
var attrs = {};
|
738
|
+
for (var i = 0; i < data.documentElement.attributes.length; i++) {
|
739
|
+
var attr = data.documentElement.attributes.item(i);
|
740
|
+
if (!(attr.nodeName == 'version' || attr.nodeName.substring(0, 5) == 'xmlns')) {
|
741
|
+
attrs[attr.nodeName] = attr.nodeValue;
|
742
|
+
}
|
743
|
+
}
|
744
|
+
root.configure(attrs, true);
|
745
|
+
var nodes = data.documentElement.childNodes;
|
746
|
+
for (var i = 0; i < nodes.length; i++) {
|
747
|
+
root.add(null, nodes[i]);
|
748
|
+
}
|
749
|
+
}, error: function(http, message, exc) {
|
750
|
+
root.text(null, 10, 20, svgManager.local.errorLoadingText + ': ' +
|
751
|
+
message + (exc ? ' ' + exc.message : ''));
|
752
|
+
}});
|
753
|
+
},
|
754
|
+
|
755
|
+
/* Delete a specified node.
|
756
|
+
@param node element - the drawing node to remove */
|
757
|
+
remove: function(node) {
|
758
|
+
node.parentNode.removeChild(node);
|
759
|
+
},
|
760
|
+
|
761
|
+
/* Delete everything in the current document.
|
762
|
+
@param attrsToo boolean - true to clear any root attributes as well,
|
763
|
+
false to leave them (optional) */
|
764
|
+
clear: function(attrsToo) {
|
765
|
+
if (attrsToo) {
|
766
|
+
this.configure({}, true);
|
767
|
+
}
|
768
|
+
while (this._svg.firstChild) {
|
769
|
+
this._svg.removeChild(this._svg.firstChild);
|
770
|
+
}
|
771
|
+
},
|
772
|
+
|
773
|
+
/* Serialise the current diagram into an SVG text document.
|
774
|
+
@return the SVG as text */
|
775
|
+
toSVG: function() {
|
776
|
+
return this._toSVG(this._svg);
|
777
|
+
},
|
778
|
+
|
779
|
+
/* Serialise one node in the SVG hierarchy. */
|
780
|
+
_toSVG: function(node) {
|
781
|
+
var svgDoc = '';
|
782
|
+
if (!node) {
|
783
|
+
return svgDoc;
|
784
|
+
}
|
785
|
+
if (node.nodeType == 3) { // Text
|
786
|
+
svgDoc = node.nodeValue;
|
787
|
+
}
|
788
|
+
else if (node.nodeType == 4) { // CDATA
|
789
|
+
svgDoc = '<![CDATA[' + node.nodeValue + ']]>';
|
790
|
+
}
|
791
|
+
else { // Element
|
792
|
+
svgDoc = '<' + node.nodeName;
|
793
|
+
if (node.attributes) {
|
794
|
+
for (var i = 0; i < node.attributes.length; i++) {
|
795
|
+
var attr = node.attributes.item(i);
|
796
|
+
if (!($.trim(attr.nodeValue) == '' || attr.nodeValue.match(/^\[object/) ||
|
797
|
+
attr.nodeValue.match(/^function/))) {
|
798
|
+
svgDoc += ' ' + (attr.namespaceURI == svgManager.xlinkNS ? 'xlink:' : '') +
|
799
|
+
attr.nodeName + '="' + attr.nodeValue + '"';
|
800
|
+
}
|
801
|
+
}
|
802
|
+
}
|
803
|
+
if (node.firstChild) {
|
804
|
+
svgDoc += '>';
|
805
|
+
var child = node.firstChild;
|
806
|
+
while (child) {
|
807
|
+
svgDoc += this._toSVG(child);
|
808
|
+
child = child.nextSibling;
|
809
|
+
}
|
810
|
+
svgDoc += '</' + node.nodeName + '>';
|
811
|
+
}
|
812
|
+
else {
|
813
|
+
svgDoc += '/>';
|
814
|
+
}
|
815
|
+
}
|
816
|
+
return svgDoc;
|
817
|
+
},
|
818
|
+
|
819
|
+
/* Escape reserved characters in XML. */
|
820
|
+
_escapeXML: function(text) {
|
821
|
+
text = text.replace(/&/g, '&');
|
822
|
+
text = text.replace(/</g, '<');
|
823
|
+
text = text.replace(/>/g, '>');
|
824
|
+
return text;
|
825
|
+
}
|
826
|
+
});
|
827
|
+
|
828
|
+
/* Helper to generate an SVG path.
|
829
|
+
Obtain an instance from the SVGRoot object.
|
830
|
+
String calls together to generate the path and use its value:
|
831
|
+
var path = root.createPath();
|
832
|
+
root.path(null, path.moveTo(100, 100).lineTo(300, 100).lineTo(200, 300).close(), {fill: 'red'});
|
833
|
+
or
|
834
|
+
root.path(null, path.moveTo(100, 100).lineTo([[300, 100], [200, 300]]).close(), {fill: 'red'}); */
|
835
|
+
function SVGPath() {
|
836
|
+
this._path = '';
|
837
|
+
}
|
838
|
+
|
839
|
+
$.extend(SVGPath.prototype, {
|
840
|
+
/* Prepare to create a new path.
|
841
|
+
@return this path */
|
842
|
+
reset: function() {
|
843
|
+
this._path = '';
|
844
|
+
return this;
|
845
|
+
},
|
846
|
+
|
847
|
+
/* Move the pointer to a position.
|
848
|
+
@param x number - x-coordinate to move to or
|
849
|
+
number[][] - x-/y-coordinates to move to
|
850
|
+
@param y number - y-coordinate to move to (omitted if x is array)
|
851
|
+
@param relative boolean - true for coordinates relative to the current point,
|
852
|
+
false for coordinates being absolute
|
853
|
+
@return this path */
|
854
|
+
moveTo: function(x, y, relative) {
|
855
|
+
relative = (isArray(x) ? y : relative);
|
856
|
+
return this._coords((relative ? 'm' : 'M'), x, y);
|
857
|
+
},
|
858
|
+
|
859
|
+
/* Draw a line to a position.
|
860
|
+
@param x number - x-coordinate to move to or
|
861
|
+
number[][] - x-/y-coordinates to move to
|
862
|
+
@param y number - y-coordinate to move to (omitted if x is array)
|
863
|
+
@param relative boolean - true for coordinates relative to the current point,
|
864
|
+
false for coordinates being absolute
|
865
|
+
@return this path */
|
866
|
+
lineTo: function(x, y, relative) {
|
867
|
+
relative = (isArray(x) ? y : relative);
|
868
|
+
return this._coords((relative ? 'l' : 'L'), x, y);
|
869
|
+
},
|
870
|
+
|
871
|
+
/* Draw a horizontal line to a position.
|
872
|
+
@param x number - x-coordinate to draw to
|
873
|
+
@param relative boolean - true for coordinates relative to the current point,
|
874
|
+
false for coordinates being absolute
|
875
|
+
@return this path */
|
876
|
+
horizTo: function(x, relative) {
|
877
|
+
this._path += (relative ? 'h' : 'H') + x;
|
878
|
+
return this;
|
879
|
+
},
|
880
|
+
|
881
|
+
/* Draw a vertical line to a position.
|
882
|
+
@param y number - y-coordinate to draw to
|
883
|
+
@param relative boolean - true for coordinates relative to the current point,
|
884
|
+
false for coordinates being absolute
|
885
|
+
@return this path */
|
886
|
+
vertTo: function(y, relative) {
|
887
|
+
this._path += (relative ? 'v' : 'V') + y;
|
888
|
+
return this;
|
889
|
+
},
|
890
|
+
|
891
|
+
/* Draw a cubic B�zier curve.
|
892
|
+
@param x1 number - x-coordinate of beginning control point or
|
893
|
+
number[][] - x-/y-coordinates of control and end points to draw to
|
894
|
+
@param y1 number - y-coordinate of beginning control point (omitted if x1 is array)
|
895
|
+
@param x2 number - x-coordinate of ending control point (omitted if x1 is array)
|
896
|
+
@param y2 number - y-coordinate of ending control point (omitted if x1 is array)
|
897
|
+
@param x number - x-coordinate of curve end (omitted if x1 is array)
|
898
|
+
@param y number - y-coordinate of curve end (omitted if x1 is array)
|
899
|
+
@param relative boolean - true for coordinates relative to the current point,
|
900
|
+
false for coordinates being absolute
|
901
|
+
@return this path */
|
902
|
+
curveCTo: function(x1, y1, x2, y2, x, y, relative) {
|
903
|
+
relative = (isArray(x1) ? y1 : relative);
|
904
|
+
return this._coords((relative ? 'c' : 'C'), x1, y1, x2, y2, x, y);
|
905
|
+
},
|
906
|
+
|
907
|
+
/* Continue a cubic B�zier curve.
|
908
|
+
Starting control point is the reflection of the previous end control point.
|
909
|
+
@param x2 number - x-coordinate of ending control point or
|
910
|
+
number[][] - x-/y-coordinates of control and end points to draw to
|
911
|
+
@param y2 number - y-coordinate of ending control point (omitted if x2 is array)
|
912
|
+
@param x number - x-coordinate of curve end (omitted if x2 is array)
|
913
|
+
@param y number - y-coordinate of curve end (omitted if x2 is array)
|
914
|
+
@param relative boolean - true for coordinates relative to the current point,
|
915
|
+
false for coordinates being absolute
|
916
|
+
@return this path */
|
917
|
+
smoothCTo: function(x2, y2, x, y, relative) {
|
918
|
+
relative = (isArray(x2) ? y2 : relative);
|
919
|
+
return this._coords((relative ? 's' : 'S'), x2, y2, x, y);
|
920
|
+
},
|
921
|
+
|
922
|
+
/* Draw a quadratic B�zier curve.
|
923
|
+
@param x1 number - x-coordinate of control point or
|
924
|
+
number[][] - x-/y-coordinates of control and end points to draw to
|
925
|
+
@param y1 number - y-coordinate of control point (omitted if x1 is array)
|
926
|
+
@param x number - x-coordinate of curve end (omitted if x1 is array)
|
927
|
+
@param y number - y-coordinate of curve end (omitted if x1 is array)
|
928
|
+
@param relative boolean - true for coordinates relative to the current point,
|
929
|
+
false for coordinates being absolute
|
930
|
+
@return this path */
|
931
|
+
curveQTo: function(x1, y1, x, y, relative) {
|
932
|
+
relative = (isArray(x1) ? y1 : relative);
|
933
|
+
return this._coords((relative ? 'q' : 'Q'), x1, y1, x, y);
|
934
|
+
},
|
935
|
+
|
936
|
+
/* Continue a quadratic B�zier curve.
|
937
|
+
Control point is the reflection of the previous control point.
|
938
|
+
@param x number - x-coordinate of curve end or
|
939
|
+
number[][] - x-/y-coordinates of points to draw to
|
940
|
+
@param y number - y-coordinate of curve end (omitted if x is array)
|
941
|
+
@param relative boolean - true for coordinates relative to the current point,
|
942
|
+
false for coordinates being absolute
|
943
|
+
@return this path */
|
944
|
+
smoothQTo: function(x, y, relative) {
|
945
|
+
relative = (isArray(x) ? y : relative);
|
946
|
+
return this._coords((relative ? 't' : 'T'), x, y);
|
947
|
+
},
|
948
|
+
|
949
|
+
/* Generate a path command with (a list of) coordinates. */
|
950
|
+
_coords: function(cmd, x1, y1, x2, y2, x3, y3) {
|
951
|
+
if (isArray(x1)) {
|
952
|
+
for (var i = 0; i < x1.length; i++) {
|
953
|
+
var cs = x1[i];
|
954
|
+
this._path += (i == 0 ? cmd : ' ') + cs[0] + ',' + cs[1] +
|
955
|
+
(cs.length < 4 ? '' : ' ' + cs[2] + ',' + cs[3] +
|
956
|
+
(cs.length < 6 ? '': ' ' + cs[4] + ',' + cs[5]));
|
957
|
+
}
|
958
|
+
}
|
959
|
+
else {
|
960
|
+
this._path += cmd + x1 + ',' + y1 +
|
961
|
+
(x2 == null ? '' : ' ' + x2 + ',' + y2 +
|
962
|
+
(x3 == null ? '' : ' ' + x3 + ',' + y3));
|
963
|
+
}
|
964
|
+
return this;
|
965
|
+
},
|
966
|
+
|
967
|
+
/* Draw an arc to a position.
|
968
|
+
@param rx number - x-radius of arc or
|
969
|
+
number/boolean[][] - x-/y-coordinates and flags for points to draw to
|
970
|
+
@param ry number - y-radius of arc (omitted if rx is array)
|
971
|
+
@param xRotate number - x-axis rotation (degrees, clockwise) (omitted if rx is array)
|
972
|
+
@param large boolean - true to draw the large part of the arc,
|
973
|
+
false to draw the small part (omitted if rx is array)
|
974
|
+
@param clockwise boolean - true to draw the clockwise arc,
|
975
|
+
false to draw the anti-clockwise arc (omitted if rx is array)
|
976
|
+
@param x number - x-coordinate of arc end (omitted if rx is array)
|
977
|
+
@param y number - y-coordinate of arc end (omitted if rx is array)
|
978
|
+
@param relative boolean - true for coordinates relative to the current point,
|
979
|
+
false for coordinates being absolute
|
980
|
+
@return this path */
|
981
|
+
arcTo: function(rx, ry, xRotate, large, clockwise, x, y, relative) {
|
982
|
+
relative = (isArray(rx) ? ry : relative);
|
983
|
+
this._path += (relative ? 'a' : 'A');
|
984
|
+
if (isArray(rx)) {
|
985
|
+
for (var i = 0; i < rx.length; i++) {
|
986
|
+
var cs = rx[i];
|
987
|
+
this._path += (i == 0 ? '' : ' ') + cs[0] + ',' + cs[1] + ' ' +
|
988
|
+
cs[2] + ' ' + (cs[3] ? '1' : '0') + ',' +
|
989
|
+
(cs[4] ? '1' : '0') + ' ' + cs[5] + ',' + cs[6];
|
990
|
+
}
|
991
|
+
}
|
992
|
+
else {
|
993
|
+
this._path += rx + ',' + ry + ' ' + xRotate + ' ' +
|
994
|
+
(large ? '1' : '0') + ',' + (clockwise ? '1' : '0') + ' ' + x + ',' + y;
|
995
|
+
}
|
996
|
+
return this;
|
997
|
+
},
|
998
|
+
|
999
|
+
/* Close the current path.
|
1000
|
+
@return this path */
|
1001
|
+
close: function() {
|
1002
|
+
this._path += 'z';
|
1003
|
+
return this;
|
1004
|
+
},
|
1005
|
+
|
1006
|
+
/* Return the string rendering of the specified path.
|
1007
|
+
@return stringified path */
|
1008
|
+
path: function() {
|
1009
|
+
return this._path;
|
1010
|
+
}
|
1011
|
+
});
|
1012
|
+
|
1013
|
+
/* Helper to generate an SVG text object.
|
1014
|
+
Obtain an instance from the SVGRoot object.
|
1015
|
+
String calls together to generate the text and use its value:
|
1016
|
+
var text = root.createText();
|
1017
|
+
root.text(null, x, y, text.string('This is ').
|
1018
|
+
span('red', {fill: 'red'}).string('!'), {fill: 'blue'}); */
|
1019
|
+
function SVGText() {
|
1020
|
+
this._parts = []; // The components of the text object
|
1021
|
+
}
|
1022
|
+
|
1023
|
+
$.extend(SVGText.prototype, {
|
1024
|
+
/* Prepare to create a new text object.
|
1025
|
+
@return this text */
|
1026
|
+
reset: function() {
|
1027
|
+
this._parts = [];
|
1028
|
+
return this;
|
1029
|
+
},
|
1030
|
+
|
1031
|
+
/* Add a straight string value.
|
1032
|
+
@param value string - the actual text
|
1033
|
+
@return this text object */
|
1034
|
+
string: function(value) {
|
1035
|
+
this._parts[this._parts.length] = ['text', value];
|
1036
|
+
return this;
|
1037
|
+
},
|
1038
|
+
|
1039
|
+
/* Add a separate text span that has its own settings.
|
1040
|
+
@param value string - the actual text
|
1041
|
+
@param settings object - the settings for this text
|
1042
|
+
@return this text object */
|
1043
|
+
span: function(value, settings) {
|
1044
|
+
this._parts[this._parts.length] = ['tspan', value, settings];
|
1045
|
+
return this;
|
1046
|
+
},
|
1047
|
+
|
1048
|
+
/* Add a reference to a previously defined text string.
|
1049
|
+
@param id string - the ID of the actual text
|
1050
|
+
@param settings object - the settings for this text
|
1051
|
+
@return this text object */
|
1052
|
+
ref: function(id, settings) {
|
1053
|
+
this._parts[this._parts.length] = ['tref', id, settings];
|
1054
|
+
return this;
|
1055
|
+
},
|
1056
|
+
|
1057
|
+
/* Add text drawn along a path.
|
1058
|
+
@param id string - the ID of the path
|
1059
|
+
@param value string - the actual text
|
1060
|
+
@param settings object - the settings for this text
|
1061
|
+
@return this text object */
|
1062
|
+
path: function(id, value, settings) {
|
1063
|
+
this._parts[this._parts.length] = ['textpath', value,
|
1064
|
+
$.extend({href: id}, settings || {})];
|
1065
|
+
return this;
|
1066
|
+
}
|
1067
|
+
});
|
1068
|
+
|
1069
|
+
/* Attach the SVG functionality to a jQuery selection.
|
1070
|
+
@param loadURL string - the URL of the initial document to load (optional)
|
1071
|
+
@param onLoad function - a callback functional invoked following loading (optional)
|
1072
|
+
@param settings object - the new settings to use for this SVG instance (optional)
|
1073
|
+
@return jQuery object - for chaining further calls */
|
1074
|
+
$.fn.svg = function(loadURL, onLoad, settings) {
|
1075
|
+
if (typeof loadURL == 'function') {
|
1076
|
+
settings = onLoad;
|
1077
|
+
onLoad = loadURL;
|
1078
|
+
loadURL = null;
|
1079
|
+
}
|
1080
|
+
if (loadURL && typeof loadURL == 'object') {
|
1081
|
+
settings = loadURL;
|
1082
|
+
loadURL = onLoad = null;
|
1083
|
+
}
|
1084
|
+
if (onLoad && typeof onLoad == 'object') {
|
1085
|
+
settings = onLoad;
|
1086
|
+
onLoad = null;
|
1087
|
+
}
|
1088
|
+
return this.each(function() {
|
1089
|
+
svgManager._connectSVG(this, loadURL, onLoad, settings);
|
1090
|
+
});
|
1091
|
+
};
|
1092
|
+
|
1093
|
+
/* Determine whether an object is an array. */
|
1094
|
+
function isArray(a) {
|
1095
|
+
return (a.constructor && a.constructor.toString().match(/\Array\(\)/));
|
1096
|
+
}
|
1097
|
+
|
1098
|
+
// Singleton primary SVG interface
|
1099
|
+
svgManager = new SVGManager();
|
1100
|
+
|
1101
|
+
})(jQuery);
|