Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Pdf report - if(Wieviele >= 1, 'display:none', '')">

  • NataschaWe2006
  • NataschaWe2006's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
3 years 4 months ago #208620 by NataschaWe2006
Hallo liebe Helfer im Forum,

bitte helft mir!! Ich programmiere nun schon lange an einem pdf report rum. Darin habe ich mehrere Zeilen, die in bestimmten Fällen nicht angezeigt werden sollen. Im Großen und Ganzen funktioniert das auch schon ganz gut, aber für den Fall, dass ich größer und kleiner (</>) Zeichen einsetzen will, bekomme ich immer Schwierigkeiten. Zunächst funktioniert der Befehl und ich bekomme auch keine Logikfehler angezeigt. Nach erneutem Speichern des Reports wird meine Angabe dann aber automatisch geändert und es taucht eine Fehlermeldung auf.
Dabei habe ich schon mehrere Varianten ausprobiert, mit Leerzeichen/ ohne Leerzeichen vor den > mit >=, etc.

Erst wird es mir richtig angezeigt: if(Wieviele >= 1, 'display:none', '')"
und nach weiterem Zwischenspeichern so: if(Wieviele & gt ; 2, 'display:none', '')", if(Wieviele & gt ; 3, 'display:none', '')"... (s. Screenshot)

Was mache ich falsch?? Wie müsste der Befehl korrekt lauten??

Vielen Dank im Voraus!!
Natascha
Attachments:
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 4 months ago #208628 by Joffm
Hallo, Natascha,
bist Du auch mit dieser Studie beschäftigt?

Gut, Dein Screenshot sagt jetzt nicht allzuviel, da in dieser Ansicht die HTML-Teile nicht angezeigt werden.

Ich habe einmal diese beiden Beispiele für einen "größer/kleiner"-Vergleich:
1. Eine normale Textzeile mit einem IF-Vergleich:
Ich kenne {F2_SQ001.question}: {if(F2_SQ001 >= 2,'sehr gut','weniger gut')}

2. Diesen IF-Vergleich innerhalb eines HTML-tags (hier soll also die Tabellenzeile ausgeblendent werden)
<tr style="{if(F2_SQ001 >= 3,'display:none','')}">

Ergebnis: Das erste läuft normal durch, das zweite wird umgewandelt.
Warum?
<tr style="{if(F2_SQ001 >= 3,'display:none','')}">
Der Editor kommt durch das vermeintliche HTML-Zeichen durcheinander und wandelt es in eine Entity um.

Abhilfe? Benutze die "verbalen" Ungleichheitszeichen:
ge: greater equal ">="
gt: greater than ">"
lt: less than "<"
le: less equal "<="

<tr style="{if(F2_SQ001 ge 3,'display:none','')}">

Hier siehst Du das Ergebnis in einem Report.

Ich kenne "Artful Aardvark"; daher wird die Zeile in der Matrix angezeigt.


Ich kenne "Artful Aardvark" nicht besonders; daher wird die Zeile in der Matrix nicht angezeigt.


Ich hatte kein anderes Beispiel, das ich hier verwursten konnte.

Aber etwas anderes:
Sehe ich das richtig in Deinem screenshot?
{if(Wieviele >2,'display:none','')}
Muss das nicht genau umgekehrt sein?
Wenn mehr als 2 soll der Standort doch ausgedruckt werden, sonst nicht.

Aber wie gesagt, in dieser Deiner Darstellung sieht man nicht so viel.
Der Quellcode des entsprechenden Teils des Reports wäre besser gewesen.

Bis dann
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • NataschaWe2006
  • NataschaWe2006's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
3 years 4 months ago #208748 by NataschaWe2006
Replied by NataschaWe2006 on topic Pdf report - if(Wieviele >= 1, 'display:none', '')">
Lieber Joffm,

ja, ich bin auch mit DIESER Studie beschäftigt ;-) Allerdings eigentlich ausschließlich mit dem Report, der mich allerdings inzwischen auch schon seit einiger Zeit auf Trab hält. Wir sind halt Neulinge, was die Arbeit mit Limesurvey und auch das "Programmieren" an sich angeht, deshalb stellt das ganze eine ziemliche Herausforderung dar.

Vielen Dank für die wie immer sehr hilfreiche und schnelle Antwort. Mit den verbalen Angaben habe ich das Problem gelöst bekommen! Prima! :)

Nun stehe ich jedoch vor dem nächsten. Und zwar:

<tr style="{if(Planung.NAOK equal A3,
'display:none','')}">

<td style="font-size:9pt" width="60%">Welche Akteure sind an dieser anderweitig institutionalisierten Form der Zusammenarbeit beteiligt?</td>
<td style="text-align:center;font-size:9pt" width="40%">
<p>{list(AndereKooperationsfo_SQ001.shown, AndereKooperationsfo_SQ002.shown, AndereKooperationsfo_SQ003.shown, AndereKooperationsfo_SQ004.shown, AndereKooperationsfo_SQ005.shown, AndereKooperationsfo_SQ006.shown, AndereKooperationsfo_SQ007.shown, AndereKooperationsfo_SQ008.shown, AndereKooperationsfo_SQ009.shown, AndereKooperationsfo_SQ010.shown, AndereKooperationsfo_SQ011.shown, AndereKooperationsfo_SQ012.shown, AndereKooperationsfo_SQ013.shown, AndereKooperationsfo_SQ014.shown)}</p>

<p>{AndereKooperationsfo_other}</p>
</td>
</tr>
<tr>
<td style="font-size:9pt" width="60%">Planung einer Jugenberfusagentur:</td>
<td style="text-align:center;font-size:9pt" width="40%">
<p>{Planung.shown}</p>
</td>
</tr>
<tr style="{if(Planung.NAOK equal A3,
'display:none','')}">
<td style="font-size:9pt" width="60%">Die Einrichtung einer Jugendberufsagentur ist geplant. Neben Agentur für Arbeit, Jobcenter und dem örtlichen Träger der öffentlichen Jugendhilfe werden folgende Kooperationspartner in die strategische Planung einbezogen sein:</td>
<td style="text-align:center;font-size:9pt" width="40%">
<p>{list(Beteiligung_SQ001.shown, Beteiligung_SQ004.shown, Beteiligung_SQ005.shown, Beteiligung_SQ006.shown, Beteiligung_SQ007.shown, Beteiligung_SQ008.shown, Beteiligung_SQ009.shown, Beteiligung_SQ010.shown, Beteiligung_SQ011.shown, Beteiligung_SQ012.shown)}</p>

<p>{Beteiligung_other}</p>
</td>
</tr>
<tr style="{if(Planung.NAOK equal A3,
'display:none','')}">
<td style="font-size:9pt" width="60%">{Voraussichtlich.question}</td>
<td style="text-align:center;font-size:9pt" width="40%">{Voraussichtlich.shown}</td>
</tr>

Und zwar geht es um die jeweils markierten Angaben, die für den Fall "A3" ausgeblendet werden sollen (Variable siehe ANhang).

Ich habe es auch mit
<tr style="{if(Planung.NAOK == A3,
'display:none','')}">
<tr style="{if(Planung.NAOK =="A3",
'display:none','')}">

versucht.

Die Version mit Anführungszeichen hat m.E. dabei nach dem ersten Speichern funktioniert. Wurde dann aber vom Editor wieder automatisch verändert.
Da du vermutlich wesentlich schneller Abhilfe schaffen kannst, als wenn ich sämtliche mir sinnvoll erscheinende Versionen durchprobiere, wollte ich dich noch einmal um Hilfe bitten.

Vielen Dank im Voraus für die tolle Unterstützung!
Viele Grüße
Natascha
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 4 months ago - 3 years 4 months ago #208750 by Joffm
Hallo, Natascha,

ich habe nur die erste Zeile angeschaut

<tr style="{if(Planung.NAOK equal A3,'display:none','')}">

Nein, so geht das nicht.
In dem kleinen Stück sind zwei Fehler.
1. "equal". Der Operator heißt "eq".
Vielleicht gab es ein Missverständnis mit meiner Formulierung. Ich wollte nur ausdrücken, was die se Operatoren-Codes (lt, le, eq, ge, gt) bedeuten.
manual.limesurvey.org/ExpressionScript_-_Presentation#Operators , Punkt 5 und 6.

2. "A3" ist ein Text und keine Zahl; daher müssen hier Anführungszeichen gesetzt werden. Und aus diesem - und auch dem anderen Grund (spätere statistische Berechnungen) - predige ich "Nehmt numerische Codes".

Diese erste Zeile muss also auf jeden Fall heißen:
<tr style="{if(Planung.NAOK eq 'A3','display:none','')}">
Ich denke, hier könnte man auch "==" benutzen, ohne dass der Editor seine eigenen Ideen hat; das Problem sind ja die spitzen Klammern.

Und jetzt habe ich doch noch bis zum Schluss gelesen.
<tr style="{if(Planung.NAOK =="A3", 'display:none','')}">
Hier ist ja schon fast alles richtig; hier gibt es nur noch die "nested" Anführungszeichen - doppelte innerhalb von doppelten. Das geht auch nicht.
style="{if(Planung.NAOK =="A3", 'display:none','')}">

Das geht auch nicht. Anführungen müssen immer abwechseln.

Joffm

Und hier einmal ein bisschen Anschauungsmaterial.

File Attachment:

File Name: limesurvey...6331.lss
File Size:80 KB

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 years 4 months ago by Joffm.
The following user(s) said Thank You: NataschaWe2006
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 4 months ago #208773 by Joffm
Und jetzt kommt noch ein Zusatz.

Wollt Ihr den Report eigentlich nur anzeigen, oder auch nach dem Beenden als Download anbieten?
Falls das Zweite wird ein Styling wie
<tr style="{if(Planung.NAOK eq 'A3','display:none','')}">
nicht funktionieren. Im pdf Viewer werden diese Zeilen trotzdem angezeigt.
Zumindest bei mir. Falls dies bei Euch nicht passiert, vergesst das Folgende!

Hier in der Bildschirmansicht (die unbekannten Tiere werden nicht angezeigt):


und hier das pdf (sie sind wieder da):



Ich habe mir einmal damit geholfen, indem ich die Zeilen dann HTML-mäßig auskommentiert habe, etwa so
{if(Planung.NAOK eq "A3","<!--","")}
und unterhalb
{if(Planung.NAOK eq "A3","-->","")}

Das klappt aber auch nicht so supergut, da man es nicht innerhalb z.B. einer <table>-Struktur anwenden kann; nur für die gesamte Tabelle.

Als nächsten Schritt vielleicht einmal die Beispiele von tcpdf anschauen (darauf beruht dieses plugin ja)
tcpdf.org/examples/

oder mit limeMpdf herumprobieren.

Viel Erfolg
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 4 months ago #208776 by Joffm
Ich glaube, mein letzter "Zusatz" war nicht relevant.

Ich hatte noch ein anderes Tool aktiviert.
Dadurch wurde der eigentliche pdf-Report geändert.

Es läuft also wohl alles wie gewünscht.

Sorry für die Konfusion

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose