0

Monats Kalender selber Bauen

Hallo zusammen,

ich habe bis jetzt immer nur mit dem Kalender (Ninox) gearbeitet. Das ist zu unübersichtlich auf dauer, soll aber für andere Benutzer zugänglich bleiben.

Für mich zur Planung habe ich jetzt wochenübersichten erstellt, wo auch die Urlaubsangaben ect. mit drinnen sind. Da ich aber in den einzeltagen aus platzgründen nur ein Textfeld eingeblendet hab, bekomm ich in der Tabelle Aufträge leider sinnlose einträge für die Urlaube. (muss ich wohl mit leben, ausblenden kann ich die ja nicht) 😫

Gibt es eine Möglichkeit eine Monatsübersicht ähnlich dem Kalender in html oder so mit anklickbare termine  zu erstellen?

Hab null dunst davon.

Anbei mal die auf die schnelle sauber gemachte db. in der die bezugsfelder sind. 

19 Antworten

null
    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi Michi. Ist vielleicht nicht genau das, was Du wolltest aber eine Idee dazu. HTML nur zum Anschauen, das dynamische Auswahlfeld zum anklicken der Termine. Eine Alternative mit dynamischen Auswahlfeldern für jeden Wochentag (sieht aber nicht so schick aus). Mirko

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko danke dir für deine Mühen. Schau mir es gerne an, bin für jede hilfe dankbar weil ich davon null verstehe. Wird aber bestimmt erst Montag, denn morgen wollen in meinem 2.leben 500 Leut beköstigt werden... was tut man nicht alles für die Familie.

      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Michi ...wenn alle satt sind, dann update:

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko  Das sieht sehr gut aus! 👍 Bin begeistert was man alles machen kann, wenn man Ahnung davon hat.

      Ich würde deinen Kalender jedoch nicht direkt für die Planung in der Kalenderwoche nehmen. Bräuchte Ihn als überblick für den ganzen Monat um auf den ersten Blick zu sehen wie die Auslastung ist , bzw. wo noch was zu füllen ist.

      Quasi als vollbild nur mit einer Monatsauswahl. 

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko hab mal nen Video gemacht, in den Reiter Monatskalender müsste dein geiler html Kalender. (muss nicht unbedingt klickbar sein, denn es hilft schon ungemein wenn ich die Termine für den Monat so ordentlich sehen kann)

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Für die Ansicht braucht die Tabelle "Aufträge" noch das Feld "alles". Dann könntest Du den Code übernehmen und die Zeile 1 und 5 anpassen an Deine Felder für KW und Jahr. Ist zwar nicht ein Monat, aber vielleicht reicht es Dir ja 4 Kalenderwochen anzuzeigen. Mirko

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko danke dir, so bekomme ich das hin.👍👍

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko bekomm es doch nicht ganz hin 😓

      wenn Liefertermine über 2 Tage gehen bekomm ich den 2. Tag nicht eingebunden, so das der Termin da im Kalender auftaucht. (ist der erste Tag drin, doch der 2. fehlt)

      In Aufträge gibt das Feld: bis Liefertermin (bei mehrtägigen Montagen) den 2. Tag vor. Wie bekomm ich das dem ary im Kalender zugeordnet ?? 

      ----------------------------------------------------------------------------------------------------

      Das ist der Bezug zum 1. Liefertermin

      -----------------------------------------------------------------------------------------------------

      let kw := record('Aufträge',number('AUSWAHL der ersten angezeigten KW')).week(Liefertermin);
      let kw2 := kw + 1;
      let kw3 := kw + 2;
      let kw4 := kw + 3;
      let yr := record('Aufträge',number('AUSWAHL der ersten angezeigten KW')).year(Liefertermin);
      let counter := days(date(yr, 1, 1), date(yr, 12, 31)) + 1;
      let ary := for i in range(0, counter + 1) do
              if week(date(yr, 1, 1) + i) = kw then
                  format(date(yr, 1, 1) + i, "dd - DD.MM.YYYY")
              end
          end;
      let ary2 := for i in range(0, counter + 1) do
              if week(date(yr, 1, 1) + i) = kw2 then
                  format(date(yr, 1, 1) + i, "dd - DD.MM.YYYY")
              end
          end;
      let ary3 := for i in range(0, counter + 1) do
              if week(date(yr, 1, 1) + i) = kw3 then
                  format(date(yr, 1, 1) + i, "dd - DD.MM.YYYY")
              end
          end;
      let ary4 := for i in range(0, counter + 1) do
              if week(date(yr, 1, 1) + i) = kw4 then
                  format(date(yr, 1, 1) + i, "dd - DD.MM.YYYY")
              end
          end;

      +

      <th>" + item(ary, 0) + "</th>
              <th>" + item(ary, 1) + "</th>
              <th>" + item(ary, 2) + "</th>
              <th>" + item(ary, 3) + "</th>
              <th>" + item(ary, 4) + "</th>
              <th>" + item(ary, 5) + "</th>

      +

      <td> " + for j in ((select 'Aufträge') order by 'Team wählen')[week(Liefertermin) = kw and weekday(Liefertermin) = 0] do
              j.Wochentag + "<br>"
          end + " </td>
              <td> " + for j in ((select 'Aufträge') order by 'Team wählen')[week(Liefertermin) = kw and weekday(Liefertermin) = 1] do
              j.Wochentag + "<br>"
          end + " </td>
              <td> " + for j in ((select 'Aufträge') order by 'Team wählen')[week(Liefertermin) = kw and weekday(Liefertermin) = 2] do
              j.Wochentag + "<br>"
          end + " </td>
              <td> " + for j in ((select 'Aufträge') order by 'Team wählen')[week(Liefertermin) = kw and weekday(Liefertermin) = 3] do
              j.Wochentag + "<br>"
          end + " </td>
              <td> " + for j in ((select 'Aufträge') order by 'Team wählen')[week(Liefertermin) = kw and weekday(Liefertermin) = 4] do
              j.Wochentag + "<br>"
          end + " </td>
              <td> " + for j in ((select 'Aufträge') order by 'Team wählen')[week(Liefertermin) = kw and weekday(Liefertermin) = 5] do
              j.Wochentag + "<br>"
          end + " </td>

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Sind es maximal 2 Tage, oder sind auch längere Zeiten möglich?

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko können auch länger sein, ist aber verdammt selten. könnte man also vernachlässigen. Doch 2 Tage sind sehr oft.  

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Feld "alles" mit neuem Code! Zweitägige Termine mit Kennzeichnung und in beiden Tagen. Mehrtägige Termine habe ich nicht berücksichtigt, aber Anfang- und Ende würden drinstehen. Mirko

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko Danke Dir wie verrückt für deinen Einsatz. Jetzt sollte alles passen.

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko Grüß dich, 

      hab dein ersten Kalender mal für einen Dialog missbraucht. Kann man den Teams unterschiedliche Farben zuordnen? 

      Team 1 = blau / Team 2 = grün ... so in der art.

      Skript: 

      let lt := Liefertermin;
      let oben := format(date(Liefertermin), "dddd - DD.MM.YYYY");
      let content := "
      <style>
      /*Rahmen zusammenfallend und nur senkrecht*/
      table,td,th{
          border:thin solid #000;
          border-collapse:collapse;
          font: lighter 1.2em Arial, serif;
          }
      #tabellen-nebeneinander {  
          text-align: left;  
      }  

      #tabellen-nebeneinander table {  
          display: inline;  
          display: inline-table;  
      }
      caption{
      padding: .5em .5em
      }
      td{
          padding: .5em .5em;
          font-size:small;
          }
      thead,th{
            background-color:rgb(237,162,82);
          padding: .1em .5em;
          font-size:medium;
          text-align:center
          letter-spacing: .5em;
          }

      /*Zebrastreifen für Zeilen*/
      tr:nth-child(odd) td{ 
            background-color: #e4ebf2; 
            color: #000; 
          }
      tr:nth-child(even) td{ 
            background-color: rgb(237,162,82,.3); 
            color: #000; 
          }
      </style>
      <div id='tabellen-nebeneinander'>  
      <table>
          <caption>" + oben + "</caption>
          <thead>
              <tr>
      <th> Team </th>
      <th> Name </th>
              <th> Planzeit </th>
              <th> Ort </th>
              <th> Von </th>
              </tr>
          </thead>
          <tbody>
              " + ((select 'Aufträge') order by 'Team wählen')[Liefertermin = lt or 'bis Liefertermin (bei mehrtägigen Montagen)' = lt].("
              <tr>

      <td> " + 'Team wählen' + " </td><td> " + Name + " </td><td> " + Planzeit + " </td><td> " + Ort + " </td><td> " + Vertragspartner.'Firmen zusatz' + " </td>
              </tr>
              ") + "
          </tbody>
      </table>
      <table>

      </table>
      </div>
      ";
      dialog("Team übersicht", content, ["OK"])

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    So?

     

    let lt := Liefertermin;
    let oben := format(date(Liefertermin), "dddd - DD.MM.YYYY");
    let content := "
    <style>
    /*Rahmen zusammenfallend und nur senkrecht*/
    table,td,th{
        border:thin solid #000;
        border-collapse:collapse;
        font: lighter 1.2em Arial, serif;
        }
    caption{
    padding: .5em .5em
    }
    td{
        padding: .5em .5em;
        font-size:small;
        }
    thead,th{
        background-color:rgb(237,162,82);
        padding: .1em .5em;
        font-size:medium;
        text-align:center
        letter-spacing: .5em;
        }
    /*Zebrastreifen für Zeilen*/
    tr:nth-child(odd) td{
          background-color: #e4ebf2;
          color: #000;
        }
    tr:nth-child(even) td{
          background-color: rgb(237,162,82,.3);
          color: #000;
        }
    </style>
    <table>
        <caption>" + oben + "</caption>
        <thead>
            <tr>
    <th> Team </th>
    <th> Name </th>
            <th> Planzeit </th>
            <th> Ort </th>
            <th> Von </th>
            </tr>
        </thead>
        <tbody>
            " + ((select 'Aufträge') order by 'Team wählen')[Liefertermin = lt or 'bis Liefertermin (bei mehrtägigen Montagen)' = lt].("
            <tr>
                <td style=background-color:" + color('Team wählen') + "> " + 'Team wählen' + " </td><td> " + Name + " </td><td> " + Planzeit + " </td><td> " + Ort + " </td><td> " + Vertragspartner.'Firmen zusatz' + " </td>
            </tr>
            ") + "
        </tbody>
    </table>
    ";
    dialog("Team übersicht", content, ["OK"])
    
      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko so das die jeweiligen Zeilen (alle spalten) die Team-farbe haben

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen
    ...
    <tbody>
            " + ((select 'Aufträge') order by 'Team wählen')[Liefertermin = lt or 'bis Liefertermin (bei mehrtägigen Montagen)' = lt].("
            <tr>
                <td  style=background-color:" + color('Team wählen') + "> " + 'Team wählen' + " </td><td  style=background-color:" + color('Team wählen') + "> " + Name + " </td><td  style=background-color:" + color('Team wählen') + "> " + Planzeit + " </td><td  style=background-color:" + color('Team wählen') + "> " + Ort + " </td><td  style=background-color:" + color('Team wählen') + "> " + Vertragspartner.'Firmen zusatz' + " </td>
            </tr>
            ") + "
        </tbody>
    ...
    
      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko dann siehts so aus 

      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Michi bei mir so:

      Es darf auf dieser Seite kein anderes Funktionsfeld CSS oder HTML enthalten, das Feld, welches an erster Stelle steht, dominiert das Aussehen. Und daran denken. Das sind eher Hacks, die auch mal ungewollte Konsequenzen haben können. Ansonsten hier nochmal der komplette Code mit obigen Ergebnis. Mirko

       

      let lt := Liefertermin;
      let oben := format(date(Liefertermin), "dddd - DD.MM.YYYY");
      let content := "
      <style>
      /*Rahmen zusammenfallend und nur senkrecht*/
      table,td,th{
          border:thin solid #000;
          border-collapse:collapse;
          font: lighter 1.2em Arial, serif;
          }
      caption{
      padding: .5em .5em
      }
      td{
          padding: .5em .5em;
          font-size:small;
          }
      thead,th{
          background-color:rgb(223,223,223);
          padding: .1em .5em;
          font-size:medium;
          text-align:center
          letter-spacing: .5em;
          }
      </style>
      <table>
          <caption>" + oben + "</caption>
          <thead>
              <tr>
                  <th> Team </th>
                  <th> Name </th>
                  <th> Planzeit </th>
                  <th> Ort </th>
                  <th> Von </th>
              </tr>
          </thead>
          <tbody>
              " + ((select 'Aufträge') order by 'Team wählen')[Liefertermin = lt or 'bis Liefertermin (bei mehrtägigen Montagen)' = lt].("
              <tr>
                  <td  style=background-color:" + color('Team wählen') + "> " + 'Team wählen' + " </td><td  style=background-color:" + color('Team wählen') + "> " + Name + " </td><td  style=background-color:" + color('Team wählen') + "> " + Planzeit + " </td><td  style=background-color:" + color('Team wählen') + "> " + Ort + " </td><td  style=background-color:" + color('Team wählen') + "> " + Vertragspartner.'Firmen zusatz' + " </td>
              </tr>
              ") + "
          </tbody>
      </table>
      ";
      dialog("Team übersicht", content, ["OK"])
      
      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko will einfach nicht so wie bei dir. 

      danke dir 

Content aside

  • vor 1 JahrZuletzt aktiv
  • 19Antworten
  • 266Ansichten
  • 1 Folge bereits