0

Je näher das Datum kommt farbig gestalten?

Hallo wir haben eine Datumspalte als Termin für Projekte. Nun wäre es super, wenn man die Spalt farbig gestalten könnte, je näher man an den Termin kommt. Geht das?

15 Antworten

null
    • Michael_Martin
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Eine Datumsspalte lässt sich nicht farblich verändern. Ein Berechnungsfeld allerdings schon. Ihr müsstet also dafür ein Berechnungsfeld verwenden.

    • Morris_Hanson
    • vor 5 Jahren
    • Gemeldet - anzeigen

    soweit ich weiß, geht das nicht automatisch.. du musst die abstände und die farben selber definieren.... ich hab mal sowas ähnliches umgesetzt.. hier die formel (allerdings nicht für datumfelder sondern für Prozente 0-100:

     

    Tabelle.(Farbfeld :=

    if Prozent < 17 then "#F8E0E0"

    else
       if Prozent < 34 then "#F6CECE"
       else
          if Prozent < 51 then "#F5A9A9"
          else
             if Prozent < 71 then "#F78181"
             else
                if  Prozent < 91 then "#FA5858"
               else
                  if Prozent <= 100 then "#FF0000"
                 else "FFFFFF"
                 end
              end
            end
          end
       end
    end);

     

    so in etwa.. LG Rene

    • Michael_Martin
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hier mal ein Vorschlag für Euch:

    Ihr braucht ein Datumsfeld mit der Bezeichnung "Datum" für das Datum und ein Berechnungsfeld.

    let AktuellesDatum := day(today());
    let Tage := day(Datum) - AktuellesDatum;
    var Stil := switch Tage > 0 do
    case Tage < 1:
    "rgb(250, 112, 104)"
    case Tage >= 1 and Tage < 2:
    "rgb(246, 122, 107)"
    case Tage >= 2 and Tage < 3:
    "rgb(241, 133, 109)"
    case Tage >= 3 and Tage < 4:
    "rgb(237, 143, 111)"
    case Tage >= 4 and Tage < 5:
    "rgb(232, 153, 113)"
    case Tage >= 5 and Tage < 6:
    "rgb(228, 163, 116)"
    case Tage >= 6 and Tage < 7:
    "rgb(223, 173, 118)"
    case Tage >= 7 and Tage < 8:
    "rgb(219, 184, 120)"
    case Tage >= 8 and Tage < 9:
    "rgb(214, 194, 122)"
    case Tage >= 9 and Tage < 10:
    "rgb(210, 204, 125)"
    case Tage >= 10 and Tage < 11:
    "rgb(205, 214, 127)"
    case Tage >= 11 and Tage < 12:
    "rgb(201, 224, 129)"
    case Tage >= 12 and Tage < 13:
    "rgb(196, 235, 131)"
    case Tage >= 13 and Tage < 14:
    "rgb(192, 245, 134)"
    case Tage >= 14:
    "rgb(187, 255, 136)"
    end;
    styled(text("nur noch ") + text(Tage) + text(" Tag(e)"), Stil, if Tage < 14 then "white" else "black" end, "")

    Jetzt wird je näher der Termin rückt das Berechnungsfeld dunkler.

     

    Gruß Michael

    • Ninox-Professional
    • planoxpro
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Vorschlag. Zusätzliches Funktionsfeld mit folgendem Code erstellen (DATUM durch den Namen des Feldes ersetzen):

    let AnzahlTage := days(today(), DATUM);
    let Farbe := switch AnzahlTage < 31 do
        case AnzahlTage < 30 and AnzahlTage >= 20:
            "Yellow"
        case AnzahlTage < 20 and AnzahlTage >= 10:
            "Orange"
        case AnzahlTage < 10 and AnzahlTage >= 3:
            "Red"
        case AnzahlTage < 3:
            "Darkred"
        default:
            "Green"
        end;
    styled(text(Datum), Farbe)

    Dieses Funktionsfeld nun statt des Datumsfeldes in der Tabellenansicht einblenden. Im Formular kann man es ausblenden, wenn man es dort nicht sehen will. Die Zahlen sind natürlich auch nur Beispiele.

    • Ninox-Professional
    • planoxpro
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ups, Michael war schneller. Bei so vielen 'case' würde ich allerdings vielleicht eher mit einer Schleife arbeiten.

    • Michael_Martin
    • vor 5 Jahren
    • Gemeldet - anzeigen

    @Copytexter
    Würde ich gerne mit einer Schleife machen, nur soweit bin ich noch nicht :-(

    • Ninox-Professional
    • planoxpro
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Das ist nun wirklich keine Schande. So eine Idee ist schnell mal eingeworfen, aber im "Ernstfall" müsste ich auch echt überlegen, ob und wie genau das umzusetzen wäre. ;)

    • Marwin
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Habe den Code von Michael mal etwas gekürzt stehe da mehr auf clean Code :D

    let Tage := day(Datum - today());
    let clr := color(number(250 - Tage * 4), number(112 + Tage * 10), number(104 + Tage * 3));
    styled(text("nur noch ") + text(Tage) + text(" Tag(e)"), clr, if Tage < 14 then "white" else "black" end, "")

    Das einzige Problem ist jetzt wie aber auch schon bei Michael das ab 31 Tage wieder gesagt wird es sind nur noch 1 Tag übrig usw weil immer mit dem Monatstagen gerechnet wird, da habe ich mir jetzt keinen Kopf zu gemacht.

     

    Schöne Grüße

    Marwin

    • Marwin
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Update: mit richtigen Tagesabständen auch über 31 Tage :p 

     

    let Tage := days(today(), Datum);
    let clr := color(number(250 - Tage * 4), number(112 + Tage * 10), number(104 + Tage * 3));
    if Tage > 20 then
    clr := color(number(170), number(255), number(164))
    end;
    styled(text("nur noch ") + text(Tage) + text(" Tag(e)"), clr, "black", "")

    • Michael_Martin
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Alter Falter Marwin, dein Code sieht bedeutend besser aus. Wie bist auf die Umrechnung der Farben gekommen?

    • Ninox-Professional
    • planoxpro
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ja, das ist natürlich auch eine gute Lösung.

    • Marwin
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Michael habe einfach den ungefähren Wert genommen den du pro Tag auch abgezogen/hinzugefügt hast. :) Teamwork :D

    • Morris_Hanson
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Perfekte LÖSUNG! DANKE! Habe es jetzt noch etwas adaptiert, vielleicht braucht es jemand auch umgekehrt.. Für Termine die in der Vergangenheit liegen rötere Untermalung, für jüngere Termine grüner... man braucht ein ZEITRAUM Nummernfeld, in dem man angibt wieviel Tage in der Spanne sein sollen...

     

    let myZEITRAUM := ZEITRAUM
    let myTAGE := days(today(), Datum) * -1;
    let myCOLOR := color(number(26 + myTAGE * 231 / myZEITRAUM), number(188 - myTAGE * 76 / myZEITRAUM), number(156 - myTAGE * 60 / myZEITRAUM));
    if myTAGE >= myZEITRAUM then
    myCOLOR := color(number(231), number(76), number(60))
    end;
    if myTAGE < 1 then
    styled(text("HEUTE"), myCOLOR, "black", "")
    else
    if myTAGE = 1 then
    styled(text(myTAGE) + text(" Tag"), myCOLOR, "black", "")
    else
    styled(text(myTAGE) + text(" Tagen"), myCOLOR, "black", "")
    end
    end

    • Pyromixer.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Coooool oder Knorke wie es hier nu immer heisst :-) So wird meine Sache nie fertig :-)

    • waldmoped
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo,

    ich habe das Berechnungsfeld angelegt und möchte dies in der Tabellenansicht angezeigt bekommen. Hier habe ich jedoch die Schwierigkeit, daß mir die restliche Tage nicht chronologisch angezeigt werden. Die Anzeige der abgelaufenen Tage ( 0 Tage ) wird noch klar zusammengefasst im unteren Bereich der Tabelle, die anderen Resttage jedoch willkürlich.Die verschiedenen Anzeige Modi (Gruppiert, Auf- u. Absteigend) hab ich schon mal probiert, keine Veränderung . Hat jemand eine Idee?

    Bildschirmfoto 2020-02-29 um 19.20.15