stats.html 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <h1>Statistik sortiert nach Klassen</h1>
  2. <h3>Durchschnittsnoten FHR, d.h. nur Absolventen werden berücksichtigt</h3>
  3. Legende: Schulnummer, Anzahl der Schule von abgehender Schule, Schnitt, davon gültige Einträge
  4. <br>
  5. <button on:click="getSchueler('A')">A-Klassen</button>
  6. <button on:click="getSchueler('B')">B-Klassen</button>
  7. <button on:click="getSchueler('C')">C-Klassen</button>
  8. <button on:click="getSchueler('D')">D-Klassen</button>
  9. <button on:click="getSchueler('E')">E-Klassen</button>
  10. <button on:click="getSchueler('F')">F-Klassen</button>
  11. <button on:click="getSchueler('G')">G-Klassen</button>
  12. <button on:click="getSchueler('H')">H-Klassen</button>
  13. {#each Object.entries(schulen) as [schule, values]}
  14. <br>{schule}: {values.length} -> Durchschnittsnote: {dsn(values).join(': ')}
  15. {/each}
  16. <script>
  17. const {Schueler} = require('schild/models/Models')
  18. const { Model } = require('objection')
  19. const Knex = require('knex')
  20. const _ = require('lodash')
  21. export default {
  22. setup(Component) {Component.bez = 'Statistik'},
  23. oncreate () {
  24. const { knex } = this.get()
  25. Model.knex(Knex({
  26. client: 'mysql',
  27. useNullAsDefault: true,
  28. connection: {
  29. host: knex.host,
  30. database: knex.name,
  31. user: knex.user,
  32. password: knex.password,
  33. charset: 'utf8'
  34. }
  35. }))
  36. },
  37. helpers: {
  38. dsn (arr) {
  39. let ln = arr.length
  40. const r = arr.reduce((total, value) => {
  41. const float = parseFloat(value.DurchschnittsnoteFHR.replace(',', '.'))
  42. if (float) return total + float
  43. else ln += -1
  44. return total
  45. }, 0)
  46. return [(r / ln).toFixed(1), ln, arr.length]
  47. },
  48. },
  49. methods: {
  50. async getSchueler (pattern) {
  51. const schueler = await Schueler.query()
  52. .where('Klasse', 'like', pattern + '%')
  53. .havingNotNull('DurchschnittsnoteFHR')
  54. this.set({schulen: _.groupBy(schueler, 'LSSchulNr')})
  55. // console.log(schueler)
  56. }
  57. },
  58. data () {
  59. return {
  60. schuelerx: [],
  61. schulen: {}
  62. }
  63. }
  64. }
  65. </script>