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üh­ren.


 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 her­un­ter­lad­bar.
      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 ein­ge­fü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 aus­ge­führt.
    • infomail infomailrecipient infomailsubject kön­nen jetzt bei Bedarf über die Variablenliste (Colmap) expor­tiert wer­den.
    • Template Platzhalter bis @tt20 erwei­tert.
    • Flackereffekt bei der Tastatureingabe per Javascript deak­ti­vier­bar:   
      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 ein­stell­bar:   
      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 hin­ter­le­gen.

    • 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ög­lich.
    • 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 ver­an­schau­licht:   
      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 ein­bau­en.
    • Bugfixes:
      — randomid jsessionid uniquekey aus Datenexport ent­fernt.
      — Requestlogging: Passwörter bei exter­nen API Zugriffen ent­fernt.
      — Enthaltungsbutton bei gra­fi­scher NumQ kor­ri­giert.
      — @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 feh­ler­haft.
      — 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äng­lich.
      — ResetOnCmpl() kam in Zusammenhang mit WriteRescueData zu oft.
      — Start-Menü: Zeichenbeschränkung für ID und Defines auf­ge­ho­ben.
      — Remove HTML in der Variablenbeschreibung ver­bes­sert.
      — 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 deak­ti­viert.
      • Kleinere Optimierungen an den stan­dard Reporting-Tabellen.
      • Performanceoptimierung bei OPN Export, wenn man respid statt cas­eid anfor­dert.
      • Systemvariablen haben Beschriftungen für den Export erhal­ten.
      • Die Systemvariablen _randomid _jsessionid _uniquekey _resume wur­den aus Exporten ent­fernt.
      • 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 ver­se­hen.
    • Bugfixes:
      — BrowserNavMsg ist jetzt glo­bal und wur­de bei Übersetzungen nicht immer kor­rekt ein­ge­blen­det.
      — Datenexport: Überschüssiges “||” im Text von Grids und NumQ wenn nur Text oder Titel exis­tier­ten.
      — Backup-Downloads wer­den jetzt als .qp Daten (statt .zip) aus­ge­lie­fert.
      — 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 ent­fernt.
      — 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 inte­griert.

 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 abge­wie­sen:   
      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 unter­bro­chen.

    • 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 abge­wie­sen:   
      InvalidInterviewerMsg = "This case is assigned to another interviewer.";

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

    • 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ön­nen:   
      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ön­nen:

      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 wer­den.

    • 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 zuzu­ord­nen:   
      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ön­nen.

    • 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 vor­nimmt.
    • 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 aus­ge­ge­ben.
    • 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 fol­gen:

      #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 ver­bes­sert
      — 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ück­ge­setzt
      — Die Fallnummer war im Rahmen von Data/Export im Wertebereich beschränkt
      — Anführungszeichen um Textinhalte gin­gen beim Datenexport ver­lo­ren
  • 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 bear­bei­ten.
    • 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än­dert.
    • 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; fest­ge­legt:   
      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 wur­de.

    • 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 nutz­bar.
    • Überwachung der JSON Quelldateien bei Datalist: Autom. Cache-Reload bei Änderungen.
    • Labellisten an Compute defi­nier­bar. Sie wer­den an alle Folgeprozesse wei­ter­ge­reicht.
    • 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ög­lich.
      — Fehlerbehandlung bei Studienkopplung, wenn Zielstudie gar nicht exis­tiert.
      — 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 aus­ge­führt.
    • Im Online-Reporting kön­nen GESStabs Tabellen als OFFICEEXPORT ange­bo­ten wer­den.
    • 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” wur­de.
    • 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ög­lich.
      • ent­hält _finished bereits den Finishcode der Hauptbefragung.
      • kann der Finishcode durch assert mit exit über­schrie­ben wer­den.
      • 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ück­ge­setzt).

      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 wer­den.
    • 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 wer­den:   
      • 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 erwei­tert.
    • 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 opti­miert.
  • GESS Q. im GESS Cati
    • cati.user wird in die 3. Spalte des OPN Exports geschrie­ben.
    • 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ösch­bar.
    • 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 expor­tiert.
    • 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än­dert.
    • Bugfixes:
      — Leerzeilen in server.lst wer­den igno­riert.
      — BackActionBlock an Blöcken wur­de nicht aus­ge­führt.
      — Kleinere Layoutoptimierungen in der Benutzeroberfläche.
      — Backup Checkbox bei Reset wie­der ein­ge­baut.
      — Gestörte Fragereihenfolge durch dop­pel­te Vorkommnisse von Fragen in unge­nutz­ten Blöcken kor­ri­giert.
      — Diverse neue Fehlermeldungen und Warnungen im Skript-Check.

 10.12.2018: Revision 2634
  • GESS Q. Allgemein
    • Bugfixes:
      — ralign() sor­tier­te nicht kor­rekt.
  • GESS Q. im GESS Cati
    • PAPI Support nach Änderungen in #2618 wie­der­her­ge­stellt.
    • Variable cati.user in Daten und Export auf­ge­nom­men.
    • Bugfixes:
      — Variablen cati.address.* wur­den unter bestimm­ten Umständen noch in Datensätzen gespei­chert.

 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 expor­tier­bar).
    • Die Verwendung von CATI SysVars in Skripten wur­de als deprecated klas­si­fi­ziert.
    • Adressfelder kön­nen über setText() geleert wer­den.
    • 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 rekon­stru­iert.
    • 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 erreich­bar.
    • 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 anzu­ge­ben.
      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 anzu­ge­ben.
      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 wer­den.
  • 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 wer­den.
      // 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ück­ge­lie­fert.
    • Bugfixes:
      — In der API Kommunikation wur­de ein Problem bei Zeichenkodierungen kor­ri­gert.

 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 unter­stü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 deak­ti­viert.
    • 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 ein­ge­passt.
    • 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 wer­den.
    • 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 wer­den.
    • 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 über­mit­telt.
      // 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 über­ge­ben.
      TextElement data = "Geheime, AES128 verschlüsselte Information."; untranslatable;
      textelement AES128Key = "dd24xyzRwMAHOFXHncNphjd=="; untranslatable;
      
      StartActionBlock = {
        aesDecrypt( data, AES128Key );
      };
    • HTMLLabels las­sen sich direkt an Fragen defi­nie­ren.
    • 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 aktua­li­siert.
    • 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ähl­bar.
    • Server- und Studienlogging um diver­se Einträge ergänzt.
    • logRequests wur­de als Parameter der Konfigurationsdatei ent­fernt.
    • Bugfixes:
      — Bei Wiederaufnahmen aus Rettungsdatensätzen wur­de die Unterbrechung nicht mit­ge­zä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ähl­bar.
      — 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 ent­fernt.
      — 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ück­ge­setzt.
    • 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ück­sich­tigt.
    • 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 ange­bo­ten.
    • Bei deak­ti­vier­tem Testmodus wird die­ser in der Intervieweroberfläche aus­ge­blen­det.
    • Bugfixes:
      — Doppelte Datenuploads im Konfliktzustand wur­den vom Server igno­riert, aber posi­tiv quit­tiert.
      — Wiederaufnahmen aus Rettungsdatensätzen kor­ri­giert
  • 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 gespei­chert.
    • 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 unter­drückt.
    • Enter/Exit Screen Events wer­den von Q. aus ans CATI-System über­mit­telt.
    • Fehlermeldungen opti­miert.
    • Bugfixes:
      — Bei der Nachbearbeitung inak­ti­ver Fälle gin­gen manch­mal ande­re Werte auf dem Screen ver­lo­ren.
      — 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 gesen­det.

 21.02.2018: Revision 2426
  • GESS Q. Allgemein
    • Mittels Javascript-Struktur QDot.JsonData kann von jedem Screen aus jede Variable im Fragebogen belegt wer­den:
      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 vor­ein­ge­stellt
    • ImageMaps tech­nisch etwas ver­ein­facht
    • 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 wer­den:
      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 unan­ge­tas­tet
    • 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 rekon­stru­iert
    • Unter Native data kön­nen durch Angabe einer Liste mit Fallnummern meh­re­re Datensätze am Stück gelöscht wer­den
    • Der Zuschauermodus ist auch über _respid im Request mög­lich
    • _caseid ist wie­der nume­risch
    • 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 gefil­tert
      — Import von .qp Dateien auf Servern
      — Überflüssiges Semikolon am Ende von Zeilen des CSVINFILE ent­fernt
      Skriptcheck:
      — Fehler, wenn Actionblöcke an Screens defi­niert
      — 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 abfra­gen
    • 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 ansprin­gen
    • 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 über­neh­men:
      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 ach­ten:
      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 nutz­bar:
      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 ein­tritt
    • Die exter­nen Parameter ext1-ext30 sind im ASCII Output nun 64-stel­lig
    • 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 wer­den.
      #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 ent­fernt
    • 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 wer­den
    • 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) abge­bro­chen:
      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 dar­ge­stellt
    • Die Versionsnummern für Chrome und Firefox wur­den für die inter­ne Browsererkennung fort­ge­fü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 kor­rekt
    • 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ück­sich­tigt
  • 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 auf­ge­fü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 exis­tie­ren
    • 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 manu­ell)
    • 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 kon­fi­gu­rie­ren
    • Die Sichtbarkeit von Menüpunkten des Reportings sowie Quoten lässt sich je Nutzer voll­stän­dig über die Benutzeroberfläche kon­fi­gu­rie­ren
    • Im Server-Status kann akti­ven Fällen in einem Zuschauermodus bei­getre­ten wer­den
    • Admins kön­nen die Erstellung eines Backups bei Resets unter­drü­cken
    • Admins kön­nen die Erstellung eines ser­ver­sei­ti­gen Backups bei Uploads unter­drü­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 ver­schlüs­selt
      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 depre­ca­ted
    • 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 igno­riert

 06.04.2017: Revision 2216
  • GESS Q. Android
    • Ab Android 6 wer­den benö­tig­te App-Rechte nun beim Programmstart abge­fragt
  • 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 star­ten
      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 deak­ti­vier­bar
    • Quotenbeschreibung über Benutzeroberfläche edi­tier­bar
    • Benutzeroberfläche ermög­licht Datei-Downloads vom GTC Ordner (z.B. a.tab)
    • “Zurück”-Navigation in Benutzeroberfläche über­ar­bei­tet
    • 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 vor­han­den
    • 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än­zen:
      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 ver­schickt
      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 ermit­teln
    • 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üh­ren.
    • 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 vor­hal­ten:
      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 ver­füg­bar
    • 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 erfor­der­lich)
    • Anzeige Lizenznehmer auf Startseite (Firmenname)
    • Ab Android 5: App-Block benö­tigt Sonderrechte und ver­hin­dert Verlassen der App voll­stän­dig
    • Servereinstellung beim Weblogin (mit Semikolons getrennt) via QR-Code ein­stell­bar:
      /*** Beispielcodierung eines QR-Code ***/
      https://android.q-dot.de/q1/SurveyServlet;GESS;demo
    • QR-Code Scanner mit OpenQs ver­knüpft und per Javascript auf­ruf­bar:
      /*** 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 über­ge­ben:
      /*** 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 gela­den
    • Bei input=no wer­den kei­ne lee­ren HTML DIVs und Titel mehr aus­ge­ge­ben
    • splitcolumn unter­stützt Labelattribute wie random, sortid, ...
    • Beschränkung der Anzahl Backups bei Löschen, Reset oder Upload auf die 3 jüngs­ten
    • Robot Update; Aus Kompatibilitätsgründen vor­erst aus Serverinstallationen ent­fernt
    • 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 ver­bes­sert
    • 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 ent­fernt.

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 gele­sen.
  • Tsuchisakiko-Akita-chapter-2400px Die exter­nen Parameter ext1 — ext30 sind änder­bar.
  • Alle Systemvariablen des ASCII Files gibt es jetzt auch in der var.inc
  • Der Screenshot-Roboter wur­de im Hinblick auf neue Firefox-Versionen aktua­li­siert.
  • num() zählt nun auch die Zeichen in TextElement
  • Präprozessordirektiven wie #macro &macro; #define #include kön­nen ein­ge­rückt wer­den.
  • 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 wer­den:
/*** 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 wer­den:
  writeViewingTime = all (SCREEN1 SCREEN2 ...);
  • Aktive Fälle zu Zwecken des Exports und Reportings noch im BRK Datensatz belas­sen.
  • 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 reser­viert.
  • Im GESS Q. Configfile kann für die Kommunikation nach außen IP und Port eines ggf. ein­ge­setz­ten Proxyservers defi­niert wer­den:
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 wer­den.
  • Aktualisierung der Erkennung von Browser-/Betriebssystemen.
  • Aus Wunsch kön­nen dem Datensatz IP-Adressen zuge­fügt wer­den:
  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 ver­schickt
    • 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är­ben
  • Group akzep­tiert 0 als Labelwert
  • jQuery und Datatables aktua­li­siert
  • 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 igno­riert
  • Print-Tool: random an Blöcken ergänzt
  • _breakcount wird jetzt beim Export in die var.inc über­nom­men
  • Grafische NumQ und Sortable über­ar­bei­tet
  • 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 sicht­bar
  • 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 wei­ter
  • Attribut noMissing = yes|no; für Fragen (höhe­re Prio als DefaultNoMissing)
  • gridItemRestrict ana­log zu restrict (restrict bei Grids funk­ti­ons­gleich)
  • gridLabelRestrict = (RVAR1 [RVAR2 …]);
  • Fragebögen wer­den in nicht lizen­zier­ten Versionen jetzt immer mit #define demoversion aus­ge­fü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 wer­den
  • 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 über­ar­bei­tet:
    • 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 aus­ge­las­sen)
    • 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 ver­füg­bar.
  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 redu­ziert
    • 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 änder­bar
    • Highlighting-Verhalten auf Klick kann jetzt auch gänz­lich modi­fi­ziert wer­den
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 wer­den
    • über eine restrict Funktion kann in die Positionierung ein­ge­grif­fen wer­den
      • wenn z.B. nur die X‑Achse rele­vant ist, lässt sich Y fest auf 0 set­zen
      • Klicks kön­nen ver­wor­fen wer­den, wenn z.B. nicht alle Teile des Bildes klick­bar sein sol­len
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ühr­ten
    • 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 abge­lehnt
      • memoverload.html muss neben der qonline.cfg im con­fig-Verzeichnis lie­gen
      • 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ög­lich
    • inner­halb einer Lizenz wer­den jetzt auch bei GESS Q. Desktop ein­deu­ti­ge Fallnummernbereiche ver­ge­ben
    • 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 har­mo­nie­ren:
  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 über­ar­bei­tet
  • 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 aus­ge­führt
    • Bugfix: Combobox konn­te ungül­tig aus­ge­füllt wer­den
    • 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 wur­de
    • 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ül­len
  • 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 abge­legt
  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; ein­stel­len
  • 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 wer­den
  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 wur­den

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ög­li­chen
  • 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än­gen
  • 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 ent­hal­ten
********************
* 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ön­nen
  • 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 wer­den
{
  "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 wur­den
  • 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

  • Wie kann die Marktforschung beim Kampf gegen Corona helfen?
  • Gut vernetzt in ein neues Jahrzehnt mit GESS
  • GESS Q. CAPI im Einsatz

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-2020 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