kirgudu_base 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +40 -0
- data/app/assets/images/kirgudu_base/404-fry.png +0 -0
- data/app/assets/images/kirgudu_base/Documents.gif +0 -0
- data/app/assets/images/kirgudu_base/Meetings.gif +0 -0
- data/app/assets/images/kirgudu_base/Repair.gif +0 -0
- data/app/assets/images/kirgudu_base/ajax-loader.gif +0 -0
- data/app/assets/images/kirgudu_base/alpha.png +0 -0
- data/app/assets/images/kirgudu_base/alpha2.png +0 -0
- data/app/assets/images/kirgudu_base/arrow.png +0 -0
- data/app/assets/images/kirgudu_base/box.gif +0 -0
- data/app/assets/images/kirgudu_base/chosen-sprite.png +0 -0
- data/app/assets/images/kirgudu_base/company_pxg.png +0 -0
- data/app/assets/images/kirgudu_base/datatables/back_disabled.png +0 -0
- data/app/assets/images/kirgudu_base/datatables/back_enabled.png +0 -0
- data/app/assets/images/kirgudu_base/datatables/back_enabled_hover.png +0 -0
- data/app/assets/images/kirgudu_base/datatables/forward_disabled.png +0 -0
- data/app/assets/images/kirgudu_base/datatables/forward_enabled.png +0 -0
- data/app/assets/images/kirgudu_base/datatables/forward_enabled_hover.png +0 -0
- data/app/assets/images/kirgudu_base/datatables/sort_asc.png +0 -0
- data/app/assets/images/kirgudu_base/datatables/sort_asc_disabled.png +0 -0
- data/app/assets/images/kirgudu_base/datatables/sort_both.png +0 -0
- data/app/assets/images/kirgudu_base/datatables/sort_desc.png +0 -0
- data/app/assets/images/kirgudu_base/datatables/sort_desc_disabled.png +0 -0
- data/app/assets/images/kirgudu_base/fancybox/blank.gif +0 -0
- data/app/assets/images/kirgudu_base/fancybox/fancybox_buttons.png +0 -0
- data/app/assets/images/kirgudu_base/fancybox/fancybox_loading.gif +0 -0
- data/app/assets/images/kirgudu_base/fancybox/fancybox_overlay.png +0 -0
- data/app/assets/images/kirgudu_base/fancybox/fancybox_sprite.png +0 -0
- data/app/assets/images/kirgudu_base/favicon.png +0 -0
- data/app/assets/images/kirgudu_base/general/clock.png +0 -0
- data/app/assets/images/kirgudu_base/general/clock2.png +0 -0
- data/app/assets/images/kirgudu_base/general/coffee.png +0 -0
- data/app/assets/images/kirgudu_base/general/coffee2.png +0 -0
- data/app/assets/images/kirgudu_base/general/flipchart.png +0 -0
- data/app/assets/images/kirgudu_base/general/flipchart2.png +0 -0
- data/app/assets/images/kirgudu_base/general/sun.png +0 -0
- data/app/assets/images/kirgudu_base/general/sun2.png +0 -0
- data/app/assets/images/kirgudu_base/glyphicons-halflings-white.png +0 -0
- data/app/assets/images/kirgudu_base/glyphicons-halflings.png +0 -0
- data/app/assets/images/kirgudu_base/gradient1.png +0 -0
- data/app/assets/images/kirgudu_base/hue2.png +0 -0
- data/app/assets/images/kirgudu_base/ico_16_4_d.gif +0 -0
- data/app/assets/images/kirgudu_base/ico_18_1010.gif +0 -0
- data/app/assets/images/kirgudu_base/ico_18_112.gif +0 -0
- data/app/assets/images/kirgudu_base/ico_18_2020.gif +0 -0
- data/app/assets/images/kirgudu_base/icon-contacts.gif +0 -0
- data/app/assets/images/kirgudu_base/icon-employees.gif +0 -0
- data/app/assets/images/kirgudu_base/icon-list.gif +0 -0
- data/app/assets/images/kirgudu_base/icon-orders-green.gif +0 -0
- data/app/assets/images/kirgudu_base/icon-orders.gif +0 -0
- data/app/assets/images/kirgudu_base/icon-tenders.gif +0 -0
- data/app/assets/images/kirgudu_base/icons-sa7c41345d9.png +0 -0
- data/app/assets/images/kirgudu_base/login-corner.png +0 -0
- data/app/assets/images/kirgudu_base/login-corner2.png +0 -0
- data/app/assets/images/kirgudu_base/logo.png +0 -0
- data/app/assets/images/kirgudu_base/maps/m1.png +0 -0
- data/app/assets/images/kirgudu_base/maps/m2.png +0 -0
- data/app/assets/images/kirgudu_base/maps/m3.png +0 -0
- data/app/assets/images/kirgudu_base/meeting-schedule.gif +0 -0
- data/app/assets/images/kirgudu_base/menu_icons/calendar.png +0 -0
- data/app/assets/images/kirgudu_base/menu_icons/dashboard.png +0 -0
- data/app/assets/images/kirgudu_base/menu_icons/forms.png +0 -0
- data/app/assets/images/kirgudu_base/menu_icons/gallery.png +0 -0
- data/app/assets/images/kirgudu_base/menu_icons/grid.png +0 -0
- data/app/assets/images/kirgudu_base/menu_icons/maps.png +0 -0
- data/app/assets/images/kirgudu_base/menu_icons/others.png +0 -0
- data/app/assets/images/kirgudu_base/menu_icons/statistics.png +0 -0
- data/app/assets/images/kirgudu_base/menu_icons/tables.png +0 -0
- data/app/assets/images/kirgudu_base/menu_icons/widgets.png +0 -0
- data/app/assets/images/kirgudu_base/menu_top/profile-avatar.png +0 -0
- data/app/assets/images/kirgudu_base/menu_top/profile-messages.png +0 -0
- data/app/assets/images/kirgudu_base/message_avatar1.png +0 -0
- data/app/assets/images/kirgudu_base/message_avatar2.png +0 -0
- data/app/assets/images/kirgudu_base/message_avatar3.png +0 -0
- data/app/assets/images/kirgudu_base/message_avatar4.png +0 -0
- data/app/assets/images/kirgudu_base/message_avatar5.png +0 -0
- data/app/assets/images/kirgudu_base/message_avatar6.png +0 -0
- data/app/assets/images/kirgudu_base/message_avatar7.png +0 -0
- data/app/assets/images/kirgudu_base/news-icon-16.gif +0 -0
- data/app/assets/images/kirgudu_base/operator-def.png +0 -0
- data/app/assets/images/kirgudu_base/patterns/bg_dark.png +0 -0
- data/app/assets/images/kirgudu_base/patterns/bg_dark2.png +0 -0
- data/app/assets/images/kirgudu_base/patterns/bg_dark3.png +0 -0
- data/app/assets/images/kirgudu_base/patterns/whitey.png +0 -0
- data/app/assets/images/kirgudu_base/people-16-16-256.gif +0 -0
- data/app/assets/images/kirgudu_base/sales_24x24 (1).gif +0 -0
- data/app/assets/images/kirgudu_base/sample_avatar_big.jpg +0 -0
- data/app/assets/images/kirgudu_base/saturation2.png +0 -0
- data/app/assets/images/kirgudu_base/search.png +0 -0
- data/app/assets/images/kirgudu_base/toggle.png +0 -0
- data/app/assets/images/kirgudu_base/ui-bg_fine-grain_10_e7e7e7_60x60.png +0 -0
- data/app/assets/images/kirgudu_base/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/app/assets/images/kirgudu_base/ui-bg_flat_0_ef4622_40x100.png +0 -0
- data/app/assets/images/kirgudu_base/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/app/assets/images/kirgudu_base/ui-bg_highlight-hard_100_e1e1e1_1x100.png +0 -0
- data/app/assets/images/kirgudu_base/ui-bg_highlight-hard_100_eeeeee_1x100.png +0 -0
- data/app/assets/images/kirgudu_base/ui-bg_highlight-hard_75_dddddd_1x100.png +0 -0
- data/app/assets/images/kirgudu_base/ui-bg_inset-soft_95_fef1ec_1x100.png +0 -0
- data/app/assets/images/kirgudu_base/ui-icons_454545_256x240.png +0 -0
- data/app/assets/images/kirgudu_base/ui-icons_525d66_256x240.png +0 -0
- data/app/assets/images/kirgudu_base/ui-icons_cd0a0a_256x240.png +0 -0
- data/app/assets/images/kirgudu_base/ui-icons_ffffff_256x240.png +0 -0
- data/app/assets/images/kirgudu_base/uploadify-cancel.png +0 -0
- data/app/assets/javascripts/kirgudu_base/ajax_form.js +52 -0
- data/app/assets/javascripts/kirgudu_base/application.js +15 -0
- data/app/assets/javascripts/kirgudu_base/avgrund.js +85 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-alert.js +90 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-button.js +96 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-carousel.js +176 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-collapse.js +158 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-colorpicker.js +520 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-datepicker.js +401 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-dropdown.js +150 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-modal.js +239 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-popover.js +103 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-scrollspy.js +151 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-tab.js +135 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-tooltip.js +275 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-transition.js +60 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-typeahead.js +300 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap-wysihtml5.js +458 -0
- data/app/assets/javascripts/kirgudu_base/bootstrap.js +6 -0
- data/app/assets/javascripts/kirgudu_base/character-limit.js +18 -0
- data/app/assets/javascripts/kirgudu_base/chosen.jquery.min.js +10 -0
- data/app/assets/javascripts/kirgudu_base/client_main.js +1017 -0
- data/app/assets/javascripts/kirgudu_base/delete.js +67 -0
- data/app/assets/javascripts/kirgudu_base/excanvas.compiled.js +35 -0
- data/app/assets/javascripts/kirgudu_base/fileinput.jquery.js +98 -0
- data/app/assets/javascripts/kirgudu_base/fullcalendar.js +5220 -0
- data/app/assets/javascripts/kirgudu_base/gmap3.min.js +39 -0
- data/app/assets/javascripts/kirgudu_base/highcharts.js +246 -0
- data/app/assets/javascripts/kirgudu_base/jdpicker.js +555 -0
- data/app/assets/javascripts/kirgudu_base/jnavigate.jquery.min.js +2 -0
- data/app/assets/javascripts/kirgudu_base/jquery-ui-1.8.23.custom.min.js +125 -0
- data/app/assets/javascripts/kirgudu_base/jquery-ui-1.8.23.custom.min_d9931121.js +125 -0
- data/app/assets/javascripts/kirgudu_base/jquery.blockUI.js +534 -0
- data/app/assets/javascripts/kirgudu_base/jquery.bookblock.js +533 -0
- data/app/assets/javascripts/kirgudu_base/jquery.cookie.js +94 -0
- data/app/assets/javascripts/kirgudu_base/jquery.dataTables.js +12092 -0
- data/app/assets/javascripts/kirgudu_base/jquery.endless-scroll.js +343 -0
- data/app/assets/javascripts/kirgudu_base/jquery.fancybox-buttons.js +121 -0
- data/app/assets/javascripts/kirgudu_base/jquery.fancybox-media.js +196 -0
- data/app/assets/javascripts/kirgudu_base/jquery.fancybox-thumbs.js +162 -0
- data/app/assets/javascripts/kirgudu_base/jquery.fancybox.js +1985 -0
- data/app/assets/javascripts/kirgudu_base/jquery.flot.crosshair.js +167 -0
- data/app/assets/javascripts/kirgudu_base/jquery.flot.js +2599 -0
- data/app/assets/javascripts/kirgudu_base/jquery.flot.pie.js +751 -0
- data/app/assets/javascripts/kirgudu_base/jquery.flot.resize.js +60 -0
- data/app/assets/javascripts/kirgudu_base/jquery.flot.spider.js +314 -0
- data/app/assets/javascripts/kirgudu_base/jquery.flot.stack.js +184 -0
- data/app/assets/javascripts/kirgudu_base/jquery.history.js +1 -0
- data/app/assets/javascripts/kirgudu_base/jquery.jcarousel.min.js +16 -0
- data/app/assets/javascripts/kirgudu_base/jquery.jeditable.js +543 -0
- data/app/assets/javascripts/kirgudu_base/jquery.js +2 -0
- data/app/assets/javascripts/kirgudu_base/jquery.json-2.3.min.js +23 -0
- data/app/assets/javascripts/kirgudu_base/jquery.maskedinput-1.3.js +258 -0
- data/app/assets/javascripts/kirgudu_base/jquery.mousewheel-min.js +12 -0
- data/app/assets/javascripts/kirgudu_base/jquery.peity.min.js +11 -0
- data/app/assets/javascripts/kirgudu_base/jquery.simplemodal-1.4.4.js +716 -0
- data/app/assets/javascripts/kirgudu_base/jquery.slides.min.js +7 -0
- data/app/assets/javascripts/kirgudu_base/jquery.sparkline.min.js +5 -0
- data/app/assets/javascripts/kirgudu_base/jquery.tagsinput.js +354 -0
- data/app/assets/javascripts/kirgudu_base/jquery.tools.min.js +17 -0
- data/app/assets/javascripts/kirgudu_base/jquery.touchdown.js +54 -0
- data/app/assets/javascripts/kirgudu_base/jquery.uniform.min.js +17 -0
- data/app/assets/javascripts/kirgudu_base/jquery.uploadify-3.1.js +975 -0
- data/app/assets/javascripts/kirgudu_base/jquery.uploadify.min.js +16 -0
- data/app/assets/javascripts/kirgudu_base/jquery.url-2.0.js +174 -0
- data/app/assets/javascripts/kirgudu_base/jquery.validate.min.js +4 -0
- data/app/assets/javascripts/kirgudu_base/jquerypp.custom.js +301 -0
- data/app/assets/javascripts/kirgudu_base/justgage.1.0.1.min.js +12 -0
- data/app/assets/javascripts/kirgudu_base/main.js +157 -0
- data/app/assets/javascripts/kirgudu_base/modernizr.custom.32549.js +815 -0
- data/app/assets/javascripts/kirgudu_base/mustache.js +532 -0
- data/app/assets/javascripts/kirgudu_base/popbox.js +57 -0
- data/app/assets/javascripts/kirgudu_base/raphael.2.1.0.min.js +10 -0
- data/app/assets/javascripts/kirgudu_base/scripts.js +1277 -0
- data/app/assets/javascripts/kirgudu_base/scripts_OLD.js +204 -0
- data/app/assets/javascripts/kirgudu_base/sub_select.js +50 -0
- data/app/assets/javascripts/kirgudu_base/swfobject.js +5 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shAutoloader.js +17 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushAS3.js +59 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushAppleScript.js +75 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushBash.js +59 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushCSharp.js +65 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushColdFusion.js +100 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushCpp.js +97 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushCss.js +91 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushDelphi.js +55 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushDiff.js +41 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushErlang.js +52 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushGroovy.js +67 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushJScript.js +52 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushJava.js +57 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushJavaFX.js +58 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushPerl.js +72 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushPhp.js +88 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushPlain.js +33 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushPowerShell.js +74 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushPython.js +64 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushRuby.js +55 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushSass.js +94 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushScala.js +51 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushSql.js +66 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushVb.js +56 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shBrushXml.js +69 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shCore.js +17 -0
- data/app/assets/javascripts/kirgudu_base/syntax-highlighter/shLegacy.js +17 -0
- data/app/assets/javascripts/kirgudu_base/textarea-autogrow.js +55 -0
- data/app/assets/javascripts/kirgudu_base/tiny_mce.js +1 -0
- data/app/assets/javascripts/kirgudu_base/watch.js +81 -0
- data/app/assets/javascripts/kirgudu_base/web/inputPlaceholder.js +82 -0
- data/app/assets/javascripts/kirgudu_base/web/js.js +91 -0
- data/app/assets/javascripts/kirgudu_base/web/navigate.js +20 -0
- data/app/assets/javascripts/kirgudu_base/web/watch.js +1706 -0
- data/app/assets/javascripts/kirgudu_base/wysihtml5-0.3.0.min.js +261 -0
- data/app/assets/stylesheets/kirgudu_base/bootstrap.css +4551 -0
- data/app/assets/stylesheets/kirgudu_base/chosen.css +397 -0
- data/app/assets/stylesheets/kirgudu_base/fullcalendar.css +655 -0
- data/app/assets/stylesheets/kirgudu_base/info-message.css +79 -0
- data/app/assets/stylesheets/kirgudu_base/jdpicker.css +200 -0
- data/app/assets/stylesheets/kirgudu_base/jquery-ui-1.8.23.custom.css +1235 -0
- data/app/assets/stylesheets/kirgudu_base/jquery.fancybox-buttons.css +96 -0
- data/app/assets/stylesheets/kirgudu_base/jquery.fancybox-thumbs.css +54 -0
- data/app/assets/stylesheets/kirgudu_base/jquery.fancybox.css +249 -0
- data/app/assets/stylesheets/kirgudu_base/jquery.tagsinput.css +7 -0
- data/app/assets/stylesheets/kirgudu_base/main.css +1368 -0
- data/app/assets/stylesheets/kirgudu_base/menu.css +159 -0
- data/app/assets/stylesheets/kirgudu_base/popbox.css +58 -0
- data/app/assets/stylesheets/kirgudu_base/responsive.css +2249 -0
- data/app/assets/stylesheets/kirgudu_base/switcher.css +80 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shCore.css +226 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shCoreDefault.css +328 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shCoreDjango.css +331 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shCoreEclipse.css +339 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shCoreEmacs.css +324 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shCoreFadeToGrey.css +328 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shCoreMDUltra.css +324 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shCoreMidnight.css +324 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shCoreRDark.css +324 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shThemeDefault.css +117 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shThemeDjango.css +120 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shThemeEclipse.css +128 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shThemeEmacs.css +113 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shThemeFadeToGrey.css +117 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shThemeMDUltra.css +113 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shThemeMidnight.css +113 -0
- data/app/assets/stylesheets/kirgudu_base/syntax-higlignter/shThemeRDark.css +113 -0
- data/app/assets/stylesheets/kirgudu_base/uploadify.css +92 -0
- data/app/controllers/kirgudu_base/admin_controller.rb +91 -0
- data/app/controllers/kirgudu_base/application_controller.rb +676 -0
- data/app/controllers/kirgudu_base/cabinet_controller.rb +93 -0
- data/app/controllers/kirgudu_base/facade_controller.rb +82 -0
- data/app/helpers/kirgudu_base/application_helper.rb +486 -0
- data/app/helpers/kirgudu_base/breadcrumbs_helper.rb +27 -0
- data/app/helpers/kirgudu_base/class_helper.rb +32 -0
- data/app/helpers/kirgudu_base/controllers/basic_actions.rb +625 -0
- data/app/helpers/kirgudu_base/controllers/container_items_management_actions.rb +118 -0
- data/app/helpers/kirgudu_base/controllers/container_items_sorting_actions.rb +64 -0
- data/app/helpers/kirgudu_base/controllers/dynamic_pages.rb +30 -0
- data/app/helpers/kirgudu_base/controllers/obligatory_filters.rb +29 -0
- data/app/helpers/kirgudu_base/controllers/transaction_wrapper.rb +138 -0
- data/app/helpers/kirgudu_base/form_builder.rb +474 -0
- data/app/helpers/kirgudu_base/gui_helper.rb +443 -0
- data/app/helpers/kirgudu_base/models/basic_management_urls.rb +104 -0
- data/app/helpers/kirgudu_base/models/data_filter.rb +236 -0
- data/app/helpers/kirgudu_base/models/exports.rb +167 -0
- data/app/helpers/kirgudu_base/models/filters.rb +32 -0
- data/app/helpers/kirgudu_base/models/form_properties.rb +108 -0
- data/app/helpers/kirgudu_base/models/form_property.rb +335 -0
- data/app/helpers/kirgudu_base/models/methods.rb +64 -0
- data/app/helpers/kirgudu_base/models/scopes.rb +157 -0
- data/app/helpers/kirgudu_base/models/sorting.rb +99 -0
- data/app/helpers/kirgudu_base/models/standard_actions.rb +50 -0
- data/app/helpers/kirgudu_base/models/uncloneable_properties.rb +21 -0
- data/app/helpers/kirgudu_base/old_form_builder.rb +340 -0
- data/app/helpers/kirgudu_base/url_helper.rb +18 -0
- data/app/models/kirgudu_base/base_model.rb +293 -0
- data/app/models/kirgudu_base/dynamic_pages/action_for.rb +78 -0
- data/app/models/kirgudu_base/dynamic_pages/action_for_builder.rb +46 -0
- data/app/models/kirgudu_base/dynamic_pages/data_source.rb +111 -0
- data/app/models/kirgudu_base/dynamic_pages/data_source_builder.rb +79 -0
- data/app/models/kirgudu_base/dynamic_pages/form.rb +99 -0
- data/app/models/kirgudu_base/dynamic_pages/form_builder.rb +85 -0
- data/app/models/kirgudu_base/dynamic_pages/input_type.rb +17 -0
- data/app/models/kirgudu_base/dynamic_pages/on_change.rb +40 -0
- data/app/models/kirgudu_base/dynamic_pages/on_change_builder.rb +38 -0
- data/app/models/kirgudu_base/dynamic_pages/page.rb +55 -0
- data/app/models/kirgudu_base/dynamic_pages/page_builder.rb +63 -0
- data/app/models/kirgudu_base/dynamic_pages/property.rb +185 -0
- data/app/models/kirgudu_base/dynamic_pages/property_builder.rb +123 -0
- data/app/models/kirgudu_base/template.rb +6 -0
- data/app/models/kirgudu_base/template_element.rb +6 -0
- data/app/views/layouts/kirgudu_base/application.html.erb +141 -0
- data/app/views/shared/kirgudu_base/_body_javascripts_files.html.erb +71 -0
- data/app/views/shared/kirgudu_base/_body_javascripts_scripts.html.erb +1099 -0
- data/app/views/shared/kirgudu_base/_breadcrumbs.html.erb +36 -0
- data/app/views/shared/kirgudu_base/_head_javascripts.html.erb +21 -0
- data/app/views/shared/kirgudu_base/_head_stylesheets.html.erb +21 -0
- data/app/views/shared/kirgudu_base/_index_page_filter.html.erb +43 -0
- data/app/views/shared/kirgudu_base/_left_menu_standard_actions.html.erb +57 -0
- data/app/views/shared/kirgudu_base/_services_top_line.html.erb +5 -0
- data/app/views/shared/kirgudu_base/_top_nav_bar.html.erb +58 -0
- data/app/views/shared/kirgudu_base/entry_edit_form_renderer.html.erb +70 -0
- data/app/views/shared/kirgudu_base/entry_index_renderer.html.erb +98 -0
- data/app/views/shared/kirgudu_base/entry_new_form_renderer.html.erb +68 -0
- data/app/views/shared/kirgudu_base/entry_not_found_renderer.html.erb +15 -0
- data/app/views/shared/kirgudu_base/entry_show_renderer.html.erb +28 -0
- data/app/views/shared/kirgudu_base/manage_images/managing_items_index.html.erb +34 -0
- data/app/views/shared/kirgudu_base/manage_images/managing_items_manage.html.erb +72 -0
- data/app/views/shared/kirgudu_base/manage_images/managing_items_sort_index.html.erb +33 -0
- data/app/views/shared/kirgudu_base/manage_items/managing_items_index.html.erb +42 -0
- data/app/views/shared/kirgudu_base/manage_items/managing_items_manage.html.erb +66 -0
- data/app/views/shared/kirgudu_base/manage_items/managing_items_sort_index.html.erb +33 -0
- data/config/routes.rb +3 -0
- data/db/migrate/20131114161828_create_kirgudu_base_templates.rb +17 -0
- data/db/migrate/20131114165013_create_kirgudu_base_template_elements.rb +18 -0
- data/lib/kirgudu_base/engine.rb +6 -0
- data/lib/kirgudu_base/version.rb +4 -0
- data/lib/kirgudu_base.rb +5 -0
- data/lib/tasks/kirgudu_base_tasks.rake +4 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +4 -0
- data/test/dummy/app/helpers/application_helper.rb +3 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config/application.rb +60 -0
- data/test/dummy/config/boot.rb +11 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +6 -0
- data/test/dummy/config/environments/development.rb +38 -0
- data/test/dummy/config/environments/production.rb +68 -0
- data/test/dummy/config/environments/test.rb +38 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +8 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +6 -0
- data/test/dummy/config/initializers/secret_token.rb +8 -0
- data/test/dummy/config/initializers/session_store.rb +9 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +15 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +5 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/fixtures/kirgudu_base/template_elements.yml +17 -0
- data/test/fixtures/kirgudu_base/templates.yml +15 -0
- data/test/integration/navigation_test.rb +11 -0
- data/test/kirgudu_base_test.rb +8 -0
- data/test/test_helper.rb +16 -0
- data/test/unit/kirgudu_base/template_element_test.rb +10 -0
- data/test/unit/kirgudu_base/template_test.rb +10 -0
- metadata +492 -0
@@ -0,0 +1,60 @@
|
|
1
|
+
/*
|
2
|
+
Flot plugin for automatically redrawing plots when the placeholder
|
3
|
+
size changes, e.g. on window resizes.
|
4
|
+
|
5
|
+
It works by listening for changes on the placeholder div (through the
|
6
|
+
jQuery resize event plugin) - if the size changes, it will redraw the
|
7
|
+
plot.
|
8
|
+
|
9
|
+
There are no options. If you need to disable the plugin for some
|
10
|
+
plots, you can just fix the size of their placeholders.
|
11
|
+
*/
|
12
|
+
|
13
|
+
|
14
|
+
/* Inline dependency:
|
15
|
+
* jQuery resize event - v1.1 - 3/14/2010
|
16
|
+
* http://benalman.com/projects/jquery-resize-plugin/
|
17
|
+
*
|
18
|
+
* Copyright (c) 2010 "Cowboy" Ben Alman
|
19
|
+
* Dual licensed under the MIT and GPL licenses.
|
20
|
+
* http://benalman.com/about/license/
|
21
|
+
*/
|
22
|
+
(function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k="setTimeout",j="resize",d=j+"-special-event",b="delay",f="throttleWindow";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this);
|
23
|
+
|
24
|
+
|
25
|
+
(function ($) {
|
26
|
+
var options = { }; // no options
|
27
|
+
|
28
|
+
function init(plot) {
|
29
|
+
function onResize() {
|
30
|
+
var placeholder = plot.getPlaceholder();
|
31
|
+
|
32
|
+
// somebody might have hidden us and we can't plot
|
33
|
+
// when we don't have the dimensions
|
34
|
+
if (placeholder.width() == 0 || placeholder.height() == 0)
|
35
|
+
return;
|
36
|
+
|
37
|
+
plot.resize();
|
38
|
+
plot.setupGrid();
|
39
|
+
plot.draw();
|
40
|
+
}
|
41
|
+
|
42
|
+
function bindEvents(plot, eventHolder) {
|
43
|
+
plot.getPlaceholder().resize(onResize);
|
44
|
+
}
|
45
|
+
|
46
|
+
function shutdown(plot, eventHolder) {
|
47
|
+
plot.getPlaceholder().unbind("resize", onResize);
|
48
|
+
}
|
49
|
+
|
50
|
+
plot.hooks.bindEvents.push(bindEvents);
|
51
|
+
plot.hooks.shutdown.push(shutdown);
|
52
|
+
}
|
53
|
+
|
54
|
+
$.plot.plugins.push({
|
55
|
+
init: init,
|
56
|
+
options: options,
|
57
|
+
name: 'resize',
|
58
|
+
version: '1.0'
|
59
|
+
});
|
60
|
+
})(jQuery);
|
@@ -0,0 +1,314 @@
|
|
1
|
+
/*
|
2
|
+
* The MIT License
|
3
|
+
|
4
|
+
Copyright (c) 2010 by Juergen Marsch
|
5
|
+
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
8
|
+
in the Software without restriction, including without limitation the rights
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
11
|
+
furnished to do so, subject to the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be included in
|
14
|
+
all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
THE SOFTWARE.
|
23
|
+
*/
|
24
|
+
/*
|
25
|
+
Flot plugin for Spiders data sets
|
26
|
+
|
27
|
+
series: {
|
28
|
+
spider: { active: true, lineWidth: 8
|
29
|
+
}
|
30
|
+
data: [
|
31
|
+
|
32
|
+
$.plot($("#placeholder"), [{ data: [ [y, x, size], [....], ...], spider: {show: true, lineWidth: 5} } ])
|
33
|
+
|
34
|
+
*/
|
35
|
+
|
36
|
+
(function ($)
|
37
|
+
{ var options =
|
38
|
+
{ series:
|
39
|
+
{ spider:
|
40
|
+
{ active: false
|
41
|
+
,show: false
|
42
|
+
,spiderSize: 0.8
|
43
|
+
,lineWidth: 3
|
44
|
+
,lineStyle: "rgba(0,0,0,0.5)"
|
45
|
+
,pointSize: 6
|
46
|
+
,scaleMode: "leg"
|
47
|
+
,legMin: null
|
48
|
+
,legMax: null
|
49
|
+
,connection: { width: 4 }
|
50
|
+
,highlight: { opacity: 0.5, mode: "point" }
|
51
|
+
,legs: { font: "20px Times New Roman"
|
52
|
+
,fillStyle: "Black"
|
53
|
+
,legScaleMin: 0.95
|
54
|
+
,legScaleMax: 1.05
|
55
|
+
,legStartAngle: 0
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
59
|
+
,grid:{ tickColor: "rgba(0,0,0,0.15)"
|
60
|
+
,ticks: 5
|
61
|
+
,mode: "radar"}
|
62
|
+
};
|
63
|
+
var data = null, canvas = null, target = null, axes = null, offset = null, highlights = [],opt = null;
|
64
|
+
var maxRadius = null, centerLeft = null, centerTop = null;
|
65
|
+
var lineRanges = [];
|
66
|
+
|
67
|
+
function init(plot)
|
68
|
+
{ plot.hooks.processOptions.push(processOptions);
|
69
|
+
function processOptions(plot,options)
|
70
|
+
{ if(options.series.spider.active)
|
71
|
+
{ options.grid.show = false;
|
72
|
+
plot.hooks.draw.push(draw);
|
73
|
+
plot.hooks.bindEvents.push(bindEvents);
|
74
|
+
plot.hooks.drawOverlay.push(drawOverlay);
|
75
|
+
}
|
76
|
+
}
|
77
|
+
function draw(plot, ctx)
|
78
|
+
{ canvas = plot.getCanvas();
|
79
|
+
target = $(canvas).parent();
|
80
|
+
data = plot.getData();
|
81
|
+
opt = plot.getOptions();
|
82
|
+
clear(ctx);
|
83
|
+
setupspider();
|
84
|
+
calculateRanges();
|
85
|
+
drawspider(ctx,opt.grid);
|
86
|
+
}
|
87
|
+
function calculateRanges()
|
88
|
+
{ var ranges = [];
|
89
|
+
if (data[0].spider.scaleMode == 'leg')
|
90
|
+
{ for (var j = 0; j < data[0].data.length; j++)
|
91
|
+
{ ranges.push(calculateItemRanges(j)); }
|
92
|
+
}
|
93
|
+
else
|
94
|
+
{ var range = calculateRange();
|
95
|
+
for(var j = 0; j < data[0].data.length; j++)
|
96
|
+
{ ranges.push(range); }
|
97
|
+
}
|
98
|
+
data.ranges = ranges;
|
99
|
+
}
|
100
|
+
function calculateItemRanges(j)
|
101
|
+
{ var min = Number.POSITIVE_INFINITY, max = Number.NEGATIVE_INFINITY;
|
102
|
+
for(var i = 0; i < data.length; i++)
|
103
|
+
{ min = Math.min(min,data[i].data[j][1]);
|
104
|
+
max = Math.max(max,data[i].data[j][1]);
|
105
|
+
}
|
106
|
+
min = min * data[0].spider.legs.legScaleMin;
|
107
|
+
max = max * data[0].spider.legs.legScaleMax;
|
108
|
+
if(opt.series.spider.legMin) min = opt.series.spider.legMin;
|
109
|
+
if(opt.series.spider.legMax) max = opt.series.spider.legMax;
|
110
|
+
return {min: min, max:max, range: max - min};
|
111
|
+
}
|
112
|
+
function calculateRange()
|
113
|
+
{ var min = Number.POSITIVE_INFINITY, max = Number.NEGATIVE_INFINITY;
|
114
|
+
for(var j = 0; j < data[0].data.length; j++)
|
115
|
+
{ for(var i = 0; i < data.length; i++)
|
116
|
+
{ min = Math.min(min,data[i].data[j][1]);
|
117
|
+
max = Math.max(max,data[i].data[j][1]);
|
118
|
+
}
|
119
|
+
}
|
120
|
+
min = min * data[0].spider.legs.legScaleMin;
|
121
|
+
max = max * data[0].spider.legs.legScaleMax;
|
122
|
+
if(opt.series.spider.legMin) min = opt.series.spider.legMin;
|
123
|
+
if(opt.series.spider.legMax) max = opt.series.spider.legMax;
|
124
|
+
return {min: min, max:max, range: max - min};
|
125
|
+
}
|
126
|
+
function clear(ctx)
|
127
|
+
{ ctx.clearRect(0,0,canvas.width,canvas.height); }
|
128
|
+
function setupspider()
|
129
|
+
{ maxRadius = Math.min(canvas.width,canvas.height)/2 * data[0].spider.spiderSize;
|
130
|
+
centerTop = (canvas.height/2);
|
131
|
+
centerLeft = centerTop;
|
132
|
+
}
|
133
|
+
function drawspiderPoints(ctx,cnt,serie,opt)
|
134
|
+
{ for(var j = 0; j < serie.data.length; j++)
|
135
|
+
{ drawspiderPoint(ctx,cnt,serie,j,opt); }
|
136
|
+
}
|
137
|
+
function drawspiderPoint(ctx,cnt,serie,j,c)
|
138
|
+
{ var pos;
|
139
|
+
var d = calculatePosition(serie,data.ranges,j);
|
140
|
+
ctx.beginPath();
|
141
|
+
ctx.lineWidth = 1;
|
142
|
+
ctx.fillStyle = c;
|
143
|
+
ctx.strokeStyle = c;
|
144
|
+
pos = calculateXY(cnt,j,d);
|
145
|
+
ctx.arc(pos.x,pos.y,serie.spider.pointSize,0,Math.PI * 2,true);
|
146
|
+
ctx.closePath();
|
147
|
+
ctx.fill();
|
148
|
+
}
|
149
|
+
function drawspiderConnections(ctx,cnt,serie,c,fill)
|
150
|
+
{ var pos,d;
|
151
|
+
ctx.beginPath();
|
152
|
+
ctx.lineWidth = serie.spider.connection.width;
|
153
|
+
ctx.strokeStyle = c;
|
154
|
+
ctx.fillStyle = c;
|
155
|
+
d = calculatePosition(serie,data.ranges,0);
|
156
|
+
pos = calculateXY(cnt,0,d);
|
157
|
+
ctx.moveTo(pos.x,pos.y);
|
158
|
+
for(var j = 1;j < serie.data.length; j++)
|
159
|
+
{ d = calculatePosition(serie,data.ranges,j);
|
160
|
+
pos = calculateXY(cnt,j,d);
|
161
|
+
ctx.lineTo(pos.x,pos.y);
|
162
|
+
}
|
163
|
+
d = calculatePosition(serie,data.ranges,0);
|
164
|
+
pos = calculateXY(cnt,0,d);
|
165
|
+
ctx.lineTo(pos.x,pos.y);
|
166
|
+
if(fill) ctx.fill(); else ctx.stroke();
|
167
|
+
}
|
168
|
+
function drawspider(ctx, opt)
|
169
|
+
{ var cnt = data[0].data.length;
|
170
|
+
drawGrid(ctx, opt);
|
171
|
+
for(var i = 0;i < data.length; i++)
|
172
|
+
{ drawspiderPoints(ctx,cnt,data[i],data[i].color); }
|
173
|
+
for(var i = 0;i < data.length; i++)
|
174
|
+
{ drawspiderConnections(ctx,cnt,data[i],data[i].color); }
|
175
|
+
function drawGridRadar(ctx,opt)
|
176
|
+
{ ctx.lineWidth = 1;
|
177
|
+
ctx.strokeStyle = opt.tickColor;
|
178
|
+
for (var i = 1; i <= opt.ticks; i++)
|
179
|
+
{ ctx.beginPath();
|
180
|
+
ctx.arc(centerLeft, centerTop, maxRadius / opt.ticks * i, 0, Math.PI * 2, true);
|
181
|
+
ctx.closePath();
|
182
|
+
ctx.stroke();
|
183
|
+
}
|
184
|
+
for (var j = 0; j < cnt; j++)
|
185
|
+
{ drawspiderLine(ctx, j);
|
186
|
+
drawspiderLeg(ctx,j);
|
187
|
+
}
|
188
|
+
}
|
189
|
+
function drawGridSpider(ctx,opt)
|
190
|
+
{ ctx.linewidth = 1;
|
191
|
+
ctx.strokeStyle = opt.tickColor;
|
192
|
+
for(var i = 0; i<= opt.ticks; i++)
|
193
|
+
{ var pos = calculateXY(cnt,0,100 / opt.ticks * i);
|
194
|
+
ctx.beginPath();
|
195
|
+
ctx.moveTo(pos.x, pos.y);
|
196
|
+
for(var j = 1; j < cnt; j++)
|
197
|
+
{ pos = calculateXY(cnt,j,100 / opt.ticks * i);
|
198
|
+
ctx.lineTo(pos.x, pos.y);
|
199
|
+
}
|
200
|
+
ctx.closePath();
|
201
|
+
ctx.stroke();
|
202
|
+
}
|
203
|
+
for (var j = 0; j < cnt; j++)
|
204
|
+
{ drawspiderLine(ctx,j);
|
205
|
+
drawspiderLeg(ctx,j);
|
206
|
+
}
|
207
|
+
}
|
208
|
+
function drawGrid(ctx, opt)
|
209
|
+
{ switch(opt.mode)
|
210
|
+
{ case "radar":
|
211
|
+
drawGridRadar(ctx,opt);
|
212
|
+
break;
|
213
|
+
case "spider":
|
214
|
+
drawGridSpider(ctx,opt);
|
215
|
+
break;
|
216
|
+
default:
|
217
|
+
drawGridRadar(ctx,opt);
|
218
|
+
break;
|
219
|
+
}
|
220
|
+
}
|
221
|
+
function drawScale(ctx,opt)
|
222
|
+
{ if(opt.series.spider.scaleMode != "leg")
|
223
|
+
{ for(var i = 0; i <= opt.ticks; i++)
|
224
|
+
{
|
225
|
+
|
226
|
+
}
|
227
|
+
}
|
228
|
+
}
|
229
|
+
function drawspiderLine(ctx, j)
|
230
|
+
{ var pos;
|
231
|
+
ctx.beginPath();
|
232
|
+
ctx.lineWidth = options.series.spider.lineWidth;
|
233
|
+
ctx.strokeStyle = options.series.spider.lineStyle;
|
234
|
+
ctx.moveTo(centerTop, centerLeft);
|
235
|
+
pos = calculateXY(cnt,j,100);
|
236
|
+
ctx.lineTo(pos.x, pos.y);
|
237
|
+
ctx.stroke();
|
238
|
+
}
|
239
|
+
function drawspiderLeg(ctx,j,gridColor)
|
240
|
+
{ var pos;
|
241
|
+
pos = calculateXY(cnt,j,100);
|
242
|
+
ctx.font = data[0].spider.legs.font;
|
243
|
+
ctx.fillStyle = data[0].spider.legs.fillStyle;
|
244
|
+
ctx.fillText(data[0].spider.legs.data[j].label, pos.x, pos.y);
|
245
|
+
}
|
246
|
+
}
|
247
|
+
function calculatePosition(serie,ranges,j)
|
248
|
+
{ var p;
|
249
|
+
p = Math.max(Math.min(serie.data[j][1],ranges[j].max),ranges[j].min);
|
250
|
+
return (p - ranges[j].min) / ranges[j].range * 100;
|
251
|
+
}
|
252
|
+
function calculateXY(cnt,j,d)
|
253
|
+
{ var x,y,s;
|
254
|
+
s = 2 * Math.PI * opt.series.spider.legs.legStartAngle / 360;
|
255
|
+
x = centerLeft + Math.round(Math.cos(2 * Math.PI / cnt * j + s) * maxRadius * d / 100);
|
256
|
+
y = centerTop + Math.round(Math.sin(2 * Math.PI / cnt * j + s) * maxRadius * d / 100);
|
257
|
+
return {x: x, y: y};
|
258
|
+
}
|
259
|
+
function bindEvents(plot, eventHolder)
|
260
|
+
{ var options = plot.getOptions();
|
261
|
+
var hl = new HighLighting(plot, eventHolder, findNearby, options.series.spider.active,highlights)
|
262
|
+
}
|
263
|
+
function findNearby(plot,mousex, mousey)
|
264
|
+
{ var serie, r = null, cnt;
|
265
|
+
data = plot.getData();
|
266
|
+
cnt = data[0].data.length;
|
267
|
+
axes = plot.getAxes();
|
268
|
+
for(var i = 0;i < data.length;i++)
|
269
|
+
{ serie = data[i];
|
270
|
+
if(serie.spider.show)
|
271
|
+
{ for(var j = 0; j < serie.data.length; j++)
|
272
|
+
{ var pos = calculateXY(cnt,j,calculatePosition(serie,data.ranges,j));
|
273
|
+
var dx = Math.abs(pos.x - mousex)
|
274
|
+
,dy = Math.abs(pos.y - mousey)
|
275
|
+
,dist = Math.sqrt(dx * dx + dy * dy);
|
276
|
+
if (dist <= serie.spider.pointSize) { r = {i: i,j: j}; }
|
277
|
+
}
|
278
|
+
}
|
279
|
+
}
|
280
|
+
return r;
|
281
|
+
}
|
282
|
+
function drawOverlay(plot, octx)
|
283
|
+
{ var cnt;
|
284
|
+
cnt = data[0].data.length;
|
285
|
+
octx.save();
|
286
|
+
octx.clearRect(0, 0, target.width(), target.height());
|
287
|
+
for(i = 0; i < highlights.length; ++i)
|
288
|
+
{ drawHighlight(highlights[i]);}
|
289
|
+
octx.restore();
|
290
|
+
function drawHighlight(s)
|
291
|
+
{ var c = "rgba(255, 255, 255, " + s.series.spider.highlight.opacity + ")";
|
292
|
+
switch(s.series.spider.highlight.mode)
|
293
|
+
{ case "point":
|
294
|
+
drawspiderPoints(octx,cnt,s.series,c);
|
295
|
+
break;
|
296
|
+
case "line":
|
297
|
+
drawspiderConnections(octx,cnt,s.series,c,false);
|
298
|
+
break;
|
299
|
+
case "area":
|
300
|
+
drawspiderConnections(octx,cnt,s.series,s.series.color,true);
|
301
|
+
break;
|
302
|
+
default:
|
303
|
+
break;
|
304
|
+
}
|
305
|
+
}
|
306
|
+
}
|
307
|
+
}
|
308
|
+
$.plot.plugins.push({
|
309
|
+
init: init,
|
310
|
+
options: options,
|
311
|
+
name: 'spider',
|
312
|
+
version: '0.2'
|
313
|
+
});
|
314
|
+
})(jQuery);
|
@@ -0,0 +1,184 @@
|
|
1
|
+
/*
|
2
|
+
Flot plugin for stacking data sets, i.e. putting them on top of each
|
3
|
+
other, for accumulative graphs.
|
4
|
+
|
5
|
+
The plugin assumes the data is sorted on x (or y if stacking
|
6
|
+
horizontally). For line charts, it is assumed that if a line has an
|
7
|
+
undefined gap (from a null point), then the line above it should have
|
8
|
+
the same gap - insert zeros instead of "null" if you want another
|
9
|
+
behaviour. This also holds for the start and end of the chart. Note
|
10
|
+
that stacking a mix of positive and negative values in most instances
|
11
|
+
doesn't make sense (so it looks weird).
|
12
|
+
|
13
|
+
Two or more series are stacked when their "stack" attribute is set to
|
14
|
+
the same key (which can be any number or string or just "true"). To
|
15
|
+
specify the default stack, you can set
|
16
|
+
|
17
|
+
series: {
|
18
|
+
stack: null or true or key (number/string)
|
19
|
+
}
|
20
|
+
|
21
|
+
or specify it for a specific series
|
22
|
+
|
23
|
+
$.plot($("#placeholder"), [{ data: [ ... ], stack: true }])
|
24
|
+
|
25
|
+
The stacking order is determined by the order of the data series in
|
26
|
+
the array (later series end up on top of the previous).
|
27
|
+
|
28
|
+
Internally, the plugin modifies the datapoints in each series, adding
|
29
|
+
an offset to the y value. For line series, extra data points are
|
30
|
+
inserted through interpolation. If there's a second y value, it's also
|
31
|
+
adjusted (e.g for bar charts or filled areas).
|
32
|
+
*/
|
33
|
+
|
34
|
+
(function ($) {
|
35
|
+
var options = {
|
36
|
+
series: { stack: null } // or number/string
|
37
|
+
};
|
38
|
+
|
39
|
+
function init(plot) {
|
40
|
+
function findMatchingSeries(s, allseries) {
|
41
|
+
var res = null
|
42
|
+
for (var i = 0; i < allseries.length; ++i) {
|
43
|
+
if (s == allseries[i])
|
44
|
+
break;
|
45
|
+
|
46
|
+
if (allseries[i].stack == s.stack)
|
47
|
+
res = allseries[i];
|
48
|
+
}
|
49
|
+
|
50
|
+
return res;
|
51
|
+
}
|
52
|
+
|
53
|
+
function stackData(plot, s, datapoints) {
|
54
|
+
if (s.stack == null)
|
55
|
+
return;
|
56
|
+
|
57
|
+
var other = findMatchingSeries(s, plot.getData());
|
58
|
+
if (!other)
|
59
|
+
return;
|
60
|
+
|
61
|
+
var ps = datapoints.pointsize,
|
62
|
+
points = datapoints.points,
|
63
|
+
otherps = other.datapoints.pointsize,
|
64
|
+
otherpoints = other.datapoints.points,
|
65
|
+
newpoints = [],
|
66
|
+
px, py, intery, qx, qy, bottom,
|
67
|
+
withlines = s.lines.show,
|
68
|
+
horizontal = s.bars.horizontal,
|
69
|
+
withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y),
|
70
|
+
withsteps = withlines && s.lines.steps,
|
71
|
+
fromgap = true,
|
72
|
+
keyOffset = horizontal ? 1 : 0,
|
73
|
+
accumulateOffset = horizontal ? 0 : 1,
|
74
|
+
i = 0, j = 0, l;
|
75
|
+
|
76
|
+
while (true) {
|
77
|
+
if (i >= points.length)
|
78
|
+
break;
|
79
|
+
|
80
|
+
l = newpoints.length;
|
81
|
+
|
82
|
+
if (points[i] == null) {
|
83
|
+
// copy gaps
|
84
|
+
for (m = 0; m < ps; ++m)
|
85
|
+
newpoints.push(points[i + m]);
|
86
|
+
i += ps;
|
87
|
+
}
|
88
|
+
else if (j >= otherpoints.length) {
|
89
|
+
// for lines, we can't use the rest of the points
|
90
|
+
if (!withlines) {
|
91
|
+
for (m = 0; m < ps; ++m)
|
92
|
+
newpoints.push(points[i + m]);
|
93
|
+
}
|
94
|
+
i += ps;
|
95
|
+
}
|
96
|
+
else if (otherpoints[j] == null) {
|
97
|
+
// oops, got a gap
|
98
|
+
for (m = 0; m < ps; ++m)
|
99
|
+
newpoints.push(null);
|
100
|
+
fromgap = true;
|
101
|
+
j += otherps;
|
102
|
+
}
|
103
|
+
else {
|
104
|
+
// cases where we actually got two points
|
105
|
+
px = points[i + keyOffset];
|
106
|
+
py = points[i + accumulateOffset];
|
107
|
+
qx = otherpoints[j + keyOffset];
|
108
|
+
qy = otherpoints[j + accumulateOffset];
|
109
|
+
bottom = 0;
|
110
|
+
|
111
|
+
if (px == qx) {
|
112
|
+
for (m = 0; m < ps; ++m)
|
113
|
+
newpoints.push(points[i + m]);
|
114
|
+
|
115
|
+
newpoints[l + accumulateOffset] += qy;
|
116
|
+
bottom = qy;
|
117
|
+
|
118
|
+
i += ps;
|
119
|
+
j += otherps;
|
120
|
+
}
|
121
|
+
else if (px > qx) {
|
122
|
+
// we got past point below, might need to
|
123
|
+
// insert interpolated extra point
|
124
|
+
if (withlines && i > 0 && points[i - ps] != null) {
|
125
|
+
intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px);
|
126
|
+
newpoints.push(qx);
|
127
|
+
newpoints.push(intery + qy);
|
128
|
+
for (m = 2; m < ps; ++m)
|
129
|
+
newpoints.push(points[i + m]);
|
130
|
+
bottom = qy;
|
131
|
+
}
|
132
|
+
|
133
|
+
j += otherps;
|
134
|
+
}
|
135
|
+
else { // px < qx
|
136
|
+
if (fromgap && withlines) {
|
137
|
+
// if we come from a gap, we just skip this point
|
138
|
+
i += ps;
|
139
|
+
continue;
|
140
|
+
}
|
141
|
+
|
142
|
+
for (m = 0; m < ps; ++m)
|
143
|
+
newpoints.push(points[i + m]);
|
144
|
+
|
145
|
+
// we might be able to interpolate a point below,
|
146
|
+
// this can give us a better y
|
147
|
+
if (withlines && j > 0 && otherpoints[j - otherps] != null)
|
148
|
+
bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx);
|
149
|
+
|
150
|
+
newpoints[l + accumulateOffset] += bottom;
|
151
|
+
|
152
|
+
i += ps;
|
153
|
+
}
|
154
|
+
|
155
|
+
fromgap = false;
|
156
|
+
|
157
|
+
if (l != newpoints.length && withbottom)
|
158
|
+
newpoints[l + 2] += bottom;
|
159
|
+
}
|
160
|
+
|
161
|
+
// maintain the line steps invariant
|
162
|
+
if (withsteps && l != newpoints.length && l > 0
|
163
|
+
&& newpoints[l] != null
|
164
|
+
&& newpoints[l] != newpoints[l - ps]
|
165
|
+
&& newpoints[l + 1] != newpoints[l - ps + 1]) {
|
166
|
+
for (m = 0; m < ps; ++m)
|
167
|
+
newpoints[l + ps + m] = newpoints[l + m];
|
168
|
+
newpoints[l + 1] = newpoints[l - ps + 1];
|
169
|
+
}
|
170
|
+
}
|
171
|
+
|
172
|
+
datapoints.points = newpoints;
|
173
|
+
}
|
174
|
+
|
175
|
+
plot.hooks.processDatapoints.push(stackData);
|
176
|
+
}
|
177
|
+
|
178
|
+
$.plot.plugins.push({
|
179
|
+
init: init,
|
180
|
+
options: options,
|
181
|
+
name: 'stack',
|
182
|
+
version: '1.2'
|
183
|
+
});
|
184
|
+
})(jQuery);
|