adminlte2assets-rails 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +244 -0
- data/Rakefile +2 -0
- data/adminlte2assets-rails.gemspec +42 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/adminlte2assets/rails/engine.rb +7 -0
- data/lib/adminlte2assets/rails/version.rb +5 -0
- data/lib/adminlte2assets/rails.rb +8 -0
- data/lib/adminlte2assets-rails.rb +7 -0
- data/vendor/assets/images/avatar.png +0 -0
- data/vendor/assets/images/avatar04.png +0 -0
- data/vendor/assets/images/avatar2.png +0 -0
- data/vendor/assets/images/avatar3.png +0 -0
- data/vendor/assets/images/avatar5.png +0 -0
- data/vendor/assets/images/boxed-bg.jpg +0 -0
- data/vendor/assets/images/boxed-bg.png +0 -0
- data/vendor/assets/images/credit/american-express.png +0 -0
- data/vendor/assets/images/credit/cirrus.png +0 -0
- data/vendor/assets/images/credit/mastercard.png +0 -0
- data/vendor/assets/images/credit/mestro.png +0 -0
- data/vendor/assets/images/credit/paypal.png +0 -0
- data/vendor/assets/images/credit/paypal2.png +0 -0
- data/vendor/assets/images/credit/visa.png +0 -0
- data/vendor/assets/images/default-50x50.gif +0 -0
- data/vendor/assets/images/icons.png +0 -0
- data/vendor/assets/images/ionslider/sprite-skin-flat.png +0 -0
- data/vendor/assets/images/ionslider/sprite-skin-nice.png +0 -0
- data/vendor/assets/images/photo1.png +0 -0
- data/vendor/assets/images/photo2.png +0 -0
- data/vendor/assets/images/photo3.jpg +0 -0
- data/vendor/assets/images/photo4.jpg +0 -0
- data/vendor/assets/images/user1-128x128.jpg +0 -0
- data/vendor/assets/images/user2-160x160.jpg +0 -0
- data/vendor/assets/images/user3-128x128.jpg +0 -0
- data/vendor/assets/images/user4-128x128.jpg +0 -0
- data/vendor/assets/images/user5-128x128.jpg +0 -0
- data/vendor/assets/images/user6-128x128.jpg +0 -0
- data/vendor/assets/images/user7-128x128.jpg +0 -0
- data/vendor/assets/images/user8-128x128.jpg +0 -0
- data/vendor/assets/javascript/AdminLTE/app.min.js +13 -0
- data/vendor/assets/javascript/AdminLTE/plugins/bootstrap-slider/bootstrap-slider.js +1576 -0
- data/vendor/assets/javascript/AdminLTE/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.js +14975 -0
- data/vendor/assets/javascript/AdminLTE/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js +8 -0
- data/vendor/assets/javascript/AdminLTE/plugins/chartjs/Chart.js +3736 -0
- data/vendor/assets/javascript/AdminLTE/plugins/chartjs/Chart.min.js +11 -0
- data/vendor/assets/javascript/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.js +1079 -0
- data/vendor/assets/javascript/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/bootstrap-datepicker.js +1671 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ar.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.az.js +12 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.bg.js +14 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ca.js +14 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.cs.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.cy.js +14 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.da.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.de.js +17 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.el.js +13 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.es.js +14 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.et.js +18 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.fa.js +17 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.fi.js +16 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.fr.js +17 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.gl.js +11 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.he.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.hr.js +13 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.hu.js +16 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.id.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.is.js +14 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.it.js +17 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ja.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ka.js +17 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.kk.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.kr.js +13 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.lt.js +16 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.lv.js +16 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.mk.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ms.js +14 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.nb.js +14 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.nl-BE.js +17 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.nl.js +14 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.no.js +16 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.pl.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.pt-BR.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.pt.js +16 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ro.js +16 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.rs-latin.js +14 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.rs.js +14 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ru.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.sk.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.sl.js +14 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.sq.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.sv.js +16 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.sw.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.th.js +14 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.tr.js +16 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ua.js +15 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.vi.js +16 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js +16 -0
- data/vendor/assets/javascript/AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.zh-TW.js +17 -0
- data/vendor/assets/javascript/AdminLTE/plugins/daterangepicker/daterangepicker.js +1542 -0
- data/vendor/assets/javascript/AdminLTE/plugins/daterangepicker/moment.js +3111 -0
- data/vendor/assets/javascript/AdminLTE/plugins/daterangepicker/moment.min.js +7 -0
- data/vendor/assets/javascript/AdminLTE/plugins/fastclick/fastclick.js +841 -0
- data/vendor/assets/javascript/AdminLTE/plugins/fastclick/fastclick.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/excanvas.js +1427 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/excanvas.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.colorhelpers.js +180 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.colorhelpers.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.canvas.js +345 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.canvas.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.categories.js +190 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.categories.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.crosshair.js +176 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.crosshair.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.errorbars.js +353 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.errorbars.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.fillbetween.js +226 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.fillbetween.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.image.js +241 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.image.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.js +3137 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.min.js +2 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.navigate.js +346 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.navigate.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.pie.js +817 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.pie.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.resize.js +60 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.resize.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.selection.js +360 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.selection.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.stack.js +188 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.stack.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.symbol.js +71 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.symbol.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.threshold.js +142 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.threshold.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.time.js +429 -0
- data/vendor/assets/javascript/AdminLTE/plugins/flot/jquery.flot.time.min.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/fullcalendar/fullcalendar.js +9732 -0
- data/vendor/assets/javascript/AdminLTE/plugins/fullcalendar/fullcalendar.min.js +8 -0
- data/vendor/assets/javascript/AdminLTE/plugins/input-mask/jquery.inputmask.date.extensions.js +488 -0
- data/vendor/assets/javascript/AdminLTE/plugins/input-mask/jquery.inputmask.extensions.js +122 -0
- data/vendor/assets/javascript/AdminLTE/plugins/input-mask/jquery.inputmask.js +1627 -0
- data/vendor/assets/javascript/AdminLTE/plugins/input-mask/jquery.inputmask.numeric.extensions.js +177 -0
- data/vendor/assets/javascript/AdminLTE/plugins/input-mask/jquery.inputmask.phone.extensions.js +50 -0
- data/vendor/assets/javascript/AdminLTE/plugins/input-mask/jquery.inputmask.regex.extensions.js +169 -0
- data/vendor/assets/javascript/AdminLTE/plugins/input-mask/phone-codes/phone-be.json +45 -0
- data/vendor/assets/javascript/AdminLTE/plugins/input-mask/phone-codes/phone-codes.json +294 -0
- data/vendor/assets/javascript/AdminLTE/plugins/input-mask/phone-codes/readme.txt +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/ionslider/ion.rangeSlider.min.js +76 -0
- data/vendor/assets/javascript/AdminLTE/plugins/jQueryUI/jquery-ui.js +16617 -0
- data/vendor/assets/javascript/AdminLTE/plugins/jQueryUI/jquery-ui.min.js +13 -0
- data/vendor/assets/javascript/AdminLTE/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js +8 -0
- data/vendor/assets/javascript/AdminLTE/plugins/jvectormap/jquery-jvectormap-usa-en.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/jvectormap/jquery-jvectormap-world-mill-en.js +1 -0
- data/vendor/assets/javascript/AdminLTE/plugins/knob/jquery.knob.js +805 -0
- data/vendor/assets/javascript/AdminLTE/plugins/morris/morris.js +1892 -0
- data/vendor/assets/javascript/AdminLTE/plugins/morris/morris.min.js +7 -0
- data/vendor/assets/javascript/AdminLTE/plugins/pace/pace.js +935 -0
- data/vendor/assets/javascript/AdminLTE/plugins/pace/pace.min.js +2 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/ar.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/az.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/bg.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/ca.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/cs.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/da.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/de.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/el.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/en.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/es.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/et.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/eu.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/fa.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/fi.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/fr.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/gl.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/he.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/hi.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/hr.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/hu.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/id.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/is.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/it.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/ja.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/km.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/ko.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/lt.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/lv.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/mk.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/ms.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/nb.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/nl.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/pl.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/pt-BR.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/pt.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/ro.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/ru.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/sk.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/sr-Cyrl.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/sr.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/sv.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/th.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/tr.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/uk.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/vi.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/zh-CN.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/i18n/zh-TW.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/select2.full.js +6436 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/select2.full.min.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/select2.js +5725 -0
- data/vendor/assets/javascript/AdminLTE/plugins/select2/select2.min.js +3 -0
- data/vendor/assets/javascript/AdminLTE/plugins/slimScroll/jquery.slimscroll.js +474 -0
- data/vendor/assets/javascript/AdminLTE/plugins/slimScroll/jquery.slimscroll.min.js +16 -0
- data/vendor/assets/javascript/AdminLTE/plugins/sparkline/jquery.sparkline.js +3054 -0
- data/vendor/assets/javascript/AdminLTE/plugins/sparkline/jquery.sparkline.min.js +5 -0
- data/vendor/assets/javascript/AdminLTE/plugins/timepicker/bootstrap-timepicker.js +903 -0
- data/vendor/assets/javascript/AdminLTE/plugins/timepicker/bootstrap-timepicker.min.js +5 -0
- data/vendor/assets/javascript/AdminLTE.js +4 -0
- data/vendor/assets/stylesheets/AdminLTE/AdminLTE.min.css +7 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/bootstrap-slider/slider.css +282 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.css +117 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css +3 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.css +251 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.min.css +9 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/colorpicker/img/alpha-horizontal.png +0 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/colorpicker/img/alpha.png +0 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/colorpicker/img/hue-horizontal.png +0 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/colorpicker/img/hue.png +0 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/colorpicker/img/saturation.png +0 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/datepicker/datepicker3.css +790 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/daterangepicker/daterangepicker.css +232 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/fullcalendar/fullcalendar.css +977 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/fullcalendar/fullcalendar.min.css +5 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/fullcalendar/fullcalendar.print.css +202 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/ionslider/ion.rangeSlider.css +149 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/ionslider/ion.rangeSlider.skinFlat.css +106 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/ionslider/ion.rangeSlider.skinNice.css +102 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/jvectormap/jquery-jvectormap-1.2.2.css +40 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/morris/morris.css +2 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/pace/pace.css +85 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/pace/pace.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/select2/select2.css +484 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/select2/select2.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/timepicker/bootstrap-timepicker.css +121 -0
- data/vendor/assets/stylesheets/AdminLTE/plugins/timepicker/bootstrap-timepicker.min.css +10 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/_all-skins.css +1770 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/_all-skins.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-black-light.css +173 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-black-light.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-black.css +158 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-black.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-blue-light.css +164 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-blue-light.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-blue.css +139 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-blue.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-green-light.css +153 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-green-light.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-green.css +131 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-green.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-purple-light.css +153 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-purple-light.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-purple.css +131 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-purple.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-red-light.css +153 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-red-light.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-red.css +131 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-red.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-yellow-light.css +153 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-yellow-light.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-yellow.css +131 -0
- data/vendor/assets/stylesheets/AdminLTE/skins/skin-yellow.min.css +1 -0
- data/vendor/assets/stylesheets/AdminLTE.scss +5 -0
- metadata +474 -0
@@ -0,0 +1,353 @@
|
|
1
|
+
/* Flot plugin for plotting error bars.
|
2
|
+
|
3
|
+
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
4
|
+
Licensed under the MIT license.
|
5
|
+
|
6
|
+
Error bars are used to show standard deviation and other statistical
|
7
|
+
properties in a plot.
|
8
|
+
|
9
|
+
* Created by Rui Pereira - rui (dot) pereira (at) gmail (dot) com
|
10
|
+
|
11
|
+
This plugin allows you to plot error-bars over points. Set "errorbars" inside
|
12
|
+
the points series to the axis name over which there will be error values in
|
13
|
+
your data array (*even* if you do not intend to plot them later, by setting
|
14
|
+
"show: null" on xerr/yerr).
|
15
|
+
|
16
|
+
The plugin supports these options:
|
17
|
+
|
18
|
+
series: {
|
19
|
+
points: {
|
20
|
+
errorbars: "x" or "y" or "xy",
|
21
|
+
xerr: {
|
22
|
+
show: null/false or true,
|
23
|
+
asymmetric: null/false or true,
|
24
|
+
upperCap: null or "-" or function,
|
25
|
+
lowerCap: null or "-" or function,
|
26
|
+
color: null or color,
|
27
|
+
radius: null or number
|
28
|
+
},
|
29
|
+
yerr: { same options as xerr }
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
Each data point array is expected to be of the type:
|
34
|
+
|
35
|
+
"x" [ x, y, xerr ]
|
36
|
+
"y" [ x, y, yerr ]
|
37
|
+
"xy" [ x, y, xerr, yerr ]
|
38
|
+
|
39
|
+
Where xerr becomes xerr_lower,xerr_upper for the asymmetric error case, and
|
40
|
+
equivalently for yerr. Eg., a datapoint for the "xy" case with symmetric
|
41
|
+
error-bars on X and asymmetric on Y would be:
|
42
|
+
|
43
|
+
[ x, y, xerr, yerr_lower, yerr_upper ]
|
44
|
+
|
45
|
+
By default no end caps are drawn. Setting upperCap and/or lowerCap to "-" will
|
46
|
+
draw a small cap perpendicular to the error bar. They can also be set to a
|
47
|
+
user-defined drawing function, with (ctx, x, y, radius) as parameters, as eg.
|
48
|
+
|
49
|
+
function drawSemiCircle( ctx, x, y, radius ) {
|
50
|
+
ctx.beginPath();
|
51
|
+
ctx.arc( x, y, radius, 0, Math.PI, false );
|
52
|
+
ctx.moveTo( x - radius, y );
|
53
|
+
ctx.lineTo( x + radius, y );
|
54
|
+
ctx.stroke();
|
55
|
+
}
|
56
|
+
|
57
|
+
Color and radius both default to the same ones of the points series if not
|
58
|
+
set. The independent radius parameter on xerr/yerr is useful for the case when
|
59
|
+
we may want to add error-bars to a line, without showing the interconnecting
|
60
|
+
points (with radius: 0), and still showing end caps on the error-bars.
|
61
|
+
shadowSize and lineWidth are derived as well from the points series.
|
62
|
+
|
63
|
+
*/
|
64
|
+
|
65
|
+
(function ($) {
|
66
|
+
var options = {
|
67
|
+
series: {
|
68
|
+
points: {
|
69
|
+
errorbars: null, //should be 'x', 'y' or 'xy'
|
70
|
+
xerr: { err: 'x', show: null, asymmetric: null, upperCap: null, lowerCap: null, color: null, radius: null},
|
71
|
+
yerr: { err: 'y', show: null, asymmetric: null, upperCap: null, lowerCap: null, color: null, radius: null}
|
72
|
+
}
|
73
|
+
}
|
74
|
+
};
|
75
|
+
|
76
|
+
function processRawData(plot, series, data, datapoints){
|
77
|
+
if (!series.points.errorbars)
|
78
|
+
return;
|
79
|
+
|
80
|
+
// x,y values
|
81
|
+
var format = [
|
82
|
+
{ x: true, number: true, required: true },
|
83
|
+
{ y: true, number: true, required: true }
|
84
|
+
];
|
85
|
+
|
86
|
+
var errors = series.points.errorbars;
|
87
|
+
// error bars - first X then Y
|
88
|
+
if (errors == 'x' || errors == 'xy') {
|
89
|
+
// lower / upper error
|
90
|
+
if (series.points.xerr.asymmetric) {
|
91
|
+
format.push({ x: true, number: true, required: true });
|
92
|
+
format.push({ x: true, number: true, required: true });
|
93
|
+
} else
|
94
|
+
format.push({ x: true, number: true, required: true });
|
95
|
+
}
|
96
|
+
if (errors == 'y' || errors == 'xy') {
|
97
|
+
// lower / upper error
|
98
|
+
if (series.points.yerr.asymmetric) {
|
99
|
+
format.push({ y: true, number: true, required: true });
|
100
|
+
format.push({ y: true, number: true, required: true });
|
101
|
+
} else
|
102
|
+
format.push({ y: true, number: true, required: true });
|
103
|
+
}
|
104
|
+
datapoints.format = format;
|
105
|
+
}
|
106
|
+
|
107
|
+
function parseErrors(series, i){
|
108
|
+
|
109
|
+
var points = series.datapoints.points;
|
110
|
+
|
111
|
+
// read errors from points array
|
112
|
+
var exl = null,
|
113
|
+
exu = null,
|
114
|
+
eyl = null,
|
115
|
+
eyu = null;
|
116
|
+
var xerr = series.points.xerr,
|
117
|
+
yerr = series.points.yerr;
|
118
|
+
|
119
|
+
var eb = series.points.errorbars;
|
120
|
+
// error bars - first X
|
121
|
+
if (eb == 'x' || eb == 'xy') {
|
122
|
+
if (xerr.asymmetric) {
|
123
|
+
exl = points[i + 2];
|
124
|
+
exu = points[i + 3];
|
125
|
+
if (eb == 'xy')
|
126
|
+
if (yerr.asymmetric){
|
127
|
+
eyl = points[i + 4];
|
128
|
+
eyu = points[i + 5];
|
129
|
+
} else eyl = points[i + 4];
|
130
|
+
} else {
|
131
|
+
exl = points[i + 2];
|
132
|
+
if (eb == 'xy')
|
133
|
+
if (yerr.asymmetric) {
|
134
|
+
eyl = points[i + 3];
|
135
|
+
eyu = points[i + 4];
|
136
|
+
} else eyl = points[i + 3];
|
137
|
+
}
|
138
|
+
// only Y
|
139
|
+
} else if (eb == 'y')
|
140
|
+
if (yerr.asymmetric) {
|
141
|
+
eyl = points[i + 2];
|
142
|
+
eyu = points[i + 3];
|
143
|
+
} else eyl = points[i + 2];
|
144
|
+
|
145
|
+
// symmetric errors?
|
146
|
+
if (exu == null) exu = exl;
|
147
|
+
if (eyu == null) eyu = eyl;
|
148
|
+
|
149
|
+
var errRanges = [exl, exu, eyl, eyu];
|
150
|
+
// nullify if not showing
|
151
|
+
if (!xerr.show){
|
152
|
+
errRanges[0] = null;
|
153
|
+
errRanges[1] = null;
|
154
|
+
}
|
155
|
+
if (!yerr.show){
|
156
|
+
errRanges[2] = null;
|
157
|
+
errRanges[3] = null;
|
158
|
+
}
|
159
|
+
return errRanges;
|
160
|
+
}
|
161
|
+
|
162
|
+
function drawSeriesErrors(plot, ctx, s){
|
163
|
+
|
164
|
+
var points = s.datapoints.points,
|
165
|
+
ps = s.datapoints.pointsize,
|
166
|
+
ax = [s.xaxis, s.yaxis],
|
167
|
+
radius = s.points.radius,
|
168
|
+
err = [s.points.xerr, s.points.yerr];
|
169
|
+
|
170
|
+
//sanity check, in case some inverted axis hack is applied to flot
|
171
|
+
var invertX = false;
|
172
|
+
if (ax[0].p2c(ax[0].max) < ax[0].p2c(ax[0].min)) {
|
173
|
+
invertX = true;
|
174
|
+
var tmp = err[0].lowerCap;
|
175
|
+
err[0].lowerCap = err[0].upperCap;
|
176
|
+
err[0].upperCap = tmp;
|
177
|
+
}
|
178
|
+
|
179
|
+
var invertY = false;
|
180
|
+
if (ax[1].p2c(ax[1].min) < ax[1].p2c(ax[1].max)) {
|
181
|
+
invertY = true;
|
182
|
+
var tmp = err[1].lowerCap;
|
183
|
+
err[1].lowerCap = err[1].upperCap;
|
184
|
+
err[1].upperCap = tmp;
|
185
|
+
}
|
186
|
+
|
187
|
+
for (var i = 0; i < s.datapoints.points.length; i += ps) {
|
188
|
+
|
189
|
+
//parse
|
190
|
+
var errRanges = parseErrors(s, i);
|
191
|
+
|
192
|
+
//cycle xerr & yerr
|
193
|
+
for (var e = 0; e < err.length; e++){
|
194
|
+
|
195
|
+
var minmax = [ax[e].min, ax[e].max];
|
196
|
+
|
197
|
+
//draw this error?
|
198
|
+
if (errRanges[e * err.length]){
|
199
|
+
|
200
|
+
//data coordinates
|
201
|
+
var x = points[i],
|
202
|
+
y = points[i + 1];
|
203
|
+
|
204
|
+
//errorbar ranges
|
205
|
+
var upper = [x, y][e] + errRanges[e * err.length + 1],
|
206
|
+
lower = [x, y][e] - errRanges[e * err.length];
|
207
|
+
|
208
|
+
//points outside of the canvas
|
209
|
+
if (err[e].err == 'x')
|
210
|
+
if (y > ax[1].max || y < ax[1].min || upper < ax[0].min || lower > ax[0].max)
|
211
|
+
continue;
|
212
|
+
if (err[e].err == 'y')
|
213
|
+
if (x > ax[0].max || x < ax[0].min || upper < ax[1].min || lower > ax[1].max)
|
214
|
+
continue;
|
215
|
+
|
216
|
+
// prevent errorbars getting out of the canvas
|
217
|
+
var drawUpper = true,
|
218
|
+
drawLower = true;
|
219
|
+
|
220
|
+
if (upper > minmax[1]) {
|
221
|
+
drawUpper = false;
|
222
|
+
upper = minmax[1];
|
223
|
+
}
|
224
|
+
if (lower < minmax[0]) {
|
225
|
+
drawLower = false;
|
226
|
+
lower = minmax[0];
|
227
|
+
}
|
228
|
+
|
229
|
+
//sanity check, in case some inverted axis hack is applied to flot
|
230
|
+
if ((err[e].err == 'x' && invertX) || (err[e].err == 'y' && invertY)) {
|
231
|
+
//swap coordinates
|
232
|
+
var tmp = lower;
|
233
|
+
lower = upper;
|
234
|
+
upper = tmp;
|
235
|
+
tmp = drawLower;
|
236
|
+
drawLower = drawUpper;
|
237
|
+
drawUpper = tmp;
|
238
|
+
tmp = minmax[0];
|
239
|
+
minmax[0] = minmax[1];
|
240
|
+
minmax[1] = tmp;
|
241
|
+
}
|
242
|
+
|
243
|
+
// convert to pixels
|
244
|
+
x = ax[0].p2c(x),
|
245
|
+
y = ax[1].p2c(y),
|
246
|
+
upper = ax[e].p2c(upper);
|
247
|
+
lower = ax[e].p2c(lower);
|
248
|
+
minmax[0] = ax[e].p2c(minmax[0]);
|
249
|
+
minmax[1] = ax[e].p2c(minmax[1]);
|
250
|
+
|
251
|
+
//same style as points by default
|
252
|
+
var lw = err[e].lineWidth ? err[e].lineWidth : s.points.lineWidth,
|
253
|
+
sw = s.points.shadowSize != null ? s.points.shadowSize : s.shadowSize;
|
254
|
+
|
255
|
+
//shadow as for points
|
256
|
+
if (lw > 0 && sw > 0) {
|
257
|
+
var w = sw / 2;
|
258
|
+
ctx.lineWidth = w;
|
259
|
+
ctx.strokeStyle = "rgba(0,0,0,0.1)";
|
260
|
+
drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w + w/2, minmax);
|
261
|
+
|
262
|
+
ctx.strokeStyle = "rgba(0,0,0,0.2)";
|
263
|
+
drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w/2, minmax);
|
264
|
+
}
|
265
|
+
|
266
|
+
ctx.strokeStyle = err[e].color? err[e].color: s.color;
|
267
|
+
ctx.lineWidth = lw;
|
268
|
+
//draw it
|
269
|
+
drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, 0, minmax);
|
270
|
+
}
|
271
|
+
}
|
272
|
+
}
|
273
|
+
}
|
274
|
+
|
275
|
+
function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){
|
276
|
+
|
277
|
+
//shadow offset
|
278
|
+
y += offset;
|
279
|
+
upper += offset;
|
280
|
+
lower += offset;
|
281
|
+
|
282
|
+
// error bar - avoid plotting over circles
|
283
|
+
if (err.err == 'x'){
|
284
|
+
if (upper > x + radius) drawPath(ctx, [[upper,y],[Math.max(x + radius,minmax[0]),y]]);
|
285
|
+
else drawUpper = false;
|
286
|
+
if (lower < x - radius) drawPath(ctx, [[Math.min(x - radius,minmax[1]),y],[lower,y]] );
|
287
|
+
else drawLower = false;
|
288
|
+
}
|
289
|
+
else {
|
290
|
+
if (upper < y - radius) drawPath(ctx, [[x,upper],[x,Math.min(y - radius,minmax[0])]] );
|
291
|
+
else drawUpper = false;
|
292
|
+
if (lower > y + radius) drawPath(ctx, [[x,Math.max(y + radius,minmax[1])],[x,lower]] );
|
293
|
+
else drawLower = false;
|
294
|
+
}
|
295
|
+
|
296
|
+
//internal radius value in errorbar, allows to plot radius 0 points and still keep proper sized caps
|
297
|
+
//this is a way to get errorbars on lines without visible connecting dots
|
298
|
+
radius = err.radius != null? err.radius: radius;
|
299
|
+
|
300
|
+
// upper cap
|
301
|
+
if (drawUpper) {
|
302
|
+
if (err.upperCap == '-'){
|
303
|
+
if (err.err=='x') drawPath(ctx, [[upper,y - radius],[upper,y + radius]] );
|
304
|
+
else drawPath(ctx, [[x - radius,upper],[x + radius,upper]] );
|
305
|
+
} else if ($.isFunction(err.upperCap)){
|
306
|
+
if (err.err=='x') err.upperCap(ctx, upper, y, radius);
|
307
|
+
else err.upperCap(ctx, x, upper, radius);
|
308
|
+
}
|
309
|
+
}
|
310
|
+
// lower cap
|
311
|
+
if (drawLower) {
|
312
|
+
if (err.lowerCap == '-'){
|
313
|
+
if (err.err=='x') drawPath(ctx, [[lower,y - radius],[lower,y + radius]] );
|
314
|
+
else drawPath(ctx, [[x - radius,lower],[x + radius,lower]] );
|
315
|
+
} else if ($.isFunction(err.lowerCap)){
|
316
|
+
if (err.err=='x') err.lowerCap(ctx, lower, y, radius);
|
317
|
+
else err.lowerCap(ctx, x, lower, radius);
|
318
|
+
}
|
319
|
+
}
|
320
|
+
}
|
321
|
+
|
322
|
+
function drawPath(ctx, pts){
|
323
|
+
ctx.beginPath();
|
324
|
+
ctx.moveTo(pts[0][0], pts[0][1]);
|
325
|
+
for (var p=1; p < pts.length; p++)
|
326
|
+
ctx.lineTo(pts[p][0], pts[p][1]);
|
327
|
+
ctx.stroke();
|
328
|
+
}
|
329
|
+
|
330
|
+
function draw(plot, ctx){
|
331
|
+
var plotOffset = plot.getPlotOffset();
|
332
|
+
|
333
|
+
ctx.save();
|
334
|
+
ctx.translate(plotOffset.left, plotOffset.top);
|
335
|
+
$.each(plot.getData(), function (i, s) {
|
336
|
+
if (s.points.errorbars && (s.points.xerr.show || s.points.yerr.show))
|
337
|
+
drawSeriesErrors(plot, ctx, s);
|
338
|
+
});
|
339
|
+
ctx.restore();
|
340
|
+
}
|
341
|
+
|
342
|
+
function init(plot) {
|
343
|
+
plot.hooks.processRawData.push(processRawData);
|
344
|
+
plot.hooks.draw.push(draw);
|
345
|
+
}
|
346
|
+
|
347
|
+
$.plot.plugins.push({
|
348
|
+
init: init,
|
349
|
+
options: options,
|
350
|
+
name: 'errorbars',
|
351
|
+
version: '1.0'
|
352
|
+
});
|
353
|
+
})(jQuery);
|
@@ -0,0 +1 @@
|
|
1
|
+
(function($){var options={series:{points:{errorbars:null,xerr:{err:"x",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null},yerr:{err:"y",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null}}}};function processRawData(plot,series,data,datapoints){if(!series.points.errorbars)return;var format=[{x:true,number:true,required:true},{y:true,number:true,required:true}];var errors=series.points.errorbars;if(errors=="x"||errors=="xy"){if(series.points.xerr.asymmetric){format.push({x:true,number:true,required:true});format.push({x:true,number:true,required:true})}else format.push({x:true,number:true,required:true})}if(errors=="y"||errors=="xy"){if(series.points.yerr.asymmetric){format.push({y:true,number:true,required:true});format.push({y:true,number:true,required:true})}else format.push({y:true,number:true,required:true})}datapoints.format=format}function parseErrors(series,i){var points=series.datapoints.points;var exl=null,exu=null,eyl=null,eyu=null;var xerr=series.points.xerr,yerr=series.points.yerr;var eb=series.points.errorbars;if(eb=="x"||eb=="xy"){if(xerr.asymmetric){exl=points[i+2];exu=points[i+3];if(eb=="xy")if(yerr.asymmetric){eyl=points[i+4];eyu=points[i+5]}else eyl=points[i+4]}else{exl=points[i+2];if(eb=="xy")if(yerr.asymmetric){eyl=points[i+3];eyu=points[i+4]}else eyl=points[i+3]}}else if(eb=="y")if(yerr.asymmetric){eyl=points[i+2];eyu=points[i+3]}else eyl=points[i+2];if(exu==null)exu=exl;if(eyu==null)eyu=eyl;var errRanges=[exl,exu,eyl,eyu];if(!xerr.show){errRanges[0]=null;errRanges[1]=null}if(!yerr.show){errRanges[2]=null;errRanges[3]=null}return errRanges}function drawSeriesErrors(plot,ctx,s){var points=s.datapoints.points,ps=s.datapoints.pointsize,ax=[s.xaxis,s.yaxis],radius=s.points.radius,err=[s.points.xerr,s.points.yerr];var invertX=false;if(ax[0].p2c(ax[0].max)<ax[0].p2c(ax[0].min)){invertX=true;var tmp=err[0].lowerCap;err[0].lowerCap=err[0].upperCap;err[0].upperCap=tmp}var invertY=false;if(ax[1].p2c(ax[1].min)<ax[1].p2c(ax[1].max)){invertY=true;var tmp=err[1].lowerCap;err[1].lowerCap=err[1].upperCap;err[1].upperCap=tmp}for(var i=0;i<s.datapoints.points.length;i+=ps){var errRanges=parseErrors(s,i);for(var e=0;e<err.length;e++){var minmax=[ax[e].min,ax[e].max];if(errRanges[e*err.length]){var x=points[i],y=points[i+1];var upper=[x,y][e]+errRanges[e*err.length+1],lower=[x,y][e]-errRanges[e*err.length];if(err[e].err=="x")if(y>ax[1].max||y<ax[1].min||upper<ax[0].min||lower>ax[0].max)continue;if(err[e].err=="y")if(x>ax[0].max||x<ax[0].min||upper<ax[1].min||lower>ax[1].max)continue;var drawUpper=true,drawLower=true;if(upper>minmax[1]){drawUpper=false;upper=minmax[1]}if(lower<minmax[0]){drawLower=false;lower=minmax[0]}if(err[e].err=="x"&&invertX||err[e].err=="y"&&invertY){var tmp=lower;lower=upper;upper=tmp;tmp=drawLower;drawLower=drawUpper;drawUpper=tmp;tmp=minmax[0];minmax[0]=minmax[1];minmax[1]=tmp}x=ax[0].p2c(x),y=ax[1].p2c(y),upper=ax[e].p2c(upper);lower=ax[e].p2c(lower);minmax[0]=ax[e].p2c(minmax[0]);minmax[1]=ax[e].p2c(minmax[1]);var lw=err[e].lineWidth?err[e].lineWidth:s.points.lineWidth,sw=s.points.shadowSize!=null?s.points.shadowSize:s.shadowSize;if(lw>0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,w+w/2,minmax);ctx.strokeStyle="rgba(0,0,0,0.2)";drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,w/2,minmax)}ctx.strokeStyle=err[e].color?err[e].color:s.color;ctx.lineWidth=lw;drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,0,minmax)}}}}function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){y+=offset;upper+=offset;lower+=offset;if(err.err=="x"){if(upper>x+radius)drawPath(ctx,[[upper,y],[Math.max(x+radius,minmax[0]),y]]);else drawUpper=false;if(lower<x-radius)drawPath(ctx,[[Math.min(x-radius,minmax[1]),y],[lower,y]]);else drawLower=false}else{if(upper<y-radius)drawPath(ctx,[[x,upper],[x,Math.min(y-radius,minmax[0])]]);else drawUpper=false;if(lower>y+radius)drawPath(ctx,[[x,Math.max(y+radius,minmax[1])],[x,lower]]);else drawLower=false}radius=err.radius!=null?err.radius:radius;if(drawUpper){if(err.upperCap=="-"){if(err.err=="x")drawPath(ctx,[[upper,y-radius],[upper,y+radius]]);else drawPath(ctx,[[x-radius,upper],[x+radius,upper]])}else if($.isFunction(err.upperCap)){if(err.err=="x")err.upperCap(ctx,upper,y,radius);else err.upperCap(ctx,x,upper,radius)}}if(drawLower){if(err.lowerCap=="-"){if(err.err=="x")drawPath(ctx,[[lower,y-radius],[lower,y+radius]]);else drawPath(ctx,[[x-radius,lower],[x+radius,lower]])}else if($.isFunction(err.lowerCap)){if(err.err=="x")err.lowerCap(ctx,lower,y,radius);else err.lowerCap(ctx,x,lower,radius)}}}function drawPath(ctx,pts){ctx.beginPath();ctx.moveTo(pts[0][0],pts[0][1]);for(var p=1;p<pts.length;p++)ctx.lineTo(pts[p][0],pts[p][1]);ctx.stroke()}function draw(plot,ctx){var plotOffset=plot.getPlotOffset();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);$.each(plot.getData(),function(i,s){if(s.points.errorbars&&(s.points.xerr.show||s.points.yerr.show))drawSeriesErrors(plot,ctx,s)});ctx.restore()}function init(plot){plot.hooks.processRawData.push(processRawData);plot.hooks.draw.push(draw)}$.plot.plugins.push({init:init,options:options,name:"errorbars",version:"1.0"})})(jQuery);
|
@@ -0,0 +1,226 @@
|
|
1
|
+
/* Flot plugin for computing bottoms for filled line and bar charts.
|
2
|
+
|
3
|
+
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
4
|
+
Licensed under the MIT license.
|
5
|
+
|
6
|
+
The case: you've got two series that you want to fill the area between. In Flot
|
7
|
+
terms, you need to use one as the fill bottom of the other. You can specify the
|
8
|
+
bottom of each data point as the third coordinate manually, or you can use this
|
9
|
+
plugin to compute it for you.
|
10
|
+
|
11
|
+
In order to name the other series, you need to give it an id, like this:
|
12
|
+
|
13
|
+
var dataset = [
|
14
|
+
{ data: [ ... ], id: "foo" } , // use default bottom
|
15
|
+
{ data: [ ... ], fillBetween: "foo" }, // use first dataset as bottom
|
16
|
+
];
|
17
|
+
|
18
|
+
$.plot($("#placeholder"), dataset, { lines: { show: true, fill: true }});
|
19
|
+
|
20
|
+
As a convenience, if the id given is a number that doesn't appear as an id in
|
21
|
+
the series, it is interpreted as the index in the array instead (so fillBetween:
|
22
|
+
0 can also mean the first series).
|
23
|
+
|
24
|
+
Internally, the plugin modifies the datapoints in each series. For line series,
|
25
|
+
extra data points might be inserted through interpolation. Note that at points
|
26
|
+
where the bottom line is not defined (due to a null point or start/end of line),
|
27
|
+
the current line will show a gap too. The algorithm comes from the
|
28
|
+
jquery.flot.stack.js plugin, possibly some code could be shared.
|
29
|
+
|
30
|
+
*/
|
31
|
+
|
32
|
+
(function ( $ ) {
|
33
|
+
|
34
|
+
var options = {
|
35
|
+
series: {
|
36
|
+
fillBetween: null // or number
|
37
|
+
}
|
38
|
+
};
|
39
|
+
|
40
|
+
function init( plot ) {
|
41
|
+
|
42
|
+
function findBottomSeries( s, allseries ) {
|
43
|
+
|
44
|
+
var i;
|
45
|
+
|
46
|
+
for ( i = 0; i < allseries.length; ++i ) {
|
47
|
+
if ( allseries[ i ].id === s.fillBetween ) {
|
48
|
+
return allseries[ i ];
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
if ( typeof s.fillBetween === "number" ) {
|
53
|
+
if ( s.fillBetween < 0 || s.fillBetween >= allseries.length ) {
|
54
|
+
return null;
|
55
|
+
}
|
56
|
+
return allseries[ s.fillBetween ];
|
57
|
+
}
|
58
|
+
|
59
|
+
return null;
|
60
|
+
}
|
61
|
+
|
62
|
+
function computeFillBottoms( plot, s, datapoints ) {
|
63
|
+
|
64
|
+
if ( s.fillBetween == null ) {
|
65
|
+
return;
|
66
|
+
}
|
67
|
+
|
68
|
+
var other = findBottomSeries( s, plot.getData() );
|
69
|
+
|
70
|
+
if ( !other ) {
|
71
|
+
return;
|
72
|
+
}
|
73
|
+
|
74
|
+
var ps = datapoints.pointsize,
|
75
|
+
points = datapoints.points,
|
76
|
+
otherps = other.datapoints.pointsize,
|
77
|
+
otherpoints = other.datapoints.points,
|
78
|
+
newpoints = [],
|
79
|
+
px, py, intery, qx, qy, bottom,
|
80
|
+
withlines = s.lines.show,
|
81
|
+
withbottom = ps > 2 && datapoints.format[2].y,
|
82
|
+
withsteps = withlines && s.lines.steps,
|
83
|
+
fromgap = true,
|
84
|
+
i = 0,
|
85
|
+
j = 0,
|
86
|
+
l, m;
|
87
|
+
|
88
|
+
while ( true ) {
|
89
|
+
|
90
|
+
if ( i >= points.length ) {
|
91
|
+
break;
|
92
|
+
}
|
93
|
+
|
94
|
+
l = newpoints.length;
|
95
|
+
|
96
|
+
if ( points[ i ] == null ) {
|
97
|
+
|
98
|
+
// copy gaps
|
99
|
+
|
100
|
+
for ( m = 0; m < ps; ++m ) {
|
101
|
+
newpoints.push( points[ i + m ] );
|
102
|
+
}
|
103
|
+
|
104
|
+
i += ps;
|
105
|
+
|
106
|
+
} else if ( j >= otherpoints.length ) {
|
107
|
+
|
108
|
+
// for lines, we can't use the rest of the points
|
109
|
+
|
110
|
+
if ( !withlines ) {
|
111
|
+
for ( m = 0; m < ps; ++m ) {
|
112
|
+
newpoints.push( points[ i + m ] );
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
i += ps;
|
117
|
+
|
118
|
+
} else if ( otherpoints[ j ] == null ) {
|
119
|
+
|
120
|
+
// oops, got a gap
|
121
|
+
|
122
|
+
for ( m = 0; m < ps; ++m ) {
|
123
|
+
newpoints.push( null );
|
124
|
+
}
|
125
|
+
|
126
|
+
fromgap = true;
|
127
|
+
j += otherps;
|
128
|
+
|
129
|
+
} else {
|
130
|
+
|
131
|
+
// cases where we actually got two points
|
132
|
+
|
133
|
+
px = points[ i ];
|
134
|
+
py = points[ i + 1 ];
|
135
|
+
qx = otherpoints[ j ];
|
136
|
+
qy = otherpoints[ j + 1 ];
|
137
|
+
bottom = 0;
|
138
|
+
|
139
|
+
if ( px === qx ) {
|
140
|
+
|
141
|
+
for ( m = 0; m < ps; ++m ) {
|
142
|
+
newpoints.push( points[ i + m ] );
|
143
|
+
}
|
144
|
+
|
145
|
+
//newpoints[ l + 1 ] += qy;
|
146
|
+
bottom = qy;
|
147
|
+
|
148
|
+
i += ps;
|
149
|
+
j += otherps;
|
150
|
+
|
151
|
+
} else if ( px > qx ) {
|
152
|
+
|
153
|
+
// we got past point below, might need to
|
154
|
+
// insert interpolated extra point
|
155
|
+
|
156
|
+
if ( withlines && i > 0 && points[ i - ps ] != null ) {
|
157
|
+
intery = py + ( points[ i - ps + 1 ] - py ) * ( qx - px ) / ( points[ i - ps ] - px );
|
158
|
+
newpoints.push( qx );
|
159
|
+
newpoints.push( intery );
|
160
|
+
for ( m = 2; m < ps; ++m ) {
|
161
|
+
newpoints.push( points[ i + m ] );
|
162
|
+
}
|
163
|
+
bottom = qy;
|
164
|
+
}
|
165
|
+
|
166
|
+
j += otherps;
|
167
|
+
|
168
|
+
} else { // px < qx
|
169
|
+
|
170
|
+
// if we come from a gap, we just skip this point
|
171
|
+
|
172
|
+
if ( fromgap && withlines ) {
|
173
|
+
i += ps;
|
174
|
+
continue;
|
175
|
+
}
|
176
|
+
|
177
|
+
for ( m = 0; m < ps; ++m ) {
|
178
|
+
newpoints.push( points[ i + m ] );
|
179
|
+
}
|
180
|
+
|
181
|
+
// we might be able to interpolate a point below,
|
182
|
+
// this can give us a better y
|
183
|
+
|
184
|
+
if ( withlines && j > 0 && otherpoints[ j - otherps ] != null ) {
|
185
|
+
bottom = qy + ( otherpoints[ j - otherps + 1 ] - qy ) * ( px - qx ) / ( otherpoints[ j - otherps ] - qx );
|
186
|
+
}
|
187
|
+
|
188
|
+
//newpoints[l + 1] += bottom;
|
189
|
+
|
190
|
+
i += ps;
|
191
|
+
}
|
192
|
+
|
193
|
+
fromgap = false;
|
194
|
+
|
195
|
+
if ( l !== newpoints.length && withbottom ) {
|
196
|
+
newpoints[ l + 2 ] = bottom;
|
197
|
+
}
|
198
|
+
}
|
199
|
+
|
200
|
+
// maintain the line steps invariant
|
201
|
+
|
202
|
+
if ( withsteps && l !== newpoints.length && l > 0 &&
|
203
|
+
newpoints[ l ] !== null &&
|
204
|
+
newpoints[ l ] !== newpoints[ l - ps ] &&
|
205
|
+
newpoints[ l + 1 ] !== newpoints[ l - ps + 1 ] ) {
|
206
|
+
for (m = 0; m < ps; ++m) {
|
207
|
+
newpoints[ l + ps + m ] = newpoints[ l + m ];
|
208
|
+
}
|
209
|
+
newpoints[ l + 1 ] = newpoints[ l - ps + 1 ];
|
210
|
+
}
|
211
|
+
}
|
212
|
+
|
213
|
+
datapoints.points = newpoints;
|
214
|
+
}
|
215
|
+
|
216
|
+
plot.hooks.processDatapoints.push( computeFillBottoms );
|
217
|
+
}
|
218
|
+
|
219
|
+
$.plot.plugins.push({
|
220
|
+
init: init,
|
221
|
+
options: options,
|
222
|
+
name: "fillbetween",
|
223
|
+
version: "1.0"
|
224
|
+
});
|
225
|
+
|
226
|
+
})(jQuery);
|
@@ -0,0 +1 @@
|
|
1
|
+
(function($){var options={series:{fillBetween:null}};function init(plot){function findBottomSeries(s,allseries){var i;for(i=0;i<allseries.length;++i){if(allseries[i].id===s.fillBetween){return allseries[i]}}if(typeof s.fillBetween==="number"){if(s.fillBetween<0||s.fillBetween>=allseries.length){return null}return allseries[s.fillBetween]}return null}function computeFillBottoms(plot,s,datapoints){if(s.fillBetween==null){return}var other=findBottomSeries(s,plot.getData());if(!other){return}var ps=datapoints.pointsize,points=datapoints.points,otherps=other.datapoints.pointsize,otherpoints=other.datapoints.points,newpoints=[],px,py,intery,qx,qy,bottom,withlines=s.lines.show,withbottom=ps>2&&datapoints.format[2].y,withsteps=withlines&&s.lines.steps,fromgap=true,i=0,j=0,l,m;while(true){if(i>=points.length){break}l=newpoints.length;if(points[i]==null){for(m=0;m<ps;++m){newpoints.push(points[i+m])}i+=ps}else if(j>=otherpoints.length){if(!withlines){for(m=0;m<ps;++m){newpoints.push(points[i+m])}}i+=ps}else if(otherpoints[j]==null){for(m=0;m<ps;++m){newpoints.push(null)}fromgap=true;j+=otherps}else{px=points[i];py=points[i+1];qx=otherpoints[j];qy=otherpoints[j+1];bottom=0;if(px===qx){for(m=0;m<ps;++m){newpoints.push(points[i+m])}bottom=qy;i+=ps;j+=otherps}else if(px>qx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+1]-py)*(qx-px)/(points[i-ps]-px);newpoints.push(qx);newpoints.push(intery);for(m=2;m<ps;++m){newpoints.push(points[i+m])}bottom=qy}j+=otherps}else{if(fromgap&&withlines){i+=ps;continue}for(m=0;m<ps;++m){newpoints.push(points[i+m])}if(withlines&&j>0&&otherpoints[j-otherps]!=null){bottom=qy+(otherpoints[j-otherps+1]-qy)*(px-qx)/(otherpoints[j-otherps]-qx)}i+=ps}fromgap=false;if(l!==newpoints.length&&withbottom){newpoints[l+2]=bottom}}if(withsteps&&l!==newpoints.length&&l>0&&newpoints[l]!==null&&newpoints[l]!==newpoints[l-ps]&&newpoints[l+1]!==newpoints[l-ps+1]){for(m=0;m<ps;++m){newpoints[l+ps+m]=newpoints[l+m]}newpoints[l+1]=newpoints[l-ps+1]}}datapoints.points=newpoints}plot.hooks.processDatapoints.push(computeFillBottoms)}$.plot.plugins.push({init:init,options:options,name:"fillbetween",version:"1.0"})})(jQuery);
|