Ich hab ja im Gegensatz zu der Vorlage nur 2 Tabellen welche ich vergleichen muss. Die erste ist die Tabelle wo der code sitzt , die 2. ist Aufträge.
Wenn ich zb in funktion tooltip (me : 'Aufträge') einfüge, scheine ich auf die Tabelle zu verweisen, zumindest findet ninox die felder der Tabelle. Aber spätestens wenn ich speichern möchte kommt irgenwas mit Parametern geändert.
let me := this;
let year := number(text(Jahr));
let month := number(Monat);
let date0 := date(year, month, 1);
let date1 := date(year, month + 1, 0);
let days := days(date0, date1) + 1;
let rows := ((select Mitarbeiter where not me.Filter or chosen(me.Filter, Team.number(Nr))) order by Name);
let holidays := (select Feiertage where Datum >= date0 and Datum <= date1);
function tooltip(me : 'Alle Abwesenheiten') do
me.---
{ Mitarbeiter.(Vorname + " " + Nachname) }<br>{ text('Status:') } - { text(Abwesenheitsart) }<hr>{ format('Erster Tag', "DD.MM.YYYY") +
if 'Erster Tag' = 'Letzter Tag' then
if Dauer != 1 then " - " + text(Dauer) end
else
if 'Dauer erster Tag' != 1 then
" - " + text('Dauer erster Tag')
end
end +
if 'Erster Tag' != 'Letzter Tag' then
"<br>" + format('Letzter Tag', "DD.MM.YYYY") +
if 'Dauer letzter Tag' != 1 then
" - " + text('Dauer letzter Tag')
end
end }
---
end;
function WeekHeads() do
let firstMonday := date(year, month, day(date0) - weekday(date0) + 7);
let lastMonday := date(year, month, day(date1) - weekday(date1));
let firstWeekDays := days(date0, firstMonday);
let weeks := days(firstMonday, lastMonday) / 7;
let lastWeekDays := days(lastMonday, date1) + 1;
let firstWeek := week(date0);
let lastWeek := week(date1);
let myFirst := ---
<div class="nxp-timeline-cell nxp-timeline-week" style="width:{ firstWeekDays * 40 }px">KW { format(firstWeek, "00") }</div>
---;
let myLast := ---
<div class="nxp-timeline-cell nxp-timeline-week" style="width:{ lastWeekDays * 40 }px">KW { format(lastWeek, "00") }</div>
---;
myFirst +
join(for week in range(weeks) do
---
<div class="nxp-timeline-cell nxp-timeline-week" style="width:280px">KW { format(week(date(year, month, day(firstMonday) + 1 + week * 7)), "00") }</div>
---
end, "") +
myLast
end;
function DayHeads() do
join(for day from 1 to days + 1 do
let date := date(year, month, day);
---
<div class="nxp-timeline-cell nxp-timeline-day"><b>{ format(date, "D") }</b></div>
---
end, "")
end;
function DayNames() do
join(for day from 1 to days + 1 do
let date := date(year, month, day);
---
<div class="nxp-timeline-cell nxp-timeline-day">{ format(date, "dd") }</div>
---
end, "")
end;
function Cell(row : Mitarbeiter,date : date) do
---
<div class="nxp-timeline-cell" style="background:{ if date = today() then "#F5A9A9" else if cnt(holidays[Datum = date]) > 0 then
"#dcdcdc"
else
if weekday(date) > 4 then "#f7f8fc" else "white" end
end end }">{ if cnt(holidays[Datum = date]) > 0 then "<div class='nxp-timeline-cell-tooltip'>" + first(holidays[Datum = date]).Feiertag +
"</div>" else "" end }</div>
---
end;
function Bar(item : 'Alle Abwesenheiten',y : number) do
let day0 := days(date0, max(date0, item.'Erster Tag')) + 1;
let day1 := days(date0, min(date1, item.'Letzter Tag')) + 1;
let capLeft := item.'Erster Tag' < date0;
let capRight := item.'Letzter Tag' > date1;
let class := if capLeft then
" nxp-timeline-bar-cap-left"
else
""
end +
if capRight then
" nxp-timeline-bar-cap-right"
else
""
end;
let color := if item.'Status:' = 3 then
color(item.Abwesenheitsart)
else
"white"
end;
let border := color(item.Abwesenheitsart);
let title := if item.'Status:' = 3 then
text(item.Abwesenheitsart)
else
""
end;
let firstHalf := if item.'Dauer erster Tag' = 2 or item.Dauer = 3 then
15
else
0
end;
let lastHalf := if item.'Dauer letzter Tag' = 2 or item.Dauer = 2 then
15
else
0
end;
let left := (day0 - 1) * 40 + 256 + number(not capLeft) * 4 + firstHalf;
let width := (day1 - day0 + 1) * 40 - (number(not capLeft) + number(not capRight)) * 4 -
firstHalf -
lastHalf;
let top := y * 36 + 4;
---
<div class="nxp-timeline-bar{ class }" data-nid="{ item.Nr }" style="left:{ left }px;top:{ top }px;width:{ width }px;background-color:{ color };border-color: { border }" onclick="ui.popupRecord('{ item.Nr }')">
<div class="nxp-timeline-bar-tooltip">{ tooltip(item) }</div><div class="nxp-timeline-bar-title">{ title }</div></div>
---
end;
function Row(row : Mitarbeiter) do
let yMax := 0;
let items := (row.Abwesenheiten['Erster Tag' <= date1 and 'Letzter Tag' >= date0] order by 'Erster Tag');
let yPositions := "";
let bars := join(for item in items do
let items2 := items['Erster Tag' <= item.'Erster Tag' and 'Letzter Tag' >= item.'Erster Tag' and
Nr != item.Nr];
let y := 0;
for item2 in items2 do
let y2 := number(extractx(yPositions, number(item2.Nr) + "=([0-9]+)", "$1"));
y := max(y, y2 + 1)
end;
yPositions := yPositions + " " + number(item.Nr) + "=" + y;
"let y := count(items['Erster Tag' < item.'Erster Tag' and 'Letzter Tag' >= item.'Erster Tag'])";
yMax := max(y, yMax);
Bar(item, y)
end, "");
---
<div class="nxp-timeline-row" style="height:{ (yMax + 1) * 36 + 6 }px">
<div class="nxp-timeline-cell nxp-timeline-name" onclick="ui.popupRecord('{ row.Nr }')">{ row.Name }</div>{ for day from 0 to days do Cell(row, date(year, month, day + 1)) end }{ bars }
</div>
---
end;
function Rows() do
join(for row in rows do
Row(row)
end, "")
end;
function Widget() do
html(---
<div>
<style type="text/css">{ Style() }</style>
<div class="nxp-timeline">
<div class="nxp-timeline-table">
<div class="nxp-timeline-table-head">
<div class="nxp-timeline-row"><div class="nxp-timeline-cell nxp-timeline-name">KW</div>{ WeekHeads() } </div>
<div class="nxp-timeline-row"><div class="nxp-timeline-cell nxp-timeline-name">Tag</div>{ DayHeads() } </div>
<div class="nxp-timeline-row"><div class="nxp-timeline-cell nxp-timeline-name"></div>{ DayNames() } </div>
</div>
<div class="nxp-timeline-table-body">{ Rows() }
</div>
</div>
</div>
</div>
---)
end;
Widget()