Willkommen bei GESS.
Sie wurden angerufen?
GESS
  • Startseite
  • Software
    • GESStabs
    • GESS Q.
    • GESS ChartFactory
    • GESS Cati
    • Support, Neuigkeiten und Dokumentation
  • Umfragen und Analysen
    • Telefonumfragen
    • Onlineumfragen
    • Offlineumfragen
    • Mixed-Mode-Design
    • Datenverarbeitung und Analysen
  • Blog
  • Unternehmen
    • Engagement
    • Jobs
  • Referenzen
    • Kunden und Partner
    • Projekte
  • Kontakt
    • Impressum
    • Datenschutzerklärung

GESS Q.

Hier informieren wir Sie über die jüngsten Entwicklungen in GESS Q.!

 Änderungen mit die­sem Zeichen kön­nen bei exis­tie­ren­den Studien zu abwei­chen­den Verhaltensweisen führen.


 27.02.2023: Version 3.0.3
  • GESS Q. Allgemein
    • Weitere Performance und Memory-Usage Optimierungen
    • ADB Software auf den neu­es­ten Stand gebracht
  • Bugfixes
    • Gibt man in der qonline.cfg kei­nen JDBC_DRIVER an, wird nun auch nicht mehr ver­sucht eine Datenbank zu verwenden.
  • Features
    • Arrays kön­nen nun mit Labels ver­se­hen wer­den wie man es bereits bei com­pu­tes kann.
    • ScriptCheck über­ar­bei­tet
      • Ausführlicheren Output mit Zeilennummern
    • Datenbank Konfiguration 
      • Der Host kann nun über die “dbHost” und der Port über die “dbPort” Property in der qonline.cfg ein­ge­stellt werden.
      • Der Host kann nun über die “DB_HOST” und der Port über die “DB_PORT” Umgebungsvariable ein­ge­stellt werden.
    • Mailbox
      • Bei der Mailbox kann nun optio­nal als letz­ter Parameter der Port ange­ge­ben werden.
      • Wird kein Port ange­ge­ben, wer­den in fol­gen­der Reihenfolge, die Einstellungen aus­ge­tes­tet und bei Erfolg gespeichert: 
        • 465 : SSL
        • 587 : StartTLS
        • 25 : SSL
    • ActionBlöcke If-Statement erwei­tert. Es ist nun mög­lich “else if” bie­lie­big häu­fig zu verketten 
      • if(condition){ ... } else if(condition){ ... } else if(condition){ ... } else{ ... };
    • Neues Funktionen für Serverseitiges-Javascript
      • Es ist nun mög­lich über Javascript Q. Variabeln zu lesen und schreiben
      • Es ist nun mög­lich über Javascript auf die Datenbank lesend und schrei­bend auf Daten zuzugreifen
      • @save ist nun depre­ca­ted und wird mit der nächs­ten Version nicht mehr Unterstützt
      • //Variabeln über Javascript lesen und schreiben
        const p1 = Q.getVar('p1');
        p1.set('m')
        p1.set(16)
        const value = p1.get(); // 16
        p1.getName() // p1
        p1.getType() // COMPUTE
        
        const myArray = Q.getVar('myArray');
        myArray.set(1,11); // index, value
        myArray.set(2,'m');
        myArray.get(1); // 11
        myArray.get(2); // 'm'
        myArray.getSize() // 2
        myArray.sort('desc'); // weitere option 'asc'
        myArray.getName() // myArray
        myArray.getType() // QARRAY
        
        const text  = Q.getVar('textEl1');
        text.set('NEW TEXT');
        text.get(); // 'NEW TEXT'
        text.getName() // 'textEl1'
        text.getType() // TEXTELEMENT
        
        //Datenbank über Javascript lesen und schreiben
        const dbName = 'myDB';
        const query = `select * from myTable where myValue = '1'`;
        const result = Q.SQLQuery(dbName, query); // [{key: value, key:value},{key: value, key:value}] Object List der Suchergebnisse
        const update = Q.SQLUpdate(dbName, `update myTable set myValue = '55' where id = '1223'`); // Update für einzelnen record
        // 1 success
        
        //Mehrere records in einem rutsch updaten
        const batch = 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 ver­ur­sach­te
      Group g;
      labels= 1 "xyz[1] eq 1" (xyz[1] eq 1) ;

      zuvor einen Fehler.

    • ServerLog: Leere/zu vie­le Anmeldeversuche tauch­ten in der server.log -Datei auf.
    • Mehrere Datalists auf einem Screen führ­ten zu fehlverhalten.
    • set und get auf TextArray waren fehlerhaft.
    • die hideq Funktion war feh­ler­haft bei Variablen, die nicht initi­al auf dem Screen erschienen.
  • Features
    • Die DataList zeigt nun dop­pelt ver­ge­be­ne labe­code 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 ver­wen­det werden. 
      Hinweis: die­se kön­nen 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 inli­ne Definition.
      array myList = [1,999,777,9999,11212,17];
    • Es wird eine Warnung bei unge­nutz­ten Actionblöcken ausgeben.
    • Der ActionBlock-Befehl changepbar() mit nega­ti­ven Werten: Pbar kann nun auch rück­wärts zählen.
    • Testmodus: Testlinks kön­nen nun getes­tet wer­den, auch wenn die jewei­li­ge Studie deak­ti­viert ist.
    • ActionBlöcke: kön­nen nun per exec("actionBlockName") Befehl in ande­ren ActionBlöcken aus­ge­führt werden.
    • Der Javascript Befehl QDot.buttons.activate und QDot.buttons.deactivate kann nun auch für GNumQs ver­wen­det werden.
      Das jewei­li­ge Label ver­hält sich dabei tech­nisch genau so wie bei einer Enthaltung.
      Bei einer Deaktivierung wird der im OpenNumFormat defi­nier­te Wert verwendet.
  • Admin Oberfläche
    • Type-Filter für diver­se Upload-Felder eingebaut.
      • Import Survey
      • Import Ids
    • Die Suchfunktion für Surveys und wei­te­re Elemente der Adminseite wur­den überarbeitet.
    • JQuery und wei­te­re Abhängigkeiten der Adminseite wur­den auf die neu­es­te Version geupdatet.
    • JQuery und wei­te­re Abhängigkeiten wer­den nun immer vor gesstmpl.js geladen.
    • Bei dem Id-Generator wur­de die Option hin­zu­ge­fügt, die Zeichenanzahl bei alpha­num­me­ri­schen Ids anzu­ge­ben. (length)
      Beim Id-Generator wur­de die Option hin­zu­ge­fügt, den Mindestabstand in den erzeug­ten IDs anzu­ge­ben. (distance)
      Beispiel: Bei einer distance von 2, müss­ten bei einer erzeug­ten Ids zwi­schen zwei ‘a’s min­des­tens zwei ande­re Zeichen vorkommen.
  • GESS Q. Android
    • App- und Userdaten wer­den nun im app­spe­zi­fi­schen exter­nen Speicher abgelegt.
      Neuer Pfad: Android/data/de.gessgroup.q.android/qcapi
    • Bei einer Deinstallation der App wer­den nun auch die App- und Userdaten mitgelöscht.
    • Minimum Android 7 (Nugat)
  • Cati
    • Neue Fehlermeldung wenn Adressdaten im Skript defi­niert wor­den, aber nicht in den Cati Adressdaten vor­han­den sind.
    • Performance Optimierungen bei der Kommunikation mit dem Cati.
    • Studien wer­den nun auto­ma­tisch akti­viert und deak­ti­viert abhän­gig vom Cati-Studien Status. (Benötigt neus­te Version vom Cati)
      produktion -> aktivate
      pause -> aktivate
      privat -> aktivate
      finished -> deaktivate
      deleted -> deaktivate

 

 03.02.2022: Version 3.0.1
  • GESS Q. Allgemein
    • Das Versionierungsschema von GESS Q. hat sich geändert:
      — Hauptversionsnummer
      Kennzeichnet signi­fi­kan­te Änderungen, die die Version zur Vorgängerversion inkom­pa­ti­bel machen.
      — Nebenversionsnummer
      Kennzeichnet funk­tio­na­le Änderungen am Programm.
      — Revisionsnummer
      Kennzeichnet Fehlerbehebungen
          3.0.0
      │ │ └───────── Revisionsnummer
      │ └─────────── Nebenversionsnummer
      └───────────── Hauptversionsnummer
    • GESS Q. kann jetzt unter Windows 11 ver­wen­det werden.
    • Alte Tastatureingabe ent­fernt, bit­te die Tastatureingabe wie in der Anleitung beschrie­ben verwenden.
    • Loginsperre in der Adminoberfläche
      Benutzer wer­den nach 3 fehl­ge­schla­ge­nen Anmeldeversuchen für eine Minute gesperrt. Erneute Fehlversuche nach Ablauf der Zeit füh­ren jeweils zu einer wei­te­ren Sperre mit ver­dop­pel­ter Sperrzeit.
    • Das Clickranking ist mit 10 und mehr Elementen ver­wend- 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 vor­lie­gen­den IDs. Es han­delt sich um Kurzlinks, wel­che auf Webservern ver­wen­det wer­den können.
    • In der Benutzeroberfläche wur­de eine Löschfunktion für Studienbackups ergänzt.
    • Die Javascript Engine (Actionbefehl script() ) wur­de aktua­li­siert (auf Rhino 1.7.13) und ist nun auch in GESS Q. Android nutzbar.
    • Im Standard SPSS Export kön­nen alpha­nu­me­ri­sche Werte bis zu 2048 Zeichen lang sein.
    • Bei numQClass = "SliderQ"; kann fort­an mit splitcolumn gear­bei­tet werden.
    • Zeitstempel in Logfiles wer­den bis auf Millisekunden genau ausgegeben.
    • OpenNumFormat : Unterstützung für sehr gro­ße Zahlen.
    • Scriptcheck:
      Es wur­den diver­se Prüfungen ergänzt oder korrigiert:
      — countvars: prüft ob Datei vor­han­den und der Zähler rich­tig defi­niert ist.
      — Fehlermeldung bei feh­len­der Klammer.
      — Fehlermeldung bei feh­len­den Labels , GridLabels oder GridItems .
      — Fehlermeldung bei Namenskonflikten durch QuotaGroup .
      — Falsche Meldung ent­fernt, wenn TextArray mit regexp ver­wen­det wird.
      — Wertebereichsprüfungen beim OpenNumFormat optimiert.
    • Bugfixes:
      — Speichern ein­ge­ge­be­ner Werte, wenn der nächs­te Screen nach Timeout mit­tels setCurrentScreen() ange­sprun­gen wird.
      — Handling bei kor­rup­ter Lizenzinformation.
      — Bei ResetOnCmpl() wird jetzt stets kor­rekt zurück­ge­setzt (Quotenzählung und NoData-Fälle).
      — UploadQ erlaubt nun auch Ziffern in Dateinamenserweiterungen.
      — Gefahr der Deaktivierung des Projekts infol­ge ser­ver­sei­ti­ger Verarbeitung von CAPI Uploads behoben.
      — Exporte von Logfiles auf Servern ent­hal­ten kei­ne dop­pel­ten .csv Dateiendungen mehr.
      — Download älte­rer Archive korrigiert.
  • GESS Q. Android
    • Das Android Betriebssystem ver­hin­dert zuneh­mend Zugriff auf ein­deu­ti­ge Merkmale, an denen Geräte wie­der­erkenn­bar sind. Die Lizenzierung wird daher fort­an pro Installation durch­ge­führt und nicht mehr pro Gerät. Ein Nachteil ist, dass ein Endgerät durch zwi­schen­zeit­li­che Löschung der App meh­re­re Lizenzslots ver­brau­chen kann. Ein Vorteil ist, dass Endgeräte über das Kontextmenü des Adminbereichs wie­der “ent­li­zen­ziert” und durch ande­re Geräte ersetzt wer­den können.

 12.07.2021: Revision 2900
  • GESS Q. Allgemein
    • Neue Präprozessordirektive #includeifexists FILE funk­tio­niert in glei­cher Weise wie #include FILE , wirft aller­dings nur eine Warnung, wenn die Datei nicht existiert.
    • Datensätze aus Test- und Multimode Interviews kön­nen wie­der­auf­ge­nom­men wer­den, indem man die ver­schlüs­sel­te Fallnummer als URL Parameter ( ...&lfd=ENCRYPTEDCASEID ) an den Starklink hängt. Siehe auch inter­ne Variable _encryptedcaseid .
    • Neue Skriptsyntax metaname "FROM" "TO"; . Variablennamen kön­nen mit einem Meta-Variablennamen ver­se­hen wer­den. Dies hat kei­ne Auswirkung auf die Skript- oder Fragebogenfunktionalität. Mittels Serverrequest &action=getmetanames&survey=SURVEY kann die Gesamtliste der Variablen mit Metanamen in JSON Syntax abge­fragt werden.
    • Alternative Darstellungsweise Klickranking für Items aus NumQ lässt die Items durch Anklicken in eine Reihenfolge bringen:

      // Klickranking
      NumQ n1;
      // ...
      javascript = "
      QDot.clickranking.init('n1');
      ";
    • Neue Fehlermeldungen im Skriptcheck bei SPSS Namenskonflikten durch Variablenbildung für MultiQ mit _1, _2, … Benennung am Ende, sowie bei allein­ste­hen­den Variablen in Bedingungen.
    • Im HTML Quelltext jedes Screens gibt es ein ver­steck­tes Feld, wel­ches die Liste aller in Reihenfolge gela­de­nen Sprachquellen enthält:

      <input type="hidden" name="_language" value="LRS1 LRS2 ...">
    • Texte wer­den in nume­ri­schen Vergleichen fort­an als _missing behandelt.
    • LiveTabs wird beim Reporting nur sicht­bar, wenn es auch kon­fi­gu­riert ist.
    • Performance-Optimierungen beim Handling von Datensätzen und Laden von Skripten.
    • Neue inter­ne Variable _lastScreen mit dem zuletzt besuch­ten Screen.
    • Neuer Computebefehl nodeexists("NODE") prüft ob eine Frage, Screen oder Block existieren.
    • Ergänzung diver­ser Einträge im Server- sowie Studienlogfile.
    • Je nach Einstellung in der Variablenliste wer­den 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 ver­schach­tel­ten row/column Angaben.
      — Das HTML size Attribut wird bei halb­of­fe­nen 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ähl­te beim Wiederaufnahme bereits akti­ver Fälle via Startlink nicht korrekt.
      — Korrektur beim DB Download, wenn meh­re­re pro­jekt­frem­de DatabaseConnection s ver­wen­det wurden.
      — Beim E‑Mail-Versand aus Q. her­aus wird der FROM Header kor­rekt gesetzt.
      — Timeouts konn­ten bei unglück­li­chen Timings fehlschlagen.
  • GESS Q. Android
    • Kompatibilitätsanpassungen für Versionen Android 11 und höher. Der qca­pi Ordner ver­schiebt wegen neu­er Sicherheitsanforderungen.
    • Der AudioRecorder wur­de gra­fisch überarbeitet.
  • GESS Q. CAPI
    • Neuer Actionbefehl instantCapiUpload() stößt einen sofor­ti­gen Upload beim Abschluss von CAPI Fällen an. Die inter­ne Variable _instantuploadsuccess sagt aus, ob der Upload erfolg­reich ver­lief (Wert=1, sonst 0) und kann auf dem Finish-Screen ver­wen­det werden.
    • Performance-Optimierungen bei der Prüfung der Partnerserver-Konnektivität.
    • Neue inter­ne Variable _infomailsentts spei­chert Millisekunden Timestamp, wenn bei CAPI Upload eine Infomail ver­schickt 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 loka­ler Installationen mit selbst gene­rier­ten Identifiern.
    • Projekte dür­fen fort­an nicht ‘log’ heißen.
    • Automatische ChangeLogs (nur wenn lizen­ziert) und indi­vi­du­el­le 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 spei­chern Logs in PostgreSQL Tabellen, loka­le Installationen in Dateiform in SURVEY/log/. Sie wer­den bei Datenuploads zum Server mit­über­tra­gen, bei Projektlöschung oder ‑Resets gelöscht und sind in der Benutzeroberfläche unter Data/Export herunterladbar.
      Beim ChangeLogging kön­nen Variablen mit­tels HTML Attribut qnochangelog aus­ge­schlos­sen wer­den. Es ist am zustän­di­gen Formularfeld zu notie­ren. Also z.B. direkt am Eingabefeld bei offe­nen Nennungen oder den zustän­di­gen <input> Tags bei geschlos­se­nen Fragen.

    • Globale Screen-Actionblöcke eingeführt:

      // Neue globale Actionblöcke:
      GlobalScreenBackActionblock = {};
      GlobalScreenInitActionblock = {};
      GlobalScreenPreassertionActionblock = {};
      GlobalScreenContinueActionblock = {};
    • Im Rahmen der Passwortseite Ausführung des StartActionBlocks.
    • Für Co-Browsing ist kein Admin-User not­wen­dig. Für Zuschauer sind alle inter­ak­ti­ven Funktionalitäten des Screens deak­ti­viert. Außerdem wer­den kei­ne Actionblöcke ausgeführt.
    • infomail infomailrecipient infomailsubject kön­nen jetzt bei Bedarf über die Variablenliste (Colmap) expor­tiert werden.
    • Template Platzhalter bis @tt20 erweitert.
    • Flackereffekt bei der Tastatureingabe per Javascript deaktivierbar:

      QDot.keyboard.buttonEffect = false;
    • Buttons geschlos­se­ner Fragen de-/ak­ti­vier­bar ü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 ana­log zu OpenQ über Skriptparameter einstellbar:

      HTML{ LabelOpenRows = 5; };
      HTML{ LabelOpenCols = 50; };
    • Neuer Skriptparameter TemplatesOnFinish = yes|no; defi­niert, ob Templateplatzhalter auf dem Schlussscreen ersetzt wer­den sol­len. Voreinstellung: no
    • GESS LiveTabs im Bereich Reporting inte­griert. Freie Tabellierung nach Belieben mit dem stets aktu­el­len Datenbestand. Die Verfügbarkeit von LiveTabs lässt sich indi­vi­du­ell je Benutzer kon­fi­gu­rie­ren. 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 admi­nis­tra­ti­ven Rechten zu hinterlegen.

    • Bereich Reporting benut­zer­freund­li­cher gestal­tet. Weniger Klicks und ver­ständ­li­che­re 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; }; defi­niert, ob bei Antwortmöglichkeiten mit offe­nen Textfeldern auto­ma­tisch das zuge­hö­ri­ge Häkchen gesteu­ert wird. Voreinstellung: no
    • Benutzeroberfläche: Bei Quotenverwaltung Häkchen zum Wählen und Abwählen aller Quoten ergänzt.
    • Randomisierung für Screens inner­halb ihrer row/column Struktur ana­log zu Labelgruppierungen. Zu ran­do­mi­sie­ren­de Fragen wer­den mit dem Attribut srandom , row/column Strukturen mit random gekenn­zeich­net. Im fol­gen­den Beispiel wer­den die Zeilen 2 und 3 ran­do­mi­siert sowie für sich genom­men ihr jewei­li­ger 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 inner­halb ihrer row/column Struktur ana­log zu Labelgruppierungen. Fragen und row/column Strukturen kön­nen mit SortId und der Screen selbst sowie sei­ne row/column Strukturen mit SortOrder ver­se­hen wer­den. Im fol­gen­den Beispiel wird die Anwendung veranschaulicht:

      array arr1[3];
      array arr2[2];
      array arr3[2];
      arraySortOrder aso1 = arr1;
      arraySortOrder aso2 = arr2;
      arraySortOrder aso3 = arr3;
      StartActionBlock = {
      set( arr1 = [3 2 1] );
      set( arr2 = [5 4] );
      set( arr3 = [2 1] );
      };
      TextQ t1; srandom; sortID=1;
      TextQ t2; srandom; sortID=2;
      TextQ t3; srandom; sortID=3;
      TextQ t4; srandom; sortID=4;
      TextQ t5; srandom; sortID=5;
      screen s =
      row(
      column(t1 t2 t3) sortID=1 sortOrder=aso1
      column(t4 t5)    sortID=2 sortOrder=aso2
      ); sortorder=aso3;
    • Javascript Audio- und Videoplayer ( QDot.audioplayer QDot.videoplayer ) las­sen sich jeweils mehr­mals pro Screen einbauen.
    • Bugfixes:
      — randomid jsessionid uniquekey aus Datenexport entfernt.
      — Requestlogging: Passwörter bei exter­nen API Zugriffen entfernt.
      — Enthaltungsbutton bei gra­fi­scher NumQ korrigiert.
      — @insert() geht nun auch inner­halb von jshandler .
      — ext1-ext30 wer­den nach Unterbrechungen auch aus URL gele­sen (vor­her 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 erzwin­gen Timeout.
      — Besseres Fehlerhandling bei NEXT Requests, wenn Fall mitt­ler­wei­le 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 kor­rek­te CSS Class passwdq .
      — Korrekter SMTP Date Header bei Mailversand.
      — Die Syntax inner­halb von Screendefinitionen igno­riert Groß-/Kleinschreibung.
  • GESS Q. im CATI
    • Nachbearbeitung: Auch wenn Fälle nicht als Complete enden. Übermittelte CATI-Navigations-Events gefi­xed. Kein Co-Browsing, kei­ne Ausführung von InitActionBlöcken.
    • Kleinere Korrekturen bei inter­nen Abläufen.
    • Verbesserte Fehlermeldungen.

 06.04.2020: Revision 2812
  • GESS Q. Allgemein
      • Größerer Wertebereich der cas­eid (tech­nisch: von Integer auf Long).
      • StackedBackNavigation vor­erst deaktiviert.
      • Kleinere Optimierungen an den stan­dard Reporting-Tabellen.
      • Performanceoptimierung bei OPN Export, wenn man respid statt cas­eid anfordert.
      • Systemvariablen haben Beschriftungen für den Export erhalten.
      • Die Systemvariablen _randomid _jsessionid _uniquekey _resume wur­den aus Exporten entfernt.
      • Einschränkung wel­che Variablen mit QDot.jsonData aus HTML Screens änder­bar sind:

        JsonDataLimit = "VAR1 VAR2 ...";

    Variablen kön­nen Leerzeichen-getrennt anein­an­der­ge­reiht wer­den. Default / Leere Angabe ent­spricht kei­ner Einschränkung (zw. Abwärtskompatibilität).

    • Computes kön­nen mit dem Attribut untranslatable versehen.
    • Bugfixes:
      — BrowserNavMsg ist jetzt glo­bal und wur­de bei Übersetzungen nicht immer kor­rekt eingeblendet.
      — Datenexport: Überschüssiges “||” im Text von Grids und NumQ wenn nur Text oder Titel existierten.
      — Backup-Downloads wer­den jetzt als .qp Daten (statt .zip) ausgeliefert.
      — IN-Prüfsyntax mit Klammern führ­te zu einem Syntaxfehler: 1 in [1:3] .
      — In ver­glei­chen­den Bedingungen führ­te 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 ent­hielt 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) wur­de um eine optio­na­le Info zum akti­ven Modus erwei­tert. Mögliche Werte sind unde­fi­niert (leer) oder CAWI|CAPI|CATI . Wenn defi­niert gibt die­se Information in Mixed-Mode Szenarien vor, wel­cher Modus der akti­ven Befragung dient. Zugriffe über ande­re Modi wer­den mit fol­gen­der Meldung abgewiesen:

      MixedModeMsg = "This case is currently not editable in this survey mode.";

      Änderungen am akti­ven Modus kön­nen über die Administrationsoberfläche vor­ge­nom­men wer­den. Ggf. akti­ve Fälle wer­den hier­bei unterbrochen.

    • Die Stichprobenverwaltung (ID+Preload) wur­de um eine optio­na­le Info zum akti­ven Interviewer erwei­tert. Mögliche Werte sind unde­fi­niert (leer) oder IDs von Interviewern, die dem Projekt ange­hö­ren. Wenn defi­niert gibt die­se Information im CAPI sam­ple Modus vor, wel­cher Interviewer den Fall bear­bei­ten kann. Zugriffe ande­rer Interviewer wer­den mit fol­gen­der Meldung abgewiesen:

      InvalidInterviewerMsg = "This case is assigned to another interviewer.";

      Die Zuweisung von Interviewern auf Fälle kann über die Administrationsoberfläche ver­än­dert werden.

    • Die Stichprobenverwaltung (ID+Preload) wur­de um ein optio­na­les Zugangspasswort erwei­tert. Mögliche Werte sind unde­fi­niert (leer) oder belie­bi­ge Zeichenfolgen, die ver­schlüs­selt abge­legt wer­den. Wenn defi­niert wird das jewei­li­ge Passwort vor Betreten des Falls abge­fragt. Der vor­ge­schal­te­te Prüfscreen ent­hält 3 Textbausteine (Titelzeile, Button und Fehlermeldung bei Falscheingabe), die indi­vi­du­ell ange­passt wer­den können:

      EnterPasswordMsg="Please enter your password to access your personal questionnaire.";
      EnterPasswordButton="OK";
      BadPasswordMsg="Sorry, but this password is wrong.";

      Aus dem Skript her­aus steht ein neu­er Compute- und ein neu­er Actionbefehle zur Verfügung, um das Passwort über­prü­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ön­nen optio­nal Passwort, Modus und Interviewer (in der Reihenfolge) ergänzt wer­den. Leere Spalten ent­sprä­chen dem o.g. unde­fi­nier­ten Zustand und haben funk­tio­nell kei­ne Bewandnis. Interviewer bzw. Modus und Interviewer kön­nen auch ganz weg­ge­las­sen wer­den. Die voll­stän­di­ge CSV Kopfzeile sähe wie folgt aus:

      ID;T;PW;MODE;INT;preload1;preload2;...

      Passwort und Modus kön­nen wahl­wei­se über­schrie­ben werden.

    • Aus Schutz vor Datenverlust dür­fen Demoversionen von GESS Q. kei­ne ange­fan­gen Fälle mehr fort­set­zen. Bei dem Versuch kommt es zu fol­gen­der 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 (sie­he FORHEADER , FORCOUNTS , FORMEANS , CHAPTER in GESStabs). Vor die­sem Hintergrund gibt es ein neu­es Sprachelement Chapter , um Fragen und Variablen im Skript Kapiteln zuzuordnen:

      Chapter [NAME] = "Überschrift des Kapitels";
      // Fragen und Variablen
      EndChapter [NAME];

      Der optio­na­le, tech­ni­sche NAME des Kapitels dient zur bes­se­ren Übersicht und um im Skriptcheck exak­te­re Fehlermeldungen aus­ge­ben zu können.

    • Das Default Reporting nutzt die neu­en HTML Charts in GESStabs (Min. GESStabs 5.1.3.5).
    • Über die var.inc las­sen sich SPSS Exporte mit oder ohne Mehrfachnennungs- oder dicho­to­me Variablen pro­du­zie­ren. Die alte Steuerung über #DEFINE wur­de durch eine unab­hän­gi­ge Auswahl mit­tels Checkboxen abge­löst, die einen NOSPSS Eintrag in der var.inc vornimmt.
    • Visualisierung der Passwortstärke (wäh­rend der Vergabe) in der Benutzerverwaltung.
    • Quoten akzep­tie­ren nega­ti­ve Sollwerte.
    • Zeitmessungen ( SCREEN.duration Variablen) wer­den zur bes­se­ren Übersicht gesam­melt am Ende von Variablenliste, var.inc und Exporten ausgegeben.
    • Optionale Parameterliste an Macro Definition. Dient bes­se­rer Lesbarkeit und ist Voraussetzung für #domacro .
    • Spracherweiterung #domacro in Anlehnung an GESStabs:

      #domacro MACRO P1LIST[; P2 P3 ... PX]

      Ein zuvor defi­nier­tes Macro MACRO mit defi­nier­ter Parameterliste wird gemäß Parameterliste P1LIST (mehr­mals) ver­wen­det. Optional kön­nen hin­ter einem Semikolon belie­big vie­le wei­te­re, fes­te Parameter folgen:

      #macro m $1 $text $irgendwas
      // ...
      endmacro
      #domacro m 1:3 99
      // -> generiert:
      // &m;$1="1";
      // &m;$1="2";
      // &m;$1="3";
      // &m;$1="99";
      #domacro m 1:3 99; "Mein Text" 42
      // -> generiert:
      // &m;$1="1";$text="Mein Text";$irgendwas="42"
      // &m;$1="2";$text="Mein Text";$irgendwas="42"
      // &m;$1="3";$text="Mein Text";$irgendwas="42"
      // &m;$1="99";$text="Mein Text";$irgendwas="42"
    • ResetOnCmpl setzt Statistik, Quoten und ID Status zurück.
    • Bugfixes:
      — Rückmeldung bei pro­ble­ma­ti­schen CSV Stichproben-Uploads verbessert
      — Cookies für exklu­si­ven Fragebogenzugriff zu Tomcat8+ kom­pa­ti­bel gemacht
      — Berücksichtigung von NumQ k.A. Werten beim PDF Druck
      — In der Demoversion gemach­te Fälle wer­den voll­stän­dig zurückgesetzt
      — Die Fallnummer war im Rahmen von Data/Export im Wertebereich beschränkt
      — Anführungszeichen um Textinhalte gin­gen beim Datenexport verloren
  • GESS Q. CAPI
    • Der CAPI Client erlaubt eine optio­na­le Interviewer-Anmeldung mit ihrer Kennung (ID). Zugriff auf und Synchronisation von Projekten erfolgt dann nur noch für sol­che, die expli­zit an ihn zuge­wie­sen sind. Bei unter­bro­che­nen Fällen wird der Datenstand des Servers (ein­ma­lig) mit an den Client über­tra­gen, so dass flie­gen­de Moduswechsel mög­lich sind. Bei CAPI sample Projekten greift die Zugriffssteuerung auch auf Fallebene. Der Interviewer kann nur spe­zi­ell ihm oder nie­man­dem zuge­wie­se­ne Fälle bearbeiten.
    • Bei Datenuploads aus CAPI sample Projekten wer­den älte­re Datenstände ser­ver­sei­tig über­schrie­ben und der Fall auto­ma­tisch auf Modus CAWI geändert.
    • Es ist mög­lich den Versand einer E‑Mail beim CAPI Upload aus­zu­lö­sen. So kann einem Befragten auf Wunsch z.B. ein Zugangslink über­mit­telt wer­den, um einen ange­fan­gen Fall online selbst zu ver­voll­stän­di­gen. Der Versand selbst wird bei Erhalt des Uploads vom Server aus­ge­führt. Das zum Versand ver­wen­de­te Konto für die­sen spe­zi­el­len Versand wird im Skript mit InfoMailbox = MAILBOX; festgelegt:

      Mailbox myMailbox = ("HOST", "ADRESSE", "USER", "PASSWORT");
      InfoMailbox = myMailbox;

      Sobald der Actionbefehl SendInfomailOnUpload(); aus­ge­führt wird, wird der Versand ein­ge­plant und bei Verwirklichung zurück­ge­setzt. Tatsächlich ver­sen­det wird die E‑Mail nur, wenn auch ent­spre­chen­de Inhalte defi­niert wur­den. Dies geschieht über die drei inter­nen Textvariablen _infomailrecipient , _infomailsubject und _infomail , die aus dem Fragebogenskript her­aus zu bele­gen sind und den Empfänger, den Betreff und den Inhalt der E‑Mail abbil­den (HTML wird unter­stützt). Im Menü Native Data gibt es eine tri­via­le Vorschau der Infomail und es kann bei Bedarf ein erneu­ter Versand ange­sto­ßen wer­den. Zum Beispiel nach­dem eine falsch in CAPI erfass­te Empfänger-E-Mailadresse durch Editieren des Datensatzes kor­ri­giert wurde.

    • Neue Actionbefehle ResetCapiUpload() und ResetInfomailOnUpload() , die einen zuvor ein­ge­plan­ten Upload oder Versand einer Infomail rück­gän­gig machen. Das ist z.B. nötig, wenn ein Fall vor sei­nem bereits geplan­ten Upload doch noch­mal im CAPI Client geöff­net und schließ­lich mich ande­ren Rahmenbedingungen wie­der ver­las­sen wird.

 20.05.2019: Revision 2720
  • GESS Q. Allgemein
    • Benutzeroberfläche prüft und mel­det GESStabs Lizenzfehler bei SPSS Export/Online-Tabellen.
    • Ausführlicheres Logging feh­ler­haf­ter Anmeldeversuche an der Benutzeroberfläche.
    • Studienlogs rol­lie­ren (max. 5MB, First In First Out).
    • Serverlog rol­liert (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 defi­nier­bar. Sie wer­den an alle Folgeprozesse weitergereicht.
    • Statt Fallnummer wahl­wei­se Ausgabe der Teilnehmer-ID bei OPN-Exporten in der Benutzeroberfläche.
    • Bugfixes:
      — Überarbeitung der Fehlerbehandlung sowie Logging bei defek­ten, inter­nen JSON Systemdateien.
      — Alte SingleQ Renderklasse beleg­te bei input=no Antwortkategorien mit Labelcode 0 vor.
  • GESS Q. im GESS Cati
    • Das Attribut export ist an Adressvariablen wie­der 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ätz­lich expor­tier­bar zu machen. Labellisten müs­sen zwangs­läu­fig vom CATI aus bereit­ge­stellt wer­den. Zu jeder PreQuote wird außer­dem eine QuotaGroup erzeugt, die sämt­li­che bekann­ten Quotenzellen umfasst. Die Namensgebungen lau­ten wie folgt:

      PreQuotaVar NAME.CELL          -> bundesland.11
      QuotaGroup  cati.prequota.NAME -> cati.prequota.bundesland
      Compute     cati.address.NAME  -> cati.address.bundesland
      TextElement cati.address.NAME  -> cati.address.vorname
    • Bugfixes:
      — Rückkehr ins Interview ( BackbuttonOnFinish ) war wäh­rend Nachbearbeitung nicht möglich.
      — Fehlerbehandlung bei Studienkopplung, wenn Zielstudie gar nicht existiert.
      — Beim Übergang zur Nachbearbeitung wer­den kei­ne Backupdatensätze mehr ange­legt (cmpl_).

 04.04.2019: Revision 2697
  • GESS Q. Allgemein
    • Authentifizierungen mit ApiAccessKey über­schrei­ben bereits vor­han­de­ne Sessions.
    • Aktive Sessions wer­den nur noch durch manu­el­le Anmeldung an der Benutzeroberfläche erzeugt.
    • Logging aller Authentifizierungen.
    • Vervollständigt: Alte, unge­nutz­te Konfigurationsdateien löschen table_id_assign.lst .
    • if-assert Syntax an Blöcken ergänzt.
    • jsHandler wird jetzt vor SingleQAutosubmit ausgeführt.
    • Im Online-Reporting kön­nen GESStabs Tabellen als OFFICEEXPORT ange­bo­ten werden.
    • Neuer exter­ner 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ück­ge­setzt wird. Technisch gese­hen ver­hält sich der Rücksprung wie eine Wiederaufnahme beim letz­ten Screen unter Ausführung aller übli­cher­wei­se betei­lig­ten Actionblöcke.
    • Neue Systemvariable _revivals . Sagt aus, wie oft ein abge­schl. Interview “wie­der­be­lebt” wurde.
    • Neues Attribut followup für Blöcke. Definiert den Block ohne wei­te­re Berücksichtigung in main als Nachbefragungsteil. Nach jedem Interviewende wird der Nachbefragungsteil durch­lau­fen. Im Nachbefragungsteil…

      • sind alle erdenk­li­chen Filter möglich.
      • ent­hält _finished bereits den Finishcode der Hauptbefragung.
      • kann der Finishcode durch assert mit exit über­schrie­ben werden.
      • kann mit­tels Zurückbutton an den letz­ten Screen der Hauptbefragung zurück­ge­gan­gen wer­den ( _finished wird dabei auf 0 zurückgesetzt).

      BackbuttonOnFinish in Kombination mit einem Nachbefragungsteil springt zuerst in sel­bi­gen und setzt dabei den Finishcodes auf den fina­len Wert der Hauptbefragung zurück.

    • Neuer Skriptparameter StackedBackNavigation = yes/no (Default: no ) ändert die Zurücknavigation von einem linea­ren Verfahren gemäß Abfolge der Screens in main auf ein Stapelverfahren. Dabei wird immer zum tat­säch­lich letz­ten vor­ge­leg­ten Screen zurück­ge­kehrt. Sprünge mit­tels setNext() oder setCurrentScreen() wer­den so auch “zurück­ge­sprun­gen”. Das Stapelverfahren soll län­ger­fris­tig das linea­re Verfahren ablö­sen. Eine Umstellung ist aller­dings nicht voll­stän­dig abwärts­kom­pa­ti­bel, da der­zeit noch nicht alle ActionBlöcke wäh­rend der Zurücknavigation aus­ge­führt werden.
    • In den Rohdaten gibt es 2 neue Informationen:

      • _screenhistory : Schlichte Abfolge aller vor­ge­leg­ten Screens (mit Wiedervorlagen durch Pausibilitätsprüfungen/Eingabezwängen).
      • _screenstack : Ein Stapel der vor­ge­leg­ten Screens, der beim (Vor-/Zurück-)Navigieren wächst/schrumpft (ohne Wiedervorlagen durch Pausibilitätsprüfungen/Eingabezwängen).

      Perspektivisch sol­len die­se Informationen auch in den CSV-basier­ten Datenexporten ent­hal­ten sein.

    • Im Übersetzungstool kön­nen bei Importen aus ande­ren Studien jetzt unter­schied­li­che 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 ver­merkt, wie die Übersetzung zustan­de gekom­men ist. Die o.g. 3 Strategien fin­den sich so auch als Spalte “ori­gin” in CSV Exporten wie­der. Die ent­spre­chen­de Spalte wird auch beim Re-Import erwar­tet, wird aber nicht berück­sich­tigt. Weitere Gründe kön­nen TRANSLATE und DUPLICATE_AUTOFILL sein.

    • Der Parameter jdbcDropAndCreateTables in der Q. Konfigurationsdatei ent­fällt: Zukünftig wird die Datenbank für das Übersetzungstool auto­ma­tisch ange­legt und bei Bedarf erweitert.
    • Bugfixes:
      — JS Initialisierung von open Feldern an Antwortkategorien.
      — Benutzerrecht Export sieht die Auswahlbox Native Data nicht mehr.
      — Fehlermeldungen bei feh­ler­haf­ten Zeilen wäh­rend 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 wahl­wei­se statt _caseid auch _respid gedruckt wer­den. Beim Downloadrequest wird dies durch Hinzufügen des optio­na­len 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, unge­nutz­te Konfigurationsdateien gelöscht. Das betrifft:

      access.lst        active.cfg            idproperties.cfg
      languages.lst     quotafilter.json      summary.cfg
      surveystats.cfg   table_id_assign.lst   title.txt
    • Bei Studienuploads wird man selbst der Studie zuge­wie­sen, falls man auf dem Zielsystem kein Admin ist.
    • Die Variablen ext11 - ext30 wer­den stan­dard­mä­ßig mit exportiert.
    • Logging von Änderungen an Q. Nutzerkonten sowie Loginversuchen.
    • Das Request-Logging umfasst nun­mehr bis zu 25000 Einträge.
    • Initialtexte mit @insert() für TextElement ver­hal­ten sich dyna­misch. Die Dynamik der Einblendung geht aller­dings nach Wiederaufnahmen ver­lo­ren, wenn das saved Attribut ver­wen­det wird. Zuweisungen mit setText() blei­ben grund­sätz­lich fixe Momentaufnahmen.
    • Mit AutosubmitDelay = MS; kann eine Verzögerungszeit in Millisekunden ein­ge­stellt wer­den, bis das Autosubmit aus­ge­löst wird.
    • Tsuchisakiko-Akita-chapter-2400px Duplikate in SortOrder wer­den igno­riert und zur Laufzeit als Fehler geloggt.
    • Tastatureingabe: Highlight-Effekt bei Selektion von SingleQ/MultiQ Häkchen geändert.
    • Bugfixes:
      — Leerzeilen in server.lst wer­den ignoriert.
      — BackActionBlock an Blöcken wur­de nicht ausgeführt.
      — Kleinere Layoutoptimierungen in der Benutzeroberfläche.
      — Backup Checkbox bei Reset wie­der eingebaut.
      — Gestörte Fragereihenfolge durch dop­pel­te Vorkommnisse von Fragen in unge­nutz­ten Blöcken korrigiert.
      — Diverse neue Fehlermeldungen und Warnungen im Skript-Check.

 10.12.2018: Revision 2634
  • GESS Q. Allgemein
    • Bugfixes:
      — ralign() sor­tier­te 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.* wur­den unter bestimm­ten 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
    • Tsuchisakiko-Akita-chapter-2400px Keine Speicherung von CATI SysVars und Adressfeldern in Datensätzen (sind folg­lich nicht mehr exportierbar).
    • Die Verwendung von CATI SysVars in Skripten wur­de als deprecated klassifiziert.
    • Adressfelder kön­nen über setText() geleert werden.
    • Die Tastatureingabe scrollt zu selek­tier­ten Antworten, falls die­se außer­halb des sicht­ba­ren Bildschirmausschnitts lie­gen (SingleQ/MultiQ).
    • Verbesserte Fehlerausgaben sowie Senden von adress­be­zo­ge­nen 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 ein­zel­ner Fälle wird der ID-Status auto­ma­tisch auf fresh gesetzt. Beim Wiederherstellen eines gelösch­ten Falls wird der ID-Status rekonstruiert.
    • Von Q. geführ­te Logfiles auf Studien- und Serverebene sind über die Benutzeroberfläche her­un­ter­lad­bar (Studien-Konfigurationsseite / Server Status).
    • Die Studien-Konfigurationsseite wur­de über­ar­bei­tet. Backups nur noch im Studienmanager erreichbar.
    • Neuer Actionbefehl: File2Text([first|last|all], TEXTELEMENT, "DATEI", "REGEX"[, "ENCODING"]) . Liest Zeile(n) aus DATEI und spei­chert sie in TEXTELEMENT . Gelesen wer­den nur Zeilen, die voll­stän­dig dem regu­lä­ren Ausdruck REGEX ent­spre­chen, wobei der ers­te Parameter bestimmt, ob nur die ers­te, die letz­te oder alle pas­sen­den Zeilen über­nom­men wer­den. Die Zeichenkodierung der Datei wird auto­ma­tisch bestimmt, kann bei Bedarf aber auch mit dem optio­na­len Parameter ENCODING fest­ge­legt wer­den. Reguläre Ausdrücke sowie Encodings sind in Java-Syntax anzugeben.
      TextElement te;
      StartActionBlock = {
      file2text(te, "C:\\data.csv", "[^;]*;@insert(_respid);.*");
      };
    • Actionbefehl erwei­tert: SetText(TEXTELEMENT, "TEXT"[, "REGEX"]) . Mit dem neu­en, optio­na­len regu­lä­ren Ausdruck REGEX kann ein Teilbereich von TEXT aus­ge­schnit­ten wer­den. Grundsätzlich muss der regu­lä­re Ausdruck den gesam­ten Text matchen. Runde Klammern inner­halb des Ausdrucks defi­nie­ren Gruppen. Die ers­te Gruppe wird in TEXTELEMENT gespei­chert. Reguläre Ausdrücke sind in Java-Syntax anzugeben.
      TextElement te;
      StartActionBlock = {
      setText(te, "a;TREFFER;...", "[^;]*;([^;]*);.*");
      // speichert "TREFFER" in te
      };
    • Bugfixes:
      — Im Übersetzungstool zuge­wie­se­ne Übersetzer kön­nen voll­zäh­lig ent­fernt werden.
  • GESS Q. Android
    • Neuer Actionbefehl: RunApp("APP-PACKAGE"[, "PNAME1", "PVALUE1", "PNAME2", "PVALUE2", ...]) . Startet die exter­ne Android App mit Packagepfad APP-PACKAGE . Optional kön­nen belie­big vie­le Startparameter bestehend aus Name und Wert (String) über­ge­ben werden.
      // Beispiel:
      StartActionBlock = {
      runApp("de.gessgroup.demoapp", "respid", "@insert(_respid)");
      };
  • GESS Q. im GESS Cati
    • Die Tastatureingabe springt beim Laden der Seite nicht mehr auto­ma­tisch zum ers­ten 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ög­lich. Quoten mit Beschreibungstexten wer­den nicht mehr gene­rell als geän­dert zurückgeliefert.
    • Bugfixes:
      — In der API Kommunikation wur­de ein Problem bei Zeichenkodierungen korrigert.

 02.10.2018: Revision 2560
  • GESS Q. Allgemein
    • Tsuchisakiko-Akita-chapter-2400px Die alte Colmap-Syntax für Zusatzvariablen im OPN Export wird nicht mehr unterstützt.
    • LRS-Download und Übersetzungstool ver­fü­gen über einen neu­en, Excel-kon­for­men CSV Export bzw. auch Import, wel­cher Spalten für Screen- und Fragezugehörigkeit sowie Zählindex ent­hält, um dar­über sinn­voll sor­tie­ren zu kön­nen. Beim Export wer­den bereits vor­han­de­ne Übersetzungen mit aus­ge­ge­ben. Beim Import wer­den lee­re Übersetzungen igno­riert. Im Übersetzungstool las­sen sich außer­dem Übersetzungen aus ande­ren Projekten der Datenbank impor­tie­ren (nur durch Administratoren). Hierbei wer­den Übersetzungen über­nom­men, bei denen Textidentifier und Text der Quellsprache iden­tisch sind.
    • Tsuchisakiko-Akita-chapter-2400px Der Actionbefehl GetRemoteContentByUrl() wur­de aus Sicherheitsgründen vor­erst deaktiviert.
    • Tsuchisakiko-Akita-chapter-2400px Die ext. URL Parameter ext1-ext30 wer­den bei jedem Fragebogenaufruf via Startlink neu gesetzt.
    • Webinterface in Deutsch ver­füg­bar. Dies in der Konfigurationsdatei ein­stell­bar guiLanguage=de.lang . Sprachlich ist es voll­stän­dig, aber noch nicht ins Layout eingepasst.
    • In der HTML Ausgabe: Ergänzung eines Attributs qna­me am <div> , wel­ches die Frage selbst umgibt sowie eines Attributs checked an den gra­fi­schen Buttons, wenn sie in ange­klick­tem Zustand sind.
    • timesSent(NODE) kann sich auf Screens bezie­hen: timesSent(s1.screen) , wenn s1 ein Screen ist.
    • javascript und css kön­nen an Screens defi­niert werden.
    • Erweiterung am PDF Druck von Fragebögen: Hilfetexte wer­den mit aus­ge­ge­ben (kei­ne Interviewer-Hilfetexte) und die Druckausgabe ist ins­ge­samt deut­lich fle­xi­bler gewor­den. Bisher konn­te man über LaTex ein Rahmenlayout defi­nie­ren und der Fragebogen selbst wur­de fix an einem Platzhalter @questionnaire gene­riert. Ergänzend gibt es @screen , @question und @insert zum Einfügen ein­zel­ner Screens, Fragen oder bei Bedarf ein­zel­ner Werte bzw. Buttons:

      @screen(SCREENNAME)
      @question(QNAME)
      @insert(VALUE)
      Fragetyp    | Syntax für VALUE       | Ausgabe im PDF
      ------------|------------------------|-----------------------------
      OpenQ       | QNAME                  | Eingegebener Text
      SingleQ     | QNAME.LABEL            | Radiobutton mit/ohne Häkchen
      MultiQ      | QNAME.LABEL            | Checkbox mit/ohne Häkchen
      NumQ        | QNAME.LABEL            | Eingegebener Wert
      SingleGridQ | QNAME.ITEM.GROUP.LABEL | Radiobutton mit/ohne Häkchen
      MultiGridQ  | QNAME.ITEM.GROUP.LABEL | Checkbox mit/ohne Häkchen
    • Fehlermeldung bei feh­len­der Endemarkierung von QuotaGroup ergänzt.
    • Neuer Skriptbefehl HelptextPosition = template|text|title; (Default: template ) stellt ein, wo Hilfetexte posi­tio­niert sein sol­len. Alternativ zur bis­he­ri­gen Regelung über das Template, las­sen sich Hilfetexte um den Screentext oder um Titel der jewei­li­gen Fragen aus­ge­ben. Letzteres ermög­licht meh­re­re Ausgaben auf einem Screen.
    • Neuer Skriptbefehl ExportBlacklist = "VAR1 VAR2 VARS*"; (Default: "" ) ent­hält durch Leerzeichen getrenn­te Variablennamen, die im Export nicht berück­sich­tigt wer­den sol­len. Das Sternchen ist an belie­bi­gen Stellen als Wildcard-Selektor im Variablennamen erlaubt.
    • Neuer Skriptbefehl ClearOnFlt = yes|no; (Default: yes ) stellt ein, ob durch Filterung über­sprun­ge­ne Fragen gecleart werden.
    • Neuer Skriptbefehl InvalidStateMsg = ""; bei abge­bro­che­nen Interviewstarts durch ungül­ti­gen ID Status. Der Default-Text ist iden­tisch mit dem von InvalidIdMsg .
    • Neuer Skriptbefehl InvalidNavMsg = ""; (Default: "This navigation is not possible." ) für unmög­li­che Navigationen (z.B. bei “Zurück” auf dem ers­ten Screen des Fragebogens).
    • Neuer Actionbefehl SetNext(SRC-SCREEN, TARGET) ersetzt SetNextScreen() , wobei TARGET nun auch ein Block sein kann. Außerdem wirkt der Befehl über­schrei­bend, sodass von jedem SRC-SCREEN nur ein abge­hen­der Sprung zur Zeit defi­niert sein kann.
    • Neuer Actionbefehl ResetOnCmpl() bewirkt einen Reset mit voll­stän­di­ge Löschung des Falls am Ende des Interviews oder beim nächs­ten Timeout.
    • Neuer Actionbefehl PostJson("URL"[, "JSON"]) . Es wird ein Http-GET-Request an Zieladresse URL abge­schickt, wel­cher eine JSON Response mit Variablenbelegungen ana­log zu PerformHttpRequest erwar­tet. Bei Angabe des optio­na­len zwei­ten Parameters JSON wird die Anfrage als POST-Request gestellt und der Inhalt als JSON im Payload übermittelt.
      // Fiktiver Request:
      StartActionBlock = {
      postJson("https://www.gessgroup.de/", "{\"action\": \"search\", \"input\": \"GESS Q.\"}");
      };
    • Neuer Actionbefehl AESDecrypt(DATA, AES128KEY) . Gegenstück zu AESEncrypt. DATA wird mit einem 128Bit AES128KEY ent­schlüs­selt. Als Parameter sind TextElemente zu übergeben.
      TextElement data = "Geheime, AES128 verschlüsselte Information."; untranslatable;
      textelement AES128Key = "dd24xyzRwMAHOFXHncNphjd=="; untranslatable;
      StartActionBlock = {
      aesDecrypt( data, AES128Key );
      };
    • HTMLLabels las­sen sich direkt an Fragen definieren.
    • Unterstützung der Datenbanken SQLite und HSQLDB alter­na­tiv zu PostgreSQL. Im Gegensatz zu PostgreSQL ist bei bei­den kein Installationsaufwand für die DB selbst erfor­der­lich. Sie kön­nen alter­na­tiv für das Übersetzungstool (hier nur HSQLDB) und für “sto­rage” (DatabaseConnection, IDs, Preloads) ein­ge­setzt wer­den, wobei PostgreSQL als Standard vor­ein­ge­stellt ist. Dabei neue Parameter in der Konfigurationsdatei:
      // jdbcDriver wahlweise [PostgreSQL|HSQLDB] Default: PostgreSQL
      jdbcDriver=HSQLDB
      jdbcUser=postgres
      jdbcPassword=postgres
      jdbcDropAndCreateTables=false
      // storageDb wahlweise [SQLite|HSQLDB|PostgreSQL] Default: PostgreSQL
      storageDb=SQLite
      storagePath=storage

      jdbcUrl ent­fällt. Benutzername und Passwort wer­den nur für PostgreSQL ver­wen­det. storagePath gilt hin­ge­gen nur für SQLite und HSQLDB.

    • Unterstützung von Textersatz mit­tels @insert in Actionbefehl PrintText .
    • Die Konfigurationsdatei igno­riert führende/abschließende Leerzeichen bei Einträgen.
    • Die Variablen _useragent und _ip (wenn aktiv) wer­den bei jedem Fragebogenaufruf aktualisiert.
    • Die Benutzeroberfläche ermög­licht 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 diver­se Einträge ergänzt.
    • logRequests wur­de als Parameter der Konfigurationsdatei entfernt.
    • Bugfixes:
      — Bei Wiederaufnahmen aus Rettungsdatensätzen wur­de die Unterbrechung nicht mitgezählt.
      — Im Skript defi­nier­te Mailbox wur­de bei Fragebogenstart kon­tak­tiert — führ­te ggf. zu Verzögerungen.
      — Submit-Handling opti­miert: JSONData und onSubmit gin­gen nur bei gra­fi­schen Navigationsbuttons.
      — Textlabel und Hilfetexte an GNumQ ergänzt.
      — (Nicht Studien-)Ordner und Dateien waren im Webinterface als Studien wählbar.
      — Aufhebung von URL beding­ten Längen-Limits im Rahmen der Benutzeroberfläche.
      — PerformHttpRequest Daten in UTF‑8 codiert.
      — PerformHttpRequest berück­sich­tigt @insert() (bei Ausführung des Requests).
      — Die Druckfunktion gibt Quoten kor­rekt aus.
      — Labellisten mit nur einem Labelcode 0.
      — Eine über­schüs­si­ge Leerzeile in der Colmap wur­de entfernt.
      — Mehrfache Klicks auf den Serverstatus ver­ur­sach­te zu häu­fi­ges, auto­ma­ti­sches Neuladen der Seite.
  • Erweiterungen an GESS Q. CAPI Versionen (vor­erst nur Windows)
    • Neue Benutzerrolle Interviewer ohne Zugriff auf das Webinterface.
    • Wahlweise lässt sich eine Stichprobe abar­bei­ten (hin­ter­leg­te IDs mit Preloads). Beim Starten von Interviews muss ent­spre­chend eine der hin­ter­leg­ten IDs vom Interviewer ein­ge­ge­ben wer­den. Serverseitig ist in den Studieneinstellung der Befragungsmodus von anonymous auf sample zu ändern.
    • In Modus anonymous wird igno­riert, ob die Studieneinstellung unbe­kann­te IDs zulas­sen 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 aktu­el­les Interview für die Synchronisation frei.
    • Die Synchronisation des CAPI Clients erfolgt auf des­sen Startseite. Hier wird die Erreichbarkeit des vor­ein­ge­stell­ten Servers visua­li­siert und sowohl das Hochladen frei­ge­ge­be­ner Datensätzen als auch das Aktualisieren von Fragebögen ange­bo­ten. Aktualisierungen wer­den ser­ver­sei­tig über die Versionsangabe in den Studieneinstellungen gesteu­ert. Alle vom Versionsstand des Clients abwei­chen­de Angaben wer­den berücksichtigt.
    • Die Synchronisation des CAPI Clients kann wahl­wei­se voll­au­to­ma­tisch oder über expli­zi­ten Knopfdruck durch den Interviewer erfol­gen. In den ser­ver­sei­ti­gen Studieneinstellungen ist die Synchronisationsart wähl­bar ( auto oder manual ).
    • Bei Synchronisationen erfolgt die Authentifizierung am Server über einen in den Studieneinstellungen hin­ter­leg­ten API-Access-Key. Ein ent­spre­chen­der Benutzer/Interviewer mit Zugriff auf die Studie muss auf dem Server vor­han­den sein.
    • Requests im Rahmen von Synchronisationen oder beim Lizenzieren berück­sich­ti­gen Proxy-Einstellung aus der Konfigurationsdatei.
    • Darstellung von Studientitel und ‑ver­si­on in den Intervieweroberflächen.
    • Dem Interviewer wer­den nur akti­ve Studien zur Bearbeitung angeboten.
    • Bei deak­ti­vier­tem Testmodus wird die­ser in der Intervieweroberfläche ausgeblendet.
    • Bugfixes:
      — Doppelte Datenuploads im Konfliktzustand wur­den vom Server igno­riert, aber posi­tiv 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 wie­der akti­viert. Die Dauer der Nachbearbeitung wird zu _duration hin­zu­ge­zählt und außer­dem getrennt in _durationpp gespeichert.
    • Bei der Tastatureingabe ver­ur­sa­chen Mausklicks kein auto­ma­ti­sches Scrollen in der Seite mehr. Außerdem wird die für Browser typi­sche Zurücknavigation durch Drücken der Taste Backspace unterdrückt.
    • Enter/Exit Screen Events wer­den von Q. aus ans CATI-System übermittelt.
    • Fehlermeldungen opti­miert.
    • Bugfixes:
      — Bei der Nachbearbeitung inak­ti­ver Fälle gin­gen manch­mal ande­re Werte auf dem Screen verloren.
      — Bei Groups mit PreQuoten in den Bedingungen (Keine Wiederaufnahme/Nachbearbeitung).
      — Reload des CATI Headers bei Wiederaufnahmen.
      — Bei CoBrowse wur­den über­schüs­si­ge 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 initia­lem Studien-Upload fest voreingestellt
    • ImageMaps tech­nisch etwas vereinfacht
    • Backslashes wer­den in Daten nicht mehr zu Slashes ersetzt
    • export Attribut für TextElement
    • untranslatable Attribut für TextElement und Group ver­hin­dert Übernahme der Texte in den Übersetzungsvorgang
    • Globale Actionblöcke (Back|Init|PreAssertion|Continue), die bei jeder Frage und vor den fra­ge­spe­zi­fi­schen Varianten aus­ge­führt werden:
      GlobalInitActionBlock = {};
      GlobalBackActionBlock = {};
      GlobalPreAssertionActionBlock = {};
      GlobalContinueActionBlock = {};
    • Das Hinzufügen von Quoten (via Weboberfläche) wirkt inte­gra­tiv; neue wer­den ergänzt, vor­han­de­ne über­schrie­ben; Ist-Stände blei­ben unangetastet
    • Die Quotendefinition ist her­un­ter­lad­bar; das Format ent­spricht dem des Hinzufügens
    • Unter Native data sind gelösch­te Fälle getrennt sicht­bar und wie­der­her­stell­bar; Quotenzählung und Statistik wird beim Wiederherstellen rekonstruiert
    • Unter Native data kön­nen durch Angabe einer Liste mit Fallnummern meh­re­re Datensätze am Stück gelöscht werden
    • Der Zuschauermodus ist auch über _respid im Request möglich
    • _caseid ist wie­der numerisch
    • Bugfixes:
      — FROM Header bei sendMail() kor­rekt gesetzt
      — Datalist Verhalten bei IE-eige­nem 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 über­schnei­dungs­frei sind
  • GESS Q. im GESS Cati
    • PreQuotaVar defi­niert impli­zit auch die Variable cati.address.[NAME]
    • PreQuotaVars las­sen sich in QuotaGroups zusam­men­fas­sen und abfragen
    • Interviewabbruch mit ent­spre­chen­der Meldung bei Verbindungsproblemen zur GESS Cati DB
    • Tastatureingabe: Halboffene Eingabefelder nur nach vor­he­ri­ger Selektion des jewei­li­gen Labels anspringen
    • Quotenabruf unter­stü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ön­nen als Frageattribut notiert wer­den. Während sich format aus­schließ­lich auf kon­kre­te Antworten bezieht, wirkt sich random auch auf Textzeilen und Antwortgruppen aus (ein­zi­ge Ausnahme: splitcolumn ). Gibt es sowohl das Frage- als auch Antwortattribute, wird das Frageattribut bevor­zugt. Bei Gridfragen sind ledig­lich die Griditems betrof­fen. Ergänzend dazu gibt es ein neu­es Labelattribut fixed , mit dem sich Ausnahmen defi­nie­ren las­sen. So lässt sich nun auch labels copy ver­wen­den, um z.B. Labellisten von SingleQs auf NumQs zu übernehmen:
      SingleQ s1;
      labels=
      1 "1"
      2 "2"
      3 "3"
      4 "4"
      9 "9" fixed
      ; random;
      opennumformat onf = 1 2 0 0 0 99 "ERR";
      NumQ n1;
      labels copy s1;
      format onf;
      sortOrder = s1;
    • Über einen ein­fa­chen Javascript-Aufruf lässt sich eine SingleQ als StarRating dar­stel­len. Das fol­gen­de Beispiel wür­de die übli­che Fragetabelle voll­stän­dig durch 5 hori­zon­tal Sterne erset­zen. Welche Bilder ver­wen­det wer­den, lässt sich mit­tels CSS beein­flus­sen. Auf sinn­vol­le Labelcodes ohne Randomisierung etc. ist zu achten:
      SingleQ stars;
      text="Star-Rating";
      labels=
      1 "1"
      2 "2"
      3 "3"
      4 "4"
      5 "5"
      ;
      css = ".stars .qtable{ display:none; }";
      javascript = "QDot.starRating.create('stars');";
    • Datalists sind jetzt auch als ein­fa­ches Textfeld nutzbar:
      opennumformat onf = 1 9 0 0 0 999999997 999999999 "ERR";
      HTML{ numQClass = "GNumQ"; };
      NumQ gemeinde;
      text="Bitte wählen Sie eine Gemeinde:";
      labels=
      1 "Gemeinde:" open format onf
      ;
      datalist={
      "simple":true,
      "file":"gemeindeliste.json"
      // "limit":5,
      // "txtHead1":"Eingabe:",
      // "txtNoResult":"Keine Suchergebnisse!"
      };
    • Der Actionbefehl exit(FCODE) wur­de über­ar­bei­tet, so dass das Interviewende unmit­tel­bar nach Abarbeitung des beinhal­ten­den Actionblocks eintritt
    • Die exter­nen Parameter ext1 - ext30 sind im ASCII Output nun 64-stellig
    • Zu jedem Login kann optio­nal ein API-Access-Key defi­niert wer­den, der sich zur Authentifizierung bei exter­nen POST-Request als URL-Parameter apiAccessKey ver­wen­den lässt
    • Diverse klei­ne­re Ergänzungen und Bugfixes in Benutzeroberfläche und Skript-Check
  • GESS Q. im GESS Cati
    • In CatiAddressData defi­nier­te Felder sind mit den Actionbefehlen set() und setText() edi­tier­bar (ändert die Adresse im CATI)
    • Die Tastatureingabe enableKeyboard = yes; unter­stützt Grids mit meh­re­ren Labelgruppen

 12.10.2017: Revision 2324
  • GESS Q. Allgemein
    • Neue Feedback-Funktion. Ist sie mit­tels Skriptparameter Feedback = yes|no; akti­viert, wird auf Screens im Browser ein gra­fi­sches Feedback-Symbol ein­ge­blen­det, wel­ches es Testern ermög­licht, direkt im Browser Feedback zu geben bzw. Fehler zu mel­den. Der Skripter erhält im Menü “Configure -> Feedback” Zugriff auf das gesam­mel­te Feedback inkl. Screenshots und kann die­ses dort abar­bei­ten, kom­men­tie­ren und in eine druck­ba­re Form brin­gen. Das Feedback-Tool wird von allen gän­gi­gen Browsers unter­stützt. Technisch bedingt kön­nen die Screenshots je nach Template von der tat­säch­li­chen Darstellung abwei­chen, da CSS nicht zu 100% unter­stützt wird. Inhaltlich wird <body> abge­bil­det. Formate an über­ge­ord­ne­ten HTML Tags kön­nen dem­nach nicht berück­sich­tigt werden.
      #ifdef testmode
      Feedback = yes;
      #endif
    • Erweiterung der in Syntax mit voll­stän­dig ODER ver­knüpf­ten 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 schnel­le­rer Einleseroutinen und weni­ger Speicherbedarfs wur­den unnö­ti­ge dop­pel­te Anführungszeichen aus dem Rohdatenformat entfernt
    • HeatPlotter Support für Internet Explorer 7 + 8 und Ablage sei­ner Daten im CSVINFILE
    • Dem Skript-Check kön­nen optio­nal Defines über­ge­ben werden
    • Durch das Überschreiben der Javascript-Funktion QDot.onSubmit() , kann auf das Abschicken eines Screens reagiert wer­den. Hiermit lässt sich bei­spiels­wei­se eine hin­ter­grün­di­ge Audioaufnahme inner­halb der Android App beim Verlassen eines Screens been­den. Liefert die Funktion false zurück, wird die Navigation (Vor/Zurück) abgebrochen:
      QDot.onSubmit = function(){
      if(window.Android != undefined) {
      Android.stopRecording();
      }
      };
    • _caseid ist im CSVINFILE jetzt nume­risch und dop­pel­te Anführungszeichen wer­den kor­rekt notiert statt durch ein­fa­che ersetzt
    • Neuer loka­ler Skriptparameter: GridErrorType = all|nomissing; wählt, ob das Errorhighlighting bei Gridfragen nur bei Eingabezwängen (Default) oder bei sämt­li­chen assert -Anweisungen greift
    • Im Server-Status wer­den zusätz­li­che Versionsinfos dargestellt
    • Die Versionsnummern für Chrome und Firefox wur­den für die inter­ne Browsererkennung fortgeführt
    • Die Verwendung von ReadTextRessource inner­halb des ChangeLanguageActionBlock (Endlosschleife!) führt zu einer Fehlermeldung im Skript-Check
    • Bugfix: attempts bei Assertions funk­tio­nier­te bei Screens mit meh­re­ren Fragen nicht korrekt
    • Bugfix: Ausbesserung diver­ser klei­ner 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-initi­ier­ten Audioaufnahmen wer­den Doppelstarts igno­riert; eben­so Stop, wenn kei­ne Aufnahme läuft

 02.08.2017: Revision 2270
  • GESS Q. Allgemein
    • Die Sortierung in der Studienauswahl rich­tet sich per Default nach dem letz­ten Zugriffsdatum, so dass das aktu­el­le Working-Set stets oben zu fin­den ist
    • Die Nutzerzuordnung zu Studien ist jetzt alpha­be­tisch und Admins sind geson­dert aufgeführt
    • Neuer Reiter Backups und Archive im Survey Manager zum Durchsuchen und Download
    • Studieneinstellungen sind in Datei config.json zusam­men­ge­fasst. Reportingeinstellungen in reporting.json . Alte Konfigurationsdateien wer­den nur noch zum initia­len Herleiten der neu­en JSON Varianten ver­wen­det, sofern die­se noch nicht existieren
    • Neue Studieneinstellung Tags: Definiert Suchbegriffe zum spä­te­ren Auffinden der Studie im Archiv
    • Neue Studieneinstellung Use coo­kies: Verhindert über Cookies, dass der sel­be Fall gleich­zei­tig von zwei Browsern betre­ten wird
    • Neue Studieneinstellung Server: Verbindet eine Studie mit einem Server (kein wahl­frei­er Upload mehr)
    • Neue Studieneinstellung Version: Zur Versionierung des Projekts (bis­her nur manuell)
    • In Studienmenü Languages kön­nen HTML Text-Switches je Sprachquelle defi­niert wer­den (ehem. languages.lst)
    • Die Statistik-Seite lässt sich nun voll­stän­dig über die Benutzeroberfläche konfigurieren
    • Die Sichtbarkeit von Menüpunkten des Reportings sowie Quoten lässt sich je Nutzer voll­stän­dig über die Benutzeroberfläche konfigurieren
    • Im Server-Status kann akti­ven Fällen in einem Zuschauermodus bei­getre­ten werden
    • Admins kön­nen die Erstellung eines Backups bei Resets unterdrücken
    • Admins kön­nen die Erstellung eines ser­ver­sei­ti­gen Backups bei Uploads unterdrücken
    • Neuer Skriptparameter saveOnBack = yes|no; Speichert Antworten in Screens bei Zurück-Navigation (Default: no )
    • Neuer Actionblock (Frage-spe­zi­fisch): BackActionBlock
    • Neuer Actionbefehl: clearScreen(SCREEN) löscht alle Fragen in Screen SCREEN
    • Neuer Actionbefehl: case2json(TEXTVAR) schreibt die der­zei­ti­gen Daten des aktu­el­len falls als JSON in TEXTVAR (nur in Vollversionen)
    • Neuer Actionbefehl: aesRandomKey(TEXTVAR) schreibt einen zufäl­lig gene­rier­ten AES Key und schreibt ihn in TEXTVAR
    • Neuer Actionbefehl: aesEncrypt(DATA, KEY) ver­schlüs­selt DATA mit­tels AES Key KEY (AES/CBC/PKCS5Padding und Key=IV)
    • Neuer Actionbefehl: rsaEncrypt(DATA, PKMOD, PKEXP) ver­schlüs­selt DATA mit­tels RSA Publick Key bestehend aus Modulus PKMOD und Exponent PKEXP . Im fol­gen­den Beispiel wird der aktu­el­le Datensatz als JSON abge­grif­fen und mit AES Key gene­riert. Mit dem Key wer­den die Daten ver­schlüs­selt. Anschließend wird der AES Key selbst mit einem öffent­li­chen RSA Schlüssel verschlüsselt
      textelement DATA;
      textelement AES128Key;
      textelement RSAPublicKeyModulus = "01234567890123456789...";
      textelement RSAPublicKeyExponent = "12345";
      ActionBlock ab = {
      case2json(DATA);
      aesRandomKey(AES128Key);
      aesEncrypt(DATA, AES128Key);
      rsaEncrypt(AES128Key, RSAPublicKeyModulus, RSAPublicKeyExponent);
      };
    • DatabaseConnection kann optio­nal auch auf Datenbanken refe­ren­zie­ren, die nicht gleich­na­mig zum Projekt sind
      databaseConnection DBC = ("DBNAME", "TABLENAME", (SURVEY RESPID DATA));
    • TimeoutCheckInterval beträgt per Default 60 Sekunden
    • FinishScreen wirft Fehler im Skript-Check, wenn der ange­ge­be­ne Screen nicht exis­tiert — ist jedoch nun gene­rell deprecated
    • Bugfix: showMaxLabels
    • Bugfix: splitcolumn in Grids und GNumQ
    • Bugfix: individualErrors in GNumQ
    • Bugfix: Fortschrittsbalken bei unvoll­stän­dig sor­tier­ten Blöcken
  • GESS Q. Android
    • Bugfix: Speicher-Leak bei lan­gen Groups
  • GESS Q. im WebCATI
    • Request zum Abfragen der defi­nier­ten Finishcodes (abge­lei­tet aus Statistik)
    • Bugfix: Änderungen von _finished im CmplActionBlock wur­den ignoriert

 06.04.2017: Revision 2216
  • GESS Q. Android
    • Ab Android 6 wer­den benö­tig­te App-Rechte nun beim Programmstart abgefragt
  • GESS Q. Allgemein
    • Robot-Update: Robot benutzt nun den Internet Explorer (64Bit)
    • Neue Tastatureingabe akti­vier­bar mit enableKeyboard = yes|no
    • Q. Desktop und Q. CAPI las­sen sich über das Startskript auf einem ande­ren Port als 8080 starten
      startcapi.bat
      -------------
      [...].JettyServer %SRoot% 8081
    • In der Configure-Quotenansicht las­sen sich Quotenstände neu zäh­len (gemäß Datensätzen)
    • Das Studienauswahlfeld in der Benutzeroberfläche lis­tet akti­ve und deak­ti­vier­te Studien nach­ein­an­der in zwei Gruppen und ist auf-/ab­stei­gend sor­tier­bar (Default: Absteigend)
    • Bei Studienuploads ist (Ziel-)serverseitiges Backup per Häkchen deaktivierbar
    • Quotenbeschreibung über Benutzeroberfläche editierbar
    • Benutzeroberfläche ermög­licht 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 kei­ne Colmap vorhanden
    • Bugfix: Backups in den Backup-Ordner
    • Bugfix: For/-Each Loops in ActionBlöcken an Blöcken funk­tio­nier­ten nicht

 10.03.2017: Revision 2192
  • GESS Q. Android
    • Support für Datalists ergänzt
    • “Device Ownership” kann per USB auch wie­der ent­zo­gen wer­den (ab Android 5)
  • GESS Q. im WebCATI
    • Requests für Co-Browsing: Aktueller Screen / Vorheriger Screen inkl. Antworten
    • Globaler Parameter postEdit zusätz­lich zu postEditable an Fragen, um die­se in der Nachbearbeitungsphase eines Telefoninterviews vor­ge­legt zu bekom­men. PostEdit stellt gene­rell ein, wel­che Fragen vor­ge­legt wer­den sol­len, mit postEditable kann man zusätz­li­che Fragen ergänzen:
      postEdit = [all|none|opens];
    • Actionbefehle für Aufnahmen und Audiowiedergaben via Dialer:
      ActionBlock ab = {
      dialerPlaybackOn("testaudio.wav");
      // dialerPlaybackOff();
      // dialerRecordOn();
      // dialerRecordOff();
      };
  • GESS Q. Allgemein
    • Actionbefehl zum Versenden von E‑Mails. Voraussetzung ist ein bereits exis­tie­ren­des E‑Mail Postfach, wel­ches E‑Mails SSL ver­schlüs­selt mit Authentifizierung über SMTP verschickt
      Mailbox myMailbox = ("HOST", "ADRESSE", "USER", "PASSWORT");
      Compute mailResult = 0;
      textq welcome;
      text="Hallo Welt! -> @insert(mailResult)";
      assert (mailResult eq 1) "Mail konnte nicht abgeschickt werden.";
      PreAssertionActionBlock = {
      SendMail(myMailbox, mailResult, "receiver@internet.de", "Betreffszeile", "Inhalt (HTML erlaubt)");
      };
    • ReadDataFile ver­sucht jetzt das Encoding der refe­ren­zier­ten Datei auto­ma­tisch zu ermitteln
    • Neuer Fragetyp UploadQ ermög­licht dem Befragten das Hochladen von Dateien mit Typ- und Größenbeschränkungen, die spä­ter als MISC im Rahmen der offe­nen Antwortkategorien expor­tiert wer­den kön­nen. In die­sem Rahmen gibt es außer­dem 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 glo­ba­ler Actionblock ChangeLanguageActionBlock . Wird nach jedem Lesen einer Sprachdatei aus­ge­führt. Achtung: Die Verwendung von readTextRessource() im ChangeLanguageActionBlock wür­de zu einer Endlosschleife führen.
    • Neue Systemvariable _languages . Enthält durch Leerzeichen getrenn­te Liste aller gela­de­nen Sprachdateien in Einlesereihenfolge. Folgendes Beispiel wür­de stets die zuletzt gela­de­ne 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, wel­ches defi­niert wie vie­le Backups einer Studie maxi­mal erstellt wer­den (Default: 3). Bei Überschreitung wird das jeweils ältes­te Backup gelöscht.
    • Bugfix: Ersetzung von HTML-notier­ten Anführungszeichen ” bei GESStabs Variables
    • Bugfix: Das Löschen ein­zel­ner Fälle löscht jetzt eben­falls zuge­hö­ri­ge Media-Daten
    • Bugfix: Handling von Groups nur mit else Zweig
    • Bugfix: #defi­ne, #ifdef berück­sich­tig­te kei­ne Groß-/Kleinschreibung

 21.11.2016: Revision 2115
  • NEU: GESS Q. CAPI
    • Analog zur Android App mit iden­ti­scher Menüführung und inter­view­er­ge­rech­ten 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 star­te­te nicht)
    • Serverseitige Duplikatsprüfung bei Datenuploads (Bestätigung statt Fehlermeldung)
    • Wahlweiser Upload von abge­bro­che­nen Fällen
    • Unterstützung für fran­zö­si­sche App Bedienelemente
    • Autom. Lizenzrefresh bei App-Start (Internetverbindung erforderlich)
    • Anzeige Lizenznehmer auf Startseite (Firmenname)
    • Ab Android 5: App-Block benö­tigt Sonderrechte und ver­hin­dert 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 ver­knü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');";
  • GESS Q. im WebCATI
    • Anbindung WebCATI — GESS Q. im Config-File
      /*** qonline.cfg ***/
      catiCust=Kunde1
      catiUser=Benutzer
      catiPass=Passwort
    • Abfrage von Systemvariableb (nur lesend). cati.customer stammt aus dem Config-File, alle ande­ren wer­den auto­ma­tisch vom WebCATI übergeben:
      /*** Abfrage von WebCATI Systemvariablen ***/
      textq welcome;
      title = "
      WebCati Systemvariablen:<br>
      cati.study: @insert(cati.study)<br>
      cati.case: @insert(cati.case)<br>
      cati.server.url: @insert(cati.server.url)<br>
      cati.customer: @insert(cati.customer)<br>
      cati.terminal: @insert(cati.terminal)<br>
      cati.user: @insert(cati.user)<br>
      cati.userid: @insert(cati.userid)
      ";
    • Integration von Adressdaten (nur lesend; Editieren ändert nicht die Adresse selbst):
      /*** Integration von WebCATI Adressdaten ***/
      CatiAddressData begin;
      TextElement name;
      TextElement vorname;
      TextElement strasse;
      Compute plz = 0;  
      CatiAddressData end;
      textq welcome;
      title = "
      WebCati Adressdaten:<br>
      cati.address.name: @insert(cati.address.name)<br>
      cati.address.vorname: @insert(cati.address.vorname)<br>
      cati.address.strasse: @insert(cati.address.strasse)<br>
      cati.address.plz: @insert(cati.address.plz)
      ";
    • Integration von PreQuoten (bis­her nur lesend):
      /*** 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 nach­zu­be­ar­bei­ten­den 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() unter­stüt­zen VarArray als Parameter
    • Deutliche Performanceoptimierungen im Rahmen von Data/Export
    • Datenexport in CSV (GESStabs CSVINFILE )
    • CSV Daten als Standard für Reporting/SPSS (erfor­dert GESStabs Version mit CSVINFILE )
    • Änderung des colmap Formats im Rahmen des neu­en CSVINFILE Exports
    • IDs als CSV inkl. Preloads (optio­nal) hoch­lad- und anzeig­bar. Preloads wer­den auto­ma­tisch bei Interviewstart geladen
    • Bei input=no wer­den kei­ne lee­ren HTML DIVs und Titel mehr ausgegeben
    • splitcolumn unter­stü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 vor­erst aus Serverinstallationen entfernt
    • Webinterface: Fortschrittsanzeigen für Dateiuploads und Datenexporte
    • Webinterface: Anzeige der Festplattenbelegung im Server-Status
    • Webinterface: Anzeige ver­schlüs­sel­ter 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 ver­schach­tel­te Screen-Layouts
    • Bugfix: Zeitmessungen

 30.6.2016: Revision 1985

GESS Q. Android:

  • Die Loginseite für Interviewer wur­de aus der App entfernt.

GESS Q. Allgemein:

  • Die colmap.lst ist zukünf­tig im Ordner gtc ange­sie­delt. Alte Verzeichnisstrukturen wer­den nach wie vor kor­rekt gelesen.
  • Tsuchisakiko-Akita-chapter-2400px Die exter­nen Parameter ext1 — ext30 sind änderbar.
  • Alle Systemvariablen des ASCII Files gibt es jetzt auch in der var.inc
  • Der Screenshot-Roboter wur­de im Hinblick auf neue Firefox-Versionen aktualisiert.
  • num() zählt nun auch die Zeichen in TextElement
  • Präprozessordirektiven wie #macro &macro; #define #include kön­nen ein­ge­rückt werden.
  • Um abzu­si­chern, dass Single-Links nicht mehr­fach par­al­lel betre­ten wer­den, kann ein Cookie-Handling akti­viert wer­den. Ein par­al­le­ler Zugriff wür­de zur CaseInUseMsg füh­ren. Das Verhalten kann in einer Datei config.json im Hauptverzeichnis der Studie akti­viert 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 berech­net aus ange­ge­be­nen Tag, Monat, Jahr, Stunde, Minute und Sekunde die Millisekundenrepräsentation gemäß _currentmillis :
Compute cInMillis = toMillis(30, 6, 2016, 12, 0, 0);
  • WriteViewingTime kann gezielt für bestimm­te Screens akti­viert 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 exak­te Verhalten ent­spricht der Java-Implementierug von String.replaceAll():
  replaceAll(TXTVAR-TGT, TXTVAR-SRC, "REGEX", "REPLACEMENT");
  • Tsuchisakiko-Akita-chapter-2400px Leere Übersetzungen wer­den nicht in die erzeug­te .lrs Datei der Zielsprache über­nom­men — auch nicht, wenn die Felder grün mar­kiert sind.
  • Im ASCII Datensatz wer­den fort­an 64 Spalten für die RespID reserviert.
  • Im GESS Q. Configfile kann für die Kommunikation nach außen IP und Port eines ggf. ein­ge­setz­ten Proxyservers defi­niert werden:
proxyIp=127.0.0.1
proxyPort=8080
  • maxMemoryLoad hat einen Gültigkeitsbereich von 5–95 (Default 80).
  • Das Datalist Tool kann mit einer rei­nen Wortanfangssuche betrie­ben wer­den. Außerdem kön­nen meh­re­re Datalist-Tools auf einem Screen plat­ziert werden.
  • Aktualisierung der Erkennung von Browser-/Betriebssystemen.
  • Aus Wunsch kön­nen dem Datensatz IP-Adressen zuge­fügt werden:
  saveIP = yes; // Default: no
  • Tsuchisakiko-Akita-chapter-2400px Es gibt kei­nen expli­zi­ten Zahlenwert mehr für Missings. Missings wer­den durch ein ‘m’ reprä­sen­tiert. Der missingValue exis­tiert im Skript nach wie vor, aller­dings nur noch um ggf. alte Datendateien kor­rekt ein­le­sen zu kön­nen. Syntaktisch ändert sich nichts. In Berechnungen ver­hält sich Missing immer wie eine 0. Bei Bedingungen mit Gleichheit ist Missing nur gleich ande­ren Missings. Die Vergleiche gt und lt lie­fern false sobald min­des­tens einer der Operanden Missing ist.
  • Sind Variablennamen in den Outputdaten nicht wunsch­ge­mäß, las­sen sie sich an belie­bi­gen Stellen im Skript mit­tels ExportMapping für den Export auf­be­rei­ten. Dies wirkt sich aus­schließ­lich auf den Export (genau­er die gene­rier­te var.inc) aus.
  NumQ n1;
labels=
1 "Alter:" format onf_age
;
exportMapping "n1.1" "alter";
  • Tsuchisakiko-Akita-chapter-2400px Ergänzend zu InvalidIdMsg gibt es auch IdClosedMsg , die bei Single-IDs im Falle einer Mehrfachteilnahme aus­ge­ge­ben wird. Voreingestellt kommt die glei­che (eng­li­sche) Meldung wie bei InvalidIdMsg.
  idClosedMsg = "Dieser Zugang wurde bereits verwendet.";
  • Die Fehlerseite memoverload.html im Falle (zu) hoher Serverauslastung kann pro­jekt­spe­zi­fisch im Ordner text abge­legt wer­den. Dort ist sie höher prio­ri­siert als die all­ge­mei­ne Seite im Ordner con­fig.
  • Diverse klei­ne­re 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­ßen­des 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 nega­ti­ven Werten
    • autochangepbar über­schreib­bar durch changepbar
  • Voting über­ar­bei­tet:
    • Netzwerkkommunikation opti­miert
    • Serverkommandos wer­den 6x in 10Sek verschickt
    • in SURVEY/votinglimit.txt kann ein Prozentwert (z.B. ‘70’) ange­ge­ben, bei dem sich die Client-Fortschrittsbalken in der Übersichtsseite des Servernotebooks blau färben
  • Group akzep­tiert 0 als Labelwert
  • jQuery und Datatables aktualisiert
  • Betrachtungszeiten von WriteViewingTime gelan­gen mit in die Export; Im Codebook des Standard a.tab für GESStabs tables wer­den sie durch den neu­en 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
  • Datenkonvertierung spei­cher­op­ti­miert (beim Export)
  • Minor Bugfixes:
    • ID Manager, Datalist Tool, Javascript-Engine, OpenNumFormat
    • PostInterviewerHelptext (CSS), Rescue-Wiederaufnahme, lfdcount (-1)

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 visua­li­siert bei wie­der­hol­tem Anzeigen jetzt selbst­tä­tig ihre Werte
  • HeatPlotter-Actionbefehle zum geziel­ten 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 steu­ern, ob HeatPlotter Markierungen vor oder hin­ter dem Zielbild ein­ge­zeich­net wer­den. Hinter dem Bild hat den Vorteil, dass kei­ne Fläche für wei­te­re Punkte durch die Größe der Markierung belegt und damit nicht erneut klick­bar ist
  • maxLoad ist jetzt im ServerStatus sichtbar
  • neue Skriptbefehle setfilter und endfilter
  setfilter [NAME] [text "TEXT"] = CONDITION;
// ...
endfilter [NAME];
  • neu­er Skriptbefehl autoChangePBar = yes|no; setzt den Fortschrittsbalken bei Filtern auto­ma­tisch über die Menge aus­ge­las­se­ner Screens weiter
  • Attribut noMissing = yes|no; für Fragen (höhe­re Prio als DefaultNoMissing )
  • gridItemRestrict ana­log zu restrict (restrict bei Grids funktionsgleich)
  • gridLabelRestrict = (RVAR1 [RVAR2 …]);
  • Fragebögen wer­den in nicht lizen­zier­ten Versionen jetzt immer mit #define demoversion ausgeführt
  • eine Datei noautostart.txt (Inhalt egal) neben startcapi.bat unter­drückt das auto­ma­ti­sche Öffnen des Defaultbrowsers durch GESS Q. Desktop
  • ana­log zu GridLabelHeader gibt es jetzt auch GridLabelFooter
  • neu­er Actionbefehl setCurrentScreen(SCREEN) zum abso­lu­ten Setzen des nächs­ten dar­zu­stel­len­den Screen. Ist etwas tri­cky, sie­he Handbuch
  • num() kann jetzt auch zur Abfrage der Größe eines VarArray ver­wen­det werden
  • Update des Robot für aktu­ells­te Firefox Versionen
  • Übersetzungstool:
    • Prüfung von @openfeaturetext() und @target()
    • der Suchbegriff “QSYNTAX” lie­fert alle Texte mit syn­tak­ti­schen Besonderheiten
  • ID Management in der Weboberfläche überarbeitet:
    • unli­mi­tier­tes Zufügen von IDs per Eingabefeld
    • Generieren von IDs (nume­risch oder als 32-stel­li­ge Hashes)
    • Duplikatprüfung (wer­den ausgelassen)
    • pass­wort­ge­schütz­tes Löschen gan­zer Listen
    • Tabellenansicht mit Status, Such- und Sortiermöglichkeit
    • Editieren und Löschen ein­zel­ner IDs
  • neu­er Skriptbefehl script(“JAVASCRIPT”); für fle­xi­ble Actionlogiken in Javascript Syntax. Mit @insert() kön­nen Werte von GESS Q. Variablen ins Javascript ein­ge­bet­tet wer­den, @save(VAR = VAL); wird defi­niert wel­che Werte am Ende der Ausführungslogik in wel­che GESS Q. Variablen zurück­ge­spielt wer­den. 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 lie­fert sämt­li­che Groups und TextElements
    • Bugfix values bei Grids
    • Bugfix bei ecki­gen Klammern in Texten
  • Druckfunktion für Fragebögen:
    • unter Configure bie­tet die Weboberfläche jetzt eine druck­fä­hi­ge HTML Ausgabe für den Fragebogen inkl. Anzeige von Filter, Asserts, Labelattributen. Ideal als Testinstrument
  • Skriptcheck Meldungen:
    • bei mehr­fach ver­ge­be­ne Labelwerte wer­den über meh­re­re Labelgroups
    • Actionbefehle ganz ohne Klammern
    • bei set Action
    • Fehler bei OpenNumformat Zahlenbereichen auf Warning-Level reduziert
    • wenn Quoten ange­legt, aber nicht im Skript defi­niert sind
  • Bugfix: sliderleftvalue zeigt jetzt den glei­chen Wert wie rechts

13.5.2016: Heatplotter+ImageMap, Serverlast, Actionbefehle mit VarArray, und und und…
  • ImageMap über­ar­bei­tet
    • Kompatibilität zu alten InternetExplorern (7,8,9)
    • Standardfarbe für Highlighting jetzt vis Javascript änderbar
    • Highlighting-Verhalten auf Klick kann jetzt auch gänz­lich modi­fi­ziert werden
javascript="
qImageMap.defaultColor = 'rgba(0, 255, 0, 0.5)';
qImageMap.onClick = function(q, id, isSingleQ, isMultiQ){
alert('geklickt!');
};
qImageMap.makeQImageMap('frage', 'mapID');
";
  • Heatplotter über­ar­bei­tet
    • Indicator Bildgröße kann jetzt belie­big sein
    • Losgelöst von jeg­li­cher Funktionen kön­nen fixe Elemente (z.B. Punkte aus vor­he­ri­gen Fragen) ein­ge­zeich­net werden
    • über eine restrict Funktion kann in die Positionierung ein­ge­grif­fen werden
      • wenn z.B. nur die X‑Achse rele­vant ist, lässt sich Y fest auf 0 setzen
      • Klicks kön­nen ver­wor­fen wer­den, wenn z.B. nicht alle Teile des Bildes klick­bar 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 aktua­li­siert (neue Chrome und Firefox Versionen)
  • Aktive Interviews ver­blei­ben in Export/Reporting (falls vor­han­den, mit ihrem letz­ten Abbruchzustand)
  • Serverlast / Performanceoptimierungen
    • Optimierung bei sehr lan­gen Filterketten, die zu vie­len über­sprun­gen Screens am Stück führten
    • vie­le klei­ne Optimierungen in Bezug auf Speicher- und CPU Auslastung
    • maxMemoryLoad=80 in der qonline.cfg setzt die maxi­mal zuläs­si­ge Speicherauslastung in % (Default:80)
      • bei einer Interviewanfrage wäh­rend Überlastung löst GESS Q. höchs­tens ein­mal in 5 Minuten eine Java GarbageCollection aus. Ist die vor­ge­ge­be­ne Maximallast den­noch über­schrit­ten wer­den neue Teilnehmer mit Statusseite memoverload.html abgelehnt
      • memoverload.html muss neben der qonline.cfg im con­fig-Verzeichnis liegen
      • abge­lehn­te Interviews und von GESS Q. ange­sto­ße­ne GarbageCollections wer­den in /config/serverlog.lst geloggt
  • Lizenzierung von GESS Q. Desktop
    • jetzt auch von der Nutzeroberfläche aus möglich
    • inner­halb einer Lizenz wer­den jetzt auch bei GESS Q. Desktop ein­deu­ti­ge Fallnummernbereiche vergeben
    • Neulizenzierungen über­schrei­ben jetzt immer alte Settings
  • Neue Actionbefehle
  // round(VAR)
set(x = round(x));
// pow(BASE, EXPONENT)
set(x = pow(10, 3)); // 10³
  • Viele ActionBefehle wur­den über­ar­bei­tet, damit sie pro­blem­los mit Variablen aus einem VarArray harmonieren:
  clear
exclLoad,
findMaxValIndex
findMinValIndex
lalign
load
print
ralign
remove
removeDuplicates
rotateLeft
set
setText
shuffle
syncSort
  • HTML Template
    • neben @tt1-@tt8 gibt es auch @freetext1-@freetext8 mit inter­nen Textvariablen _freetext1-_freetext8
  • Übersetzungstool
    • Montenegrisch in Sprachliste ergänzt
    • im LRS Download sind jetzt auch nur noch über­set­zungs­re­le­van­ten Texte
  • Die GNumQ wur­de überarbeitet
  • NumQ Labels mit open
    • Übernahme in die var.inc und SPSS
    • Eingabefeld jetzt per Default hin­ter 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 wur­de nicht immer ausgeführt
    • Bugfix: Combobox konn­te ungül­tig aus­ge­füllt werden
    • Bugfix: Sprünge mit setNextScreen wur­den nicht gespei­chert (Abbruch/Wiederaufnahme)
    • Bugfix: expan­dier­tes Skript kam mit BOM Fehler
    • Bugfix: die Standard *.tab Files für GESStabs geben jetzt kein fes­tes Encoding mehr vor
    • Oberfläche: Hinweistext, wenn Verknüpfung zu GESStabs fehlt
    • Oberfläche: Hinweistext, wenn kein per USB ange­schlos­se­nes Tablet gefun­den wurde
    • Oberfläche: ServerStatus wur­de nicht immer kor­rekt dar­ge­stellt. Interviewfortschritt bis max. 110.

30.1.2015: Eine Reihe neuer, praktischer Features
  • Beim Übersetzungstool las­sen sich Zielsprachen per Upload eines LRS Files befüllen
  • Der set() Befehl kann jetzt auch Arrays in einem Schritt bele­gen. Es wer­den ab Arrayindex 1 fort­lau­fend nur so vie­le Stellen belegt wie ange­ge­ben. Überschüssige Stellen blei­ben ohne Effekt
  array arr[10];
// ...
set( arr = [1 3 5 -1 6:9 0 0] ); // {1, 3, 5, -1, 6, 7, 8, 9, 0, 0}
  • Neue Actionbefehle findMinValIndex(ARRAY, COMPUTE); und findMaxValIndex(ARRAY, COMPUTE); durch­su­chen ARRAY nach ihrem kleinsten/größten ent­hal­te­nen Wert (Missings aus­ge­nom­men). Der zuge­hö­ri­ge 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 gel­ten soll, lässt sich über den neu­en Skriptparameter GridOpenNoMissing = yes|no; einstellen
  • Es gibt nun ein else Label für Groups. Außerdem wer­den Groups bei Textersatz nun per Default alle zutref­fen­den Labels als Komma-sepa­rier­te Liste aus­ge­ge­ben. Optional kön­nen die Trennzeichen und der letz­te Trenner mit dem Parameter insert=“SEP”,”CON”; frei bestimmt wer­den. In letz­te­ren Fall wür­den die­se Angaben auch in den Übersetzungsauflauf über­nom­men 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 mehr­fa­cher Definition von FinishForward
    • Bugfix numCoords() ver­hielt sich ohne Eingabezwang falsch, wenn kei­ne Markierungen vor­ge­nom­men wurden

21.1.2015: Dez-/Tsd-Trennzeichen, Filter führen zu _missing, filterbare Quoten, HeatPlotter, Actionblöcke an Blöcken
  • Neue inter­ne Variable _encryptedcaseid , die die Fallnummer in ver­schlüs­sel­ter Form ent­hält. Hiermit lässt sich z.B. auf siche­re Art ein öffent­li­cher Link bereit­stel­len, um Interviewteilnehmern am Ende des Interviews das Ausdrucken ihres Fragebogens via Robot zu ermöglichen
  • Beim Überspringen von gefil­ter­ten Fragen wer­den die­se nun immer expli­zit auf _missing gesetzt
  • Es ist nun mög­lich einen [Init|Continue]ActionBlock an Blöcke zu hängen
  • Zwei neue ActionBefehle um Dezimal- und Tausendertrennzeichen für das DecimalFormat ein­zu­stel­len:
    • setDecimalSeparator(”,”) ”,” ist Default
    • setGroupingSeparator(”.”) ”.” ist Default
  • Übersetzungsfeature
    • .lrs Dateien und nati­ve Sprache jetzt auch immer in alpha­be­ti­scher Reihenfolge
    • Sprach-/Länderliste erwei­tert
  • Quotenliste jetzt abhän­gig vom Login fil­ter­bar über Datei quotafilter.json im Hauptverzeichnis. Diese Datei ist beim Serverupload in der “CONFIG” Kategorie enthalten
********************
* quotafilter.json *
********************
[
{
"userid": "gess_trittel",
"quotavars": [
"gesamt",
"q2",
"q4"
]
},
{
"userid": "another_user",
"quotavars": [
"gesamt"
]
}
]
  • Bei Interviewstart wer­den jetzt trotz abge­schlos­se­nen Fällen oder deak­ti­vier­ter Studie exter­ne Parameter und der StartActionBlock aus­ge­führt, um z.B. etwai­ge Fehlermeldungen in der rich­ti­gen Sprache aus­ge­ben zu können
  • Bei exter­nen Requests an den GESS Q. Server (z.B. für Datenexport) kön­nen LoginInformationen jetzt als JSON im Payload von HTTP Post Requests unter­ge­bracht werden
{
"company":"Firma",
"name":"Name",
"password":"Passwort"
}
  • Neues Befragungsfeature HeatPlotter stellt Bilder dar, die per Mausklick mit belie­big vie­len Markierungen ver­se­hen wer­den kön­nen. Gespeichert wird eine JSON-Liste mit den XY-Koordinaten als offe­ne 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; ver­an­lasst den Server dazu die Koordinatensyntax im ver­steck­ten Open-Feld ser­ver­sei­tig zu prüfen
  • indicator (opt.) stellt ein Bild für das Markierungssymbol ein (idea­ler­wei­se 16×16 Pixel groß)
  • removeButtonTxt (opt.) stellt ein, wel­che Beschriftung auf dem “Letzte Markierung löschen” Button ste­hen soll
  • maxCoords limi­tiert brow­ser­sei­tig die maxi­ma­le Anzahl an Markierungen
  • Die neue Syntax numCoords(OPENQ) für Bedingungen lie­fert zurück, wie vie­le Koordinaten ange­ge­ben wurden
  • Bugfixes:
  • Diverse opti­mier­te und ergänz­te Fehlermeldungen im Skriptcheck
  • Übersetzungsfeature (fror in bestimm­ten Situationen ein)
  • Support, Neuigkeiten und Dokumentation
  • Demos und Videos
  • Tutorials und Handbücher
  • Downloads
  • Neuigkeiten
    • GESStabs
    • GESS Q.
    • GESS ChartFactory
  • Schulungen

Neueste Beiträge

  • Es lebe die Tabelle
  • GESS Q. abseits der klassischen Befragung
  • GESStabs Handbuch 5.2

Sie wurden angerufen?

Wir führen Telefonumfragen für die Markt- und Sozialforschung durch. Als Mitglied des Bundesverbandes der deutschen Marktforscher halten wir uns streng an die Richtlinien des Verbandes und des Datenschutzes.
Ihre Meinung ist uns wichtig!
Haben Sie Fragen oder Feedback zu unseren Umfragen? Kontaktieren Sie uns!

Kontakt

GESS Gesellschaft für Software in der Sozialforschung mbH
GESS Phone & Field Marktforschung GmbH
Waterloohain 6-8
22769 Hamburg
Telefon: +49 40 853 753 0
Telefax: +49 40 853 753 33

Senden Sie uns Ihre Anfrage an: info@gessgroup.de
© 2016-2021 GESS Gesellschaft für Software in der Sozialforschung mbH • Impressum • Datenschutzerklärung
  • Startseite
  • Software
    • GESStabs
    • GESS Q.
    • GESS ChartFactory
    • GESS Cati
    • Support, Neuigkeiten und Dokumentation
  • Umfragen und Analysen
    • Telefonumfragen
    • Onlineumfragen
    • Offlineumfragen
    • Mixed-Mode-Design
    • Datenverarbeitung und Analysen
  • Blog
  • Unternehmen
    • Engagement
    • Jobs
  • Referenzen
    • Kunden und Partner
    • Projekte
  • Kontakt
    • Impressum
    • Datenschutzerklärung