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.
22.03.2024: Q. / Q.Android 3.0.4‑p2
MultiQ ohne Title hat probleme beim Export gemacht
decisionlab refactor
13.03.2024: Q. / Q.Android 3.0.4‑p1
Bugfixes für die 3.0.4
Q.Android
Erlaubt nun Autoplay von Videos und Audios.
Erlaubt nun Zugriff auf die Kamera und das Mikrofon über JavaScript (auch ohne Berechtigungsabfrage).
QAndroid hat Daten im falschen Encoding gespeichert.
Q. Desktop/Server
Im Übersetzungs-Tool wurden Import-/Export-Fehler in der .csv-Datei behoben, die verhinderten, dass weder Export noch Import funktionierten.
Im Übersetzungs-Tool wurde ein Filterfehler behoben, der bei einer Zustandsänderung der Daten auftrat; Items wurden erst nach einem Neuladen korrekt gefiltert.
Im Übersetzungs-Tool konnten die Continue/Back/Cancel-Buttons nicht mehr pro Bildschirm übersetzt werden.
Installer aktualisiert, der alte Installer war nicht zu 100% Java 8 kompatibel, was je nach Konfiguration des Systems zu Problemen bei Starten führen konnte.
09.01.2024: Q./Q.Android Version 3.0.4
Neue Features
Verbesserung der Performance beim Rendering von Fragen: kann unter Umständen zu Fehlern führen, falls auf interne Strukturen zugegriffen wurde.
// überkompliziere Konstrukte wie
if(label.src == button_checked[hideLabels[i]].src)
// sollten ersetzt werden durch:
if(label.hasAtrribute('checked')) // (Java-Script)
if(label.is('[checked]')) // // oder (JQuery)
Lokale Version mit einstellbaren Session-Timeout über Startparameter arg3
1. Rootpfad (Pfad zum Rootordner von Q.)
2. Port (Port unter dem der lokale Server gehostet wird)
3. timeout (Angabe in Sekunden default 2 Stunden e.g. 7200s)
Neuer globaler Skriptparameter
sanitizeOpens
, um OpenQ/Open Labels zu bereinigen
Disabled: Eingabe wird 1 zu 1 gespeichert
None: HTML wird aus dem Text entfernt
(default)
aus Sicherheitsgründen.
SimpleText: erlaubt einige Html-Elemente: b, em, i, strong, u.
Basic: erlaubt die folgenden HTML-Tags: a, b, blockquote, br, cite, code, dd, dl, dt, em, i, li, ol, p, pre, q, small, span, strike, strong, sub, sup, u, ul
Relaxed: erlaubt a, b, blockquote, br, caption, cite, code, col, colgroup, dd, div, dl, dt, em, h1, h2, h3, h4, h5, h6, i, img, li, ol, p, pre, q, small, span, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, u, ul
Neuer globaler Skriptparameter
replaceInOpens
um Open-Felder vor dem Speichern zu bereinigen.
Bsp:
replaceInOpens = [("\\$","€"),(";","")];
Liste von Paaren (“searchStr”, “replacement”)
searchStr kann Regex oder normaler String sein.
ersetzt alle $ durch € Zeichen und löscht alle “;”
Neuer Skriptcheck für Ranges, ein häufiger Fehler ist hier eine falsche Reihenfolge.
es gibt nun einen Fehler wenn der Startwert größer oder gleich dem Endwert ist.
Skriptcheck für Textelemente mit save; und @insert
Skriptcheck gibt nun eine Warnung aus, dass die @insert Logik durch ein save; überschrieben wird.
Neuer Skriptbefehl zur besseren Kontrolle über die Colmap
extFormatDescriptor
und formatDescriptor
Es kommt häufiger mal vor, dass die Standardformate nicht ausreichen
neu
setText(t1, compute);
// unnötiges @insert kann nun weggelassen werden
Neuer Fragetyp im Skript
SilderQ
, man kann nun direkt SliderQ schreiben anstatt über die HTML Einstellungen zu gehen.
NumQ (Nur für die Standard-NumQ) Summen Label, live Berechnung der Summen aus den Eingabefeldern
Bsp.
sum "text" [1:3]
// Summiere Labels 1 bis 3
sum "text"
// Summiert alle Labels
labeltype “labeltext” [labelcodes] // keine Angabe = alle Labels
1000er Trennzeichen bei Nummernfeldern für deutsche Schreibweise qInputFilter.euro($('.numinput'))
oder für englische Schreibweise qInputFilter.pound($('.numinput'))
Hier funktioniert die Summenberechnung über
sum
nicht, da es sich auf dem Screen vor dem Speichern noch nicht um Zahlen handelt.
Basic input validation für numq, nur Zahlen und “,” “.” Eingabe im Standard enthalten (Kann aus der template.html entfernt werden, falls vorhanden)
Neuer ActionBlock Befehl
addAll
Anstatt einen Wert kann man mit addAll nun ganze Arrays hinzufügen
array a1[10];
array a2 = [1,2,3,4,5];
array a3 = [6,7,8,9,10];
initActionBlock = {
addAll(a1, a2); // ein
addAll(a1,[a3,a2]); // oder mehrere Arrays
};
Neuer ActionBlock Befehl
clearAll
anstatt clear diverse Male hintereinander zu schreiben kann nun mit clearAll Listen von Variablen gelöscht werden.
initActionBlock = {
clearAll(a1); // ein
clearAll([a3,a2]); // oder mehrere Variablen
};
Skriptbefehl export
Nun auch mit neuer Schreibweise um export beispielweise für einzelne Variablen oder Fragen auszuschalten
export = no/yes;
Neue Option bei der var.inc type TEXT
Bei dieser Version sind den Texten, Titeln und Labels bereits die Fragenummern zugewiesen und es damit einfacher damit in GessTabs die Daten weiterzuverarbeiten.
Die gesetzten Passwörter der RespondentIDs werden bei einem Reset über die Oberfläche jetzt auch gelöscht.
Delete Survey nun mit und ohne Backup möglich. Zuvor war man gezwungen ein Backup anzulegen.
Leere td-Tags in Fragen mit der class
qemptycell
versehen, um diese besser formatieren zu können.
Ids für rows in der Form
q-fragenname-row-index
e.g. q‑frage1-row-11 eingefügt, um diese besser formatieren zu können.
Img-Tags in Gridfragen und normalen Fragen, haben nun die Klasse q‑img-btn hinzubekommen für einfacheres Styling.
SortOrder akzeptiert nun auch Arrays, ohne dass zusätzlich noch eine arraySortOrder erstellt werden muss
d.h. arraySortOrder Variablen können nun entfernt werden
hideq (dynamisches Ein- und Ausblenden auf einem Screen) und blockq (dynamisches Ein- und Ausgrauen auf einem Screen) in die gesstmpl.js mit aufgenommen.
/**
@param String source, quellfrage
@param Array<String> target, Liste der Zielfragen
@param Array<Int> Labels, Liste der Labels die hide/block auslösen, wenn geklickt
@param Boolean reverse, umkehren der Aktivierungslogik
*/
hideq(source,target,labels,reverse)
blockq(source,target,labels,reverse)
// Beispiel für hideq bei mehreren Filterfragen
// jshandler = "
// hideq('Ausgangsfrage', ['Filterfrage1'], ['1']);
// hideq('Ausgangsfrage', ['Filterfrage2'], ['2']);
// javascript = "
// $(document).ready( function(){
// hideq('Ausgangsfrage', ['Filterfrage1'], ['1']);
// hideq('Ausgangsfrage', ['Filterfrage2'], ['2']);
// } );
missing an items (single und multigrid) um missing (nur) für einzelne Items zu erlauben.
Die Quotengruppen wurden um folgende Funktionalitäten erweitert:
Es gibt zwei neue Einstellungsmöglichkeiten
quotaUseNamspace = yes; oder no
. Der Default ist
no
Nutzt den Namensraum der Quotengruppen e.g. eine Quota
männlich
in der Untergruppe
de
bekommt den Namen
de_männlich
quotaAutoCreate = yes; oder no;
Der Default ist
no
Quoten werden bei einem Skriptcheck automatisch in der quota.lst angelegt nach dem voreingestellten Schema mit der Vorbelegung von
target = 0;
Group Conditions
Eine Gruppe kann nun mit einer Bedingung versehen werden diese Bedingung gilt für alle Quoten und Untergruppen innerhalb der Gruppe und entspricht folgender Schreibweise: groupCnd = (country eq 1);
Untergruppen können über den vollständigen Namen angesprochen werden (
gruppe.untergruppe1.untergruppe2
) und wie normale Gruppen verwendet werden e.g. assert de.geschlecht "Mindesten eine Quote in der Gruppe de.geschlecht dessen Bedingung erfüllt ist hat ihren Zielwert erreicht voll" exit 500;
// Einstellungen
quotaUseNamespace = yes; // Erstellt Quotennamen in der form groupName_1..N_varname
quotaAutoCreate = yes; // Erstellt Quoten automatisch mit 0 0 Vorbelegung
compute country = 1;
quotaVar total = 1 eq 1; // Quota ohne group
QuotaGroup de begin;
groupCnd = (country eq 1);
quotaVar total= 1 eq 1; // entspricht der Alten Schreibweise country eq 1 and 1 eq 1
QuotaGroup geschlecht begin; // Untergruppe
quotaVar m= geschlecht eq 1; // entspricht country eq 1 and geschlecht eq 1
quotaVar w= geschlecht eq 2; // entspricht country eq 1 and geschlecht eq 2
QuotaGroup end;
QuotaGroup auto begin; // Untergruppe
groupCnd = (s1 eq 4);
quotaVar mercedes = autoMarke eq 1; // entspricht country eq 1 and s1 eq 4 and autoMarke eq 1
quotaVar bmw= autoMarke eq 2; // // entspricht country eq 1 and s1 eq 4 and autoMarke eq 2
QuotaGroup end;
QuotaGroup end;
QuotaGroup en begin;
groupCnd = (country eq 2);
quotaVar total= 1 eq 1;
QuotaGroup geschlecht begin;
quotaVar m= geschlecht eq 1;
quotaVar w= geschlecht eq 2;
QuotaGroup end;
QuotaGroup auto begin;
quotaVar mercedes = autoMarke eq 1;
quotaVar bmw= autoMarke eq 2;
QuotaGroup end;
QuotaGroup end;
Bug fixes
Print und PrintText Action
Automatischer Zeilenumbruch (new line) gefixt, printText umgebende Klammern
()
entfernt
BrowserNavigationMessage = "geänderte msg";
War doppelt implementiert, aber keine von beiden richtig.
Ist nun eine globale Option und keine HTML{} Property mehr, da es keinen Sinn ergibt, diese mehrfach in verschiedenen Versionen zu haben.
Endlosschleife beim Skript einlesen.
Ungültiges Skript konnte dazu führen, dass sich Q. aufhängt.
Bsp: Text ohne öffnender quote:
randomtext"; ["
Bsp. Bei fehlerhaftem Skript (nicht terminierten listen
[]
oder
()
) kam es Teilweise zu Abstürzen
HTML { input=no; };
gefixt
Das laden von Open-Feldern erzeugten einen Fehler
Es ist nun möglich über Javascript Q. Variabeln zu lesen und schreiben
Es ist nun möglich über Javascript auf die Datenbank lesend und schreibend auf Daten zuzugreifen
@save ist nun deprecated und wird mit der nächsten Version nicht mehr Unterstützt
//Variabeln über Javascript lesen und schreibenconstp1=Q.getVar('p1');p1.set('m')p1.set(16)constvalue=p1.get();// 16p1.getName()// p1p1.getType()// COMPUTEconstmyArray=Q.getVar('myArray');myArray.set(1,11);// index, valuemyArray.set(2,'m');myArray.get(1);// 11myArray.get(2);// 'm'myArray.getSize()// 2myArray.sort('desc');// weitere option 'asc'myArray.getName()// myArraymyArray.getType()// QARRAYconsttext=Q.getVar('textEl1');text.set('NEW TEXT');text.get();// 'NEW TEXT'text.getName()// 'textEl1'text.getType()// TEXTELEMENT//Datenbank über Javascript lesen und schreibenconstdbName='myDB';constquery=`select * from myTable where myValue = '1'`;constresult=Q.SQLQuery(dbName,query);// [{key: value, key:value},{key: value, key:value}] Object List der Suchergebnisseconstupdate=Q.SQLUpdate(dbName,`update myTable set myValue = '55' where id = '1223'`);// Update für einzelnen record// 1 success//Mehrere records in einem rutsch updatenconstbatch=Q.SQLBatchUpdate(dbName,`update myTable set myValue = ? where id = ?`,[ [66666,'123'],// update 1 record[9999,'123456']// update 2 record]);batch.forEach(item=>print(item));// Ergebnis für jedes update 1 = success
04.11.2022: Version 3.0.2
GESS Q. Allgemein
Performance und Memory-Usage Optimierungen
Bugfixes
Fehler bei VarArray Zugriff in Group-Bedingungen. Beispielsweise verursachte
Group g;
labels= 1 "xyz[1] eq 1" (xyz[1] eq 1) ;
zuvor einen Fehler.
ServerLog: Leere/zu viele Anmeldeversuche tauchten in der
server.log
-Datei auf.
Mehrere Datalists auf einem Screen führten zu fehlverhalten.
set und get auf TextArray waren fehlerhaft.
die hideq Funktion war fehlerhaft bei Variablen, die nicht initial auf dem Screen erschienen.
Features
Die DataList zeigt nun doppelt vergebene labecode in der JSON-Datei über den Scriptcheck an. Beispiel:
Error: Datalist /test/text/gemeindeliste.json invalid.
Duplicated entries for Label 352
Duplicated entries for Label 353
Duplicated entries for Label 5
Neue Scriptcheck Warnung, wenn Arrays mit einer Größe von 1 verwendet werden. Hinweis: diese können durch ein Compute ersetzt werden
Warning: Array a_a3_seg2_q0 initialized with a length of 1
Array can be simplified to compute a_a3_seg2_q0 = 0;
Neue array Syntax für inline Definition.
array myList = [1,999,777,9999,11212,17];
Es wird eine Warnung bei ungenutzten Actionblöcken ausgeben.
Der ActionBlock-Befehl
changepbar()
mit negativen Werten: Pbar kann nun auch rückwärts zählen.
Testmodus: Testlinks können nun getestet werden, auch wenn die jeweilige Studie deaktiviert ist.
ActionBlöcke: können nun per
exec("actionBlockName")
Befehl in anderen ActionBlöcken ausgeführt werden.
Der Javascript Befehl
QDot.buttons.activate
und
QDot.buttons.deactivate
kann nun auch für GNumQs verwendet werden. Das jeweilige Label verhält sich dabei technisch genau so wie bei einer Enthaltung. Bei einer Deaktivierung wird der im
OpenNumFormat
definierte Wert verwendet.
Admin Oberfläche
Type-Filter für diverse Upload-Felder eingebaut.
Import Survey
Import Ids
Die Suchfunktion für Surveys und weitere Elemente der Adminseite wurden überarbeitet.
JQuery und weitere Abhängigkeiten der Adminseite wurden auf die neueste Version geupdatet.
JQuery und weitere Abhängigkeiten werden nun immer vor gesstmpl.js geladen.
Bei dem Id-Generator wurde die Option hinzugefügt, die Zeichenanzahl bei alphanummerischen Ids anzugeben. (length) Beim Id-Generator wurde die Option hinzugefügt, den Mindestabstand in den erzeugten IDs anzugeben. (distance) Beispiel: Bei einer distance von 2, müssten bei einer erzeugten Ids zwischen zwei ‘a’s mindestens zwei andere Zeichen vorkommen.
GESS Q. Android
App- und Userdaten werden nun im appspezifischen externen Speicher abgelegt. Neuer Pfad:Android/data/de.gessgroup.q.android/qcapi
Bei einer Deinstallation der App werden nun auch die App- und Userdaten mitgelöscht.
Minimum Android 7 (Nugat)
Cati
Neue Fehlermeldung wenn Adressdaten im Skript definiert worden, aber nicht in den Cati Adressdaten vorhanden sind.
Performance Optimierungen bei der Kommunikation mit dem Cati.
Studien werden nun automatisch aktiviert und deaktiviert abhängig vom Cati-Studien Status. (Benötigt neuste Version vom Cati)
Das Versionierungsschema von GESS Q. hat sich geändert: — Hauptversionsnummer Kennzeichnet signifikante Änderungen, die die Version zur Vorgängerversion inkompatibel machen. — Nebenversionsnummer Kennzeichnet funktionale Änderungen am Programm. — Revisionsnummer Kennzeichnet Fehlerbehebungen
GESS Q. kann jetzt unter Windows 11 verwendet werden.
Alte Tastatureingabe entfernt, bitte die Tastatureingabe wie in der Anleitung beschrieben verwenden.
Loginsperre in der Adminoberfläche Benutzer werden nach 3 fehlgeschlagenen Anmeldeversuchen für eine Minute gesperrt. Erneute Fehlversuche nach Ablauf der Zeit führen jeweils zu einer weiteren Sperre mit verdoppelter Sperrzeit.
Das Clickranking ist mit 10 und mehr Elementen verwend- und die Anzahl an Rangplätzen beschränkbar:
// Clickranking
NumQ n1;
// ...
javascript = "QDot.clickranking.init('n1', 5);"; // Top 5
// javascript = "QDot.clickranking.init('n1');"; // Ohne Limit
In den ID Einstellungen eines Projekts gibt es einen Download von Einladungslinks für alle vorliegenden IDs. Es handelt sich um Kurzlinks, welche auf Webservern verwendet werden können.
In der Benutzeroberfläche wurde eine Löschfunktion für Studienbackups ergänzt.
Die Javascript Engine (Actionbefehl
script()
) wurde aktualisiert (auf Rhino 1.7.13) und ist nun auch in GESS Q. Android nutzbar.
Im Standard SPSS Export können alphanumerische Werte bis zu 2048 Zeichen lang sein.
Bei
numQClass = "SliderQ";
kann fortan mit
splitcolumn
gearbeitet werden.
Zeitstempel in Logfiles werden bis auf Millisekunden genau ausgegeben.
OpenNumFormat
: Unterstützung für sehr große Zahlen.
Scriptcheck: Es wurden diverse Prüfungen ergänzt oder korrigiert: —
countvars:
prüft ob Datei vorhanden und der Zähler richtig definiert ist. — Fehlermeldung bei fehlender Klammer. — Fehlermeldung bei fehlenden
Labels
,
GridLabels
oder
GridItems
. — Fehlermeldung bei Namenskonflikten durch
QuotaGroup
. — Falsche Meldung entfernt, wenn
TextArray
mit
regexp
verwendet wird. — Wertebereichsprüfungen beim
OpenNumFormat
optimiert.
Bugfixes: — Speichern eingegebener Werte, wenn der nächste Screen nach Timeout mittels
setCurrentScreen()
angesprungen wird. — Handling bei korrupter Lizenzinformation. — Bei
ResetOnCmpl()
wird jetzt stets korrekt zurückgesetzt (Quotenzählung und NoData-Fälle). —
UploadQ
erlaubt nun auch Ziffern in Dateinamenserweiterungen. — Gefahr der Deaktivierung des Projekts infolge serverseitiger Verarbeitung von CAPI Uploads behoben. — Exporte von Logfiles auf Servern enthalten keine doppelten .csv Dateiendungen mehr. — Download älterer Archive korrigiert.
GESS Q. Android
Das Android Betriebssystem verhindert zunehmend Zugriff auf eindeutige Merkmale, an denen Geräte wiedererkennbar sind. Die Lizenzierung wird daher fortan pro Installation durchgeführt und nicht mehr pro Gerät. Ein Nachteil ist, dass ein Endgerät durch zwischenzeitliche Löschung der App mehrere Lizenzslots verbrauchen kann. Ein Vorteil ist, dass Endgeräte über das Kontextmenü des Adminbereichs wieder “entlizenziert” und durch andere Geräte ersetzt werden können.
12.07.2021: Revision 2900
GESS Q. Allgemein
Neue Präprozessordirektive
#includeifexists FILE
funktioniert in gleicher Weise wie
#include FILE
, wirft allerdings nur eine Warnung, wenn die Datei nicht existiert.
Datensätze aus Test- und Multimode Interviews können wiederaufgenommen werden, indem man die verschlüsselte Fallnummer als URL Parameter (
...&lfd=ENCRYPTEDCASEID
) an den Starklink hängt. Siehe auch interne Variable
_encryptedcaseid
.
Neue Skriptsyntax
metaname "FROM" "TO";
. Variablennamen können mit einem Meta-Variablennamen versehen werden. Dies hat keine Auswirkung auf die Skript- oder Fragebogenfunktionalität. Mittels Serverrequest
&action=getmetanames&survey=SURVEY
kann die Gesamtliste der Variablen mit Metanamen in JSON Syntax abgefragt werden.
Alternative Darstellungsweise Klickranking für Items aus NumQ lässt die Items durch Anklicken in eine Reihenfolge bringen:
Neue Fehlermeldungen im Skriptcheck bei SPSS Namenskonflikten durch Variablenbildung für MultiQ mit _1, _2, … Benennung am Ende, sowie bei alleinstehenden Variablen in Bedingungen.
Im HTML Quelltext jedes Screens gibt es ein verstecktes Feld, welches die Liste aller in Reihenfolge geladenen Sprachquellen enthält:
Texte werden in numerischen Vergleichen fortan als
_missing
behandelt.
LiveTabs wird beim Reporting nur sichtbar, wenn es auch konfiguriert ist.
Performance-Optimierungen beim Handling von Datensätzen und Laden von Skripten.
Neue interne Variable
_lastScreen
mit dem zuletzt besuchten Screen.
Neuer Computebefehl
nodeexists("NODE")
prüft ob eine Frage, Screen oder Block existieren.
Ergänzung diverser Einträge im Server- sowie Studienlogfile.
Je nach Einstellung in der Variablenliste werden
Compute
Variablen im Export mit Nachkommastellen ausgegeben.
Bugfixes: — Verwendung von
print()
in Kombination mit VarArray. — Verwendung von
exists()
in Kombination mit
@insert()
. —
#ExportMapping
wirkt sich auf den OPN Export aus. —
SortOrder
mit verschachtelten
row/column
Angaben. — Das HTML
size
Attribut wird bei halboffenen Feldern der
GNumQ
immer gesetzt. — Keine Erstellung von Resume-Logs bei Betreten der Passwortabfrage. — Beim Laden eines Falls für den PDF Druck wird der
StartActionBlock
nicht mehr ausgeführt. —
WriteViewingTime
zählte beim Wiederaufnahme bereits aktiver Fälle via Startlink nicht korrekt. — Korrektur beim DB Download, wenn mehrere projektfremde
DatabaseConnection
s verwendet wurden. — Beim E‑Mail-Versand aus Q. heraus wird der FROM Header korrekt gesetzt. — Timeouts konnten bei unglücklichen Timings fehlschlagen.
GESS Q. Android
Kompatibilitätsanpassungen für Versionen Android 11 und höher. Der qcapi Ordner verschiebt wegen neuer Sicherheitsanforderungen.
Der AudioRecorder wurde grafisch überarbeitet.
GESS Q. CAPI
Neuer Actionbefehl
instantCapiUpload()
stößt einen sofortigen Upload beim Abschluss von CAPI Fällen an. Die interne Variable
_instantuploadsuccess
sagt aus, ob der Upload erfolgreich verlief (Wert=1, sonst 0) und kann auf dem Finish-Screen verwendet werden.
Performance-Optimierungen bei der Prüfung der Partnerserver-Konnektivität.
Neue interne Variable
_infomailsentts
speichert Millisekunden Timestamp, wenn bei CAPI Upload eine Infomail verschickt wird.
GESS Q. im CATI
Request für die CATI GUI: Multi-Delete für Teilnehmer IDs.
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
neben
@tt1-@tt8
gibt es auch
@freetext1-@freetext8
mit internen Textvariablen
_freetext1-_freetext8
Übersetzungstool
Montenegrisch in Sprachliste ergänzt
im LRS Download sind jetzt auch nur noch übersetzungsrelevanten Texte
Die GNumQ wurde überarbeitet
NumQ Labels mit
open
Übernahme in die
var.inc
und SPSS
Eingabefeld jetzt per Default hinter dem Labeltext (auch ohne
@open
)
Datenexport der Heatplotter Koordinaten
je Fall Anzahl der Punkte und je Punkt getrennt X und Y Koordinate (auch in SPSS)
_encryptedLfd
nicht mehr in OPN Export
Belegung aus Performancegründen erst bei Verwendung/Zugriff
Kleinkram, Fehlermeldungen und Bugfixes
Bugfix: Fehlverhalten beim else-Label für Groups
Bugfix: ContinueActionBlock an Blöcken wurde nicht immer ausgeführt
Bugfix: Combobox konnte ungültig ausgefüllt werden
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)