Comments

11 comments

  • Rainer Grabowski

    Hi Veronica,

    you want to check it in a calculation field which is in the same item as the relationship field? Let's say the relationship field in App A links to App B which has a title field named "Title". In each item the title field always has a value. Then you can do in the calculation field in App A:

    @All of Title.length

    This shows the number 0 if there is no B-item related, or 2 if there are 2 related..

    Rainer

    0
    Comment actions Permalink
  • Sinan Sağlam

    Having the same question!

    Want to check if it's not empty.

    I've already tried

    if (@All of Nummer != null){
    }

    and

    if (@All of Nummer.length > 0){
    }

    But neither of them is working.

     

    0
    Comment actions Permalink
  • Rainer Grabowski

    Hi Sinan,

    the check if an array (@all of ...) is empty:  @all of nummer != "" (not null)
    If you use an IF you need an ELSE, e.g.:

    var arr = @all of nummer
    arr != "" ? "not empty" : "empty" 

    or

    if(arr == ""){
    "not empty"
    }else{
    "empty"
    };

    Rainer

    0
    Comment actions Permalink
  • Sinan Sağlam

    Hi Rainer,

    yes I just didn't copy the else to my post here.

    I've tried:

    if (@All of Nummer == ""){
    nameinkalender = @All of Nummer.join(" / ") + ": ";
    }
    else{}

    But it didn't work either.

     

     

    What I basically want is that if there are related items, their "Nummer"s should be written to "nameinkalender", followed by a ":"

    And if there aren't any related items, nothing should be written to "nameinkalender". (also no ":")

    0
    Comment actions Permalink
  • Rainer Grabowski

    You simply have to declare a var nameinkalender:

    var arr = @all of nummer;
    var nameinkalender = "";
    if (arr != ""){
    nameinkalender = arr.join(" / ") + ": ";
    }else{
    nameinkalender
    };
    nameinkalender

    I prefer the shorthand version:

    var arr = @all of nummer;
    arr != "" ? arr.join(" / ") + ": " : "" 
    0
    Comment actions Permalink
  • Sinan Sağlam

    Yesyes, I did that, too - sorry for not being clear enough.

    Actually the calculation is way bigger - the @All of Nummer should just be the prefix of a longer string built of more information:

     

    var nameinkalender = "";
    var kalenderinfo = "";

    if (@All of Nummer == ""){
        nameinkalender = @All of Nummer.join(" / ") + ": ";
    }
    else{}

    nameinkalender = nameinkalender + @Vorname + " " + @Nachname + " (" + moment(@Datum des Auftrags).format('DD.MM.YYYY') + ")";


    if (@Info (wird im Kalender angezeigt) != null){
        kalenderinfo = @Info (wird im Kalender angezeigt);
    }
    else {}

    if (@Status == "STORNO"){
        @Status + ": " + nameinkalender + " " + kalenderinfo;
    }
    else {
        nameinkalender + " " + kalenderinfo;
    }

    0
    Comment actions Permalink
  • Rainer Grabowski

    Oder so: 

    var arr = @all of nummer; 
    var vn = @Vorname;
    var nn = @Nachname;
    var datAuf = @Datum des Auftrags;
    var info = @Info (wird im Kalender angezeigt);
    var status = @Status;

    var nameinkalender = (arr != "" ? arr.join(" / ") + ": " : "") + vn + " " + nn + " (" + moment(datAuf).format('DD.MM.YYYY') + ") ";
    var kalenderinfo = info || "";
    var status = status == "STORNO" ? status  + ": " : "";
    status + nameinkalender + kalenderinfo ;

    Schöne Grüße aus München :)
    Rainer

     

    0
    Comment actions Permalink
  • Sinan Sağlam

    Ohh super, so geht's! Viiiielen lieben Dank! :)

     

    Was habe ich denn falsch gemacht? Sollte ich lieber immer erst die Podio Fields in eine richtige Variable schreiben?

    Und meinst du, du könntest mir das ganze nochmal in der ausführlichen if/else Notation schreiben, falls du mal kurz Zeit hast? Kann mit der verkürzten leider gar nichts anfangen :(


    Kann nämlich kaum JS und es wäre gut, wenn ich den Code in einem Monat immer noch verstehe:)

     

    Liebe Grüße aus Berlin!

    0
    Comment actions Permalink
  • Rainer Grabowski

    Sollte ich lieber immer erst die Podio Fields in eine richtige Variable schreiben?

    Ja, vor allem wenn sich Variablen wiederholen (macht a) den Code lesbarer, b) muss man dann nicht immer den Token in der Dropedown-Liste suchen und c) kann man Code dann einfacher kopieren und Code-Teile verschieben).

    var status = status == "STORNO" ? status  + ": " : "";

    Zu lesen als: 
    status == "STORNO"  -> IF
    ? -> THEN
    status -> nehem den Werrt der Variablen status (in diesem Fall könntest du auch "STORNO" hin schreiben)
    : -> ELSE
    "" -> Wert für ELSE 

    Dein langer Code sollte funktionieren, wenn du diesen eine Fehler raus nimmst:
    falsch: if (@All of Nummer == ""){
    muss sein:
    richtig: if (@All of Nummer != ""){
    Und trage bei else einen Wert ein:

    var nameinkalender = "";
    var kalenderinfo = "";

    if (@All of Nummer != ""){
        nameinkalender = @All of Nummer.join(" / ") + ": ";
    }
    else{
    nameinkalender;
    };

    nameinkalender = nameinkalender + @Vorname + " " + @Nachname + " (" + moment(@Datum des Auftrags).format('DD.MM.YYYY') + ")";


    if (@Info (wird im Kalender angezeigt) != null){
        kalenderinfo = @Info (wird im Kalender angezeigt);
    }
    else {
    kalenderinfo;
    };

    if (@Status == "STORNO"){
        @Status + ": " + nameinkalender + " " + kalenderinfo;
    }
    else {
        nameinkalender + " " + kalenderinfo;
    };

    Grüße nach Berlin (wo ich die ganze übernächste Woche sein werde).

    Rainer

     

    0
    Comment actions Permalink
  • Sinan Sağlam

    Okay, danke!

    Komischerweise funktioniert das heute gar nicht mehr - habe eigentlich nichts an der App geändert.
    Es zeigt einfach Vorname Nachname (Datum) an, aber Status, Info und das array Nummer werden ignoriert und nie angezeigt.

     

    Kann es sein, dass Podio solche komplexen Calculation Felder irgendwann ignoriert?

    Hatte das schonmal, und da war es sogar deutlich weniger:

    if (@All of Gutscheincode.indexOf(@Gutscheincode) > -1) {
    "true";
    } else if (@Gutscheincode == null) {
    "-";
    } else {
    "<strong>### FALSE ### UNGÜLTIGER GUTSCHEIN ###</strong>";
    }

    Das ging eigentlich mal, aber ein paar Tage später ging es dann einfach nicht mehr.

    0
    Comment actions Permalink
  • Rainer Grabowski

    Hi Sinan,

    das Calculation-Feld ist nicht komplex. Ich habe Calculations, mit fast 1000 Zeilen, vielfach verschachtelten IF und Loops und ... die 10.000e Einträge durchsuchen.

    Wenn Status, Info und Nummer nicht angezeigt werden, ist das Ergebnis der jeweiligen IFs == falsch und es wird der Wert von ELSE durchgereicht == ""  in den ersten beiden IFs und nameimkalender im 3. IF.  Da aber die Variable nameimkalender Werte enthält, die nicht IF-bedingt sind (Vorname, Nachname, Datum) werden diese 3 Werte auf jeden Fall immer anzeigt. 

    Prüf die Calculation doch mal in einem Eintrag, in dem Status == "STORNO" und @Info (wird im Kalender angezeigt) != null und auch im verbundenen Eintrag sicher ein Wert im Feld Nummer eingetragen ist. 

    0
    Comment actions Permalink

Please sign in to leave a comment.

Powered by Zendesk