Browse Source

verbesserter noten helper und grid

burningTyger 7 years ago
parent
commit
b63db1310a

+ 40 - 0
lib/helpers.rb

@@ -0,0 +1,40 @@
+module Helpers
+  def noten_set(gruppe, fachklasse, notenquelle=nil)
+    faecher = gruppe.map do |f|
+      fach = Hash.new
+      gliederung = f.fach.gliederungen.find{|f|f.fachklasse == fachklasse}
+      fach[:gliederung] = f.fach.gliederungen.find{|f|f.fachklasse == fachklasse}
+      fach[:fachgruppe] = f.fachgruppe_ID
+      fach[:sortierung] = (gliederung && gliederung.sortierung) || f.fach.sortierung_s2
+      fach[:zeugnisbez] = (gliederung && gliederung.zeugnis_bez) || f.fach.zeugnisbez
+      fach[:gewichtung] = (gliederung && gliederung.gewichtung_ab) || f.fach.gewichtung_fhr
+      fach[:bezeichnung]= f.fach.bezeichnung
+      fach[:lernentw]   = f.Lernentw if (f.Lernentw && f.fach.ist_sprache == "-")
+      if f.fach.ist_sprache == "+"
+        fach[:sprachniveau]=f.Lernentw || settings.repo.fachklasse_info(Abschnitt[f.abschnitt_id], "Fremdsprache", f.fach_id)
+        fach[:sprachniveau]+" <sup>1</1>" unless fach[:sprachniveau].nil?
+      else
+        fach[:sprachniveau] = ""
+      end
+      if notenquelle.nil?
+        fach[:note] = f.note || "––––––"
+      else
+        s = Abschnitt[f.abschnitt_id].schueler
+        fach[:note] = s.bk_abschluss_leistungen_dataset.where(:Fach_ID => fach.fach_id).first.note(notenquelle) || "––––––" rescue (Warnung.add(s.name, "Einige Fächer sind ohne eingetragene Note in der BK-Abschlussberechnung.");"FEHLER")
+      end
+      fach[:noten_krz] = f.noten_krz
+      fach
+    end
+
+    faecher.sort_by!{|f| f[:sortierung]}
+    h=Hash.new
+    faecher.group_by{|f| f[:bezeichnung]}.each_pair do |k,v|
+      if v.first[:zeugnisbez] != v.first[:bezeichnung]
+        h[v.first[:bezeichnung]] = v
+      else
+        h[v.first[:sortierung]] = v
+      end
+    end
+    return h
+  end
+end

+ 1 - 1
views/asz_pferd.slim

@@ -27,7 +27,7 @@ link rel="stylesheet" href=url("/css/page.css")
           |Der allgemeine Prüfungsausschuss stellte in seiner Abschlusskonferenz am #{(hj.konferenzdatum).strftime("%-d.%-m.%Y")} fest:
           .voffset-1
           b Leistungen
-          ==partial :p_asz_zeugnis_noten_grid, :s => s, :hj => hj, :repo => repo
+          ==partial :p_noten_grid, :s => s, :hj => hj, :repo => repo, :notenquelle => :note_abschluss
           ==partial :p_zeugnis_bemerkungen_grid, :s => s, :hj => hj
         .main-right
           '#{s.anrede} #{s.vorname} #{s.name} ist berechtigt, die Berufsbezeichnung

+ 3 - 1
views/jz.slim

@@ -27,7 +27,9 @@ link rel="stylesheet" href=url("/css/page.css")
           |besuchte im #{hj.abschnitt}. Halbjahr des Schuljahres #{hj.schuljahr} die Klasse #{hj.klasse}
         .voffset-2
         |Leistungen laut Konferenzbeschluss vom #{(hj.konferenzdatum).strftime("%d.%m.%Y")}:
-        ==partial :p_zeugnis_noten, :s => s, :hj => hj, :repo => repo
+
+        div style=("font-size: 1.2rem" if s.asd_schulform.start_with?("E"))
+          ==partial :p_noten_grid, :s => s, :hj => hj, :repo => repo
         hr
         -unless s.asd_schulform.start_with? "E"
           |Fehlstunden: #{hj.sum_fehl_std}

+ 108 - 128
views/page.scss

@@ -1,26 +1,22 @@
 @import "../bower_components/normalize-css/normalize.css";
 $font-stack: "Tex Gyre Heros";
 $font-color-light: #c0c0c0;
-
 @font-face {
   font-family: 'TeX Gyre Heros';
   src: url('/fonts/texgyreheros-regular-webfont.woff') format('woff');
   font-style: normal;
 }
-
 @font-face {
   font-family: 'TeX Gyre Heros';
   src: url('/fonts/texgyreheros-bold-webfont.woff') format('woff');
   font-style: normal;
   font-weight: bold;
 }
-
 @font-face {
   font-family: 'TeX Gyre Heros';
   src: url('/fonts/texgyreheros-italic-webfont.woff') format('woff');
   font-style: italic;
 }
-
 @font-face {
   font-family: 'TeX Gyre Heros';
   src: url('/fonts/texgyreheros-bolditalic-webfont.woff') format('woff');
@@ -28,9 +24,115 @@ $font-color-light: #c0c0c0;
   font-weight: bold;
 }
 
-.voffset-halb {
-  margin-top: 0.5rem
+html {
+  font-size: 62.5%; }
+body {
+  font-size: 1.33em; /* currently ems cause chrome bug misinterpreting rems on body element */
+  line-height: 1.5;
+  font-weight: normal;
+  font-family: $font-stack;
+  color: #333;
+}
+/* Typography
+–––––––––––––––––––––––––––––––––––––––––––––––––– */
+h1, h2, h3, h4, h5, h6 {
+  margin-top: 0;
+  margin-bottom: 0;
+  font-weight: 400;
+}
+h1 { font-size: 4.0rem; line-height: 1.2;  letter-spacing: -.1rem;}
+h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; }
+h3 { font-size: 3.0rem; line-height: 1.3;  letter-spacing: -.1rem; }
+h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; }
+h5 { font-size: 1.8rem; line-height: 1.5;  letter-spacing: -.05rem; }
+h6 { font-size: 1.5rem; line-height: 1.6;  letter-spacing: 0; }
+p  { margin-top: 0; }
+
+page {
+  position: relative;
+  padding: 10mm 25mm 10mm 25mm;
+  display: block;
+  border: 1px solid black;
+  -webkit-box-shadow: 5px 5px 4px 0px rgba(192,192,192,1);
+  -moz-box-shadow: 5px 5px 4px 0px rgba(192,192,192,1);
+  box-shadow: 5px 5px 4px 0px rgba(192,192,192,1);
+}
+page[size="A4"][orientation="portrait"] {
+  width: 210mm;
+  height: 296.8mm;
+}
+page[size="A4"][orientation="landscape"] {
+  width: 296.8mm;
+  height: 210mm;
+}
+page[size="A3"][orientation="portrait"] {
+  width: 296.8mm;
+  height: 420mm;
+}
+page[size="A3"][orientation="landscape"] {
+  width: 420mm;
+  height: 296.8mm;
+}
+page[size="A5"][orientation="portrait"] {
+  width: 14.8cm;
+  height: 21cm;
+}
+page[size="A5"][orientation="landscape"] {
+  width: 21cm;
+  height: 14.8cm;
+}
+
+.grid {
+  display: grid;
+  grid-gap: 0px;
+  align-content: start;
+  grid-template-columns: auto;
+  grid-template-rows: auto 1fr auto;
+  grid-template-areas: "header"
+                       "main"
+                       "footer";
 }
+.header {
+  grid-area: header;
+  align-self: start;
+}
+.main {
+  grid-area: main;
+  align-self: start;
+}
+.footer {
+  grid-area: footer;
+  align-self: end;
+}
+.main-grid {
+  grid-area: main;
+  display: grid;
+  grid-column-gap: 25mm;
+  grid-template-columns: 1fr 1fr;
+  grid-template-rows: auto 1fr auto;
+  grid-template-areas: "header-left header-right"
+                       "main-left main-right"
+                       "footer-left footer-right";
+}
+.main-left { grid-area: main-left; }
+.main-right { grid-area: main-right; }
+.footer-grid {
+  grid-area: footer;
+  display: grid;
+  grid-column-gap: 25mm;
+  grid-template-columns: 1fr 1fr;
+  grid-template-rows: auto;
+  grid-template-areas: "footer-left footer-right";
+}
+.footer-left  { grid-area: footer-left;  }
+.footer-right { grid-area: footer-right; }
+
+.flex-grid { display: flex; }
+.col   { flex: 1; }
+.col-2 { flex: 2; }
+
+
+.voffset-halb { margin-top: 0.5rem; }
 @for $i from 1 through 20 {
   .voffset-#{$i} {
     margin-top: #{$i}rem
@@ -141,128 +243,6 @@ ul.dashes {
   box-sizing: border-box;
   -moz-box-sizing: border-box;
 }
-html {
-  font-size: 62.5%; }
-body {
-  font-size: 1.33em; /* currently ems cause chrome bug misinterpreting rems on body element */
-  line-height: 1.5;
-  font-weight: normal;
-  font-family: $font-stack;
-  color: #333;
-}
-/* Typography
-–––––––––––––––––––––––––––––––––––––––––––––––––– */
-h1, h2, h3, h4, h5, h6 {
-  margin-top: 0;
-  margin-bottom: 0;
-  font-weight: 400;
-}
-h1 { font-size: 4.0rem; line-height: 1.2;  letter-spacing: -.1rem;}
-h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; }
-h3 { font-size: 3.0rem; line-height: 1.3;  letter-spacing: -.1rem; }
-h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; }
-h5 { font-size: 1.8rem; line-height: 1.5;  letter-spacing: -.05rem; }
-h6 { font-size: 1.5rem; line-height: 1.6;  letter-spacing: 0; }
-p  { margin-top: 0; }
-
-page {
-  position: relative;
-  padding: 10mm 25mm 10mm 25mm;
-  display: block;
-  border: 1px solid black;
-  -webkit-box-shadow: 5px 5px 4px 0px rgba(192,192,192,1);
-  -moz-box-shadow: 5px 5px 4px 0px rgba(192,192,192,1);
-  box-shadow: 5px 5px 4px 0px rgba(192,192,192,1);
-}
-page[size="A4"][orientation="portrait"] {
-  width: 210mm;
-  height: 296.8mm;
-}
-page[size="A4"][orientation="landscape"] {
-  width: 296.8mm;
-  height: 210mm;
-}
-page[size="A3"][orientation="portrait"] {
-  width: 296.8mm;
-  height: 420mm;
-}
-page[size="A3"][orientation="landscape"] {
-  width: 420mm;
-  height: 296.8mm;
-}
-page[size="A5"][orientation="portrait"] {
-  width: 14.8cm;
-  height: 21cm;
-}
-page[size="A5"][orientation="landscape"] {
-  width: 21cm;
-  height: 14.8cm;
-}
-
-.grid {
-  display: grid;
-  grid-template-columns: auto;
-  grid-template-rows: auto 1fr auto;
-  grid-template-areas: "header"
-                       "main"
-                       "footer";
-  grid-gap: 0px;
-  align-content: start;
-}
-
-.header {
-  grid-area: header;
-  align-self: start;
-}
-.main {
-  grid-area: main;
-  align-self: start;
-}
-.footer {
-  grid-area: footer;
-  align-self: end;
-}
-.main-grid {
-  grid-area: main;
-  display: grid;
-  grid-column-gap: 25mm;
-  grid-template-columns: 1fr 1fr;
-  grid-template-rows: auto 1fr auto;
-  grid-template-areas: "header-left header-right"
-                       "main-left main-right"
-                       "footer-left footer-right";
-}
-.main-left {
-  grid-area: main-left;
-}
-.main-right {
-  grid-area: main-right;
-}
-.footer-grid {
-  grid-area: footer;
-  display: grid;
-  grid-column-gap: 25mm;
-  grid-template-columns: 1fr 1fr;
-  grid-template-rows: auto;
-  grid-template-areas: "footer-left footer-right";
-}
-.footer-left {
-  grid-area: footer-left;
-}
-.footer-right {
-  grid-area: footer-right;
-}
-
-.flex-grid {
-  display: flex;
-}
-.col {
-  flex: 1;
-}
-.col-2 {
-  flex: 2;
-}
-
 table.fixed {
   table-layout: fixed;
   table th, table td {

+ 29 - 0
views/partials/p_noten_grid.slim

@@ -0,0 +1,29 @@
+-notenquelle ||= nil
+table.table-noten
+  -gr=hj.faechergruppen
+  /berufs- und berufsübergreifenden Bereich tauschen
+  -gr[0], gr[1] = gr[1], gr[0] if s.asd_schulform.start_with?("E")
+  -gr.each do |gruppe|
+    -next if gruppe.empty?
+    tr
+      td.fachgruppe-margin
+        b =repo.fachklasse_info(hj, 'Fachgruppe', gruppe.first.fachgruppe_ID)
+    -noten_set(gruppe, s.fachklasse).each_pair do |faecherbereich,faecher|
+      tr
+      -if String === faecherbereich
+          td colspan="2" =faecherbereich
+      -faecher.each do |fach|
+        tr
+          td class=("lernfeld-lernbereich" if String === faecherbereich)
+            ==fach[:lernentw] || fach[:zeugnisbez]
+            -if notenquelle
+              ==<fach[:sprachniveau]
+              -if s.asd_schulform.start_with?("C") and fach[:gewichtung] == 0 || !fach[:gewichtung]
+                -if s.bk_abschluss.bestanden == "+" || s.bk_abschluss.bestanden_ba == "+"
+                  sup ="*"
+              -if s.asd_schulform.start_with?("E") && fach[:gewichtung] >= 1 && s._entlassart == "6J"
+                sup ="*"
+          td.td-fach-note
+            //korrigieren, wenn längere e-Noten auftauchen
+            span class=("e-note" if (fach[:noten_krz].start_with?("E") || (s.asd_schulform.start_with?("D")) && (fach[:fachgruppe] == 30) && (fach[:noten_krz] == "NB") ))
+              =fach[:note]

+ 8 - 0
views/partials/p_zeugnis_bemerkungen_grid.slim

@@ -0,0 +1,8 @@
+hr
+b Bemerkungen
+br/
+-if !hj.zeugnis_bem.empty?
+  ==(hj.zeugnis_bem).gsub("\r\n","<br/>")
+-else
+  |keine
+

+ 32 - 0
views/partials/p_zeugnis_noten_grid.slim

@@ -0,0 +1,32 @@
+.row
+  .col-xs-12
+    table.col-xs-12.table-noten
+      -gr=hj.faechergruppen
+      /berufs- und berufsübergreifenden Bereich tauschen
+      -gr[0], gr[1] = gr[1], gr[0]
+      -gr.each do |gruppe|
+        -unless gruppe.empty?
+          -gruppe.sort_by! do |f|
+            -fach_gliederung=f.fach.gliederungen.find{|f|f.fachklasse == s.fachklasse}
+            -(fach_gliederung && fach_gliederung.sortierung) || f.fach.sortierung_s2
+          tr
+            td.fachgruppe-margin
+              b =repo.fachklasse_info(hj, 'Fachgruppe', gruppe.first.fachgruppe_ID)
+            td
+          -lernbereich_ab = gruppe.index{ |f| f.fach.bezeichnung != f.fach.zeugnisbez}
+          -gruppe.each_with_index do |fach,i|
+            -if i == lernbereich_ab
+              tr
+                td.fach-bezeichnung colspan="2"
+                  =fach.fach.bezeichnung
+            tr
+              td.fach-bezeichnung class=("lernbereich" if fach.fach.bezeichnung != fach.fach.zeugnisbez) class=("fett" if fach._lernentw && fach.fach.ist_sprache == "-")
+                ==fach.fach.zeugnisbez
+                ==< "#{fach.lernentw}<sup>1</sup>" if fach.fach.ist_sprache == "+" && fach._lernentw
+              /td=fach.fach.SortierungS2
+              td.td-fach-note
+                span class=("e-note" if (fach.noten_krz.start_with?("E") || (s.asd_schulform.start_with?("D")) && (fach.fachgruppe_ID == 30) && (fach.noten_krz == "NB") ))
+                  =fach.note || "––––––"
+              -if fach.Lernentw && fach.fach.ist_sprache == "-"
+                tr
+                  td.fach-bezeichnung #{fach._lernentw || repo.fachklasse_info(hj, "Fremdsprache", fach.fach_id)}