aeternitas_web_ui 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -0
- data/app/assets/javascripts/aeternitas/web_ui/aeternitas_web_ui.js +1 -0
- data/app/assets/javascripts/aeternitas/web_ui/sparkline.js +34 -0
- data/app/controllers/aeternitas/web_ui/application_controller.rb +19 -0
- data/app/controllers/aeternitas/web_ui/dashboard_controller.rb +26 -12
- data/app/controllers/aeternitas/web_ui/pollables_controller.rb +36 -22
- data/app/helpers/aeternitas/web_ui/application_helper.rb +13 -7
- data/app/views/aeternitas/web_ui/dashboard/future_polls.json.jbuilder +11 -0
- data/app/views/aeternitas/web_ui/dashboard/index.html.erb +33 -7
- data/app/views/aeternitas/web_ui/dashboard/pollable_growth.json.jbuilder +19 -0
- data/app/views/aeternitas/web_ui/dashboard/polls_timeline.json.jbuilder +17 -0
- data/app/views/aeternitas/web_ui/pollables/all_pollables.json.jbuilder +13 -0
- data/app/views/aeternitas/web_ui/pollables/data_growth.json.jbuilder +21 -0
- data/app/views/aeternitas/web_ui/pollables/deactivated_pollables.json.jbuilder +12 -0
- data/app/views/aeternitas/web_ui/pollables/execution_time.json.jbuilder +29 -0
- data/app/views/aeternitas/web_ui/pollables/index.html.erb +45 -10
- data/app/views/aeternitas/web_ui/pollables/show.html.erb +69 -14
- data/app/views/aeternitas/web_ui/pollables/timeline.json.jbuilder +33 -0
- data/config/routes.rb +3 -1
- data/lib/aeternitas/web_ui.rb +1 -3
- data/lib/aeternitas/web_ui/version.rb +1 -1
- data/spec/controllers/dashboard_controller_spec.rb +33 -0
- data/spec/controllers/pollables_controller_spec.rb +85 -0
- data/spec/dummy/app/models/patent.rb +11 -0
- data/spec/dummy/app/models/website.rb +4 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20170629115814_create_patents.rb +7 -0
- data/spec/dummy/db/schema.rb +5 -2
- data/spec/dummy/db/seeds.rb +45 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +14744 -0
- data/spec/dummy/log/test.log +23225 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/--/--lWLbvYn0hXyiIPFVa33lr-P1J5OFewU5zxzHLGEJI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-_/-_G27iPKZyXAdNxuGSKddDrOFR3NsMpi175TfU4nn4Y.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0J/0J_eEsynrbD8IOLt4b9wMzUcNovIlbvJUFyZuqnYLZw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0P/0PYtiqW7zEC_O8W5SY38LaRk1EQ5UubbEuigsKwqfIU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/12/12UMYXbXZU_YYZ05urBws9BsxDXk_lPbezAaJStnzxQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1T/1TGgX5aSkYsopXKTfRBJpC4B-fWma8JDM3VtLpNqUDU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1Y/1YLYZaz9mqN0SicHJuTWhl6tXgPdyy_khFXjmFP20kk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/30/303MFNdHS0Xmaw9m1jE2xsfh8G2IQRRRqYPzefNbXwc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3C/3C40ttO3I1C2hdHlIN4d9GDXMFGjqCAEI54J38dxs1I.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3a/3a9B5kFZTPh0IPBgh0glCvHYBQ-W981LA52FMuLN42w.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3t/3tUq8gbTvauqkkgFaklXOWPC5ZLrioD-0LsUfAHO9ww.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4S/4SWJkdzdSUXX3wQNuHmLDhKaO9L5nbMeoLOn9otLMtY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4V/4Vt_-zopG3xAfSekn4m6gQsz-rw8A9BcS0wvJzOTSaw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5c/5cTRuFQmUR6bOY_5NSWQqq-cA_s-eHg7kw5NHvD4E4g.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5e/5ebL3GatCu_j7v8IcUQ8a6M75dAAMPRXp0A2PjRfAoY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5g/5gvP8rrlydbdZF6Jkx2-kQrrI6OO1dTOK6Mcpwcqnss.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5l/5lvZkMM87hGXeJfAsegTXS8QixCH-PGv_ekMPqrAPCs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6F/6FGYPSK_7hAlvjwW3X3fNNleY0LuhzwCoGeIbO1538w.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6O/6Oqm_yAl40HaFBnSmruGWisS1oQYcUKBEJQWnwT2iyg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6c/6c8oijMg6sUGBWcOX0UqRfkZc4G8_EJ0O8-jur-q4sE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7f/7fFXL1dqWwlN6izlPuUj0bybnPXt5YUrlsqenq8hf1M.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7o/7ooVC1h6lyy3nHuPZQgAeke8ic61Zyh7PyyHWd28WK8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/86/86D-S2e6CvMHy2qDScwO9a7t58dAsVkp-eKD_lSNagQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8G/8G9xHNcn_bVvW3WeawefeIsaqTWOGtOB9trQUI7Mjdg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8b/8bOwoZNcKaFppP18YftCWhvO9QyLfHFS4AT-lf_NYPQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/94/94pY1GE-Id4wemdTeAiDUXwpAztIl1zuycZxPk3uCjA.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/97/97Lyyc99KU98M8g4q2JomA4vMnn-J3kgLxm9PA7SMk8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AG/AGXlJSyikBDWW5B00w3GKi0SqfYGG-3XXdxeSUj2Whg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ac/Acc4VrmYAPwLtjY6GRFH07k7QMfBn01hHVHQJy2Rfqg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/BI/BIcBr2rFf5keFa1kzkXiuBWHnHD7A0GFPMBBwWrFPwI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CR/CRJJy55pmRKMgeq8GowBuftA2FkItxg5yW3122ZVgPk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cm/Cmm2BEGF__yJWLch3lkArWuChL4q-3VjTBvaALBmPBc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EB/EBft4xQC06k6k3wBhpgyUHwPdDuKfO8SbmyJQ6jrR8M.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EK/EK_40tb6g6Imx23FvNbSDj2EnqTIGgacOWZtBIzQCTM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EW/EWRrCUyjPUdofGY6RYaiuFnFb-Wjq7zwHE4W7Mhrg6E.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FL/FLbZALWqjhHzA4SOb0DS3KfgEJIs6BpfYz5Men4nCL0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FV/FVDWojNULfLlZ9MgT6k-GfWQIb6G8Zeq_pCebNGFn3k.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/G0/G0XZJi-5TjrYpkSOWEdTK_tjNlR7fNxMdkHqlkkBYdM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IG/IGT0O63WVA7Sfgl_g8oiNFGJQXNJdqtyJV2atcmRIlg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IG/IGoQsqPdaWt1zxXbzFfrkKiMgQ9FhzVWQ8nJ1_13fLY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IX/IXrWTTUnk5V8RuhnxGDboLGuBzirDpeVWw-XYpKB6yQ.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/J3/J3LiXkHyL9Hs9tAExHHwb4qJxhnUu43CmUU7h6hYB64.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JW/JWGLd-K-trouzkol-nwigOpk1SUgsCWx4_x9zZDzQjM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Jw/Jw4l22so5t5edJAxQhNupu2IRotJpuQzHEvrf2CBD7I.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K-/K-S7GohJKTXThc993X-xXo0BQqRoWniauRpNHZX3pY8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K-/K-b8VrEpvUh9amDrIJQ4WcqUFS2G1yjuREW9r4WsQ-o.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ku/KuAGuiCplWodV71HALtBne3mmpK9gJcuzytwktUI3og.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LQ/LQTTgOccx6ELTkXiyaBjDAFWXVHOkJF81TjyA5rKRuc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ll/LlqS3LuP_6XMnSi8BhbCfAspFrRr8y6zt2KNFPi9jXI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MZ/MZ3n3_ULFCMIFli9yGGCeYfJpbgrLcJyLzmLDhNZTNg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ms/MsK6xThKWyy3EP0bCwdMjp9MKjFtuYLvGQagnLbVicM.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/N0/N0MMPBJNgb0mVLM6EZW-90hw6HG_BZAYYhNFV0np3hI.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Na/Nas7iovPFfI0gYVOEu4l0hwX0TQfVNs2erUEu9jvHmA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PW/PW-7ZnacFMdzmWbcxhyUop5VPyk8HB4p4Eg18QIX5Us.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Py/PyVpFUa9fFlhP5qPk66tT8PueWPTTamO7DaMMKtLCQo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QR/QR05DHW6ny1ik589bYoeOoO7-BvQLuPGj0LC9vIDxcY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QY/QY0vQOIniQpL7_K1jQrre1VcZcyNZUD3k6OdxUBMXgs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qb/QbZgECTXfEHD4lwtjcWc_zjpMguy6eWpAfl0pCKarvg.cache +4 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qq/QqNTrifu4m6Kxt4TidJJKWfilNw56S9NZvklM7q5vYc.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RY/RYAvTDisyBiKImYGuKuQxw8ld3hWqe9PWf3INZ4E9Sk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rq/RqcPPeowOs4xV6on324eRuDopAD6B8oynqfL7HHkxDs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/S3/S3mVV7r2zY-Mc7fzgbtlm5KwbJZjkaiY42YTbDZjV48.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SS/SScgAnW7RlUYnRQBWejb5q0qvQ1sEPk3AryYRi4aL80.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TS/TSHBEmnF83xFKnw4lXiSnWCzzUcsr4zvdZKYqUY1hX0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U3/U3YsjRE_IGdtzHfNQrhgJQBwYiN_6g1jXjQXxg6hZiA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U6/U6qS9nN5ixoa4wv3F8XWc5cyw-WrTy1YAIdfZoVfwnA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UE/UEBQHYNAEm_IuY3ol41KxiO66lsrQDRqrRIHyHx5UwQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UZ/UZ8KRt8-eMrbo5pUYWvJL4ffNRrZQMBQYAORWLXFkSA.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vb/VbJtzpUU-KQNYF68VsGukBB7c08qJ57Bjs6x0cKkKak.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vc/VcXB791lVrLiRxxRTLmb6AyJAzxZ7VSN1nc4ql4-QSc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WF/WFclMr7-85-jtgOwGV_pZMYgb8xaFKgxcOqvco-keXM.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XG/XGiBjxazfVjZ7wS-hY5yBYqdKqgyVmYIPxklgjSMXYM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XS/XSf5zB-mjIUgPxEvQtpvfuqSOrYOmLXHzqUyyUhdbGE.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xm/XmTgbtioYvkiGsl03YdImajUTDxFyg30aYZWLWMPIb0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y3/Y3am8wO4HZTWNwomPA5X5bqESrX0NZu3GO-0jKbQLm8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/YC/YCwXRufXIh-vkVKKWbDUc3BkyrT_XGZD6jbHIdhyepk.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/YH/YHg5vYrpTfsB5YidkLyyORH5A6rrhFmFTve5i_17SyM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y_/Y_e3KyxSRi7bRZPe20VZJmMbUPGk38xfHpCc6yJixU0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZA/ZAOE1JD6lEGNBb5kDMHNxoV66sGUQpzMu4nkeD7xt2o.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZA/ZAzFQX1aJM96e-5ZzRXL1cZQh_QCE1WTa2NsdWurQDk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZB/ZBSaR4XYloYIymceg0sMiNbF5qvLXPILjQoPxizS46k.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZC/ZCSlSszCgevBj2ZrXNR8-08XBJDVr01iPehedE2lO-o.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Zh/ZhLGQrfeZU8xp_6hWWNBb5_QJmcdBuXA1EWlpFeb3Qc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_5/_5gaN8EtTE-aQXThn9Wg2QCfkyXeaP8Z8-RAL0GQwN0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_F/_FoetLNtdW_M4-_NuO_3EWTAaFopK2SNPJkomAAJjWk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_l/_lPNSNneNjbBtC1ouoQ_dnQZJDcT1xR-R-35EFEq9mU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a0/a0YN5mBeCfTPvQ-CZFTADpdB565taPrVF_tEO309rx0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aG/aGkwJZ4mCf0xDDV5nIg7eWKHsTrNYs7Fw1uznEvSgvk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aQ/aQwUkLwfx5QpRgTPlbNkqxQll1crTc64SDUXJj63vCM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bB/bBy8EkfbzgsMAllPC8-WWqVuPonUT82q-sjXk-eKSUY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bD/bD9p84Yyjpi8eMkjYHyMzkgnUceQeF9N4VV2Dljd0D0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bQ/bQtO7GQ_eZq6m6UbqcSzYCBG-E_VGFGDU8ZSnufpIik.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bS/bSpBaFGvDXHNCANj1EExhQckeR1T1QiL5HlPhpnl9qA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bl/bleGdVZFXaRC0nIKl2JC38y_thUfNTbUczPV0OHrOys.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/c4/c4JZnzmdfa_Y5cHdoN4d0tJ1HCFErE2N-3Wz_d6Xv-8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dh/dhcT0jK6mpyB_FY1BUGGnYEEqnnavLsnFII_MY9VvSc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/e2/e2Ylc5Zpg2LhF0OIPOGsNV0AHm93ECtnhy9pVj356ec.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ep/epF-H1ll29UFuncWum_ND-d6QgogzaMfI30fUjGhrBs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fh/fhY0UEAu-q5edVt56g_SLI1WWRCW584v7rcMuCj1QPc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gq/gqDzAw8m7txZLFxXRz7xOUikBGaLBv_fAL2XCvo1h1A.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/j9/j9OAOISmO3TQwMfMPYS8Fc-xYYQDbCpXpyXXyQsq3GA.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jA/jAgvvyUhDy7MDnsrRb5S_qlFkMbqmOiUmh6PBUBcIoY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jm/jmlmHWZSPBR5R0T7YZ3CiN_d_vpUeVz2U6XEHOTVLm4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/k5/k5l-MOIkumCn8GDQ9Pw2hSVyUf_Gn3OuzLekpI4F1as.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kH/kHBlPcTnCO-JbUmONO-fvWudygnE1wO1I9PZCoBXIY4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lH/lHdeb7hgAGGUwg2_8NJayk5LtNkuKbhpMCIvgkuPwb4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lP/lPB2ZqnMqP_ZLMb95x3r2k52Zh8qEEYWqJ4_AxOjXdc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lZ/lZvGVbAI3Rtnp8yiAueH-9NPfwztnu5rgsqjebwa5T0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lj/ljYhDBsZG44Y1UQA2AjcM-t_g0P70W42diNZlFhM9Sc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lj/ljnYaLc-iDE8bdgbzw2xrd2S0vfQWl5baJZLaRGbhF0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ll/lldQ0R60REWT-F8wM6QCpjPahC6C8XCO_XqWHqLUgHI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ll/llwjWSKdEo2xM8DLgk6WGLT0RM47h1CRXuoKKz81mC8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mi/miPsjK0SCTlDu8K0ed2eZpa-fRCgSs16xincvpbfOCg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nB/nBk_dR6xqbVkpd3-EtH5jY_MiZfTPQnU5haxOfWFjck.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nN/nNHsv6bCC83nImUn1mxDhqF7xwYLfhZRtyd9xP_bHdk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nV/nVwpWFXAxoxlpooKrvb-VoFGVy8vjUpTl-6-cc6Qbso.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nY/nYblBJo58yX7MoC91aoB2bba5Rz0zfqe51ZXJPmPuMQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oB/oBuNYsKrWmLGjSZYgM4mQC8963VUHS4DoxE6_hOiYCs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oI/oIG5tF3SkeK_yIc1oYkTkuZ6n95hGBrQFaa-5aMQLvc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oa/oaUxXaamZX1ibCiWFf8owqI6I3jVT-U4LKtyezEcdA8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ow/ow4Mv_I51uOjs57RGxOTUFplSdRIhx0MQiMgrGf6jOE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ph/phsvbtb-zP02E3p-z5bNacjgFadMrmkSKgZ3djHAjUQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pq/pq_mP3a7ivW3Qi41nB-dssBXy6aW9l2QUlSEqOI3sE8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pt/pttAugu74o8KjkL84ApsarjE0i6S3Fe6u8TPgKgBexI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pz/pzFArBsQGb0Np4ZX1fPDSq-I7P8qyxDXTCGpziUH4BA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/q9/q99ic0TvyAN3bWzJELu33Zi2DWEtBcyPZ_ilNVgLD9o.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qT/qT-g7M2fG6GVSANfjQIQd-VGvvMwApLDGfrL4pDGq5o.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qh/qhZveb8_9dtmVqG4Vt0MfyDvdsWIsVXq8BWTvkvzrYA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r1/r1I_9U513h7qmv7cA2nHAcOj-Q9EzFeo2OsMxwh7L3k.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rQ/rQBfBCBl4HOla4XgxlzPFrWUo2cAxF20bU7bxIcvzaM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sJ/sJYtWV-oaKQA5jXnVmkmnLB7ZQkrP_8CY0hW_L0m3ws.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tm/tm_j3IoioQ5bShNkxEmz_jxXzhQOIBWo8Oa155OD5JE.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/u3/u3wEeL53_ax62E0oySJNd0gt7HtSaqzEPtEq3L31ZI0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uM/uMjIgHxLRsuXQLuq-PXtsxQiWXYb4fujcKC-sPQQSXE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vU/vUWv7YDu0uMx3xbz6ZflAScZJvUm1cV2otfqrO37OHM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w3/w3wEEOWmMe3mCvTGo32Cv9I3iCCzdQVOKzuZwkbGP34.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wD/wDjB26V_MeeK_DPJjK3uxuXhZxUf2RgR3okyAc6Mch0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xT/xTRn9fg9g-onMXDz6G5b0boQH345q2UsDeBKBkQSw34.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xq/xqQmPvcrj4Jitvig2QTTFey2pXRUKhMoH4df5FE96x0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xr/xrWMN4OTx2EBuZeoGJSRtyCKPvLKPQOQd6H-NUMMr1s.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yI/yIHXtygc2A6GWVrfvtbglVnIQ8G5siPuODwbflQCngc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yw/yw-zDTjjY1ZpixctdyiDeMnSjZYsj2Ovz_3gvbaiE9k.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zH/zH2pIxo90ehFARIotDzvl5QQAJUNJaKjjGuiMvhrV1I.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zX/zXI3ayLnfyEdWRMGEpdtvjgTZeEnzFg-mSDJpFheqqc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zz/zztSJp9qxS4Fy_6P7VdOBcp82vg_4mwiF4CE65ixkBM.cache +1 -0
- data/spec/factories/website_factory.rb +13 -0
- data/spec/spec_helper.rb +22 -4
- metadata +363 -11
- data/lib/aeternitas/web_ui/dashboard_statistics.rb +0 -96
- data/lib/aeternitas/web_ui/pollable_statistics.rb +0 -148
- data/lib/aeternitas/web_ui/pollables_index_statistics.rb +0 -36
- data/spec/aeternitas/web_ui/dashboard_statistics_spec.rb +0 -5
- data/spec/dummy/spec/factories/websites.rb +0 -5
- data/spec/dummy/spec/models/website_spec.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d99f4e89e444562efa1e78f882233e0b53d9655f
|
4
|
+
data.tar.gz: 3f9c6597fae05be4e4cf510e3338d81d5ed34fcf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5de507b4481224aaf9638e3b50de2a7639a504f63f90946f98b9fdce0a384f94c2c10f473bea7f274e7da5e933f2e7d5c169ce623b8d4262c0568298cd5b2e1a
|
7
|
+
data.tar.gz: 60dce577a0d1452b665ce2f651593d5dd791afe1da44df30ef51b2847febb2d66c1b313a28f77b1e51a8233567f271b5dd6c50615c23ad6660a17824010fba58
|
data/README.md
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
# Aeternitas WebUi
|
2
|
+
|
3
|
+
[![Build Status](https://travis-ci.org/FHG-IMW/aeternitas_web_ui.svg?branch=master)](https://travis-ci.org/FHG-IMW/aeternitas_web_ui)
|
4
|
+
|
2
5
|
Æternitas WebUi is a monitoring tool for [Æternitas](https://github.com/FHG-IMW/aeternitas).
|
3
6
|
It allows you to keep track of polling activities and metrics like pollables and source growth,
|
4
7
|
error rates and execution times.
|
@@ -25,8 +28,20 @@ mount Aeternitas::WebUi::Engine => '/aeternitas'
|
|
25
28
|
|
26
29
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
27
30
|
|
31
|
+
You can also run a dummy app, which includes Æternitas and the web ui. You can initialize some test data by running
|
32
|
+
```bash
|
33
|
+
bundle exec rake db:drop db:setup db:seed
|
34
|
+
```
|
35
|
+
|
36
|
+
Than you can start a server via
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
bundle exec rails s
|
40
|
+
```
|
41
|
+
|
28
42
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
29
43
|
|
44
|
+
|
30
45
|
## Contributing
|
31
46
|
|
32
47
|
Bug reports and spec backed pull requests are welcome on GitHub at https://github.com/FHG-IMW/aeternitas_web_ui. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
@@ -0,0 +1,34 @@
|
|
1
|
+
$(document).ready(function() {
|
2
|
+
$(".sparkline").each(function(i,sparkline){
|
3
|
+
console.log(sparkline)
|
4
|
+
var data = $(sparkline).html().split(",");
|
5
|
+
var labels = Array.from(Array(data.length).keys());
|
6
|
+
var container = $("<canvas class='sparkline-container'></canvas>");
|
7
|
+
$(sparkline).html(container);
|
8
|
+
|
9
|
+
new Chart(container.get(0), {
|
10
|
+
type: 'line',
|
11
|
+
data: {
|
12
|
+
labels: labels,
|
13
|
+
datasets: [{
|
14
|
+
data: data,
|
15
|
+
pointRadius: 0,
|
16
|
+
lineTension: 0,
|
17
|
+
borderColor: '#96C0CE',
|
18
|
+
backgroundColor: 'rgba(171,221,235,0.5)'
|
19
|
+
}]
|
20
|
+
},
|
21
|
+
options: {
|
22
|
+
responsive: true,
|
23
|
+
maintainAspectRatio: false,
|
24
|
+
scales: {
|
25
|
+
yAxes: [{display: false, ticks: {min: 0}}],
|
26
|
+
xAxes: [{display: false}]
|
27
|
+
},
|
28
|
+
legend: {
|
29
|
+
display: false
|
30
|
+
}
|
31
|
+
}
|
32
|
+
})
|
33
|
+
})
|
34
|
+
});
|
@@ -8,6 +8,25 @@ module Aeternitas
|
|
8
8
|
@message = message
|
9
9
|
render template: 'aeternitas/web_ui/dashboard/error', status: status
|
10
10
|
end
|
11
|
+
|
12
|
+
def set_timerange
|
13
|
+
@from = DateTime.parse(params.require(:from))
|
14
|
+
@to = DateTime.parse(params.require(:to))
|
15
|
+
@resolution = get_resolution(@from, @to)
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_resolution(from, to)
|
19
|
+
case (to.to_time - from.to_time)
|
20
|
+
when 0.hours..2.hours
|
21
|
+
:minute
|
22
|
+
when 2.hours..12.hours
|
23
|
+
:ten_minutes
|
24
|
+
when 12.hours..3.days
|
25
|
+
:hour
|
26
|
+
else
|
27
|
+
:day
|
28
|
+
end
|
29
|
+
end
|
11
30
|
end
|
12
31
|
end
|
13
32
|
end
|
@@ -1,35 +1,49 @@
|
|
1
1
|
module Aeternitas
|
2
2
|
module WebUi
|
3
3
|
class DashboardController < Aeternitas::WebUi::ApplicationController
|
4
|
-
|
4
|
+
before_action :set_timerange, only: [:polls_timeline, :pollable_growth]
|
5
5
|
|
6
|
-
end
|
6
|
+
def index ; end
|
7
|
+
|
8
|
+
def polls_timeline
|
9
|
+
@polls = Aeternitas::Metrics.polls(Pollable, from: @from, to: @to, resolution: @resolution)
|
10
|
+
@failures = Aeternitas::Metrics.failed_polls(Pollable, from: @from, to: @to, resolution: @resolution)
|
7
11
|
|
8
|
-
def polls_24h
|
9
|
-
@polls = Aeternitas::WebUi::DashboardStatistics.polls_24h
|
10
12
|
respond_to do |format|
|
11
|
-
format.json {
|
13
|
+
format.json {}
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
15
17
|
def future_polls
|
16
|
-
@
|
18
|
+
@labels = []
|
19
|
+
@datasets = Hash.new { |k, v| k[v] = Array.new(7, 0) }
|
20
|
+
|
21
|
+
(Date.today..6.days.from_now.to_date).each_with_index do |day, i|
|
22
|
+
@labels[i] = day.strftime("%b %d")
|
23
|
+
Aeternitas::PollableMetaData
|
24
|
+
.where(next_polling: (day.beginning_of_day..day.end_of_day))
|
25
|
+
.group(:pollable_class)
|
26
|
+
.count
|
27
|
+
.each_pair { |pollable, count| @datasets[pollable][i] = count }
|
28
|
+
end
|
17
29
|
|
18
30
|
respond_to do |format|
|
19
|
-
format.json {
|
31
|
+
format.json { }
|
20
32
|
end
|
21
33
|
end
|
22
34
|
|
23
35
|
def pollable_growth
|
24
|
-
@
|
36
|
+
@pollable_classes = Aeternitas::PollableMetaData
|
37
|
+
.distinct(:pollable_class)
|
38
|
+
.pluck(:pollable_class)
|
39
|
+
.map(&:constantize)
|
40
|
+
|
25
41
|
respond_to do |format|
|
26
|
-
format.json {
|
42
|
+
format.json {}
|
27
43
|
end
|
28
44
|
end
|
29
45
|
|
30
|
-
def error
|
31
|
-
|
32
|
-
end
|
46
|
+
def error ; end
|
33
47
|
end
|
34
48
|
end
|
35
49
|
end
|
@@ -1,35 +1,54 @@
|
|
1
1
|
module Aeternitas
|
2
2
|
module WebUi
|
3
3
|
class PollablesController < Aeternitas::WebUi::ApplicationController
|
4
|
-
|
5
|
-
before_action :set_time_range, except: [:index, :show]
|
4
|
+
include ActionController::ImplicitRender
|
6
5
|
|
6
|
+
before_action :set_pollable, except: [:index]
|
7
|
+
before_action :set_timerange, only: [:timeline, :execution_time, :data_growth]
|
7
8
|
|
8
9
|
def index
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
@pollable_classes = Aeternitas::PollableMetaData
|
11
|
+
.distinct(:pollable_class)
|
12
|
+
.pluck(:pollable_class)
|
13
|
+
.map(&:constantize)
|
13
14
|
end
|
14
15
|
|
15
16
|
def show ; end
|
16
17
|
|
17
|
-
def timeline
|
18
|
-
respond_to do |format|
|
19
|
-
format.json { render json: Aeternitas::WebUi::PollableStatistics.timeline(@pollable, @from, @to)}
|
20
|
-
end
|
21
|
-
end
|
18
|
+
def timeline ; end
|
22
19
|
|
23
20
|
def execution_time
|
24
|
-
|
25
|
-
format.json { render json: Aeternitas::WebUi::PollableStatistics.execution_time(@pollable, @from, @to)}
|
26
|
-
end
|
21
|
+
@polling_time = Aeternitas::Metrics.execution_time(@pollable, from: @from, to: @to, resolution: @resolution)
|
27
22
|
end
|
28
23
|
|
29
24
|
def data_growth
|
30
|
-
|
31
|
-
|
32
|
-
|
25
|
+
@pollables_created = Aeternitas::Metrics.pollables_created(@pollable, from: @from, to: @to, resolution: @resolution)
|
26
|
+
@sources_created = Aeternitas::Metrics.sources_created(@pollable, from: @from, to: @to, resolution: @resolution)
|
27
|
+
end
|
28
|
+
|
29
|
+
def deactivated_pollables
|
30
|
+
start = params.fetch(:start, 0)
|
31
|
+
limit = params.fetch(:length, 10)
|
32
|
+
|
33
|
+
@pollable_meta_data = Aeternitas::PollableMetaData
|
34
|
+
.deactivated
|
35
|
+
.includes(:pollable)
|
36
|
+
.where(pollable_class: @pollable.name)
|
37
|
+
.limit(limit)
|
38
|
+
.offset(start)
|
39
|
+
.order(deactivated_at: :desc)
|
40
|
+
end
|
41
|
+
|
42
|
+
def all_pollables
|
43
|
+
start = params.fetch(:start, 0)
|
44
|
+
limit = params.fetch(:length, 10)
|
45
|
+
|
46
|
+
@pollable_meta_data = Aeternitas::PollableMetaData
|
47
|
+
.where(pollable_class: @pollable.name)
|
48
|
+
.includes(pollable: :sources)
|
49
|
+
.limit(limit)
|
50
|
+
.offset(start)
|
51
|
+
.order(last_polling: :desc)
|
33
52
|
end
|
34
53
|
|
35
54
|
private
|
@@ -44,11 +63,6 @@ module Aeternitas
|
|
44
63
|
false
|
45
64
|
end
|
46
65
|
end
|
47
|
-
|
48
|
-
def set_time_range
|
49
|
-
@from = DateTime.parse(params.require(:from))
|
50
|
-
@to = DateTime.parse(params.require(:to))
|
51
|
-
end
|
52
66
|
end
|
53
67
|
end
|
54
68
|
end
|
@@ -14,14 +14,20 @@ module Aeternitas
|
|
14
14
|
content_tag :span, "#{ratio * 100}%", class: label_type
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
17
|
+
def get_identifier(pollable)
|
18
|
+
identifier = pollable.id.to_s
|
19
|
+
identifier +=
|
20
|
+
if pollable.respond_to?(:name)
|
21
|
+
' - ' + pollable.name.to_s
|
22
|
+
elsif pollable.respond_to? :label
|
23
|
+
' - ' + pollable.label.to_s
|
24
|
+
elsif pollable.respond_to? :identifier
|
25
|
+
' - ' + pollable.identifier.to_s
|
26
|
+
elsif pollable.respond_to? :url
|
27
|
+
' - ' + pollable.url.to_s
|
24
28
|
end
|
29
|
+
|
30
|
+
identifier
|
25
31
|
end
|
26
32
|
end
|
27
33
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
colors = Aeternitas::WebUi::ColorGenerator.new(@datasets.count)
|
2
|
+
|
3
|
+
json.labels @labels
|
4
|
+
json.datasets do
|
5
|
+
json.array! @datasets do |pollable, data|
|
6
|
+
json.label pollable
|
7
|
+
json.data data
|
8
|
+
json.backgroundColor colors.next.hex
|
9
|
+
json.borderColor colors.current.hex
|
10
|
+
end
|
11
|
+
end
|
@@ -1,5 +1,14 @@
|
|
1
1
|
<div class="container grid-1280">
|
2
|
-
<
|
2
|
+
<div class="columns">
|
3
|
+
<div class="column col-4">
|
4
|
+
<h2>Dashboard</h2>
|
5
|
+
</div>
|
6
|
+
<div class="col-8">
|
7
|
+
<div class="float-right" style="display: inline-block;">
|
8
|
+
<%= render partial: 'partials/timepicker' %>
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
</div>
|
3
12
|
</div>
|
4
13
|
|
5
14
|
<div class="section-blue">
|
@@ -14,7 +23,7 @@
|
|
14
23
|
</div>
|
15
24
|
</div>
|
16
25
|
<div class="info-box-body">
|
17
|
-
<strong> <%= Aeternitas::
|
26
|
+
<strong> <%= Aeternitas::PollableMetaData.enqueued.count %> </strong> Pollables
|
18
27
|
<small>are currently enqueued</small>
|
19
28
|
</div>
|
20
29
|
</div>
|
@@ -27,7 +36,16 @@
|
|
27
36
|
</div>
|
28
37
|
</div>
|
29
38
|
<div class="info-box-body">
|
30
|
-
<strong>
|
39
|
+
<strong>
|
40
|
+
<%=
|
41
|
+
Aeternitas::Metrics.polls(
|
42
|
+
Aeternitas::Pollable,
|
43
|
+
from: 24.hours.ago,
|
44
|
+
to: Time.now,
|
45
|
+
resolution: :day
|
46
|
+
).map {|v| v[:count]}.sum
|
47
|
+
%>
|
48
|
+
</strong> Polls
|
31
49
|
<small>within the last 24h</small>
|
32
50
|
</div>
|
33
51
|
</div>
|
@@ -40,7 +58,16 @@
|
|
40
58
|
</div>
|
41
59
|
</div>
|
42
60
|
<div class="info-box-body">
|
43
|
-
<strong>
|
61
|
+
<strong>
|
62
|
+
<%=
|
63
|
+
Aeternitas::Metrics.failed_polls(
|
64
|
+
Aeternitas::Pollable,
|
65
|
+
from: 24.hours.ago,
|
66
|
+
to: Time.now,
|
67
|
+
resolution: :day
|
68
|
+
).map {|v| v[:count]}.sum
|
69
|
+
%>
|
70
|
+
</strong> Failures
|
44
71
|
<small>within the last 24h</small>
|
45
72
|
</div>
|
46
73
|
</div>
|
@@ -53,13 +80,12 @@
|
|
53
80
|
<div class="container grid-1280">
|
54
81
|
<h4>
|
55
82
|
Polls
|
56
|
-
<small>Last 24h</small>
|
57
83
|
</h4>
|
58
84
|
</div>
|
59
85
|
<div class="large-canvas">
|
60
|
-
<canvas id="
|
86
|
+
<canvas id="polls-timeline"></canvas>
|
61
87
|
<script>
|
62
|
-
register_chart("
|
88
|
+
register_chart("polls-timeline", "<%= polls_timeline_dashboard_path %>", {
|
63
89
|
type: 'line',
|
64
90
|
options: {
|
65
91
|
responsive: true,
|
@@ -0,0 +1,19 @@
|
|
1
|
+
colors = Aeternitas::WebUi::ColorGenerator.new(@pollable_classes.count)
|
2
|
+
range = TabsTabs::Helpers.timestamp_range(@from..@to, @resolution)
|
3
|
+
|
4
|
+
json.labels(range.map { |date| date.strftime('%B %d') })
|
5
|
+
json.datasets do
|
6
|
+
json.array! @pollable_classes do |pollable_class|
|
7
|
+
data = Aeternitas::Metrics.pollables_created(
|
8
|
+
pollable_class,
|
9
|
+
from: @from,
|
10
|
+
to: @to,
|
11
|
+
resolution: @resolution
|
12
|
+
).map { |v| v[:count] }
|
13
|
+
|
14
|
+
json.label pollable_class.name
|
15
|
+
json.data data
|
16
|
+
json.borderColor colors.next.hex
|
17
|
+
json.backgroundColor colors.current.hex
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
json.labels(@polls.map { |v| v[:timestamp].strftime("%H:%M") })
|
2
|
+
json.datasets do
|
3
|
+
json.array! [
|
4
|
+
{
|
5
|
+
label: '# Polls',
|
6
|
+
data: @polls.map { |v| v[:count] },
|
7
|
+
borderColor: "#96C0CE",
|
8
|
+
backgroundColor: "rgba(171,221,235,0.5)"
|
9
|
+
},
|
10
|
+
{
|
11
|
+
label: '# Failures',
|
12
|
+
data: @failures.map { |v| v[:count] },
|
13
|
+
borderColor: "#C25B56",
|
14
|
+
backgroundColor: "rgba(255,116,111,0.5)"
|
15
|
+
}
|
16
|
+
]
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
json.data do
|
2
|
+
json.array! @pollable_meta_data do |meta_data|
|
3
|
+
json.identifier get_identifier(meta_data.pollable)
|
4
|
+
json.status meta_data.state
|
5
|
+
json.last_polling(meta_data.last_polling.present? ? l(meta_data.last_polling, format: :long) : nil)
|
6
|
+
json.next_polling l(meta_data.next_polling, format: :long)
|
7
|
+
json.sources meta_data.pollable.sources.count
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
count = Aeternitas::PollableMetaData.where(pollable_class: @pollable.name).count
|
12
|
+
json.recordsTotal count
|
13
|
+
json.recordsFiltered count
|
@@ -0,0 +1,21 @@
|
|
1
|
+
json.labels(@pollables_created.map { |v| v[:timestamp].strftime('%B %d. %H:%M') })
|
2
|
+
json.datasets do
|
3
|
+
json.array! [
|
4
|
+
{
|
5
|
+
label: "Created #{@pollable.name.pluralize}",
|
6
|
+
data: @pollables_created.map { |v| v[:count] },
|
7
|
+
borderColor: '#96C0CE',
|
8
|
+
backgroundColor: 'rgba(171,221,235,0.5)',
|
9
|
+
fill: false,
|
10
|
+
type: 'line'
|
11
|
+
},
|
12
|
+
{
|
13
|
+
label: "Created Sources",
|
14
|
+
data: @sources_created.map { |v| v[:count] },
|
15
|
+
borderColor: "#32b643",
|
16
|
+
backgroundColor: "rgba(50,182,67,0.5)",
|
17
|
+
fill: false,
|
18
|
+
type: 'line'
|
19
|
+
}
|
20
|
+
]
|
21
|
+
end
|