Hier informieren wir Sie über die jüngsten Entwicklungen in GESS Q.!
Änderungen mit diesem Zeichen können bei existierenden Studien zu abweichenden Verhaltensweisen führen.
12.11.2020: Revision 2850
GESS Q. Allgemein
Lizenzierung lokaler Installationen mit selbst generierten Identifiern.
Projekte dürfen fortan nicht ‘log’ heißen.
Automatische ChangeLogs (nur wenn lizenziert) und individuelle Loggingfunktionen:
// Skriptparameter für ChangeLogs:
ChangeLogCondition = BOOL;
// Actionbefehl für individuelles Logging
WriteLogfile("FILENAME", "COLUMN1", "COLUMN2", ...);
// Javascript-Funktion für individuelles Logging aus Screens heraus
QDot.logger.send('FILENAME', ['COLUMN1', 'COLUMN2', ...]);
// Format der Logeinträge:
TIMESTAMP;RESPID;CASEID;SCREEN;MODE;INTERVIEWER;COLUMN1;COLUMN2;...
Serverinstallationen speichern Logs in PostgreSQL Tabellen, lokale Installationen in Dateiform in SURVEY/log/. Sie werden bei Datenuploads zum Server mitübertragen, bei Projektlöschung oder ‑Resets gelöscht und sind in der Benutzeroberfläche unter Data/Export herunterladbar. Beim ChangeLogging können Variablen mittels HTML Attribut qnochangelog ausgeschlossen werden. Es ist am zuständigen Formularfeld zu notieren. Also z.B. direkt am Eingabefeld bei offenen Nennungen oder den zuständigen <input> Tags bei geschlossenen Fragen.
Im Rahmen der Passwortseite Ausführung des StartActionBlocks.
Für Co-Browsing ist kein Admin-User notwendig. Für Zuschauer sind alle interaktiven Funktionalitäten des Screens deaktiviert. Außerdem werden keine Actionblöcke ausgeführt.
infomail infomailrecipient infomailsubject können jetzt bei Bedarf über die Variablenliste (Colmap) exportiert werden.
Template Platzhalter bis @tt20 erweitert.
Flackereffekt bei der Tastatureingabe per Javascript deaktivierbar:
QDot.keyboard.buttonEffect = false;
Buttons geschlossener Fragen de-/aktivierbar über Javascript:
// Javascript Funktionen zum de-/aktivieren:
QDot.buttons.deactivate(QNAME, LABEL[, ITEM][, LABELGROUP]);
QDot.buttons.activate(QNAME, LABEL[, ITEM][, LABELGROUP]);
// CSS Class bei deaktivierten Zellen:
.qbuttondeactivated{ }
Dimension von Eingabefeldern direkt an Antwortkategorien analog zu OpenQ über Skriptparameter einstellbar:
Neuer Skriptparameter TemplatesOnFinish = yes|no; definiert, ob Templateplatzhalter auf dem Schlussscreen ersetzt werden sollen. Voreinstellung: no
GESS LiveTabs im Bereich Reporting integriert. Freie Tabellierung nach Belieben mit dem stets aktuellen Datenbestand. Die Verfügbarkeit von LiveTabs lässt sich individuell je Benutzer konfigurieren. Die Verbindung zum LiveTabs Server erfolgt über die Server-Konfigurationsdatei:
liveTabsUrl=https://SERVER/livetabs/#login
Zusätzlich ist auf der Seite von LiveTabs der API-Key eines Benutzers mit administrativen Rechten zu hinterlegen.
Bereich Reporting benutzerfreundlicher gestaltet. Weniger Klicks und verständlichere Bezeichnungen für Außenstehende.
Mehr Prüfungen und ScriptCheck Meldungen für ReadDataFile().
labels copy GRIDQ.LABELGRUPPE für Antwortmöglichkeiten in Gridfragen.
Bei Actionbefehl add() ist die Angabe des Ziel-Arrays nun auch über ein VarArray möglich.
Neuer HTML Skriptparameter HTML{ javascriptAutoOpenLabel = yes|no; }; definiert, ob bei Antwortmöglichkeiten mit offenen Textfeldern automatisch das zugehörige Häkchen gesteuert wird. Voreinstellung: no
Benutzeroberfläche: Bei Quotenverwaltung Häkchen zum Wählen und Abwählen aller Quoten ergänzt.
Randomisierung für Screens innerhalb ihrer row/column Struktur analog zu Labelgruppierungen. Zu randomisierende Fragen werden mit dem Attribut srandom, row/column Strukturen mit random gekennzeichnet. Im folgenden Beispiel werden die Zeilen 2 und 3 randomisiert sowie für sich genommen ihr jeweiliger Zeileninhalt:
TextQ t1;
TextQ t2; srandom;
TextQ t3; srandom;
TextQ t4; srandom;
TextQ t5; srandom;
screen s = column(
t1
row(t2 t3) random
row(t4 t5) random
);
Sortierung für Screens innerhalb ihrer row/column Struktur analog zu Labelgruppierungen. Fragen und row/column Strukturen können mit SortId und der Screen selbst sowie seine row/column Strukturen mit SortOrder versehen werden. Im folgenden Beispiel wird die Anwendung veranschaulicht:
Javascript Audio- und Videoplayer (QDot.audioplayer QDot.videoplayer) lassen sich jeweils mehrmals pro Screen einbauen.
Bugfixes: — randomid jsessionid uniquekey aus Datenexport entfernt. — Requestlogging: Passwörter bei externen API Zugriffen entfernt. — Enthaltungsbutton bei grafischer NumQ korrigiert. — @insert() geht nun auch innerhalb von jshandler. — ext1-ext30 werden nach Unterbrechungen auch aus URL gelesen (vorher nur 21–30). — Passwortcheck war bei MultiQs ohne PW fehlerhaft. — Cookie-Prüfung nur im Single-Mode und auch bei NEXT Request nach Timeout. — Statusänderung bei Fällen erzwingen Timeout. — Besseres Fehlerhandling bei NEXT Requests, wenn Fall mittlerweile nicht mehr zugänglich. — ResetOnCmpl() kam in Zusammenhang mit WriteRescueData zu oft. — Start-Menü: Zeichenbeschränkung für ID und Defines aufgehoben. — Remove HTML in der Variablenbeschreibung verbessert. — PasswdQ hat jetzt die korrekte CSS Class passwdq. — Korrekter SMTP Date Header bei Mailversand. — Die Syntax innerhalb von Screendefinitionen ignoriert Groß-/Kleinschreibung.
GESS Q. im CATI
Nachbearbeitung: Auch wenn Fälle nicht als Complete enden. Übermittelte CATI-Navigations-Events gefixed. Kein Co-Browsing, keine Ausführung von InitActionBlöcken.
Kleinere Korrekturen bei internen Abläufen.
Verbesserte Fehlermeldungen.
06.04.2020: Revision 2812
GESS Q. Allgemein
Größerer Wertebereich der caseid (technisch: von Integer auf Long).
StackedBackNavigation vorerst deaktiviert.
Kleinere Optimierungen an den standard Reporting-Tabellen.
Performanceoptimierung bei OPN Export, wenn man respid statt caseid anfordert.
Systemvariablen haben Beschriftungen für den Export erhalten.
Die Systemvariablen _randomid _jsessionid _uniquekey _resume wurden aus Exporten entfernt.
Einschränkung welche Variablen mit QDot.jsonData aus HTML Screens änderbar sind:
Computes können mit dem Attribut untranslatable versehen.
Bugfixes: — BrowserNavMsg ist jetzt global und wurde bei Übersetzungen nicht immer korrekt eingeblendet. — Datenexport: Überschüssiges “||” im Text von Grids und NumQ wenn nur Text oder Titel existierten. — Backup-Downloads werden jetzt als .qp Daten (statt .zip) ausgeliefert. — IN-Prüfsyntax mit Klammern führte zu einem Syntaxfehler: 1 in [1:3]. — In vergleichenden Bedingungen führte die Verwendung von VarArray zu einem Laufzeitfehler. — Inhalte von Gridfragen bei case2json() ergänzt. — Abschließendes Semikolon je Zeile bei CSV Exporten von DatabaseConnection entfernt. — Passwortabfrageseite für Zugang zum Fragebogen enthielt einen Fehler. — ASCII Export der Heatplotterkoordinaten.
GESS Q. Android
Anpassungen für Android 9.
GESS Q. im CATI
Neue CATI-API integriert.
10.10.2019: Revision 2778
GESS Q. Allgemein
Die Stichprobenverwaltung (ID+Preload) wurde um eine optionale Info zum aktiven Modus erweitert. Mögliche Werte sind undefiniert (leer) oder CAWI|CAPI|CATI. Wenn definiert gibt diese Information in Mixed-Mode Szenarien vor, welcher Modus der aktiven Befragung dient. Zugriffe über andere Modi werden mit folgender Meldung abgewiesen:
MixedModeMsg = "This case is currently not editable in this survey mode.";
Änderungen am aktiven Modus können über die Administrationsoberfläche vorgenommen werden. Ggf. aktive Fälle werden hierbei unterbrochen.
Die Stichprobenverwaltung (ID+Preload) wurde um eine optionale Info zum aktiven Interviewer erweitert. Mögliche Werte sind undefiniert (leer) oder IDs von Interviewern, die dem Projekt angehören. Wenn definiert gibt diese Information im CAPI sample Modus vor, welcher Interviewer den Fall bearbeiten kann. Zugriffe anderer Interviewer werden mit folgender Meldung abgewiesen:
InvalidInterviewerMsg = "This case is assigned to another interviewer.";
Die Zuweisung von Interviewern auf Fälle kann über die Administrationsoberfläche verändert werden.
Die Stichprobenverwaltung (ID+Preload) wurde um ein optionales Zugangspasswort erweitert. Mögliche Werte sind undefiniert (leer) oder beliebige Zeichenfolgen, die verschlüsselt abgelegt werden. Wenn definiert wird das jeweilige Passwort vor Betreten des Falls abgefragt. Der vorgeschaltete Prüfscreen enthält 3 Textbausteine (Titelzeile, Button und Fehlermeldung bei Falscheingabe), die individuell angepasst werden können:
EnterPasswordMsg="Please enter your password to access your personal questionnaire.";
EnterPasswordButton="OK";
BadPasswordMsg="Sorry, but this password is wrong.";
Aus dem Skript heraus steht ein neuer Compute- und ein neuer Actionbefehle zur Verfügung, um das Passwort überprüfen und ändern zu können:
checkPassword(TEXTVAR) // liefert 1 bei Übereinstimmung, sonst 0
setPassword("NEW_PW");
Beim CSV Upload der Stichprobe (ID+Preload) können optional Passwort, Modus und Interviewer (in der Reihenfolge) ergänzt werden. Leere Spalten entsprächen dem o.g. undefinierten Zustand und haben funktionell keine Bewandnis. Interviewer bzw. Modus und Interviewer können auch ganz weggelassen werden. Die vollständige CSV Kopfzeile sähe wie folgt aus:
ID;T;PW;MODE;INT;preload1;preload2;...
Passwort und Modus können wahlweise überschrieben werden.
Aus Schutz vor Datenverlust dürfen Demoversionen von GESS Q. keine angefangen Fälle mehr fortsetzen. Bei dem Versuch kommt es zu folgender Fehlermeldung:
DemoversionMsg = "This execution is not possible due to a missing license.";
Erweiterungen beim Logging im Rahmen von Lizenzierung, Benutzerverwaltung sowie dem Löschen und Wiederherstellen von Datensätzen.
Erweiterung der var.inc um Strukturinformationen zu Variablen (siehe FORHEADER, FORCOUNTS, FORMEANS, CHAPTER in GESStabs). Vor diesem Hintergrund gibt es ein neues Sprachelement Chapter, um Fragen und Variablen im Skript Kapiteln zuzuordnen:
Chapter [NAME] = "Überschrift des Kapitels";
// Fragen und Variablen
EndChapter [NAME];
Der optionale, technische NAME des Kapitels dient zur besseren Übersicht und um im Skriptcheck exaktere Fehlermeldungen ausgeben zu können.
Das Default Reporting nutzt die neuen HTML Charts in GESStabs (Min. GESStabs 5.1.3.5).
Über die var.inc lassen sich SPSS Exporte mit oder ohne Mehrfachnennungs- oder dichotome Variablen produzieren. Die alte Steuerung über #DEFINE wurde durch eine unabhängige Auswahl mittels Checkboxen abgelöst, die einen NOSPSS Eintrag in der var.inc vornimmt.
Visualisierung der Passwortstärke (während der Vergabe) in der Benutzerverwaltung.
Quoten akzeptieren negative Sollwerte.
Zeitmessungen (SCREEN.duration Variablen) werden zur besseren Übersicht gesammelt am Ende von Variablenliste, var.inc und Exporten ausgegeben.
Optionale Parameterliste an Macro Definition. Dient besserer Lesbarkeit und ist Voraussetzung für #domacro.
Spracherweiterung #domacro in Anlehnung an GESStabs:
#domacro MACRO P1LIST[; P2 P3 ... PX]
Ein zuvor definiertes Macro MACRO mit definierter Parameterliste wird gemäß Parameterliste P1LIST (mehrmals) verwendet. Optional können hinter einem Semikolon beliebig viele weitere, feste Parameter folgen:
ResetOnCmpl setzt Statistik, Quoten und ID Status zurück.
Bugfixes: — Rückmeldung bei problematischen CSV Stichproben-Uploads verbessert — Cookies für exklusiven Fragebogenzugriff zu Tomcat8+ kompatibel gemacht — Berücksichtigung von NumQ k.A. Werten beim PDF Druck — In der Demoversion gemachte Fälle werden vollständig zurückgesetzt — Die Fallnummer war im Rahmen von Data/Export im Wertebereich beschränkt — Anführungszeichen um Textinhalte gingen beim Datenexport verloren
GESS Q. CAPI
Der CAPI Client erlaubt eine optionale Interviewer-Anmeldung mit ihrer Kennung (ID). Zugriff auf und Synchronisation von Projekten erfolgt dann nur noch für solche, die explizit an ihn zugewiesen sind. Bei unterbrochenen Fällen wird der Datenstand des Servers (einmalig) mit an den Client übertragen, so dass fliegende Moduswechsel möglich sind. Bei CAPI sample Projekten greift die Zugriffssteuerung auch auf Fallebene. Der Interviewer kann nur speziell ihm oder niemandem zugewiesene Fälle bearbeiten.
Bei Datenuploads aus CAPI sample Projekten werden ältere Datenstände serverseitig überschrieben und der Fall automatisch auf Modus CAWI geändert.
Es ist möglich den Versand einer E‑Mail beim CAPI Upload auszulösen. So kann einem Befragten auf Wunsch z.B. ein Zugangslink übermittelt werden, um einen angefangen Fall online selbst zu vervollständigen. Der Versand selbst wird bei Erhalt des Uploads vom Server ausgeführt. Das zum Versand verwendete Konto für diesen speziellen Versand wird im Skript mit InfoMailbox = MAILBOX; festgelegt:
Sobald der Actionbefehl SendInfomailOnUpload(); ausgeführt wird, wird der Versand eingeplant und bei Verwirklichung zurückgesetzt. Tatsächlich versendet wird die E‑Mail nur, wenn auch entsprechende Inhalte definiert wurden. Dies geschieht über die drei internen Textvariablen _infomailrecipient, _infomailsubject und _infomail, die aus dem Fragebogenskript heraus zu belegen sind und den Empfänger, den Betreff und den Inhalt der E‑Mail abbilden (HTML wird unterstützt). Im Menü Native Data gibt es eine triviale Vorschau der Infomail und es kann bei Bedarf ein erneuter Versand angestoßen werden. Zum Beispiel nachdem eine falsch in CAPI erfasste Empfänger-E-Mailadresse durch Editieren des Datensatzes korrigiert wurde.
Neue Actionbefehle ResetCapiUpload() und ResetInfomailOnUpload(), die einen zuvor eingeplanten Upload oder Versand einer Infomail rückgängig machen. Das ist z.B. nötig, wenn ein Fall vor seinem bereits geplanten Upload doch nochmal im CAPI Client geöffnet und schließlich mich anderen Rahmenbedingungen wieder verlassen wird.
20.05.2019: Revision 2720
GESS Q. Allgemein
Benutzeroberfläche prüft und meldet GESStabs Lizenzfehler bei SPSS Export/Online-Tabellen.
Ausführlicheres Logging fehlerhafter Anmeldeversuche an der Benutzeroberfläche.
Studienlogs rollieren (max. 5MB, First In First Out).
Serverlog rolliert (max. 25MB, First In First Out).
Mehrere Star-Ratings pro Screen nutzbar.
Überwachung der JSON Quelldateien bei Datalist: Autom. Cache-Reload bei Änderungen.
Labellisten an Compute definierbar. Sie werden an alle Folgeprozesse weitergereicht.
Statt Fallnummer wahlweise Ausgabe der Teilnehmer-ID bei OPN-Exporten in der Benutzeroberfläche.
Bugfixes: — Überarbeitung der Fehlerbehandlung sowie Logging bei defekten, internen JSON Systemdateien. — Alte SingleQ Renderklasse belegte bei input=no Antwortkategorien mit Labelcode 0 vor.
GESS Q. im GESS Cati
Das Attribut export ist an Adressvariablen wieder erlaubt.
Automatische Generierung von Skriptvariablen für PreQuoten-Zellen sowie Adressvariablen (samt Belabelung) aus dem CATI. Die Nutzung von CatiAddressData ist nur noch nötig, um Variablen zusätzlich exportierbar zu machen. Labellisten müssen zwangsläufig vom CATI aus bereitgestellt werden. Zu jeder PreQuote wird außerdem eine QuotaGroup erzeugt, die sämtliche bekannten Quotenzellen umfasst. Die Namensgebungen lauten wie folgt:
Bugfixes: — Rückkehr ins Interview (BackbuttonOnFinish) war während Nachbearbeitung nicht möglich. — Fehlerbehandlung bei Studienkopplung, wenn Zielstudie gar nicht existiert. — Beim Übergang zur Nachbearbeitung werden keine Backupdatensätze mehr angelegt (cmpl_).
04.04.2019: Revision 2697
GESS Q. Allgemein
Authentifizierungen mit ApiAccessKey überschreiben bereits vorhandene Sessions.
Aktive Sessions werden nur noch durch manuelle Anmeldung an der Benutzeroberfläche erzeugt.
jsHandler wird jetzt vor SingleQAutosubmit ausgeführt.
Im Online-Reporting können GESStabs Tabellen als OFFICEEXPORT angeboten werden.
Neuer externer Request zur Abfrage von Server- und Versionsinfos: &action=serverinfo.
Neuer Skriptparameter BackbuttonOnFinish = yes/no (Default: no) erlaubt vom Finishscreen aus einen Rücksprung ins Interview, wobei _finished auf 0 zurückgesetzt wird. Technisch gesehen verhält sich der Rücksprung wie eine Wiederaufnahme beim letzten Screen unter Ausführung aller üblicherweise beteiligten Actionblöcke.
Neue Systemvariable _revivals. Sagt aus, wie oft ein abgeschl. Interview “wiederbelebt” wurde.
Neues Attribut followup für Blöcke. Definiert den Block ohne weitere Berücksichtigung in main als Nachbefragungsteil. Nach jedem Interviewende wird der Nachbefragungsteil durchlaufen. Im Nachbefragungsteil…
sind alle erdenklichen Filter möglich.
enthält _finished bereits den Finishcode der Hauptbefragung.
kann der Finishcode durch assert mit exit überschrieben werden.
kann mittels Zurückbutton an den letzten Screen der Hauptbefragung zurückgegangen werden (_finished wird dabei auf 0 zurückgesetzt).
BackbuttonOnFinish in Kombination mit einem Nachbefragungsteil springt zuerst in selbigen und setzt dabei den Finishcodes auf den finalen Wert der Hauptbefragung zurück.
Neuer Skriptparameter StackedBackNavigation = yes/no (Default: no) ändert die Zurücknavigation von einem linearen Verfahren gemäß Abfolge der Screens in main auf ein Stapelverfahren. Dabei wird immer zum tatsächlich letzten vorgelegten Screen zurückgekehrt. Sprünge mittels setNext() oder setCurrentScreen() werden so auch “zurückgesprungen”. Das Stapelverfahren soll längerfristig das lineare Verfahren ablösen. Eine Umstellung ist allerdings nicht vollständig abwärtskompatibel, da derzeit noch nicht alle ActionBlöcke während der Zurücknavigation ausgeführt werden.
In den Rohdaten gibt es 2 neue Informationen:
_screenhistory: Schlichte Abfolge aller vorgelegten Screens (mit Wiedervorlagen durch Pausibilitätsprüfungen/Eingabezwängen).
_screenstack: Ein Stapel der vorgelegten Screens, der beim (Vor-/Zurück-)Navigieren wächst/schrumpft (ohne Wiedervorlagen durch Pausibilitätsprüfungen/Eingabezwängen).
Perspektivisch sollen diese Informationen auch in den CSV-basierten Datenexporten enthalten sein.
Im Übersetzungstool können bei Importen aus anderen Studien jetzt unterschiedliche Importstrategien gewählt werden:
IMPORT_FULLMATCH Übereinstimmung sowohl beim Text-Identifier als auch beim Ausgangstext.
IMPORT_KEYMATCH Nur Übereinstimmung beim Text-Identifier.
IMPORT_TEXTMATCH Nur Übereinstimmung beim Ausgangstext.
Beim Übersetzen und bei Importen wird vermerkt, wie die Übersetzung zustande gekommen ist. Die o.g. 3 Strategien finden sich so auch als Spalte “origin” in CSV Exporten wieder. Die entsprechende Spalte wird auch beim Re-Import erwartet, wird aber nicht berücksichtigt. Weitere Gründe können TRANSLATE und DUPLICATE_AUTOFILL sein.
Der Parameter jdbcDropAndCreateTables in der Q. Konfigurationsdatei entfällt: Zukünftig wird die Datenbank für das Übersetzungstool automatisch angelegt und bei Bedarf erweitert.
Bugfixes: — JS Initialisierung von open Feldern an Antwortkategorien. — Benutzerrecht Export sieht die Auswahlbox Native Data nicht mehr. — Fehlermeldungen bei fehlerhaften Zeilen während LRS/CSV Import optimiert.
GESS Q. im GESS Cati
cati.user wird in die 3. Spalte des OPN Exports geschrieben.
In die 2. Spalte des OPN Exports kann bei autom. Exporten wahlweise statt _caseid auch _respid gedruckt werden. Beim Downloadrequest wird dies durch Hinzufügen des optionalen URL Parameters &opnuserespid erreicht.
25.02.2019: Revision 2669
GESS Q. Allgemein
Bessere Performance und Fortschrittsanzeige bei Studientransfers (Upload, Import, Archivierung, …).
Zielsprachen im Übersetzungstool sind löschbar.
Minuszeichen (-) und Unterstriche (_) sind in Teilnehmer-IDs erlaubt.
Alte, ungenutzte Konfigurationsdateien gelöscht. Das betrifft:
Bei Studienuploads wird man selbst der Studie zugewiesen, falls man auf dem Zielsystem kein Admin ist.
Die Variablen ext11-ext30 werden standardmäßig mit exportiert.
Logging von Änderungen an Q. Nutzerkonten sowie Loginversuchen.
Das Request-Logging umfasst nunmehr bis zu 25000 Einträge.
Initialtexte mit @insert() für TextElement verhalten sich dynamisch. Die Dynamik der Einblendung geht allerdings nach Wiederaufnahmen verloren, wenn das saved Attribut verwendet wird. Zuweisungen mit setText() bleiben grundsätzlich fixe Momentaufnahmen.
Mit AutosubmitDelay = MS; kann eine Verzögerungszeit in Millisekunden eingestellt werden, bis das Autosubmit ausgelöst wird.
Duplikate in SortOrder werden ignoriert und zur Laufzeit als Fehler geloggt.
Tastatureingabe: Highlight-Effekt bei Selektion von SingleQ/MultiQ Häkchen geändert.
Bugfixes: — Leerzeilen in server.lst werden ignoriert. — BackActionBlock an Blöcken wurde nicht ausgeführt. — Kleinere Layoutoptimierungen in der Benutzeroberfläche. — Backup Checkbox bei Reset wieder eingebaut. — Gestörte Fragereihenfolge durch doppelte Vorkommnisse von Fragen in ungenutzten Blöcken korrigiert. — Diverse neue Fehlermeldungen und Warnungen im Skript-Check.
10.12.2018: Revision 2634
GESS Q. Allgemein
Bugfixes: — ralign() sortierte nicht korrekt.
GESS Q. im GESS Cati
PAPI Support nach Änderungen in #2618 wiederhergestellt.
Variable cati.user in Daten und Export aufgenommen.
Bugfixes: — Variablen cati.address.* wurden unter bestimmten Umständen noch in Datensätzen gespeichert.
23.11.2018: Revision 2618
GESS Q. Allgemein
Neuer Computebefehl: fits(QUOTAVAR). Liefert 1, wenn die Zählbedingung einer Quote zutrifft, sonst 0.
Aktualisierung der Server Request-Logs vor Download.
Bugfixes: — LRS und CSV Import im Übersetzungstool.
GESS Q. im GESS Cati
Keine Speicherung von CATI SysVars und Adressfeldern in Datensätzen (sind folglich nicht mehr exportierbar).
Die Verwendung von CATI SysVars in Skripten wurde als deprecated klassifiziert.
Adressfelder können über setText() geleert werden.
Die Tastatureingabe scrollt zu selektierten Antworten, falls diese außerhalb des sichtbaren Bildschirmausschnitts liegen (SingleQ/MultiQ).
Verbesserte Fehlerausgaben sowie Senden von adressbezogenen Logs zur CATI DB.
Bugfixes: — Fehlerhafte Requests zum Ändern von Adressfeldern, gaben Sessions nicht immer frei.
26.10.2018: Revision 2592
GESS Q. Allgemein
Beim Löschen einzelner Fälle wird der ID-Status automatisch auf fresh gesetzt. Beim Wiederherstellen eines gelöschten Falls wird der ID-Status rekonstruiert.
Von Q. geführte Logfiles auf Studien- und Serverebene sind über die Benutzeroberfläche herunterladbar (Studien-Konfigurationsseite / Server Status).
Die Studien-Konfigurationsseite wurde überarbeitet. Backups nur noch im Studienmanager erreichbar.
Neuer Actionbefehl: File2Text([first|last|all], TEXTELEMENT, "DATEI", "REGEX"[, "ENCODING"]). Liest Zeile(n) aus DATEI und speichert sie in TEXTELEMENT. Gelesen werden nur Zeilen, die vollständig dem regulären Ausdruck REGEX entsprechen, wobei der erste Parameter bestimmt, ob nur die erste, die letzte oder alle passenden Zeilen übernommen werden. Die Zeichenkodierung der Datei wird automatisch bestimmt, kann bei Bedarf aber auch mit dem optionalen Parameter ENCODING festgelegt werden. Reguläre Ausdrücke sowie Encodings sind in Java-Syntax anzugeben.
Actionbefehl erweitert: SetText(TEXTELEMENT, "TEXT"[, "REGEX"]). Mit dem neuen, optionalen regulären Ausdruck REGEX kann ein Teilbereich von TEXT ausgeschnitten werden. Grundsätzlich muss der reguläre Ausdruck den gesamten Text matchen. Runde Klammern innerhalb des Ausdrucks definieren Gruppen. Die erste Gruppe wird in TEXTELEMENT gespeichert. Reguläre Ausdrücke sind in Java-Syntax anzugeben.
TextElement te;
StartActionBlock = {
setText(te, "a;TREFFER;...", "[^;]*;([^;]*);.*");
// speichert "TREFFER" in te
};
Bugfixes: — Im Übersetzungstool zugewiesene Übersetzer können vollzählig entfernt werden.
GESS Q. Android
Neuer Actionbefehl: RunApp("APP-PACKAGE"[, "PNAME1", "PVALUE1", "PNAME2", "PVALUE2", ...]). Startet die externe Android App mit Packagepfad APP-PACKAGE. Optional können beliebig viele Startparameter bestehend aus Name und Wert (String) übergeben werden.
Die Tastatureingabe springt beim Laden der Seite nicht mehr automatisch zum ersten Eingabefokus.
Ergänzung eines Requests zur Kopplung von Q. und CATI Studien.
Quotenänderungen via Request: Negative Stände für Ist und Soll sind nicht mehr möglich. Quoten mit Beschreibungstexten werden nicht mehr generell als geändert zurückgeliefert.
Bugfixes: — In der API Kommunikation wurde ein Problem bei Zeichenkodierungen korrigert.
02.10.2018: Revision 2560
GESS Q. Allgemein
Die alte Colmap-Syntax für Zusatzvariablen im OPN Export wird nicht mehr unterstützt.
LRS-Download und Übersetzungstool verfügen über einen neuen, Excel-konformen CSV Export bzw. auch Import, welcher Spalten für Screen- und Fragezugehörigkeit sowie Zählindex enthält, um darüber sinnvoll sortieren zu können. Beim Export werden bereits vorhandene Übersetzungen mit ausgegeben. Beim Import werden leere Übersetzungen ignoriert. Im Übersetzungstool lassen sich außerdem Übersetzungen aus anderen Projekten der Datenbank importieren (nur durch Administratoren). Hierbei werden Übersetzungen übernommen, bei denen Textidentifier und Text der Quellsprache identisch sind.
Der Actionbefehl GetRemoteContentByUrl() wurde aus Sicherheitsgründen vorerst deaktiviert.
Die ext. URL Parameter ext1-ext30 werden bei jedem Fragebogenaufruf via Startlink neu gesetzt.
Webinterface in Deutsch verfügbar. Dies in der Konfigurationsdatei einstellbar guiLanguage=de.lang. Sprachlich ist es vollständig, aber noch nicht ins Layout eingepasst.
In der HTML Ausgabe: Ergänzung eines Attributs qname am <div>, welches die Frage selbst umgibt sowie eines Attributs checked an den grafischen Buttons, wenn sie in angeklicktem Zustand sind.
timesSent(NODE) kann sich auf Screens beziehen: timesSent(s1.screen), wenn s1 ein Screen ist.
javascript und css können an Screens definiert werden.
Erweiterung am PDF Druck von Fragebögen: Hilfetexte werden mit ausgegeben (keine Interviewer-Hilfetexte) und die Druckausgabe ist insgesamt deutlich flexibler geworden. Bisher konnte man über LaTex ein Rahmenlayout definieren und der Fragebogen selbst wurde fix an einem Platzhalter @questionnaire generiert. Ergänzend gibt es @screen, @question und @insert zum Einfügen einzelner Screens, Fragen oder bei Bedarf einzelner Werte bzw. Buttons:
Fehlermeldung bei fehlender Endemarkierung von QuotaGroup ergänzt.
Neuer Skriptbefehl HelptextPosition = template|text|title; (Default: template) stellt ein, wo Hilfetexte positioniert sein sollen. Alternativ zur bisherigen Regelung über das Template, lassen sich Hilfetexte um den Screentext oder um Titel der jeweiligen Fragen ausgeben. Letzteres ermöglicht mehrere Ausgaben auf einem Screen.
Neuer Skriptbefehl ExportBlacklist = "VAR1 VAR2 VARS*"; (Default: "") enthält durch Leerzeichen getrennte Variablennamen, die im Export nicht berücksichtigt werden sollen. Das Sternchen ist an beliebigen Stellen als Wildcard-Selektor im Variablennamen erlaubt.
Neuer Skriptbefehl ClearOnFlt = yes|no; (Default: yes) stellt ein, ob durch Filterung übersprungene Fragen gecleart werden.
Neuer Skriptbefehl InvalidStateMsg = ""; bei abgebrochenen Interviewstarts durch ungültigen ID Status. Der Default-Text ist identisch mit dem von InvalidIdMsg.
Neuer Skriptbefehl InvalidNavMsg = ""; (Default: "This navigation is not possible.") für unmögliche Navigationen (z.B. bei “Zurück” auf dem ersten Screen des Fragebogens).
Neuer Actionbefehl SetNext(SRC-SCREEN, TARGET) ersetzt SetNextScreen(), wobei TARGET nun auch ein Block sein kann. Außerdem wirkt der Befehl überschreibend, sodass von jedem SRC-SCREEN nur ein abgehender Sprung zur Zeit definiert sein kann.
Neuer Actionbefehl ResetOnCmpl() bewirkt einen Reset mit vollständige Löschung des Falls am Ende des Interviews oder beim nächsten Timeout.
Neuer Actionbefehl PostJson("URL"[, "JSON"]). Es wird ein Http-GET-Request an Zieladresse URL abgeschickt, welcher eine JSON Response mit Variablenbelegungen analog zu PerformHttpRequest erwartet. Bei Angabe des optionalen zweiten Parameters JSON wird die Anfrage als POST-Request gestellt und der Inhalt als JSON im Payload übermittelt.
Neuer Actionbefehl AESDecrypt(DATA, AES128KEY). Gegenstück zu AESEncrypt. DATA wird mit einem 128Bit AES128KEY entschlüsselt. Als Parameter sind TextElemente zu übergeben.
HTMLLabels lassen sich direkt an Fragen definieren.
Unterstützung der Datenbanken SQLite und HSQLDB alternativ zu PostgreSQL. Im Gegensatz zu PostgreSQL ist bei beiden kein Installationsaufwand für die DB selbst erforderlich. Sie können alternativ für das Übersetzungstool (hier nur HSQLDB) und für “storage” (DatabaseConnection, IDs, Preloads) eingesetzt werden, wobei PostgreSQL als Standard voreingestellt ist. Dabei neue Parameter in der Konfigurationsdatei:
jdbcUrl entfällt. Benutzername und Passwort werden nur für PostgreSQL verwendet. storagePath gilt hingegen nur für SQLite und HSQLDB.
Unterstützung von Textersatz mittels @insert in Actionbefehl PrintText.
Die Konfigurationsdatei ignoriert führende/abschließende Leerzeichen bei Einträgen.
Die Variablen _useragent und _ip (wenn aktiv) werden bei jedem Fragebogenaufruf aktualisiert.
Die Benutzeroberfläche ermöglicht eine Bearbeitung von Quoten Ist-Ständen inkl. Änderungs-Logging.
Das Trennzeichen im OPN Export ist aus den Zeichen # ; , | wählbar.
Server- und Studienlogging um diverse Einträge ergänzt.
logRequests wurde als Parameter der Konfigurationsdatei entfernt.
Bugfixes: — Bei Wiederaufnahmen aus Rettungsdatensätzen wurde die Unterbrechung nicht mitgezählt. — Im Skript definierte Mailbox wurde bei Fragebogenstart kontaktiert — führte ggf. zu Verzögerungen. — Submit-Handling optimiert: JSONData und onSubmit gingen nur bei grafischen Navigationsbuttons. — Textlabel und Hilfetexte an GNumQ ergänzt. — (Nicht Studien-)Ordner und Dateien waren im Webinterface als Studien wählbar. — Aufhebung von URL bedingten Längen-Limits im Rahmen der Benutzeroberfläche. — PerformHttpRequest Daten in UTF‑8 codiert. — PerformHttpRequest berücksichtigt @insert() (bei Ausführung des Requests). — Die Druckfunktion gibt Quoten korrekt aus. — Labellisten mit nur einem Labelcode 0. — Eine überschüssige Leerzeile in der Colmap wurde entfernt. — Mehrfache Klicks auf den Serverstatus verursachte zu häufiges, automatisches Neuladen der Seite.
Erweiterungen an GESS Q. CAPI Versionen (vorerst nur Windows)
Neue Benutzerrolle Interviewer ohne Zugriff auf das Webinterface.
Wahlweise lässt sich eine Stichprobe abarbeiten (hinterlegte IDs mit Preloads). Beim Starten von Interviews muss entsprechend eine der hinterlegten IDs vom Interviewer eingegeben werden. Serverseitig ist in den Studieneinstellung der Befragungsmodus von anonymous auf sample zu ändern.
In Modus anonymous wird ignoriert, ob die Studieneinstellung unbekannte IDs zulassen oder nicht.
In Modus sample wird der ID Status beim Löschen von Fällen über die Intervieweroberfläche auf fresh zurückgesetzt.
Neuer Actionbefehl PrepareCapiUpload() gibt aktuelles Interview für die Synchronisation frei.
Die Synchronisation des CAPI Clients erfolgt auf dessen Startseite. Hier wird die Erreichbarkeit des voreingestellten Servers visualisiert und sowohl das Hochladen freigegebener Datensätzen als auch das Aktualisieren von Fragebögen angeboten. Aktualisierungen werden serverseitig über die Versionsangabe in den Studieneinstellungen gesteuert. Alle vom Versionsstand des Clients abweichende Angaben werden berücksichtigt.
Die Synchronisation des CAPI Clients kann wahlweise vollautomatisch oder über expliziten Knopfdruck durch den Interviewer erfolgen. In den serverseitigen Studieneinstellungen ist die Synchronisationsart wählbar (auto oder manual).
Bei Synchronisationen erfolgt die Authentifizierung am Server über einen in den Studieneinstellungen hinterlegten API-Access-Key. Ein entsprechender Benutzer/Interviewer mit Zugriff auf die Studie muss auf dem Server vorhanden sein.
Requests im Rahmen von Synchronisationen oder beim Lizenzieren berücksichtigen Proxy-Einstellung aus der Konfigurationsdatei.
Darstellung von Studientitel und ‑version in den Intervieweroberflächen.
Dem Interviewer werden nur aktive Studien zur Bearbeitung angeboten.
Bei deaktiviertem Testmodus wird dieser in der Intervieweroberfläche ausgeblendet.
Bugfixes: — Doppelte Datenuploads im Konfliktzustand wurden vom Server ignoriert, aber positiv quittiert. — Wiederaufnahmen aus Rettungsdatensätzen korrigiert
GESS Q. Mailer
Erweiterungen an der Kommunikationsschnittstelle.
GESS Q. im GESS Cati
Während der Nachbearbeitung (PostEdit) bleibt das Interview aktiv bzw. wird bei Bedarf wieder aktiviert. Die Dauer der Nachbearbeitung wird zu _duration hinzugezählt und außerdem getrennt in _durationpp gespeichert.
Bei der Tastatureingabe verursachen Mausklicks kein automatisches Scrollen in der Seite mehr. Außerdem wird die für Browser typische Zurücknavigation durch Drücken der Taste Backspace unterdrückt.
Enter/Exit Screen Events werden von Q. aus ans CATI-System übermittelt.
Fehlermeldungen optimiert.
Bugfixes: — Bei der Nachbearbeitung inaktiver Fälle gingen manchmal andere Werte auf dem Screen verloren. — Bei Groups mit PreQuoten in den Bedingungen (Keine Wiederaufnahme/Nachbearbeitung). — Reload des CATI Headers bei Wiederaufnahmen. — Bei CoBrowse wurden überschüssige Navigation-Events gesendet.
21.02.2018: Revision 2426
GESS Q. Allgemein
Mittels Javascript-Struktur QDot.JsonData kann von jedem Screen aus jede Variable im Fragebogen belegt werden:
TextElement te = "";
Compute c = 0;
Array arr[5];
TextQ q0;
text = "
Bei Klick auf Button Werte für te, c und arr setzen; bei 'Weiter' übernommen:<br>
<input type='button' id='mybutton' value='Klick mich!'>
";
javascript = "
$('#mybutton').click(function(){
QDot.JsonData['te'] = 'Ein Text';
QDot.JsonData['c'] = '42';
QDot.JsonData['arr'] = '5 4 3 2 1';
$(this).attr('value', 'Danke');
});
";
Einstellungen bei initialem Studien-Upload fest voreingestellt
ImageMaps technisch etwas vereinfacht
Backslashes werden in Daten nicht mehr zu Slashes ersetzt
export Attribut für TextElement
untranslatable Attribut für TextElement und Group verhindert Übernahme der Texte in den Übersetzungsvorgang
Globale Actionblöcke (Back|Init|PreAssertion|Continue), die bei jeder Frage und vor den fragespezifischen Varianten ausgeführt werden:
Das Hinzufügen von Quoten (via Weboberfläche) wirkt integrativ; neue werden ergänzt, vorhandene überschrieben; Ist-Stände bleiben unangetastet
Die Quotendefinition ist herunterladbar; das Format entspricht dem des Hinzufügens
Unter Native data sind gelöschte Fälle getrennt sichtbar und wiederherstellbar; Quotenzählung und Statistik wird beim Wiederherstellen rekonstruiert
Unter Native data können durch Angabe einer Liste mit Fallnummern mehrere Datensätze am Stück gelöscht werden
Der Zuschauermodus ist auch über _respid im Request möglich
_caseid ist wieder numerisch
Bugfixes: — FROM Header bei sendMail() korrekt gesetzt — Datalist Verhalten bei IE-eigenem Leeren-Symbol sowie Layout in IE7 — Wertebereiche [] in setfilter und forEach() — Auslassen der Frage, wenn durch gridLabelRestrict alle Antwortkategorien gefiltert — Import von .qp Dateien auf Servern — Überflüssiges Semikolon am Ende von Zeilen des CSVINFILE entfernt Skriptcheck: — Fehler, wenn Actionblöcke an Screens definiert — Fehler, wenn Parameternamen in Makros nicht überschneidungsfrei sind
GESS Q. im GESS Cati
PreQuotaVar definiert implizit auch die Variable cati.address.[NAME]
PreQuotaVars lassen sich in QuotaGroups zusammenfassen und abfragen
Interviewabbruch mit entsprechender Meldung bei Verbindungsproblemen zur GESS Cati DB
Tastatureingabe: Halboffene Eingabefelder nur nach vorheriger Selektion des jeweiligen Labels anspringen
Quotenabruf unterstützt Sortierfunktionalitäten
Senden von Enter/Exit Screen Events direkt an die GESS Cati DB
Bugfixes und Fehlermeldungen: — set() mit Adressvariablen
14.12.2017: Revision 2362
GESS Q. Allgemein
random und format können als Frageattribut notiert werden. Während sich format ausschließlich auf konkrete Antworten bezieht, wirkt sich random auch auf Textzeilen und Antwortgruppen aus (einzige Ausnahme: splitcolumn). Gibt es sowohl das Frage- als auch Antwortattribute, wird das Frageattribut bevorzugt. Bei Gridfragen sind lediglich die Griditems betroffen. Ergänzend dazu gibt es ein neues Labelattribut fixed, mit dem sich Ausnahmen definieren lassen. So lässt sich nun auch labels copy verwenden, um z.B. Labellisten von SingleQs auf NumQs zu übernehmen:
Über einen einfachen Javascript-Aufruf lässt sich eine SingleQ als StarRating darstellen. Das folgende Beispiel würde die übliche Fragetabelle vollständig durch 5 horizontal Sterne ersetzen. Welche Bilder verwendet werden, lässt sich mittels CSS beeinflussen. Auf sinnvolle Labelcodes ohne Randomisierung etc. ist zu achten:
Der Actionbefehl exit(FCODE) wurde überarbeitet, so dass das Interviewende unmittelbar nach Abarbeitung des beinhaltenden Actionblocks eintritt
Die externen Parameter ext1-ext30 sind im ASCII Output nun 64-stellig
Zu jedem Login kann optional ein API-Access-Key definiert werden, der sich zur Authentifizierung bei externen POST-Request als URL-Parameter apiAccessKey verwenden lässt
Diverse kleinere Ergänzungen und Bugfixes in Benutzeroberfläche und Skript-Check
GESS Q. im GESS Cati
In CatiAddressData definierte Felder sind mit den Actionbefehlen set() und setText() editierbar (ändert die Adresse im CATI)
Die Tastatureingabe enableKeyboard = yes; unterstützt Grids mit mehreren Labelgruppen
12.10.2017: Revision 2324
GESS Q. Allgemein
Neue Feedback-Funktion. Ist sie mittels Skriptparameter Feedback = yes|no; aktiviert, wird auf Screens im Browser ein grafisches Feedback-Symbol eingeblendet, welches es Testern ermöglicht, direkt im Browser Feedback zu geben bzw. Fehler zu melden. Der Skripter erhält im Menü “Configure -> Feedback” Zugriff auf das gesammelte Feedback inkl. Screenshots und kann dieses dort abarbeiten, kommentieren und in eine druckbare Form bringen. Das Feedback-Tool wird von allen gängigen Browsers unterstützt. Technisch bedingt können die Screenshots je nach Template von der tatsächlichen Darstellung abweichen, da CSS nicht zu 100% unterstützt wird. Inhaltlich wird <body> abgebildet. Formate an übergeordneten HTML Tags können demnach nicht berücksichtigt werden.
#ifdef testmode
Feedback = yes;
#endif
Erweiterung der in Syntax mit vollständig ODER verknüpften Logiken:
[1:3] in [v1 v2 v3] // Neu: Verwendung einer Variablenliste
[1:5] in [arr[5]] // Neu: Verwendung von Arrays mit Index
[1 v1] in [v2] // Neu: Verwendung von Variablen in Werteliste
[1 v1] in [v2:v3] // Neu: Variablen definieren Wertebereich
// ... und alles durcheinander
[1 2:3 c1 a[1] a[c2] 10 a[4]:a[5]] in [arr c8 17:23]
Zu Gunsten schnellerer Einleseroutinen und weniger Speicherbedarfs wurden unnötige doppelte Anführungszeichen aus dem Rohdatenformat entfernt
HeatPlotter Support für Internet Explorer 7 + 8 und Ablage seiner Daten im CSVINFILE
Dem Skript-Check können optional Defines übergeben werden
Durch das Überschreiben der Javascript-Funktion QDot.onSubmit(), kann auf das Abschicken eines Screens reagiert werden. Hiermit lässt sich beispielsweise eine hintergründige Audioaufnahme innerhalb der Android App beim Verlassen eines Screens beenden. Liefert die Funktion false zurück, wird die Navigation (Vor/Zurück) abgebrochen:
_caseid ist im CSVINFILE jetzt numerisch und doppelte Anführungszeichen werden korrekt notiert statt durch einfache ersetzt
Neuer lokaler Skriptparameter: GridErrorType = all|nomissing; wählt, ob das Errorhighlighting bei Gridfragen nur bei Eingabezwängen (Default) oder bei sämtlichen assert-Anweisungen greift
Im Server-Status werden zusätzliche Versionsinfos dargestellt
Die Versionsnummern für Chrome und Firefox wurden für die interne Browsererkennung fortgeführt
Die Verwendung von ReadTextRessource innerhalb des ChangeLanguageActionBlock (Endlosschleife!) führt zu einer Fehlermeldung im Skript-Check
Bugfix: attempts bei Assertions funktionierte bei Screens mit mehreren Fragen nicht korrekt
Bugfix: Ausbesserung diverser kleiner Kinderkrankheiten rund um die Neuerungen aus Version 2270
Bugfix: Der ELSE-Zweig von Groups wird in der Druckausgabe berücksichtigt
GESS Q. Android
Kamera-Support für Android 7
Bugfix: Bei Javascript-initiierten Audioaufnahmen werden Doppelstarts ignoriert; ebenso Stop, wenn keine Aufnahme läuft
02.08.2017: Revision 2270
GESS Q. Allgemein
Die Sortierung in der Studienauswahl richtet sich per Default nach dem letzten Zugriffsdatum, so dass das aktuelle Working-Set stets oben zu finden ist
Die Nutzerzuordnung zu Studien ist jetzt alphabetisch und Admins sind gesondert aufgeführt
Neuer Reiter Backups und Archive im Survey Manager zum Durchsuchen und Download
Studieneinstellungen sind in Datei config.json zusammengefasst. Reportingeinstellungen in reporting.json. Alte Konfigurationsdateien werden nur noch zum initialen Herleiten der neuen JSON Varianten verwendet, sofern diese noch nicht existieren
Neue Studieneinstellung Tags: Definiert Suchbegriffe zum späteren Auffinden der Studie im Archiv
Neue Studieneinstellung Use cookies: Verhindert über Cookies, dass der selbe Fall gleichzeitig von zwei Browsern betreten wird
Neue Studieneinstellung Server: Verbindet eine Studie mit einem Server (kein wahlfreier Upload mehr)
Neue Studieneinstellung Version: Zur Versionierung des Projekts (bisher nur manuell)
In Studienmenü Languages können HTML Text-Switches je Sprachquelle definiert werden (ehem. languages.lst)
Die Statistik-Seite lässt sich nun vollständig über die Benutzeroberfläche konfigurieren
Die Sichtbarkeit von Menüpunkten des Reportings sowie Quoten lässt sich je Nutzer vollständig über die Benutzeroberfläche konfigurieren
Im Server-Status kann aktiven Fällen in einem Zuschauermodus beigetreten werden
Admins können die Erstellung eines Backups bei Resets unterdrücken
Admins können die Erstellung eines serverseitigen Backups bei Uploads unterdrücken
Neuer Skriptparameter saveOnBack = yes|no; Speichert Antworten in Screens bei Zurück-Navigation (Default: no)
Neuer Actionbefehl: clearScreen(SCREEN) löscht alle Fragen in Screen SCREEN
Neuer Actionbefehl: case2json(TEXTVAR) schreibt die derzeitigen Daten des aktuellen falls als JSON in TEXTVAR (nur in Vollversionen)
Neuer Actionbefehl: aesRandomKey(TEXTVAR) schreibt einen zufällig generierten AES Key und schreibt ihn in TEXTVAR
Neuer Actionbefehl: aesEncrypt(DATA, KEY) verschlüsselt DATA mittels AES Key KEY (AES/CBC/PKCS5Padding und Key=IV)
Neuer Actionbefehl: rsaEncrypt(DATA, PKMOD, PKEXP) verschlüsselt DATA mittels RSA Publick Key bestehend aus Modulus PKMOD und Exponent PKEXP. Im folgenden Beispiel wird der aktuelle Datensatz als JSON abgegriffen und mit AES Key generiert. Mit dem Key werden die Daten verschlüsselt. Anschließend wird der AES Key selbst mit einem öffentlichen RSA Schlüssel verschlüsselt
In der Configure-Quotenansicht lassen sich Quotenstände neu zählen (gemäß Datensätzen)
Das Studienauswahlfeld in der Benutzeroberfläche listet aktive und deaktivierte Studien nacheinander in zwei Gruppen und ist auf-/absteigend sortierbar (Default: Absteigend)
Bei Studienuploads ist (Ziel-)serverseitiges Backup per Häkchen deaktivierbar
Quotenbeschreibung über Benutzeroberfläche editierbar
Benutzeroberfläche ermöglicht Datei-Downloads vom GTC Ordner (z.B. a.tab)
“Zurück”-Navigation in Benutzeroberfläche überarbeitet
Bugfix: Lizenzierte Versionen prüfen im Testmode LFD Bereich
Bugfix: Kein GridError Highlighting ohne Eingabezwang
Bugfix: Ewiges “Pending” bei Abruf von GTC Tabellen, wenn keine Colmap vorhanden
Bugfix: Backups in den Backup-Ordner
Bugfix: For/-Each Loops in ActionBlöcken an Blöcken funktionierten nicht
10.03.2017: Revision 2192
GESS Q. Android
Support für Datalists ergänzt
“Device Ownership” kann per USB auch wieder entzogen werden (ab Android 5)
GESS Q. im WebCATI
Requests für Co-Browsing: Aktueller Screen / Vorheriger Screen inkl. Antworten
Globaler Parameter postEdit zusätzlich zu postEditable an Fragen, um diese in der Nachbearbeitungsphase eines Telefoninterviews vorgelegt zu bekommen. PostEdit stellt generell ein, welche Fragen vorgelegt werden sollen, mit postEditable kann man zusätzliche Fragen ergänzen:
postEdit = [all|none|opens];
Actionbefehle für Aufnahmen und Audiowiedergaben via Dialer:
Actionbefehl zum Versenden von E‑Mails. Voraussetzung ist ein bereits existierendes E‑Mail Postfach, welches E‑Mails SSL verschlüsselt mit Authentifizierung über SMTP verschickt
ReadDataFile versucht jetzt das Encoding der referenzierten Datei automatisch zu ermitteln
Neuer Fragetyp UploadQ ermöglicht dem Befragten das Hochladen von Dateien mit Typ- und Größenbeschränkungen, die später als MISC im Rahmen der offenen Antwortkategorien exportiert werden können. In diesem Rahmen gibt es außerdem den Prüfbefehl hasMediaUpload(OPENQ) für Bedingungen.
UploadQ welcome2;
title = "Bitte wählen Sie 'zip jar png jpg gif bmp jpeg tif pdf' mit maximal 2MB.";
maxfilesize = 2048; // in KB
extensions = "zip jar png jpg gif bmp jpeg tif pdf";
fileviolation = "Datei zu groß oder falsches Format.";
assert (hasMediaUpload(welcome2) eq 1) "Dateiupload fehlgeschlagen." attempts 3;
Neuer globaler Actionblock ChangeLanguageActionBlock. Wird nach jedem Lesen einer Sprachdatei ausgeführt. Achtung: Die Verwendung von readTextRessource() im ChangeLanguageActionBlock würde zu einer Endlosschleife führen.
Neue Systemvariable _languages. Enthält durch Leerzeichen getrennte Liste aller geladenen Sprachdateien in Einlesereihenfolge. Folgendes Beispiel würde stets die zuletzt geladene Sprachquelle in _languages vorhalten:
ChangeLanguageActionBlock = {
script("
var lang = \"@insert(_languages)\";
var tmp = lang.split(' ');
@save(_languages) = tmp[tmp.length-1];
");
};
Neues Setting maxNumBackups im Configfile, welches definiert wie viele Backups einer Studie maximal erstellt werden (Default: 3). Bei Überschreitung wird das jeweils älteste Backup gelöscht.
Bugfix: Ersetzung von HTML-notierten Anführungszeichen ” bei GESStabs Variables
Bugfix: Das Löschen einzelner Fälle löscht jetzt ebenfalls zugehörige Media-Daten
Analog zur Android App mit identischer Menüführung und interviewergerechten Oberflächen für CAPI Befragungen auf PCs und Notebooks mit Windows, Linux oder Apple Betriebssystemen.
GESS Q. Android
_idmode verfügbar
Fehlerkorrektur bei Geräten ohne Bluetooth (App startete nicht)
Serverseitige Duplikatsprüfung bei Datenuploads (Bestätigung statt Fehlermeldung)
Wahlweiser Upload von abgebrochenen Fällen
Unterstützung für französische App Bedienelemente
Autom. Lizenzrefresh bei App-Start (Internetverbindung erforderlich)
Anzeige Lizenznehmer auf Startseite (Firmenname)
Ab Android 5: App-Block benötigt Sonderrechte und verhindert Verlassen der App vollständig
Servereinstellung beim Weblogin (mit Semikolons getrennt) via QR-Code einstellbar:
/*** Beispielcodierung eines QR-Code ***/
https://android.q-dot.de/q1/SurveyServlet;GESS;demo
QR-Code Scanner mit OpenQs verknüpft und per Javascript aufrufbar:
/*** Aufruf des QR-Code Scanners zum Belegen einer OpenQ ***/
openq barcode;
text="Die Kamera lässt sich auch nutzen, um Barcodes oder QR-Codes zu scannen.";
title = "<input type='button' value='Barcode scannen' onclick=\"openBarcodeScanner('barcode');\">";
javascript="$('.qopenfield').attr('readonly', 'readonly');";
/*** Integration von WebCATI PreQuoten ***/
// PreQuote bundesland, Ausprägung 16
PreQuotaVar bundesland.16;
textq welcome;
title = "
WebCati Stand PreQuoten:<br>
bundesland.16: @insert(bundesland.16) / @insert(target(bundesland.16))
";
Kennzeichnung von nachzubearbeitenden Fragen im Skript mit posteditable:
/*** Integration von WebCATI PreQuoten ***/
MultiQ m1;
labels=
1 "A"
2 "B"
3 "C"
;
posteditable;
GESS Q. Allgemein
labelOpenValidation Unterstützung in NumQs
incQuota() / decQuota() unterstützen VarArray als Parameter
Deutliche Performanceoptimierungen im Rahmen von Data/Export
Datenexport in CSV (GESStabs CSVINFILE)
CSV Daten als Standard für Reporting/SPSS (erfordert GESStabs Version mit CSVINFILE)
Änderung des colmap Formats im Rahmen des neuen CSVINFILE Exports
IDs als CSV inkl. Preloads (optional) hochlad- und anzeigbar. Preloads werden automatisch bei Interviewstart geladen
Bei input=no werden keine leeren HTML DIVs und Titel mehr ausgegeben
splitcolumn unterstützt Labelattribute wie random, sortid, ...
Beschränkung der Anzahl Backups bei Löschen, Reset oder Upload auf die 3 jüngsten
Robot Update; Aus Kompatibilitätsgründen vorerst aus Serverinstallationen entfernt
Webinterface: Fortschrittsanzeigen für Dateiuploads und Datenexporte
Webinterface: Anzeige der Festplattenbelegung im Server-Status
Webinterface: Anzeige verschlüsselter Passwörter als Sternchen (*****)
Webinterface: “Zurück”-Navigation verbessert
Kleinere Ergänzungen im Print-Tool
Diverse Script-Check Meldungen ergänzt
Bugfix: decQuota()
Bugfix: Datalist-Tool Ausfallgefahr
Bugfix: setfilter / endfilter
Bugfix: Fallnummern Wertebereich
Bugfix: syncsort
Bugfix: _missing in 0
Bugfix: Komplex verschachtelte Screen-Layouts
Bugfix: Zeitmessungen
30.6.2016: Revision 1985
GESS Q. Android:
Die Loginseite für Interviewer wurde aus der App entfernt.
GESS Q. Allgemein:
Die colmap.lst ist zukünftig im Ordner gtc angesiedelt. Alte Verzeichnisstrukturen werden nach wie vor korrekt gelesen.
Die externen Parameter ext1 — ext30 sind änderbar.
Alle Systemvariablen des ASCII Files gibt es jetzt auch in der var.inc
Der Screenshot-Roboter wurde im Hinblick auf neue Firefox-Versionen aktualisiert.
num() zählt nun auch die Zeichen in TextElement
Präprozessordirektiven wie #macro¯o;#define#include können eingerückt werden.
Um abzusichern, dass Single-Links nicht mehrfach parallel betreten werden, kann ein Cookie-Handling aktiviert werden. Ein paralleler Zugriff würde zur CaseInUseMsg führen. Das Verhalten kann in einer Datei config.json im Hauptverzeichnis der Studie aktiviert werden:
/*** config.json ***/
{
"active": true,
"title": "Beispielstudie",
"usesCookies": true
}
/*** GESS Q. Skript ***/
CaseInUseMsg = "The requested case is currently in use. Please try again later.";
Neuer Computebefehl toMillis berechnet aus angegebenen Tag, Monat, Jahr, Stunde, Minute und Sekunde die Millisekundenrepräsentation gemäß _currentmillis:
WriteViewingTime kann gezielt für bestimmte Screens aktiviert werden:
writeViewingTime = all (SCREEN1 SCREEN2 ...);
Aktive Fälle zu Zwecken des Exports und Reportings noch im BRK Datensatz belassen.
Neuer Actionbefehl replaceAll zur Ersetzung von Zeichenfolgen in Texten. Das exakte Verhalten entspricht der Java-Implementierug von String.replaceAll():
Leere Übersetzungen werden nicht in die erzeugte .lrs Datei der Zielsprache übernommen — auch nicht, wenn die Felder grün markiert sind.
Im ASCII Datensatz werden fortan 64 Spalten für die RespID reserviert.
Im GESS Q. Configfile kann für die Kommunikation nach außen IP und Port eines ggf. eingesetzten Proxyservers definiert werden:
proxyIp=127.0.0.1
proxyPort=8080
maxMemoryLoad hat einen Gültigkeitsbereich von 5–95 (Default 80).
Das Datalist Tool kann mit einer reinen Wortanfangssuche betrieben werden. Außerdem können mehrere Datalist-Tools auf einem Screen platziert werden.
Aktualisierung der Erkennung von Browser-/Betriebssystemen.
Aus Wunsch können dem Datensatz IP-Adressen zugefügt werden:
saveIP = yes; // Default: no
Es gibt keinen expliziten Zahlenwert mehr für Missings. Missings werden durch ein ‘m’ repräsentiert. Der missingValue existiert im Skript nach wie vor, allerdings nur noch um ggf. alte Datendateien korrekt einlesen zu können. Syntaktisch ändert sich nichts. In Berechnungen verhält sich Missing immer wie eine 0. Bei Bedingungen mit Gleichheit ist Missing nur gleich anderen Missings. Die Vergleiche gt und lt liefern false sobald mindestens einer der Operanden Missing ist.
Sind Variablennamen in den Outputdaten nicht wunschgemäß, lassen sie sich an beliebigen Stellen im Skript mittels ExportMapping für den Export aufbereiten. Dies wirkt sich ausschließlich auf den Export (genauer die generierte var.inc) aus.
Ergänzend zu InvalidIdMsg gibt es auch IdClosedMsg, die bei Single-IDs im Falle einer Mehrfachteilnahme ausgegeben wird. Voreingestellt kommt die gleiche (englische) Meldung wie bei InvalidIdMsg.
idClosedMsg = "Dieser Zugang wurde bereits verwendet.";
Die Fehlerseite memoverload.html im Falle (zu) hoher Serverauslastung kann projektspezifisch im Ordner text abgelegt werden. Dort ist sie höher priorisiert als die allgemeine Seite im Ordner config.
Diverse kleinere Bugfixes und Verbesserungen
14.10.2015: Exporttexte, Voting, Fortschrittsbalken und Diverses
Texte für den Export:
exporttext und exporttitle für Fragen, Group, Compute, Array als Freitext oder Verweis. Bei Gridfragen und NumQs auch ohne abschließendes Semikolen als Parameter in der Item-/Labelliste:
exporttext = "Text für den Export";
// exporttext = text;
// ... [title|htmlpretext|htmlposttext|posthelptext|postinterviewerhelptext|prehelptext|preinterviewerhelptext];
exporttitle = "Title für den Export";
// exporttitle = title;
// ... [text|htmlpretext|htmlposttext|posthelptext|postinterviewerhelptext|prehelptext|preinterviewerhelptext];
exportlabel in Labellisten als Freitext:
1 "Label 1" exportlabel = "Labeltext für den Export"
Fortschrittsbalken:
changepbar mit negativen Werten
autochangepbar überschreibbar durch changepbar
Voting überarbeitet:
Netzwerkkommunikation optimiert
Serverkommandos werden 6x in 10Sek verschickt
in SURVEY/votinglimit.txt kann ein Prozentwert (z.B. ‘70’) angegeben, bei dem sich die Client-Fortschrittsbalken in der Übersichtsseite des Servernotebooks blau färben
Group akzeptiert 0 als Labelwert
jQuery und Datatables aktualisiert
Betrachtungszeiten von WriteViewingTime gelangen mit in die Export; Im Codebook des Standard a.tab für GESStabs tables werden sie durch den neuen exclude Befehl ignoriert
Print-Tool:random an Blöcken ergänzt
_breakcount wird jetzt beim Export in die var.inc übernommen
Grafische NumQ und Sortable überarbeitet
Studenreset löscht die Fälle im Ordner deleted
JSON-Export um NA-Labeltext für OpenNumFormats ergänzt
26.6.2015: Java 8, ID Management, Fragebogendruck, Robot-Update, Javascript-Engine
GESS Q. benötigt nun Java 8 als Laufzeitumgebung.
Performanceoptimierung bei der Skriptverarbeitung
Überarbeitung der Startprozedur unter Berücksichtigung des Studienstatus
die ImageMap visualisiert bei wiederholtem Anzeigen jetzt selbsttätig ihre Werte
HeatPlotter-Actionbefehle zum gezielten Abgreifen von Koordinaten:
xCoord(OPENQ, K) X Koordinate von K‑ter Markierung * yCoord(OPENQ, K) Y Koordinate von K‑ter Markierung
CSS Klasse heatplotter-drawn-image um zu steuern, ob HeatPlotter Markierungen vor oder hinter dem Zielbild eingezeichnet werden. Hinter dem Bild hat den Vorteil, dass keine Fläche für weitere Punkte durch die Größe der Markierung belegt und damit nicht erneut klickbar ist
neuer SkriptbefehlautoChangePBar = yes|no; setzt den Fortschrittsbalken bei Filtern automatisch über die Menge ausgelassener Screens weiter
Attribut noMissing = yes|no; für Fragen (höhere Prio als DefaultNoMissing)
gridItemRestrict analog zu restrict (restrict bei Grids funktionsgleich)
gridLabelRestrict = (RVAR1 [RVAR2 …]);
Fragebögen werden in nicht lizenzierten Versionen jetzt immer mit #define demoversion ausgeführt
eine Datei noautostart.txt (Inhalt egal) neben startcapi.batunterdrückt das automatische Öffnen des Defaultbrowsers durch GESS Q. Desktop
analog zu GridLabelHeader gibt es jetzt auch GridLabelFooter
neuer ActionbefehlsetCurrentScreen(SCREEN) zum absoluten Setzen des nächsten darzustellenden Screen. Ist etwas tricky, siehe Handbuch
num() kann jetzt auch zur Abfrage der Größe eines VarArray verwendet werden
Update des Robot für aktuellste Firefox Versionen
Übersetzungstool:
Prüfung von @openfeaturetext() und @target()
der Suchbegriff “QSYNTAX” liefert alle Texte mit syntaktischen Besonderheiten
ID Management in der Weboberfläche überarbeitet:
unlimitiertes Zufügen von IDs per Eingabefeld
Generieren von IDs (numerisch oder als 32-stellige Hashes)
Duplikatprüfung (werden ausgelassen)
passwortgeschütztes Löschen ganzer Listen
Tabellenansicht mit Status, Such- und Sortiermöglichkeit
Editieren und Löschen einzelner IDs
neuer Skriptbefehlscript(“JAVASCRIPT”); für flexible Actionlogiken in Javascript Syntax. Mit @insert() können Werte von GESS Q. Variablen ins Javascript eingebettet werden, @save(VAR = VAL); wird definiert welche Werte am Ende der Ausführungslogik in welche GESS Q. Variablen zurückgespielt werden. Dieser Befehl benötigt Java 8 und ist unter Android noch nicht verfügbar.
compute nhTestResult = 5;
compute x = 0;
compute y = 0;
compute z = 0;
Array nhTestArray[3];
OpenQ te;
vararray xyz = (x y z te nhTestArray);
// ...
Actionblock ab = {
script("
var x = 1;
var y = 2;
var z = @insert(nhTestResult);
var arr = new Array();
arr.push(x);
arr.push(y);
arr.push(z);
@save(xyz[1]) = x;
@save(xyz[2]) = y;
@save(xyz[3]) = z;
@save(nhTestResult) = x+y+z;
@save(xyz[5]) = arr;
@save(xyz[4]) = 'nachher';
");
};
JSON Export:
exit und attempts für Asserts
repeatGridAnchor ergänzt
gridLabelRestrict ergänzt
values und openvalues jetzt nur noch bei Bedarf
Anfrage-URL-Parameter &textreplacements liefert sämtliche Groups und TextElements
Bugfix values bei Grids
Bugfix bei eckigen Klammern in Texten
Druckfunktion für Fragebögen:
unter Configure bietet die Weboberfläche jetzt eine druckfähige HTML Ausgabe für den Fragebogen inkl. Anzeige von Filter, Asserts, Labelattributen. Ideal als Testinstrument
Skriptcheck Meldungen:
bei mehrfach vergebene Labelwerte werden über mehrere Labelgroups
Actionbefehle ganz ohne Klammern
bei set Action
Fehler bei OpenNumformat Zahlenbereichen auf Warning-Level reduziert
wenn Quoten angelegt, aber nicht im Skript definiert sind
Bugfix: sliderleftvalue zeigt jetzt den gleichen Wert wie rechts
13.5.2016: Heatplotter+ImageMap, Serverlast, Actionbefehle mit VarArray, und und und…
ImageMap überarbeitet
Kompatibilität zu alten InternetExplorern (7,8,9)
Standardfarbe für Highlighting jetzt vis Javascript änderbar
Highlighting-Verhalten auf Klick kann jetzt auch gänzlich modifiziert werden
Losgelöst von jeglicher Funktionen können fixe Elemente (z.B. Punkte aus vorherigen Fragen) eingezeichnet werden
über eine restrict Funktion kann in die Positionierung eingegriffen werden
wenn z.B. nur die X‑Achse relevant ist, lässt sich Y fest auf 0 setzen
Klicks können verworfen werden, wenn z.B. nicht alle Teile des Bildes klickbar sein sollen
javascript="
QDot.heatplotter.restrict = function(coords){
coords.y = 0;
return coords;
// return undefined; // wenn Klick verworfen werden soll
},
QDot.heatplotter.create('openq', 'imageID');
QDot.heatplotter.drawImages('@insert(VORHERIGE_HEATPLOTTER_OPENQ)', './images/kreis.png');
";
Browserliste aktualisiert (neue Chrome und Firefox Versionen)
Aktive Interviews verbleiben in Export/Reporting (falls vorhanden, mit ihrem letzten Abbruchzustand)
Serverlast / Performanceoptimierungen
Optimierung bei sehr langen Filterketten, die zu vielen übersprungen Screens am Stück führten
viele kleine Optimierungen in Bezug auf Speicher- und CPU Auslastung
maxMemoryLoad=80 in der qonline.cfg setzt die maximal zulässige Speicherauslastung in % (Default:80)
bei einer Interviewanfrage während Überlastung löst GESS Q. höchstens einmal in 5 Minuten eine Java GarbageCollection aus. Ist die vorgegebene Maximallast dennoch überschritten werden neue Teilnehmer mit Statusseite memoverload.html abgelehnt
memoverload.html muss neben der qonline.cfg im config-Verzeichnis liegen
abgelehnte Interviews und von GESS Q. angestoßene GarbageCollections werden in /config/serverlog.lst geloggt
Lizenzierung von GESS Q. Desktop
jetzt auch von der Nutzeroberfläche aus möglich
innerhalb einer Lizenz werden jetzt auch bei GESS Q. Desktop eindeutige Fallnummernbereiche vergeben
Neulizenzierungen überschreiben jetzt immer alte Settings
Bugfix: Sprünge mit setNextScreen wurden nicht gespeichert (Abbruch/Wiederaufnahme)
Bugfix: expandiertes Skript kam mit BOM Fehler
Bugfix: die Standard *.tab Files für GESStabs geben jetzt kein festes Encoding mehr vor
Oberfläche: Hinweistext, wenn Verknüpfung zu GESStabs fehlt
Oberfläche: Hinweistext, wenn kein per USB angeschlossenes Tablet gefunden wurde
Oberfläche: ServerStatus wurde nicht immer korrekt dargestellt. Interviewfortschritt bis max. 110.
30.1.2015: Eine Reihe neuer, praktischer Features
Beim Übersetzungstool lassen sich Zielsprachen per Upload eines LRS Files befüllen
Der set() Befehl kann jetzt auch Arrays in einem Schritt belegen. Es werden ab Arrayindex 1 fortlaufend nur so viele Stellen belegt wie angegeben. Überschüssige Stellen bleiben ohne Effekt
Neue ActionbefehlefindMinValIndex(ARRAY, COMPUTE); und findMaxValIndex(ARRAY, COMPUTE); durchsuchen ARRAY nach ihrem kleinsten/größten enthaltenen Wert (Missings ausgenommen). Der zugehörige Index wird in COMPUTE abgelegt
compute comp = 0;
// ...
findMinValIndex(arr, comp); // für "arr" (s.o.) ist "comp" hiernach 4
findMaxValIndex(arr, comp); // für "arr" (s.o.) ist "comp" hiernach 8
Ob Eingabezwang für Opens an GridItems gelten soll, lässt sich über den neuen Skriptparameter GridOpenNoMissing = yes|no; einstellen
Es gibt nun ein else Label für Groups. Außerdem werden Groups bei Textersatz nun per Default alle zutreffenden Labels als Komma-separierte Liste ausgegeben. Optional können die Trennzeichen und der letzte Trenner mit dem Parameter insert=“SEP”,”CON”; frei bestimmt werden. In letzteren Fall würden diese Angaben auch in den Übersetzungsauflauf übernommen werden
Group myGroup;
labels=
1 "1" (1 in abc)
2 "2" (2 in abc)
3 "3" (3 in abc)
9 "9" else
;
insert=" | ", " und ";
// @insert(myGroup) sähe dann möglicherweise so aus: "1 | 2 und 3"
Verbesserte Fehlermeldungen und Bugfixes:
Fehlermeldung bei mehrfacher Definition von FinishForward
Bugfix numCoords() verhielt sich ohne Eingabezwang falsch, wenn keine Markierungen vorgenommen wurden
21.1.2015: Dez-/Tsd-Trennzeichen, Filter führen zu _missing, filterbare Quoten, HeatPlotter, Actionblöcke an Blöcken
Neue interne Variable _encryptedcaseid, die die Fallnummer in verschlüsselter Form enthält. Hiermit lässt sich z.B. auf sichere Art ein öffentlicher Link bereitstellen, um Interviewteilnehmern am Ende des Interviews das Ausdrucken ihres Fragebogens via Robot zu ermöglichen
Beim Überspringen von gefilterten Fragen werden diese nun immer explizit auf _missing gesetzt
Es ist nun möglich einen [Init|Continue]ActionBlock an Blöcke zu hängen
Zwei neue ActionBefehle um Dezimal- und Tausendertrennzeichen für das DecimalFormat einzustellen:
setDecimalSeparator(”,”) ”,” ist Default
setGroupingSeparator(”.”) ”.” ist Default
Übersetzungsfeature
.lrs Dateien und native Sprache jetzt auch immer in alphabetischer Reihenfolge
Sprach-/Länderliste erweitert
Quotenliste jetzt abhängig vom Login filterbar über Datei quotafilter.json im Hauptverzeichnis. Diese Datei ist beim Serverupload in der “CONFIG” Kategorie enthalten
Bei Interviewstart werden jetzt trotz abgeschlossenen Fällen oder deaktivierter Studie externe Parameter und der StartActionBlock ausgeführt, um z.B. etwaige Fehlermeldungen in der richtigen Sprache ausgeben zu können
Bei externen Requests an den GESS Q. Server (z.B. für Datenexport) können LoginInformationen jetzt als JSON im Payload von HTTP Post Requests untergebracht werden
Neues Befragungsfeature HeatPlotter stellt Bilder dar, die per Mausklick mit beliebig vielen Markierungen versehen werden können. Gespeichert wird eine JSON-Liste mit den XY-Koordinaten als offene Antwort
OpenQ coords;
text="Bitte markieren Sie schöne Stellen";
title="<img id='cube' src='./media/@insert(_surveyname)/cube.png'>";
coordinates;
assert (numCoords(coords) ge 3 and numCoords(coords) le 10) "3-10 Markierungen";
javascript = "
// QDot.heatplotter.indicator = './media/@insert(_surveyname)/kreis.png';
// QDot.heatplotter.removeButtonTxt = 'Remove last';
QDot.heatplotter.maxCoords = 10;
QDot.heatplotter.create('coords', 'cube');
";
coordinates; veranlasst den Server dazu die Koordinatensyntax im versteckten Open-Feld serverseitig zu prüfen
indicator (opt.) stellt ein Bild für das Markierungssymbol ein (idealerweise 16×16 Pixel groß)
removeButtonTxt (opt.) stellt ein, welche Beschriftung auf dem “Letzte Markierung löschen” Button stehen soll
maxCoords limitiert browserseitig die maximale Anzahl an Markierungen
Die neue Syntax numCoords(OPENQ) für Bedingungen liefert zurück, wie viele Koordinaten angegeben wurden
Bugfixes:
Diverse optimierte und ergänzte Fehlermeldungen im Skriptcheck
Übersetzungsfeature (fror in bestimmten Situationen ein)