Minikalender
minical. Ist wie meine Katze, nicht wirklich nützlich, aber niedlich.
let dateToday := today();
"---------------------------";
let backgroundColor := "#97b6aa";
let kw := week(dateToday);
let yr := year(dateToday);
let weekDayID := weekday(dateToday) + 1;
function allDayOfWeek(num : number,tDate : date) do
let pos := weekday(tDate);
let startWeekDay := date(year(tDate), month(tDate), day(tDate) - pos - 14 + 7 * num);
let weekID := week(startWeekDay);
for i in range(0, 7) do
if week(date(year(startWeekDay), month(startWeekDay), day(startWeekDay)) + i) = weekID then
format(date(year(startWeekDay), month(startWeekDay), day(startWeekDay)) + i, "DD.MM.")
end
end
end;
function allWeek(num : number,tDate : date) do
let pos := weekday(tDate);
let startWeekDay := date(year(tDate), month(tDate), day(tDate) - pos - 14 + 7 * num);
let weekID := week(startWeekDay);
for i in range(0, 7) do
if week(date(year(startWeekDay), month(startWeekDay), day(startWeekDay)) + i) = weekID then
date(year(startWeekDay), month(startWeekDay), day(startWeekDay)) + i
end
end
end;
let content := "
<style>
table{
border-collapse: separate;
border:none;
border-radius: 1em;
background-color:" + backgroundColor + ";
}
td,th{
font-size:small;
border-radius: 2em;
text-align:center;
}
td{
background-color: #cee5d5;
font-family: Garamond;
padding:.1em .3em;
}
th{
background-color: #dec48c;
padding:.1em .3em;
}
tr:nth-of-type(4) td:nth-of-type(" + weekDayID + "){
background-color: #f5d793;
font-weight: bolder;
}
.medium {
font-size:large;
font-weight:bold;
}
</style>
<table>
<tr>
<th>KW</th>
<th>Mo</th>
<th>Di</th>
<th>Mi</th>
<th>Do</th>
<th>Fr</th>
<th>Sa</th>
<th>So</th>
</tr>
" + for i in range(0, 5) do
"<tr>
<th class = 'medium'>" + week(first(item(allWeek(i, dateToday), i))) + "</th>" + for j in range(0, 7) do
"<td>" + item(allDayOfWeek(i, dateToday), j) + "</td>"
end + "
</tr>"
end + "
</table>
";
html(content)
15 Antworten
-
Hallo Mirko
Sehr schöne Kalender. Vielen Dank
Bei mir wird der Kalender einfach weiß angezeigt als ob die html(content) nicht abgearbeitet wurde
Gruß Richard
-
Darstellung im Chrome-Webbrowser unter Microsoft 11:
-
Ryszard Paluch Tacho Hi. Danke für die Rückmeldungen. Meine Tests waren Win10/Firefox 107.0, Mac-App, IPAD-App und jetzt gerade noch getestet Win10/Chrome 107.0.5304.107. Bei allen habe ich die normale Anzeige, wie ich oben gepostet habe. Win11 habe ich nicht getestet. Mirko
-
Hi Mirko
Ich habe es auf dem Mac getestet: Ninox App, IPAD-App, Firefox, Safari, Chrome alles neuste versionen - überall das selber
-
Hi Ryszard. Meine Erfahrungen mit HTML und CSS in Ninox sind, dass sie nur recht sicher funktionieren, wenn in dem Tab des Formulars sich kein weiteres Funktionsfeld mit CSS befindet - auch keines zum Verstecken von Symbolen etc.
Hat man mehrere Funktionsfelder, dann okupiert das zuletzt stehende alle vorherigen (im günstigsten Fall), oder sie mischen sich sogar. Ganz schwierig ist es wenn das HTML-Tag <div> benutzt wird und es CSS-Formate bekommt, dann kann es sein, dass man auch die Ninox-Ansicht verändert.
Eure Ergebnisse zeigen mir aber, dass es für praktische Anwendungen nur bedingt geeignet ist, HTML/CSS zu benutzten, oder ich bisher viel Glück hatte.
Wärest Du so freundlich, mal diese Datei bei Dir zu testen? Sie enthält nur dieses Feld. Mirko
-
Hi Mirko
Deine Datei funktioiniert einwandfrei.
In meine Datenbank in mehrerer Tabellen geht nicht. Habe auch html in den Globalen Funktionen. Vielleicht ist das die Ursache.
Vielen Dank für Deine mühen!
Richard
-
Hier die Darstellung auf Mac Chrome/Firefox und Safari
-
Danke für Eure Rückmeldungen. Es sollte eigentlich nur ein Gag sein, aber sicherheitshalber habe ich noch mal gewaschen, geschnitten, gefärbt und geföhnt. Und trotzdem - nur schick und nicht nützlich.
"VALUES----------------------------------"; let dateToday := today(); function BuildArrayOfSevenDays(num : number,tDate : date) do let pos := weekday(tDate); let startWeekDay := date(year(tDate), month(tDate), day(tDate) - pos - 14 + 7 * num); let weekID := week(startWeekDay); for i in range(0, 7) do if week(date(year(startWeekDay), month(startWeekDay), day(startWeekDay)) + i) = weekID then date(year(startWeekDay), month(startWeekDay), day(startWeekDay)) + i end end end; "CSS--------------------------------------"; let backgroundColor := "#ca5f00"; let thBackgroundColor := "#7a9775"; let tdBackgroundColor := "#f0ae85"; let soBackgroundColor := "#e88243"; let weekDayBackgroundColor := "#d1dbcf"; let weekDayID := weekday(dateToday) + 1; let css := "<style> table{ border-collapse: separate; border:none; border-radius: 1em; background-color:" + backgroundColor + "; } td,th{ font-size:small; border-radius: 2em; text-align:center; } td{ background-color: " + tdBackgroundColor + "; font-family: Garamond; padding:.1em .3em; } th{ background-color: " + thBackgroundColor + "; } td:last-of-type { background-color: " + soBackgroundColor + "; } tr:nth-of-type(4) td:nth-of-type(" + weekDayID + "){ background-color: " + weekDayBackgroundColor + "; font-weight: bolder; } .medium { font-size:large; font-weight:bold; } </style>"; "HTML--------------------------------------"; let content := " <table> <tr> <th>KW</th><th>Mo</th><th>Di</th><th>Mi</th><th>Do</th><th>Fr</th><th>Sa</th><th>So</th> </tr> " + for i in range(0, 5) do "<tr> <th class = 'medium'>" + week(first(item(BuildArrayOfSevenDays(i, dateToday), i))) + "</th>" + for j in range(0, 7) do "<td>" + format(item(BuildArrayOfSevenDays(i, dateToday), j), "DD.MM.") + "</td>" end + " </tr>" end + " </table> "; "RESULT------------------------------------"; html(css + content)
-
Kleine Verbesserungen: Jahresanzeige, Feiertage (hier Sachsen-Anhalt - beliebig anpassbar), für die Übersicht sind die nicht aktiven Monate in grauer Schrift und hat insgesamt ein bisschen zugenommen. M
"VALUES----------------------------------"; let myDatum := DATUMFELD oder today(); let dayArt := ""; let weekDayID := weekday(myDatum) + 1; "Funktion Ostern und davon abhängige Feiertage"; function ostern(thisDate : date) do let jahr := year(thisDate); let a := jahr % 19; let b := floor(jahr / 100); let c := jahr % 100; let d := floor(b / 4); let e := b % 4; let f := floor((b + 8) / 25); let g := floor((b - f + 1) / 3); let h := (19 * a + b - d - g + 15) % 30; let i := floor(c / 4); let k := c % 4; let l := (32 + 2 * e + 2 * i - h - k) % 7; let m := floor((a + 11 * h + 22 * l) / 451); let n := floor((h + l - 7 * m + 114) / 31); let p := (h + l - 7 * m + 114) % 31; date(jahr, n, p + 1) end; let osterSoDat := format(ostern(Dat), "DD.MM."); let osterMoDat := format(ostern(Dat) + 1, "DD.MM."); let karfreitagDat := format(ostern(Dat) - 2, "DD.MM."); let chrHimmelfDat := format(ostern(Dat) + 39, "DD.MM."); let pfingstSoDat := format(ostern(Dat) + 49, "DD.MM."); let pfingstMoDat := format(ostern(Dat) + 50, "DD.MM."); "Feiertagsarray"; let feiertage := "03.10." + "," + "31.10." + "," + "25.12." + "," + "26.12." + "," + "06.01." + "," + "01.01." + "," + "01.05." + "," + osterSoDat + "," + chrHimmelfDat + "," + karfreitagDat + "," + pfingstSoDat + "," + pfingstMoDat + "," + osterMoDat; "Funktion zur Bildung des Arrays von 7 Tagen der aktuellen Kalenderwoche"; function BuildArrayOfSevenDays(num : number,tDate : date) do let pos := weekday(tDate); let startWeekDay := date(year(tDate), month(tDate), day(tDate) - pos + 7 * num); let weekID := week(startWeekDay); for i in range(0, 7) do date(year(startWeekDay), month(startWeekDay), day(startWeekDay)) + i end end; "CSS--------------------------------------"; let css := "<style> table { border-collapse: separate; border:none; border-spacing: .3em .5em; border-radius: 1.2em; background-color: #ca5f00; font-size:medium; font-weight:bold; } td,th { border-radius: 2em; text-align:center; padding:.4em .5em; } td { background-color: #f0ae85; font-family: Garamond; } th { background-color: #7a9775; } tr:nth-of-type(4) td:nth-of-type(" + weekDayID + "){ background-color: #d1dbcf } tr:nth-of-type(1) th:nth-of-type(1){ font-size:x-small } .feiertag {box-shadow: 0 0 0 .2em #7a9775; inset;} .otherMonth {color:#999;} </style>"; "HTML--------------------------------------"; let content := " <table> <tr><th>" + year(myDatum) + "</th><th>Mo</th><th>Di</th><th>Mi</th><th>Do</th><th>Fr</th><th>Sa</th><th>So</th></tr> " + for i in range(-2, 3) do "<tr><th>" + week(first(item(BuildArrayOfSevenDays(i, myDatum), i + 2))) + "</th> " + for j in range(0, 7) do "<td " + switch dayArt != "mirkoIsAuthor" do case (month(item(BuildArrayOfSevenDays(i, myDatum), j)) < month(myDatum) or month(item(BuildArrayOfSevenDays(i, myDatum), j)) > month(myDatum)) and contains(feiertage, format(item(BuildArrayOfSevenDays(i, myDatum), j), "DD.MM.")): "class = 'otherMonth feiertag'" case month(item(BuildArrayOfSevenDays(i, myDatum), j)) < month(myDatum) or month(item(BuildArrayOfSevenDays(i, myDatum), j)) > month(myDatum): "class = 'otherMonth'" case contains(feiertage, format(item(BuildArrayOfSevenDays(i, myDatum), j), "DD.MM.")) and month(item(BuildArrayOfSevenDays(i, myDatum), j)) = month(myDatum): "class = 'feiertag'" end + ">" + format(item(BuildArrayOfSevenDays(i, myDatum), j), "DD.MM.") + "</td>" end + "</tr>" end + " </table> "; "RESULT------------------------------------"; html(css + content)
-
Mit Scrollfunktion für je 4 Wochen. Leider nur mit einem verstecktem Hilfsfeld funktionstüchtig. Für mehr reicht meine Kenntnis zu Javascript leider nicht aus. Wer es in eine bestehende DB einsetzten will, benötigt die Feld-ID (hier ist es "A") für das Datenfeld "Zahl". Mirko
-
Ich habe die Scrollbalken aus dem Code wieder entfernt und dafür die Auswahlmöglichkeit des Datums über Mausklick eingefügt. Es geht sicher auch beides, aber NINOX bietet ja Button an. Der geklickte Wert füllt nun ohne Umwege ein Datumfeld. Noch immer niedlich, aber jetzt ein wenig nützlicher. Praktische Anwendungsmöglichkeiten sehe ich zwar immer noch nicht, war aber auch nicht mein Thema. Ich hoffe, mir nimmt es niemand übel, dass ich aus Javascript, nx, css und html so eine Art häßlichen pidgin-code gemacht habe. Er ist recht schwer zu lesen, ist aber auch nur eine "Machbarkeitsstudie" auf die mich Ralf gebracht hat ;-) Mirko
-
Ein bisschen poliert und vernützlicht. Ein dchoice zur direkten Eingabe von Terminen, Warnung bei Terminüberschneidungen, Scrollbutton, Rücksprung zum Monat, Zeiteingabe, roter Punkt heißt: Termine inside. Achtung: ist nur für Ninox ab 3.14. (weil ich das dchoice mit JSON gefüllt habe - globale Funktion) und nur für eintägige Termine (ich brauche nicht mehr). Zum Basteln, Ausschlachten oder Nutzen. P.S. Mir haben sich noch nicht alle Bugs persönlich vorgestellt;-) Mirko
Content aside
-
7
„Gefällt mir“ Klicks
- vor 2 WochenZuletzt aktiv
- 15Antworten
- 333Ansichten
-
9
Folge bereits