aeternitas_web_ui 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -0
  3. data/app/assets/javascripts/aeternitas/web_ui/aeternitas_web_ui.js +1 -0
  4. data/app/assets/javascripts/aeternitas/web_ui/sparkline.js +34 -0
  5. data/app/controllers/aeternitas/web_ui/application_controller.rb +19 -0
  6. data/app/controllers/aeternitas/web_ui/dashboard_controller.rb +26 -12
  7. data/app/controllers/aeternitas/web_ui/pollables_controller.rb +36 -22
  8. data/app/helpers/aeternitas/web_ui/application_helper.rb +13 -7
  9. data/app/views/aeternitas/web_ui/dashboard/future_polls.json.jbuilder +11 -0
  10. data/app/views/aeternitas/web_ui/dashboard/index.html.erb +33 -7
  11. data/app/views/aeternitas/web_ui/dashboard/pollable_growth.json.jbuilder +19 -0
  12. data/app/views/aeternitas/web_ui/dashboard/polls_timeline.json.jbuilder +17 -0
  13. data/app/views/aeternitas/web_ui/pollables/all_pollables.json.jbuilder +13 -0
  14. data/app/views/aeternitas/web_ui/pollables/data_growth.json.jbuilder +21 -0
  15. data/app/views/aeternitas/web_ui/pollables/deactivated_pollables.json.jbuilder +12 -0
  16. data/app/views/aeternitas/web_ui/pollables/execution_time.json.jbuilder +29 -0
  17. data/app/views/aeternitas/web_ui/pollables/index.html.erb +45 -10
  18. data/app/views/aeternitas/web_ui/pollables/show.html.erb +69 -14
  19. data/app/views/aeternitas/web_ui/pollables/timeline.json.jbuilder +33 -0
  20. data/config/routes.rb +3 -1
  21. data/lib/aeternitas/web_ui.rb +1 -3
  22. data/lib/aeternitas/web_ui/version.rb +1 -1
  23. data/spec/controllers/dashboard_controller_spec.rb +33 -0
  24. data/spec/controllers/pollables_controller_spec.rb +85 -0
  25. data/spec/dummy/app/models/patent.rb +11 -0
  26. data/spec/dummy/app/models/website.rb +4 -0
  27. data/spec/dummy/db/development.sqlite3 +0 -0
  28. data/spec/dummy/db/migrate/20170629115814_create_patents.rb +7 -0
  29. data/spec/dummy/db/schema.rb +5 -2
  30. data/spec/dummy/db/seeds.rb +45 -0
  31. data/spec/dummy/db/test.sqlite3 +0 -0
  32. data/spec/dummy/log/development.log +14744 -0
  33. data/spec/dummy/log/test.log +23225 -0
  34. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/--/--lWLbvYn0hXyiIPFVa33lr-P1J5OFewU5zxzHLGEJI.cache +1 -0
  35. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-_/-_G27iPKZyXAdNxuGSKddDrOFR3NsMpi175TfU4nn4Y.cache +1 -0
  36. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0J/0J_eEsynrbD8IOLt4b9wMzUcNovIlbvJUFyZuqnYLZw.cache +0 -0
  37. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0P/0PYtiqW7zEC_O8W5SY38LaRk1EQ5UubbEuigsKwqfIU.cache +1 -0
  38. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/12/12UMYXbXZU_YYZ05urBws9BsxDXk_lPbezAaJStnzxQ.cache +1 -0
  39. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1T/1TGgX5aSkYsopXKTfRBJpC4B-fWma8JDM3VtLpNqUDU.cache +1 -0
  40. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1Y/1YLYZaz9mqN0SicHJuTWhl6tXgPdyy_khFXjmFP20kk.cache +1 -0
  41. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/30/303MFNdHS0Xmaw9m1jE2xsfh8G2IQRRRqYPzefNbXwc.cache +1 -0
  42. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3C/3C40ttO3I1C2hdHlIN4d9GDXMFGjqCAEI54J38dxs1I.cache +3 -0
  43. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3a/3a9B5kFZTPh0IPBgh0glCvHYBQ-W981LA52FMuLN42w.cache +1 -0
  44. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3t/3tUq8gbTvauqkkgFaklXOWPC5ZLrioD-0LsUfAHO9ww.cache +1 -0
  45. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4S/4SWJkdzdSUXX3wQNuHmLDhKaO9L5nbMeoLOn9otLMtY.cache +1 -0
  46. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4V/4Vt_-zopG3xAfSekn4m6gQsz-rw8A9BcS0wvJzOTSaw.cache +0 -0
  47. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5c/5cTRuFQmUR6bOY_5NSWQqq-cA_s-eHg7kw5NHvD4E4g.cache +1 -0
  48. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5e/5ebL3GatCu_j7v8IcUQ8a6M75dAAMPRXp0A2PjRfAoY.cache +1 -0
  49. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5g/5gvP8rrlydbdZF6Jkx2-kQrrI6OO1dTOK6Mcpwcqnss.cache +0 -0
  50. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5l/5lvZkMM87hGXeJfAsegTXS8QixCH-PGv_ekMPqrAPCs.cache +0 -0
  51. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6F/6FGYPSK_7hAlvjwW3X3fNNleY0LuhzwCoGeIbO1538w.cache +1 -0
  52. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6O/6Oqm_yAl40HaFBnSmruGWisS1oQYcUKBEJQWnwT2iyg.cache +1 -0
  53. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6c/6c8oijMg6sUGBWcOX0UqRfkZc4G8_EJ0O8-jur-q4sE.cache +1 -0
  54. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7f/7fFXL1dqWwlN6izlPuUj0bybnPXt5YUrlsqenq8hf1M.cache +0 -0
  55. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7o/7ooVC1h6lyy3nHuPZQgAeke8ic61Zyh7PyyHWd28WK8.cache +0 -0
  56. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/86/86D-S2e6CvMHy2qDScwO9a7t58dAsVkp-eKD_lSNagQ.cache +0 -0
  57. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8G/8G9xHNcn_bVvW3WeawefeIsaqTWOGtOB9trQUI7Mjdg.cache +0 -0
  58. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8b/8bOwoZNcKaFppP18YftCWhvO9QyLfHFS4AT-lf_NYPQ.cache +1 -0
  59. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/94/94pY1GE-Id4wemdTeAiDUXwpAztIl1zuycZxPk3uCjA.cache +3 -0
  60. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/97/97Lyyc99KU98M8g4q2JomA4vMnn-J3kgLxm9PA7SMk8.cache +0 -0
  61. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AG/AGXlJSyikBDWW5B00w3GKi0SqfYGG-3XXdxeSUj2Whg.cache +0 -0
  62. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ac/Acc4VrmYAPwLtjY6GRFH07k7QMfBn01hHVHQJy2Rfqg.cache +1 -0
  63. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/BI/BIcBr2rFf5keFa1kzkXiuBWHnHD7A0GFPMBBwWrFPwI.cache +1 -0
  64. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CR/CRJJy55pmRKMgeq8GowBuftA2FkItxg5yW3122ZVgPk.cache +1 -0
  65. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cm/Cmm2BEGF__yJWLch3lkArWuChL4q-3VjTBvaALBmPBc.cache +1 -0
  66. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EB/EBft4xQC06k6k3wBhpgyUHwPdDuKfO8SbmyJQ6jrR8M.cache +0 -0
  67. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EK/EK_40tb6g6Imx23FvNbSDj2EnqTIGgacOWZtBIzQCTM.cache +1 -0
  68. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EW/EWRrCUyjPUdofGY6RYaiuFnFb-Wjq7zwHE4W7Mhrg6E.cache +0 -0
  69. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FL/FLbZALWqjhHzA4SOb0DS3KfgEJIs6BpfYz5Men4nCL0.cache +1 -0
  70. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FV/FVDWojNULfLlZ9MgT6k-GfWQIb6G8Zeq_pCebNGFn3k.cache +1 -0
  71. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/G0/G0XZJi-5TjrYpkSOWEdTK_tjNlR7fNxMdkHqlkkBYdM.cache +0 -0
  72. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IG/IGT0O63WVA7Sfgl_g8oiNFGJQXNJdqtyJV2atcmRIlg.cache +1 -0
  73. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IG/IGoQsqPdaWt1zxXbzFfrkKiMgQ9FhzVWQ8nJ1_13fLY.cache +0 -0
  74. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IX/IXrWTTUnk5V8RuhnxGDboLGuBzirDpeVWw-XYpKB6yQ.cache +3 -0
  75. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/J3/J3LiXkHyL9Hs9tAExHHwb4qJxhnUu43CmUU7h6hYB64.cache +1 -0
  76. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JW/JWGLd-K-trouzkol-nwigOpk1SUgsCWx4_x9zZDzQjM.cache +0 -0
  77. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Jw/Jw4l22so5t5edJAxQhNupu2IRotJpuQzHEvrf2CBD7I.cache +0 -0
  78. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K-/K-S7GohJKTXThc993X-xXo0BQqRoWniauRpNHZX3pY8.cache +1 -0
  79. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K-/K-b8VrEpvUh9amDrIJQ4WcqUFS2G1yjuREW9r4WsQ-o.cache +0 -0
  80. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ku/KuAGuiCplWodV71HALtBne3mmpK9gJcuzytwktUI3og.cache +0 -0
  81. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LQ/LQTTgOccx6ELTkXiyaBjDAFWXVHOkJF81TjyA5rKRuc.cache +1 -0
  82. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ll/LlqS3LuP_6XMnSi8BhbCfAspFrRr8y6zt2KNFPi9jXI.cache +1 -0
  83. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MZ/MZ3n3_ULFCMIFli9yGGCeYfJpbgrLcJyLzmLDhNZTNg.cache +0 -0
  84. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ms/MsK6xThKWyy3EP0bCwdMjp9MKjFtuYLvGQagnLbVicM.cache +3 -0
  85. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/N0/N0MMPBJNgb0mVLM6EZW-90hw6HG_BZAYYhNFV0np3hI.cache +3 -0
  86. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Na/Nas7iovPFfI0gYVOEu4l0hwX0TQfVNs2erUEu9jvHmA.cache +0 -0
  87. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PW/PW-7ZnacFMdzmWbcxhyUop5VPyk8HB4p4Eg18QIX5Us.cache +3 -0
  88. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Py/PyVpFUa9fFlhP5qPk66tT8PueWPTTamO7DaMMKtLCQo.cache +1 -0
  89. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QR/QR05DHW6ny1ik589bYoeOoO7-BvQLuPGj0LC9vIDxcY.cache +1 -0
  90. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QY/QY0vQOIniQpL7_K1jQrre1VcZcyNZUD3k6OdxUBMXgs.cache +1 -0
  91. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qb/QbZgECTXfEHD4lwtjcWc_zjpMguy6eWpAfl0pCKarvg.cache +4 -0
  92. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qq/QqNTrifu4m6Kxt4TidJJKWfilNw56S9NZvklM7q5vYc.cache +3 -0
  93. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RY/RYAvTDisyBiKImYGuKuQxw8ld3hWqe9PWf3INZ4E9Sk.cache +1 -0
  94. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rq/RqcPPeowOs4xV6on324eRuDopAD6B8oynqfL7HHkxDs.cache +0 -0
  95. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/S3/S3mVV7r2zY-Mc7fzgbtlm5KwbJZjkaiY42YTbDZjV48.cache +1 -0
  96. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SS/SScgAnW7RlUYnRQBWejb5q0qvQ1sEPk3AryYRi4aL80.cache +1 -0
  97. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TS/TSHBEmnF83xFKnw4lXiSnWCzzUcsr4zvdZKYqUY1hX0.cache +1 -0
  98. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U3/U3YsjRE_IGdtzHfNQrhgJQBwYiN_6g1jXjQXxg6hZiA.cache +1 -0
  99. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U6/U6qS9nN5ixoa4wv3F8XWc5cyw-WrTy1YAIdfZoVfwnA.cache +1 -0
  100. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UE/UEBQHYNAEm_IuY3ol41KxiO66lsrQDRqrRIHyHx5UwQ.cache +0 -0
  101. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UZ/UZ8KRt8-eMrbo5pUYWvJL4ffNRrZQMBQYAORWLXFkSA.cache +3 -0
  102. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vb/VbJtzpUU-KQNYF68VsGukBB7c08qJ57Bjs6x0cKkKak.cache +1 -0
  103. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vc/VcXB791lVrLiRxxRTLmb6AyJAzxZ7VSN1nc4ql4-QSc.cache +1 -0
  104. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WF/WFclMr7-85-jtgOwGV_pZMYgb8xaFKgxcOqvco-keXM.cache +3 -0
  105. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XG/XGiBjxazfVjZ7wS-hY5yBYqdKqgyVmYIPxklgjSMXYM.cache +0 -0
  106. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XS/XSf5zB-mjIUgPxEvQtpvfuqSOrYOmLXHzqUyyUhdbGE.cache +3 -0
  107. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xm/XmTgbtioYvkiGsl03YdImajUTDxFyg30aYZWLWMPIb0.cache +1 -0
  108. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y3/Y3am8wO4HZTWNwomPA5X5bqESrX0NZu3GO-0jKbQLm8.cache +0 -0
  109. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/YC/YCwXRufXIh-vkVKKWbDUc3BkyrT_XGZD6jbHIdhyepk.cache +3 -0
  110. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/YH/YHg5vYrpTfsB5YidkLyyORH5A6rrhFmFTve5i_17SyM.cache +1 -0
  111. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y_/Y_e3KyxSRi7bRZPe20VZJmMbUPGk38xfHpCc6yJixU0.cache +1 -0
  112. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZA/ZAOE1JD6lEGNBb5kDMHNxoV66sGUQpzMu4nkeD7xt2o.cache +0 -0
  113. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZA/ZAzFQX1aJM96e-5ZzRXL1cZQh_QCE1WTa2NsdWurQDk.cache +1 -0
  114. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZB/ZBSaR4XYloYIymceg0sMiNbF5qvLXPILjQoPxizS46k.cache +0 -0
  115. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZC/ZCSlSszCgevBj2ZrXNR8-08XBJDVr01iPehedE2lO-o.cache +1 -0
  116. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Zh/ZhLGQrfeZU8xp_6hWWNBb5_QJmcdBuXA1EWlpFeb3Qc.cache +0 -0
  117. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_5/_5gaN8EtTE-aQXThn9Wg2QCfkyXeaP8Z8-RAL0GQwN0.cache +1 -0
  118. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_F/_FoetLNtdW_M4-_NuO_3EWTAaFopK2SNPJkomAAJjWk.cache +1 -0
  119. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_l/_lPNSNneNjbBtC1ouoQ_dnQZJDcT1xR-R-35EFEq9mU.cache +1 -0
  120. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a0/a0YN5mBeCfTPvQ-CZFTADpdB565taPrVF_tEO309rx0.cache +0 -0
  121. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aG/aGkwJZ4mCf0xDDV5nIg7eWKHsTrNYs7Fw1uznEvSgvk.cache +1 -0
  122. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aQ/aQwUkLwfx5QpRgTPlbNkqxQll1crTc64SDUXJj63vCM.cache +1 -0
  123. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bB/bBy8EkfbzgsMAllPC8-WWqVuPonUT82q-sjXk-eKSUY.cache +1 -0
  124. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bD/bD9p84Yyjpi8eMkjYHyMzkgnUceQeF9N4VV2Dljd0D0.cache +0 -0
  125. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bQ/bQtO7GQ_eZq6m6UbqcSzYCBG-E_VGFGDU8ZSnufpIik.cache +1 -0
  126. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bS/bSpBaFGvDXHNCANj1EExhQckeR1T1QiL5HlPhpnl9qA.cache +0 -0
  127. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bl/bleGdVZFXaRC0nIKl2JC38y_thUfNTbUczPV0OHrOys.cache +0 -0
  128. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/c4/c4JZnzmdfa_Y5cHdoN4d0tJ1HCFErE2N-3Wz_d6Xv-8.cache +0 -0
  129. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dh/dhcT0jK6mpyB_FY1BUGGnYEEqnnavLsnFII_MY9VvSc.cache +1 -0
  130. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/e2/e2Ylc5Zpg2LhF0OIPOGsNV0AHm93ECtnhy9pVj356ec.cache +0 -0
  131. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ep/epF-H1ll29UFuncWum_ND-d6QgogzaMfI30fUjGhrBs.cache +0 -0
  132. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fh/fhY0UEAu-q5edVt56g_SLI1WWRCW584v7rcMuCj1QPc.cache +1 -0
  133. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gq/gqDzAw8m7txZLFxXRz7xOUikBGaLBv_fAL2XCvo1h1A.cache +0 -0
  134. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/j9/j9OAOISmO3TQwMfMPYS8Fc-xYYQDbCpXpyXXyQsq3GA.cache +3 -0
  135. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jA/jAgvvyUhDy7MDnsrRb5S_qlFkMbqmOiUmh6PBUBcIoY.cache +0 -0
  136. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jm/jmlmHWZSPBR5R0T7YZ3CiN_d_vpUeVz2U6XEHOTVLm4.cache +0 -0
  137. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/k5/k5l-MOIkumCn8GDQ9Pw2hSVyUf_Gn3OuzLekpI4F1as.cache +0 -0
  138. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kH/kHBlPcTnCO-JbUmONO-fvWudygnE1wO1I9PZCoBXIY4.cache +1 -0
  139. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lH/lHdeb7hgAGGUwg2_8NJayk5LtNkuKbhpMCIvgkuPwb4.cache +1 -0
  140. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lP/lPB2ZqnMqP_ZLMb95x3r2k52Zh8qEEYWqJ4_AxOjXdc.cache +0 -0
  141. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lZ/lZvGVbAI3Rtnp8yiAueH-9NPfwztnu5rgsqjebwa5T0.cache +0 -0
  142. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lj/ljYhDBsZG44Y1UQA2AjcM-t_g0P70W42diNZlFhM9Sc.cache +0 -0
  143. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lj/ljnYaLc-iDE8bdgbzw2xrd2S0vfQWl5baJZLaRGbhF0.cache +1 -0
  144. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ll/lldQ0R60REWT-F8wM6QCpjPahC6C8XCO_XqWHqLUgHI.cache +1 -0
  145. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ll/llwjWSKdEo2xM8DLgk6WGLT0RM47h1CRXuoKKz81mC8.cache +0 -0
  146. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mi/miPsjK0SCTlDu8K0ed2eZpa-fRCgSs16xincvpbfOCg.cache +1 -0
  147. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nB/nBk_dR6xqbVkpd3-EtH5jY_MiZfTPQnU5haxOfWFjck.cache +1 -0
  148. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nN/nNHsv6bCC83nImUn1mxDhqF7xwYLfhZRtyd9xP_bHdk.cache +1 -0
  149. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nV/nVwpWFXAxoxlpooKrvb-VoFGVy8vjUpTl-6-cc6Qbso.cache +1 -0
  150. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nY/nYblBJo58yX7MoC91aoB2bba5Rz0zfqe51ZXJPmPuMQ.cache +1 -0
  151. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oB/oBuNYsKrWmLGjSZYgM4mQC8963VUHS4DoxE6_hOiYCs.cache +1 -0
  152. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oI/oIG5tF3SkeK_yIc1oYkTkuZ6n95hGBrQFaa-5aMQLvc.cache +0 -0
  153. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oa/oaUxXaamZX1ibCiWFf8owqI6I3jVT-U4LKtyezEcdA8.cache +0 -0
  154. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ow/ow4Mv_I51uOjs57RGxOTUFplSdRIhx0MQiMgrGf6jOE.cache +0 -0
  155. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ph/phsvbtb-zP02E3p-z5bNacjgFadMrmkSKgZ3djHAjUQ.cache +0 -0
  156. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pq/pq_mP3a7ivW3Qi41nB-dssBXy6aW9l2QUlSEqOI3sE8.cache +1 -0
  157. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pt/pttAugu74o8KjkL84ApsarjE0i6S3Fe6u8TPgKgBexI.cache +1 -0
  158. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pz/pzFArBsQGb0Np4ZX1fPDSq-I7P8qyxDXTCGpziUH4BA.cache +0 -0
  159. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/q9/q99ic0TvyAN3bWzJELu33Zi2DWEtBcyPZ_ilNVgLD9o.cache +0 -0
  160. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qT/qT-g7M2fG6GVSANfjQIQd-VGvvMwApLDGfrL4pDGq5o.cache +2 -0
  161. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qh/qhZveb8_9dtmVqG4Vt0MfyDvdsWIsVXq8BWTvkvzrYA.cache +1 -0
  162. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r1/r1I_9U513h7qmv7cA2nHAcOj-Q9EzFeo2OsMxwh7L3k.cache +1 -0
  163. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rQ/rQBfBCBl4HOla4XgxlzPFrWUo2cAxF20bU7bxIcvzaM.cache +1 -0
  164. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sJ/sJYtWV-oaKQA5jXnVmkmnLB7ZQkrP_8CY0hW_L0m3ws.cache +1 -0
  165. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tm/tm_j3IoioQ5bShNkxEmz_jxXzhQOIBWo8Oa155OD5JE.cache +3 -0
  166. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/u3/u3wEeL53_ax62E0oySJNd0gt7HtSaqzEPtEq3L31ZI0.cache +1 -0
  167. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uM/uMjIgHxLRsuXQLuq-PXtsxQiWXYb4fujcKC-sPQQSXE.cache +1 -0
  168. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vU/vUWv7YDu0uMx3xbz6ZflAScZJvUm1cV2otfqrO37OHM.cache +1 -0
  169. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w3/w3wEEOWmMe3mCvTGo32Cv9I3iCCzdQVOKzuZwkbGP34.cache +0 -0
  170. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wD/wDjB26V_MeeK_DPJjK3uxuXhZxUf2RgR3okyAc6Mch0.cache +0 -0
  171. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xT/xTRn9fg9g-onMXDz6G5b0boQH345q2UsDeBKBkQSw34.cache +3 -0
  172. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xq/xqQmPvcrj4Jitvig2QTTFey2pXRUKhMoH4df5FE96x0.cache +0 -0
  173. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xr/xrWMN4OTx2EBuZeoGJSRtyCKPvLKPQOQd6H-NUMMr1s.cache +0 -0
  174. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yI/yIHXtygc2A6GWVrfvtbglVnIQ8G5siPuODwbflQCngc.cache +1 -0
  175. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yw/yw-zDTjjY1ZpixctdyiDeMnSjZYsj2Ovz_3gvbaiE9k.cache +1 -0
  176. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zH/zH2pIxo90ehFARIotDzvl5QQAJUNJaKjjGuiMvhrV1I.cache +1 -0
  177. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zX/zXI3ayLnfyEdWRMGEpdtvjgTZeEnzFg-mSDJpFheqqc.cache +1 -0
  178. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zz/zztSJp9qxS4Fy_6P7VdOBcp82vg_4mwiF4CE65ixkBM.cache +1 -0
  179. data/spec/factories/website_factory.rb +13 -0
  180. data/spec/spec_helper.rb +22 -4
  181. metadata +363 -11
  182. data/lib/aeternitas/web_ui/dashboard_statistics.rb +0 -96
  183. data/lib/aeternitas/web_ui/pollable_statistics.rb +0 -148
  184. data/lib/aeternitas/web_ui/pollables_index_statistics.rb +0 -36
  185. data/spec/aeternitas/web_ui/dashboard_statistics_spec.rb +0 -5
  186. data/spec/dummy/spec/factories/websites.rb +0 -5
  187. 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: 4f2a7086f368cef0a5f88210fbe9a49015d3ad37
4
- data.tar.gz: 02735b9c0fc506c49912df70b45c013ae1854637
3
+ metadata.gz: d99f4e89e444562efa1e78f882233e0b53d9655f
4
+ data.tar.gz: 3f9c6597fae05be4e4cf510e3338d81d5ed34fcf
5
5
  SHA512:
6
- metadata.gz: 1ed61c458fceb990041a764ca4c438e8203667da742dbd6b5622e2de39f5321b41f9377702a6e141d63de9d892fe4127653bcc5281d635bbf7db429d27cb3406
7
- data.tar.gz: 197e2d1783672ea62e906d1bd9ca8081eefa8afbc84f4a2612e35e197286b1d6da0a633d6b12996a25847ddc4aea560a397d6a55c4ebee6afe89c80bb7c202e0
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.
@@ -14,6 +14,7 @@
14
14
  //= require ./moment.min.js
15
15
  //= require ./Chart.min.js
16
16
  //= require ./datatables.min.js
17
+ //= require ./sparkline
17
18
  //= require_self
18
19
  //
19
20
 
@@ -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
- def index
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 { render json: @polls }
13
+ format.json {}
12
14
  end
13
15
  end
14
16
 
15
17
  def future_polls
16
- @polls = Aeternitas::WebUi::DashboardStatistics.future_polls
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 { render json: @polls }
31
+ format.json { }
20
32
  end
21
33
  end
22
34
 
23
35
  def pollable_growth
24
- @polls = Aeternitas::WebUi::DashboardStatistics.pollable_growth
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 { render json: @polls }
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
- before_action :set_pollable, except: [:index]
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
- respond_to do |format|
10
- format.html { }
11
- format.json { }
12
- end
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
- respond_to do |format|
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
- respond_to do |format|
31
- format.json { render json: Aeternitas::WebUi::PollableStatistics.data_growth(@pollable, @from, @to)}
32
- end
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 pretty_print_attributes(pollable)
18
- content_tag(:ul, class: "attribute-list") do
19
- pollable.attributes.map do |key, value|
20
- content_tag(:li) do
21
- (content_tag(:strong, "#{key}: ") + content_tag(:em, value)).html_safe
22
- end
23
- end.join("\n").html_safe
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
- <h2>Dashboard</h2>
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::WebUi::DashboardStatistics.enqueued %> </strong> Pollables
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> <%= Aeternitas::WebUi::DashboardStatistics.count_polls_24h %> </strong> Polls
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> <%= Aeternitas::WebUi::DashboardStatistics.count_failed_polls_24h %> </strong> Failures
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="polls_24h"></canvas>
86
+ <canvas id="polls-timeline"></canvas>
61
87
  <script>
62
- register_chart("polls_24h", "<%= polls_24h_dashboard_path %>", {
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