<h1>Statistik sortiert nach Klassen</h1>
<h3>Durchschnittsnoten FHR, d.h. nur Absolventen werden berücksichtigt</h3>
Legende: Schulnummer, Anzahl der Schule von abgehender Schule, Schnitt, davon gültige Einträge
<br>
<button on:click="getSchueler('A')">A-Klassen</button>
<button on:click="getSchueler('B')">B-Klassen</button>
<button on:click="getSchueler('C')">C-Klassen</button>
<button on:click="getSchueler('D')">D-Klassen</button>
<button on:click="getSchueler('E')">E-Klassen</button>
<button on:click="getSchueler('F')">F-Klassen</button>
<button on:click="getSchueler('G')">G-Klassen</button>
<button on:click="getSchueler('H')">H-Klassen</button>
{#each Object.entries(schulen) as [schule, values]}
  <br>{schule}: {values.length} -> Durchschnittsnote: {dsn(values).join(': ')}
{/each}

<script>
const {Schueler} = require('schild/models/Models')
const { Model } = require('objection')
const Knex = require('knex')
const _ = require('lodash')

export default {
  setup(Component) {Component.bez = 'Statistik'},
  oncreate () {
    const { knex } = this.get()
    Model.knex(Knex({
      client: 'mysql',
      useNullAsDefault: true,
      connection: {
        host: knex.host,
        database: knex.name,
        user: knex.user,
        password: knex.password,
        charset: 'utf8'
      }
    }))
  },
  helpers: {
    dsn (arr) {
      let ln = arr.length
      const r = arr.reduce((total, value) => {
        const float = parseFloat(value.DurchschnittsnoteFHR.replace(',', '.'))
        if (float) return total + float
        else ln += -1
        return total
      }, 0)
      return [(r / ln).toFixed(1), ln, arr.length]
    },
  },
  methods: {
    async getSchueler (pattern) {
      const schueler = await Schueler.query()
        .where('Klasse', 'like', pattern + '%')
        .havingNotNull('DurchschnittsnoteFHR')
      
      this.set({schulen: _.groupBy(schueler, 'LSSchulNr')})
      // console.log(schueler)
    }
  },
  data () {
    return {
      schuelerx: [],
      schulen: {}
    }
  }
}

</script>