--- /dev/null
+<?php
+
+$jscode[] = <<<EOC
+
+function select_gebiet_callback(data)
+{
+ var obj = document.getElementById('edit_kostenstelle');
+ if (!obj) return;
+
+ obj.options.length = 0;
+
+ for (var i=0; i < data.info.length; i++)
+ obj.options[i] = new Option(data.info[i].kostenstelle,data.info[i].id,false,false);
+}
+
+function select_group(obj)
+{
+ setvar(obj,'gebiet',false,false);
+
+ get_info('kostenstellen', {gebiet: obj.options[obj.selectedIndex].value}, select_gebiet_callback);
+}
+EOC;
+
+function first_gebiet()
+{
+ $sql = "SELECT id FROM gebiet ORDER BY gebiet LIMIT 1";
+
+ $sth = pg_query($sql);
+
+ if ($sth === false) return 0;
+
+ if ($row = pg_fetch_assoc($sth))
+ return $row['id'];
+
+ return 0;
+}
+
+if (empty($_SESSION['arbeitsberichte.gebiet'])) $_SESSION['arbeitsberichte.gebiet'] = first_gebiet();
+
+$mask = array(
+ 'table' => 'einsatz',
+ 'title' => 'Arbeitsberichte',
+ 'subtitle' => 'Eingabe und Übersicht',
+ 'join' => array('personal ON einsatz.personal = personal.id',
+ 'gebiet ON einsatz.gebiet = gebiet.id',
+ 'gerate ON einsatz.geraet = gerate.id',
+ 'anbaugeraete ON einsatz.anbaugeraet = anbaugeraete.id',
+ 'arbeitsarten ON einsatz.arbeiten = arbeitsarten.id',
+ 'kostenstellen ON einsatz.kostenstelle = kostenstellen.id',
+ ),
+ 'where' => "arbeitsarten.arbeitsart <> 'Urlaub' AND arbeitsarten.arbeitsart <> 'Krank' AND arbeitsarten.arbeitsart <> 'Sonstige Fehltage'",
+ 'variables' => array(
+ 'gebiet' => array(),
+ ),
+ 'list' => array(
+ 'id' => array(
+ 'name' => 'ID',
+ 'visible' => false,
+ 'sql' => 'einsatz.id',
+ ),
+ 'datum' => array(
+ 'name' => 'Datum',
+ 'type' => 'date',
+ 'width' => 70,
+ ),
+ 'kostenstelle' => array(
+ 'name' => 'Gewässer',
+ 'sql' => "kostenstellen.kostenstelle",
+ 'width' => 200,
+ 'specs' => "filterUI: 's'",
+ ),
+ 'gebiet' => array(
+ 'name' => 'Gebiet',
+ 'sql' => "gebiet.gebiet",
+ 'width' => 150,
+ 'specs' => "filterUI: 's'",
+ 'visible' => false,
+ ),
+ 'name' => array(
+ 'name' => 'Personal',
+ 'sql' => "personal.vorname || ' ' || personal.name",
+ 'width' => 150,
+ 'specs' => "filterUI: 's'",
+ 'visible' => false,
+ ),
+ 'geraet' => array(
+ 'name' => 'Gerät',
+ 'sql' => 'gerate.geraet',
+ 'width' => 150,
+ 'specs' => "filterUI: 's'",
+ ),
+ 'anbaugeraet' => array(
+ 'name' => 'Anbaugerät',
+ 'sql' => 'anbaugeraete.anbaugeraet',
+ 'width' => 150,
+ 'specs' => "filterUI: 's'",
+ ),
+ 'stunden' => array(
+ 'name' => 'Stunden',
+ 'type' => 'number',
+ 'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: ' ', canSort: false",
+ 'width' => 60,
+ 'visible' => false,
+ ),
+ 'geraetstunden' => array(
+ 'name' => 'Gerätstunden',
+ 'type' => 'number',
+ 'specs' => "decPlaces: 2, ClassName: 'alignright', suffix: ' ', canSort: false",
+ 'width' => 60,
+ 'visible' => false,
+ ),
+ ),
+ 'edit' => array(
+ 'datum' => array(
+ 'name' => 'Datum',
+ 'type' => 'date',
+ ),
+ 'hhjahreinsatz' => array(
+ 'name' => 'Haushaltsjahr',
+ 'type' => 'select',
+ 'options' => "SELECT id,hhjahr AS text FROM einstellungen ORDER BY text",
+ ),
+ 'personal' => array(
+ 'name' => 'Mitarbeiter',
+ 'type' => 'select',
+ 'options' => "SELECT id,vorname || ' ' || name AS text FROM personal ORDER BY text",
+ ),
+ 'gebiet' => array(
+ 'name' => 'Gebiet',
+ 'type' => 'select',
+ 'options' => "SELECT id,gebiet AS text FROM gebiet ORDER BY text",
+ 'selected' => $_SESSION['arbeitsberichte.gebiet'],
+ 'onchange' => 'select_group(this)',
+ ),
+ 'kostenstelle' => array(
+ 'name' => 'Gewässer',
+ 'type' => 'select',
+ 'options' => "SELECT id,kostenstelle AS text FROM kostenstellen WHERE gebiet = " .
+ intval($_SESSION['arbeitsberichte.gebiet']) .
+ " ORDER BY text",
+ ),
+ 'geraet' => array(
+ 'name' => 'Gerät',
+ 'type' => 'select',
+ 'options' => "SELECT id,geraet AS text FROM gerate ORDER BY text",
+ ),
+ 'anbaugeraet' => array(
+ 'name' => 'Anbaugerät',
+ 'type' => 'select',
+ 'options' => "SELECT id,anbaugeraet AS text FROM anbaugeraete ORDER BY text",
+ ),
+ 'arbeiten' => array(
+ 'name' => 'Arbeitsart',
+ 'type' => 'select',
+ 'options' => "SELECT id,arbeitsart AS text FROM arbeitsarten ORDER BY text",
+ ),
+ 'stunden' => array(
+ 'name' => 'Stunden',
+ 'type' => 'decimal',
+ 'size' => 5,
+ ),
+ 'geraetstunden' => array(
+ 'name' => 'Gerätstunden',
+ 'type' => 'decimal',
+ 'size' => 5,
+ ),
+ 'ordnung' => array(
+ 'name' => 'Gewässerordnung',
+ 'type' => 'select',
+ 'options' => "SELECT id,name AS text FROM ordnungen ORDER BY text",
+ ),
+ 'akkord' => array(
+ 'name' => 'Akkord',
+ 'type' => 'boolean',
+ ),
+ 'bemerkung' => array(
+ 'name' => 'Bemerkung',
+ 'type' => 'textarea',
+ ),
+ ),
+ 'info' => array(
+ 'kostenstellen' => array(
+ 'sql' => 'SELECT id,kostenstelle FROM kostenstellen WHERE gebiet = {gebiet}',
+ ),
+ ),
+ );
+
+?>