User Tools

Site Tools


public:qdot:readme

Table of Contents

Latest Updates

2015/10/14: Exporttexte, Voting, Fortschrittsbalken und Diverses

  • Texte für den Export:
    • exporttext und exporttitle für Fragen, Group, Compute, Array als Freitext oder Verweis. Bei Gridfragen und NumQs auch ohne abschließendes Semikolen als Parameter in der Item-/Labelliste:
  exporttext = "Text für den Export";
  // exporttext = text;
  // ... [title|htmlpretext|htmlposttext|posthelptext|postinterviewerhelptext|prehelptext|preinterviewerhelptext];

  exporttitle = "Title für den Export";
  // exporttitle = title;
  // ... [text|htmlpretext|htmlposttext|posthelptext|postinterviewerhelptext|prehelptext|preinterviewerhelptext];
  • exportlabel in Labellisten als Freitext:
  1 "Label 1" exportlabel = "Labeltext für den Export"
  • Fortschrittsbalken:
    • changepbar mit negativen Werten
    • autochangepbar überschreibbar durch changepbar
  • Voting überarbeitet:
    • Netzwerkkommunikation optimiert
    • Serverkommandos werden 6x in 10Sek verschickt
    • in SURVEY/votinglimit.txt kann ein Prozentwert (z.B. '70') angegeben, bei dem sich die Client-Fortschrittsbalken in der Übersichtsseite des Servernotebooks blau färben
  • Group akzeptiert 0 als Labelwert
  • jQuery und Datatables aktualisiert
  • Betrachtungszeiten von WriteViewingTime gelangen mit in die Export; Im Codebook des Standard a.tab für GESStabs tables werden sie durch den neuen exclude Befehl ignoriert
  • Print-Tool: random an Blöcken ergänzt
  • _breakcount wird jetzt beim Export in die var.inc übernommen
  • Grafische NumQ und Sortable überarbeitet
  • Studenreset löscht die Fälle im Ordner deleted
  • JSON-Export um NA-Labeltext für OpenNumFormats ergänzt
  • Datenkonvertierung speicheroptimiert (beim Export)
  • Minor Bugfixes:
    • ID Manager, Datalist Tool, Javascript-Engine, OpenNumFormat
    • PostInterviewerHelptext (CSS), Rescue-Wiederaufnahme, lfdcount (-1)

2015/06/26: Java 8, ID Management, Fragebogendruck, Robot-Update, Javascript-Engine

  • GESS Q. benötigt nun Java 8 als Laufzeitumgebung.
  • Performanceoptimierung bei der Skriptverarbeitung
  • Überarbeitung der Startprozedur unter Berücksichtigung des Studienstatus
  • die ImageMap visualisiert bei wiederholtem Anzeigen jetzt selbsttätig ihre Werte
  • HeatPlotter-Actionbefehle zum gezielten Abgreifen von Koordinaten:
    • xCoord(OPENQ, K) X Koordinate von K-ter Markierung * yCoord(OPENQ, K) Y Koordinate von K-ter Markierung
  • CSS Klasse heatplotter-drawn-image um zu steuern, ob HeatPlotter Markierungen vor oder hinter dem Zielbild eingezeichnet werden. Hinter dem Bild hat den Vorteil, dass keine Fläche für weitere Punkte durch die Größe der Markierung belegt und damit nicht erneut klickbar ist
  • maxLoad ist jetzt im ServerStatus sichtbar
  • neue Skriptbefehle setfilter und endfilter
  setfilter [NAME] [text "TEXT"] = CONDITION;
  // ...
  endfilter [NAME];
  • neuer Skriptbefehl autoChangePBar = yes|no; setzt den Fortschrittsbalken bei Filtern automatisch über die Menge ausgelassener Screens weiter
  • Attribut noMissing = yes|no; für Fragen (höhere Prio als DefaultNoMissing)
  • gridItemRestrict analog zu restrict (restrict bei Grids funktionsgleich)
  • gridLabelRestrict = (RVAR1 [RVAR2 …]);
  • Fragebögen werden in nicht lizenzierten Versionen jetzt immer mit #define demoversion ausgeführt
  • eine Datei noautostart.txt (Inhalt egal) neben startcapi.bat unterdrückt das automatische Öffnen des Defaultbrowsers durch Q. Desktop
  • analog zu GridLabelHeader gibt es jetzt auch GridLabelFooter
  • neuer Actionbefehl setCurrentScreen(SCREEN) zum absoluten Setzen des nächsten darzustellenden Screen. Ist etwas tricky, siehe Handbuch
  • num() kann jetzt auch zur Abfrage der Größe eines VarArray verwendet werden
  • Update des Robot für aktuellste Firefox Versionen
  • Übersetzungstool:
    • Prüfung von @openfeaturetext() und @target()
    • der Suchbegriff “QSYNTAX” liefert alle Texte mit syntaktischen Besonderheiten
  • ID Management in der Weboberfläche überarbeitet:
    • unlimitiertes Zufügen von IDs per Eingabefeld
    • Generieren von IDs (numerisch oder als 32-stellige Hashes)
    • Duplikatprüfung (werden ausgelassen)
    • passwortgeschütztes Löschen ganzer Listen
    • Tabellenansicht mit Status, Such- und Sortiermöglichkeit
    • Editieren und Löschen einzelner IDs
  • neuer Skriptbefehl script(“JAVASCRIPT”); für flexible Actionlogiken in Javascript Syntax. Mit @insert() können Werte von Q. Variablen ins Javascript eingebettet werden, @save(VAR = VAL); wird definiert welche Werte am Ende der Ausführungslogik in welche Q. Variablen zurückgespielt werden. Dieser Befehl benötigt Java 8 und ist unter Android noch nicht verfügbar.
  compute nhTestResult = 5;
  compute x = 0;
  compute y = 0;
  compute z = 0;
  Array nhTestArray[3];
  OpenQ te;

  vararray xyz = (x y z te nhTestArray);

  // ...

  Actionblock ab = {
    script("
      var x = 1;
      var y = 2;
      var z = @insert(nhTestResult);
      var arr = new Array();
      arr.push(x);
      arr.push(y);
      arr.push(z);
    
      @save(xyz[1]) = x;
      @save(xyz[2]) = y;
      @save(xyz[3]) = z;
      @save(nhTestResult) = x+y+z;
      @save(xyz[5]) = arr;
      @save(xyz[4]) = 'nachher';
    ");
  };
  • JSON Export:
    • exit und attempts für Asserts
    • repeatGridAnchor ergänzt
    • gridLabelRestrict ergänzt
    • values und openvalues jetzt nur noch bei Bedarf
    • Anfrage-URL-Parameter &textreplacements liefert sämtliche Groups und TextElements
    • Bugfix values bei Grids
    • Bugfix bei eckigen Klammern in Texten
  • Druckfunktion für Fragebögen:
    • unter Configure bietet die Weboberfläche jetzt eine druckfähige HTML Ausgabe für den Fragebogen inkl. Anzeige von Filter, Asserts, Labelattributen. Ideal als Testinstrument
  • Skriptcheck Meldungen:
    • bei mehrfach vergebene Labelwerte werden über mehrere Labelgroups
    • Actionbefehle ganz ohne Klammern
    • bei set Action
    • Fehler bei OpenNumformat Zahlenbereichen auf Warning-Level reduziert
    • wenn Quoten angelegt, aber nicht im Skript definiert sind
  • Bugfix: sliderleftvalue zeigt jetzt den gleichen Wert wie rechts

2015/05/13: Heatplotter+ImageMap, Serverlast, Actionbefehle mit VarArray, und und und...

  • ImageMap überarbeitet
    • Kompatibilität zu alten InternetExplorern (7,8,9)
    • Standardfarbe für Highlighting jetzt vis Javascript änderbar
    • Highlighting-Verhalten auf Klick kann jetzt auch gänzlich modifiziert werden
javascript="
  qImageMap.defaultColor = 'rgba(0, 255, 0, 0.5)';
  qImageMap.onClick = function(q, id, isSingleQ, isMultiQ){
    alert('geklickt!');
  };
  qImageMap.makeQImageMap('frage', 'mapID');
";
  • Heatplotter überarbeitet
    • Indicator Bildgröße kann jetzt beliebig sein
    • Losgelöst von jeglicher Funktionen können fixe Elemente (z.B. Punkte aus vorherigen Fragen) eingezeichnet werden
    • über eine restrict Funktion kann in die Positionierung eingegriffen werden
      • wenn z.B. nur die X-Achse relevant ist, lässt sich Y fest auf 0 setzen
      • Klicks können verworfen werden, wenn z.B. nicht alle Teile des Bildes klickbar sein sollen
javascript="
  QDot.heatplotter.restrict = function(coords){
    coords.y = 0;
    return coords;
    // return undefined; // wenn Klick verworfen werden soll
  },
  QDot.heatplotter.create('openq', 'imageID');
  QDot.heatplotter.drawImages('@insert(VORHERIGE_HEATPLOTTER_OPENQ)', './images/kreis.png');
";
  • Browserliste aktualisiert (neue Chrome und Firefox Versionen)
  • Aktive Interviews verbleiben in Export/Reporting (falls vorhanden, mit ihrem letzten Abbruchzustand)
  • Serverlast / Performanceoptimierungen
    • Optimierung bei sehr langen Filterketten, die zu vielen übersprungen Screens am Stück führten
    • viele kleine Optimierungen in Bezug auf Speicher- und CPU Auslastung
    • maxMemoryLoad=80 in der qonline.cfg setzt die maximal zulässige Speicherauslastung in % (Default:80)
      • bei einer Interviewanfrage während Überlastung löst Q. höchstens einmal in 5 Minuten eine Java GarbageCollection aus. Ist die vorgegebene Maximallast dennoch überschritten werden neue Teilnehmer mit Statusseite memoverload.html abgelehnt
      • memoverload.html muss neben der qonline.cfg im config-Verzeichnis liegen
      • abgelehnte Interviews und von Q. angestoßene GarbageCollections werden in /config/serverlog.lst geloggt
  • Lizenzierung von Q. Desktop
    • jetzt auch von der Nutzeroberfläche aus möglich
    • innerhalb einer Lizenz werden jetzt auch bei Q. Desktop eindeutige Fallnummernbereiche vergeben
    • Neulizenzierungen überschreiben jetzt immer alte Settings
  • Neue Actionbefehle
  // round(VAR)
  set(x = round(x));

  // pow(BASE, EXPONENT)
  set(x = pow(10, 3)); // 10³
  • Viele ActionBefehle wurden überarbeitet, damit sie problemlos 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 internen Textvariablen _freetext1-_freetext8
  • Übersetzungstool
    • Montenegrisch in Sprachliste ergänzt
    • im LRS Download sind jetzt auch nur noch übersetzungsrelevanten Texte
  • Die GNumQ wurde überarbeitet
  • NumQ Labels mit open
    • Übernahme in die var.inc und SPSS
    • Eingabefeld jetzt per Default hinter dem Labeltext (auch ohne @open)
  • Datenexport der Heatplotter Koordinaten
    • je Fall Anzahl der Punkte und je Punkt getrennt X und Y Koordinate (auch in SPSS)
  • _encryptedLfd
    • nicht mehr in OPN Export
    • Belegung aus Performancegründen erst bei Verwendung/Zugriff
  • Kleinkram, Fehlermeldungen und Bugfixes
    • Bugfix: Fehlverhalten beim else-Label für Groups
    • Bugfix: ContinueActionBlock an Blöcken wurde nicht immer ausgeführt
    • Bugfix: Combobox konnte ungültig ausgefüllt werden
    • Bugfix: Sprünge mit setNextScreen wurden nicht gespeichert (Abbruch/Wiederaufnahme)
    • Bugfix: expandiertes Skript kam mit BOM Fehler
    • Bugfix: die Standard *.tab Files für GESStabs geben jetzt kein festes Encoding mehr vor
    • Oberfläche: Hinweistext, wenn Verknüpfung zu GESStabs fehlt
    • Oberfläche: Hinweistext, wenn kein per USB angeschlossenes Tablet gefunden wurde
    • Oberfläche: ServerStatus wurde nicht immer korrekt dargestellt. Interviewfortschritt bis max. 110.

2015/01/30: Eine Reihe neuer, praktischer Features

  • Beim Übersetzungstool lassen sich Zielsprachen per Upload eines LRS Files befüllen
  • Der set() Befehl kann jetzt auch Arrays in einem Schritt belegen. Es werden ab Arrayindex 1 fortlaufend nur so viele Stellen belegt wie angegeben. Überschüssige Stellen bleiben ohne Effekt
  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); durchsuchen ARRAY nach ihrem kleinsten/größten enthaltenen Wert (Missings ausgenommen). Der zugehörige Index wird in COMPUTE abgelegt
  compute comp = 0;
  // ...
  findMinValIndex(arr, comp); // für "arr" (s.o.) ist "comp" hiernach 4
  findMaxValIndex(arr, comp); // für "arr" (s.o.) ist "comp" hiernach 8
  • Ob Eingabezwang für Opens an GridItems gelten soll, lässt sich über den neuen Skriptparameter GridOpenNoMissing = yes|no; einstellen
  • Es gibt nun ein else Label für Groups. Außerdem werden Groups bei Textersatz nun per Default alle zutreffenden Labels als Komma-separierte Liste ausgegeben. Optional können die Trennzeichen und der letzte Trenner mit dem Parameter insert=“SEP”,”CON”; frei bestimmt werden. In letzteren Fall würden diese Angaben auch in den Übersetzungsauflauf übernommen werden
  Group myGroup;
  labels=
  1 "1" (1 in abc)
  2 "2" (2 in abc)
  3 "3" (3 in abc)
  9 "9" else
  ;
  insert=" | ", " und ";
  
  // @insert(myGroup) sähe dann möglicherweise so aus: "1 | 2 und 3"
  • Verbesserte Fehlermeldungen und Bugfixes:
    • Fehlermeldung bei mehrfacher Definition von FinishForward
    • Bugfix numCoords() verhielt sich ohne Eingabezwang falsch, wenn keine Markierungen vorgenommen wurden

2015/01/21: Dez-/Tsd-Trennzeichen, Filter führen zu _missing, filterbare Quoten, HeatPlotter, Actionblöcke an Blöcken

  • Neue interne Variable _encryptedcaseid, die die Fallnummer in verschlüsselter Form enthält. Hiermit lässt sich z.B. auf sichere Art ein öffentlicher Link bereitstellen, um Interviewteilnehmern am Ende des Interviews das Ausdrucken ihres Fragebogens via Robot zu ermöglichen
  • Beim Überspringen von gefilterten Fragen werden diese nun immer explizit auf _missing gesetzt
  • Es ist nun möglich einen [Init|Continue]ActionBlock an Blöcke zu hängen
  • Zwei neue ActionBefehle um Dezimal- und Tausendertrennzeichen für das DecimalFormat einzustellen:
    • setDecimalSeparator(”,”) ”,” ist Default
    • setGroupingSeparator(”.”) ”.” ist Default
  • Übersetzungsfeature
    • .lrs Dateien und native Sprache jetzt auch immer in alphabetischer Reihenfolge
    • Sprach-/Länderliste erweitert
  • Quotenliste jetzt abhängig vom Login filterbar über Datei quotafilter.json im Hauptverzeichnis. Diese Datei ist beim Serverupload in der “CONFIG” Kategorie enthalten
********************
* quotafilter.json *
********************
[
  {
    "userid": "gess_trittel",
    "quotavars": [
      "gesamt",
      "q2",
      "q4"
    ]
  },
  {
    "userid": "another_user",
    "quotavars": [
      "gesamt"
    ]
  }
]
  • Bei Interviewstart werden jetzt trotz abgeschlossenen Fällen oder deaktivierter Studie externe Parameter und der StartActionBlock ausgeführt, um z.B. etwaige Fehlermeldungen in der richtigen Sprache ausgeben zu können
  • Bei externen Requests an den Q. Server (z.B. für Datenexport) können LoginInformationen jetzt als JSON im Payload von HTTP Post Requests untergebracht werden
{
  "company":"Firma",
  "name":"Name",
  "password":"Passwort"
}
  • Neues Befragungsfeature HeatPlotter stellt Bilder dar, die per Mausklick mit beliebig vielen Markierungen versehen werden können. Gespeichert wird eine JSON-Liste mit den XY-Koordinaten als offene Antwort
  OpenQ coords;
  text="Bitte markieren Sie schöne Stellen";
  title="<img id='cube' src='./media/@insert(_surveyname)/cube.png'>";
  coordinates;
  assert (numCoords(coords) ge 3 and numCoords(coords) le 10) "3-10 Markierungen";
  javascript = "
    // QDot.heatplotter.indicator = './media/@insert(_surveyname)/kreis.png';
    // QDot.heatplotter.removeButtonTxt = 'Remove last';
    QDot.heatplotter.maxCoords = 10;
    QDot.heatplotter.create('coords', 'cube');
  ";
  • coordinates; veranlasst den Server dazu die Koordinatensyntax im versteckten Open-Feld serverseitig zu prüfen
  • indicator (opt.) stellt ein Bild für das Markierungssymbol ein (idealerweise 16×16 Pixel groß)
  • removeButtonTxt (opt.) stellt ein, welche Beschriftung auf dem “Letzte Markierung löschen” Button stehen soll
  • maxCoords limitiert browserseitig die maximale Anzahl an Markierungen
  • Die neue Syntax numCoords(OPENQ) für Bedingungen liefert zurück, wie viele Koordinaten angegeben wurden
  • Bugfixes:
  • Diverse optimierte und ergänzte Fehlermeldungen im Skriptcheck
  • Übersetzungsfeature (fror in bestimmten Situationen ein)

2014/12/18: Screenlayout, Screencapturing, Edit Native Data, add(), exit(), timesSent(), _currentmillis

  • Screens haben eine neue Rendering-Engine für flexibleres Layouting bekommen. Der Screen ist über CSS Klasse qscreen formatierbar und trägt seine Inhalte in einer flachen HTML Tabelle. Einzelne Zellen des Screens sind über CSS Klassen qscreencell-X-Y, wobei X und Y als Koordinaten zu verstehen sind. Die Frage oben links ist entsprechend 1-1. Alle Zellen gleichzeitig sind mit qscreencell selektierbar
  • Die Nutzeroberfläche “Edit native data” wurde überarbeitet:
    • Beim Löschen von Fällen werden jetzt automatisch Quoten zurückgezählt, Logeinträge entfernt und damit auch Statistiken berücksichtigt
    • Vorhandene Fälle können von Beginn an geöffnet und angesehen werden: Dies geht je Fall nur einmal zur Zeit, wobei die negative laufende Nummer verwendet wird. Dieses Testinterview ist auch im Server-Status sichtbar und Änderungen innerhalb dessen sind zwar möglich, werden aber nicht in die Daten übernommen
    • Vorhandene Fälle können ausgedruckt werden: Der integrierte Roboter (s.u.) durchläuft hierzu ein Testinterview wie zuvor beschrieben und speichert jeden Screen als PNG Bild. Ein Zip-File mit allen Bildern gibt es als Download
  • Der inzwischen überflüssige Skriptparameter htmltable wurde entfernt
  • Es gibt 3 neue Skriptparameter
    • ignoreFilter = yes|no; (“als gäbe es keine Filter”)
    • ignoreAssert = yes|no; (“als gäbe es keine Asserts”)
    • ignoreNoMissing = yes|no; (“als gäbe es keinen Eingabezwang”)
  • Q. verfügt nun über einen integrierter Screencapturing-Roboter, der Interviews Screen für Screen abwandert und dabei die Browserinhalte als PNG Bilder abspeichert. Er bricht ab, falls er an einem Screen hängen bleibt (z.B. weil eine Eingabe gefordert ist). Bislang sind 3 Anwendungsfälle denkbar:
    • Ausdrucken des vollständigen Fragebogens mit den 3 zuvor genannten Skriptparametern. In der Oberfläche “Start Survey” kann dem Roboter ein Startlink übergeben werden. Optional lässt sich eine Wartezeit in Millisekunden definieren, wie lange er auf jedem Screen verweilt, ehe er den Browserinhalt speichert (falls Inhalte zeitlich verzögert eingeblendet werden)
    • Ausdrucken eines Falls in Oberfläche “Edit Native Data”, so weit wie der Befragte bisher geantwortet hat
    • Ausdrucken eines Falls für den Befragten via Link am Ende des Fragebogens (hier fehlt noch eine Kleinigkeit)
  • Im Skript steht jetzt eine neue interne Variable _currentmillis zur Verfügung. Sie enthält jeweils die aktuelle Serverzeit programmiertypisch seit dem 01.01.1980 in Millisekunden. Hiermit lassen sich Zeiten messen, zeitbasierte Steuerungen realisieren und über das Javascript Date()-Objekt beliebige Zeitpunkte und -spannen in Texte integrieren
  • Aktualisierte Notepad++ Supportfiles
  • Neue Actionbefehle:
    • add(ARRAY, VALUE); fügt Wert an die erste Missing-Stelle eines Arrays (sonst gar nicht)
    • exit(FINISHCODE); beendet Interview am Ende des aktuellen Actionblocks. Schlussseite wird angezeigt
  • Filtersyntax ergänzt: timesSent(QUESTION) liefert, wie oft Antworten eine Frage bereits mit “Weiter” an den Server übermittelt wurden
  • Redundanten Übermittlungen von Screens wird jetzt durch eine browserseitige 5s Sperre vorgebeugt
  • Q. Desktop loggt jetzt erst nach 2 Std Untätigkeit aus
  • surveylog.lst jetzt in UTF-8
  • Bugfixes:
    • Diverse optimierte und ergänzte Fehlermeldungen im Skriptcheck
    • OPN Export Encoding
    • DecisionLab Datenablage
    • Überschüssige Klammerausgabe bei @insert(…()) entfernt
    • remove(ARRAY, VAL, …) VAL kann jetzt auch ein Arrayzugriff mit [] sein
    • SingleQSubmit nicht mehr in SingleGridQ und nur noch beim AN(!)Klicken von Antworten

2014/10/28: Integrierte Übersetzungen, Voting, Server-Status, TextElements

  • Die internen Textvariablen template1 bis template8 werden jetzt gespeichert und überdauern Abbruch/Wiederaufnahme
  • Erweiterte TextElement Syntax
  TextElement t1 = "Ein Text";         // Direkt initialisiert
  TextElement t2 = "Noch einer" saved; // + gespeichert (Abbr/Wiederaufnahme)
  • Flexiblere Labelfilter Syntax (auch in group); Alles erlaubt:
  1 "Ja"             (1 eq 1)
  2 "Nein"        flt(1 eq 1)
  3 "Vielleicht" flt=(1 eq 1)
  • VarArrays können jetzt mehr Actionbefehlen (z.B. set()) verwendet werden
  • GESSvote und GESScoach: Abstimmungen und angeleitete Interviews via Knopfdruck
  • Q. Android unterstützt jetzt dynamischen Sprachwechsel
  • Drag & Drop Sortable überarbeitet
    • Items können nur in Zielfelder und die eigene Ausgangsliste gelegt werden
    • Meldung editierbar und in eigenem Dialogfenster (z.B. wenn mehr Items einsortiert als erlaubt)
  • Seite Server-Status in der Weboberfläche überarbeitet
    • Speicherauslastung besser einsehbar
    • Laufende Interviews verfügen über einen Fortschrittsbalken
  • Die Weboberfläche verfügt jetzt über ein integriertes, datenbankbasiertes Übersetzungsfeature
    • PostgreSQL DB ist bislang im Einsatz
    • Verbindungsdaten werden in der qonline.cfg definiert
  • Die Angabe von Dateiendungen in den Export/Reporting .tab Files ist jetzt optional
  • Wheel-Scroller für SingleQ-Select:
  singleq stunde;
  labels =
  99 "Std"
  1  "1"
  // ...
  23 "23"
  24 "24"
  ;
  javascript="
    createWheelSelector($('.stunde .qselect'), 60, './media/@insert(_surveyname)/scrollerimages/');
  ";
  assert (stunde ne 99) "Bitte die Stunde wählen.";

  // createWheelSelector(SELECTBOX, WIDTH-IN-PX, PATH-TO-LAYOUT-IMAGES);
  • OS / Browsererkennung aktualisiert (Linux, Opera)
  • Bugfixes
    • table_id_assign.lst jetzt in UTF-8 und im Ordner gtc
    • Quotenanzeige bei '0' als Zielvorgabe
    • Ungenauigkeit beim Fortschrittsbalken und Abbruch/Wiederaufnahme
    • splitcolumn hatte eine Macke
  • Verbesserte (Skript-Check-) Meldungen
    • labels copy
    • Array Actionbefehle
    • missingValue muss jetzt vor allen anderen Variablen definiert sein

2014/08/21: Onlinetabellen als PDF und Excel, neue Nutzerrollen/-rechte, Q. Android prüft Audioaufnahmen, Performanceoptimierung beim Datenexport

  • Beim Export von OPN/Media Daten werden in CSV & HTML Fragetexte mit ausgegeben
  • Neue Funktionen für Filterbedingungen
    • exists(VAR) prüft, ob Variable VAR im Skript existiert
    • hasLabel(Q, CODE) prüft, ob für Frage Q ein Label mit Code CODE definiert ist
  // Prüft ob Frage f1 existiert und ein Label mit Code 7 definiert ist
  flt=(exists(f1) and hasLabel(f1, 7));
  • Onlinetabellen als PDF und Excel (via HTML). Letzteres liefert ein HTML File, das mit Excel geöffnet werden kann. Syntax im .tab File:
  html = htmltabs;               // wie gehabt: HTML-Tabellen
  excelout as html = excelout;   // Excel via HTML-Tabellen
  printfile pdf = pdf;           // PDF-Tabellen
  usefont = "Helvetica" SIZE 8;  // Fontangabe für PDF notwendig
  • Überarbeitung der Nutzerrollen (alte Rollen müssen teils angepasst werden):
    • Admin darf und sieht alles (auch Studien, denen er nicht zugeordnet wurde)
    • Regular User darf keine Admins verwalten und sieht ihm zu gewiesene Studien
    • Kundenzugänge sind beliebig kombinierbare Rechte aus
      • Reporting sieht das Reporting wie gehabt
      • Export kann Daten selbst herunterladen und SPSS Files erzeugen
      • Data-Edit kann Datensätze editieren und löschen
      • Quota-Edit kann Soll-Quoten editieren
  • Die Visualisierung des Audio-Aufnahmepegels in Q. Android wurde optimiert
  • Q. Android führt eine Überprüfung der Audioaufnahmen durch. Wurde sehr wenig bzw. sehr leise aufgenommen, erscheint ein symbolischer Warnhinweis (Kopf mit Fragezeichen)
  • Das Attribut json jetzt auch für Screen Block Label Compute Array Group
  • Deutliche Performanceoptimierung beim Datenexport mit großen Fallzahlen
  • SingleQ-Select-Listen als Textfeld mit Autocomplete-Funktion:
  HTML{ singleQFormat = select; };
  SingleQ strassen;
  text="Bitte wählen Sie eine Straße...";
  labels=
  9999 ""
  1 "Amselweg"
  2 "Drosselgasse"
  3 "Finkensteg"
  4 "Meisenstraße"
  5 "Fasanenweg"
  ;
  assert (strassen ne 9999) "Bitte wählen Sie aus.";
  javascript="$('.strassen .qselect').combobox();";
  • Bugfix: Bei in Operator in Bedingungen 1 2 3 in VAR
  • Bugfix: Überspringen von Fragen ohne Antwortmöglichkeiten durch restrict
  • Bugfix: Minimale Anzahl Nachkommastellen beim OpenNumFormat
  • Bugfix: Nach dem Import einer Studie ist nur der importierende Benutzer der Studie zugeordnet
  • Bugfix: Tortengrafiken bei Statistiken im Internet Explorer
  • Verbesserte Fehlermeldungen: SPSS Export, Online-Tabellen
  • Verbesserte Meldungen im Skriptcheck: Defines, Sonderzeichen in Variablennamen, Actionbefehle inc/dec

2014/05/28: Dichotome Variablen, Audiorecorder Desk, Export offener Daten, Assert-Erweiterung

  • Die Sprache eines Interviews bleibt ohne Sonderbehandlung über Abbruch/Wiederaufnahme erhalten
  • Die var.inc enthält bei MultiQs zusätzliche alle Label als dichotome Variable
    • umrahmt von #ifdef toSPSS
    • enthalten im Standard SPSS Export
  • Die Whitelist berücksichtigt Labels und Items
  • Audiorecording in Q. Android
    • mit Menü (Aufnahme, Playback, Löschen), wird ohne echte Aufnahme auch im Webbrowser simuliert
    • Anzeige des Recording-Level durch Lautsprechersymbolik
    • Datenablage direkt im MP3 Format
    • Unterstützung von externen Mikrofonen
  • Export offener Daten (Freitext, Bild und Ton)
    • Hinzufügen weiterer Variablen aus dem Skript
    • Auslassen von Fällen aus früheren Exporten
    • Freitext als OPN oder CSV
    • Bild und Ton als ZIP mit Mediendateien verlinkt in einer HTML-Datei, die sich via Excel öffnen lässt
    • Alle außer OPN mit Fragetexten
  • Assert Befehl erweitert um Parameter attempts NUM
    • Assert ohne exit: Nach NUM fehlerhaften Eingaben gelangt der Teilnehmer trotzdem zur nächsten Frage.
    • Assert mit exit: Nach NUM fehlerhaften Eingaben wird das Interview als Screenout beendet.
  assert f1 ne 3 "... Bitte korrigieren Sie Ihre Angaben." exit 2 attempts 3;
  • Neuer Skriptbefehl disableExitOnAssert. Aktiviert, werden Screenouts via Assertions unterdrückt. Stattdessen wird eine Fehlermeldung mit entsprechendem Hinweis ausgegeben, die Angaben können korrigiert und das Interview fortgesetzt werden (z.B. für Testfälle zum Testen der Screenouts).
  #ifdef testmode
  disableExitOnAssert = yes;
  #endif
  • Ergänzte Fehlermeldungen im Skriptcheck
    • bei export;
    • bei loadArray();

2014/04/10: Neue Version von Q. Desktop und Q. Android

  • Blöcke und Screens ohne Inhalt sind jetzt syntaktisch erlaubt. Der Script-Check liefert für diesen Fall ein Warning. Leere oder leergefilterte Blöcke und Screens werden im Interview übersprungen
  • Im Config-Ordner kann jetzt eine Variablennamen Blacklist blacklist.txt abgelegt werden. Aktuell enthält sie alle von GESStabs reservierten Schlüsselwörter um Fehlermeldungen im späteren Workflow zu vermeiden
  • Interviews und Script-Check können nun optional mit einem Whitelist Parameter in der URL gestartet werden &whitelist=whitelist.wl. Die Whitelist ist eine JSON-Datei, die im Text-Verzeichnis der Studie enthalten sein muss. Sie enthält Listings von Fragen, Screens und Blöcken. Nicht enthaltene Elemente werden im Interview ausgelassen
  • Browsererkennung um neue Versionen erweitert (Firefox, Chrome erweitert)
  • Fragen/Screens/Blöcke dürfen nur noch einmal im Interviewablauf enthalten sein
  • Die Schnittstelle von Q. zu GESStabs für Onlinetabellierung und SPSS-Export basiert jetzt auf UTF-8 (benötigt akt. GESStabs UTF-8 Version)
  • Der Skript-Check zeigt bei fehlerfreiem Skript jetzt zusätzlich die Anzahl der Screens im Interview an. Dies ist insbesondere beim Einstellen eines Fortschrittsbalkens hilfreich
  • Neuer ActionBefehl setNextScreen(SRC-SCREEN, TARGETSCREEN). Definiert einen einmaligen Sprung nach TARGET-SCREEN sobald SRC-SCREEN angezeigt und beantwortet wurde, wobei der lineare Interviewablauf unverändert bleibt. Nach Ausführung des Sprungs verhält sich das Interview so, als hätte es ihn nie gegeben
  • Import und Export von Studien als Q-Project-File
    • Export in der Nutzeroberfläche unter Configure
    • Import in der Nutzeroberfläche unter SurveyManager
  • Studienarchivierung
    • Pfadangabe im Config-File als archivePath=… möglich
    • Option in der Nutzeroberfläche unter Configure
    • Ablage als Q-Project-File (.qs)
  • JSON Export erweitert
    • Missingwert
    • Defines auch im Content
    • Mehrere Sprachquellen als URL Parameter &lrs=de.lrs&lrs=de2.lrs und im Content
    • json-Attribut mit error-Flag und Originaltext
    • NumFormat vervollständigt
  • Neues Spalte in der SliderQ zur Visualisierung, dass der Slider bewegt wurde
  • Fixes an der NumQ (Datenablage und Filterung)
  • Pfad für Studienvorlagen lässt sich im Config-File als modelPath=… angeben
  • Diverse Fehlermeldungen im Script-Check ergänzt und optimiert
  • Minor Bugfixes
    • am Layout der Benutzeroberfläche
    • Performanceoptimierungen von Q. Android
    • Ablage der colmap.lst intern jetzt als UTF-8
    • Rebuild der colmap.lst löst Neugenerierung der Daten aus
    • SliderQ Layout und Quelltext optimiert
    • setProperty()
    • BrowserNavigationMessage
    • css/javascript/json nicht im Sprachquelle
    • Datenupload über Http mit Q. Android
    • Berücksichtigung von #define testmode und #define android in Q. Android nach resume
    • Bei Fragen erst Filter auswerten, ehe geprüft wird, ob sie evtl. übersprungen werden muss, weil keine Labels/Items vorhanden sind
    • Länge der Makronamen in der generierten var.inc verkürzt

2014/02/10: Neue Version von Q. Desktop und Q. Android

  • SkriptCheck: Ausgabe von Zeile und Datei während des PräProzessing
  • Datenablage: NumQs werden jetzt analog zur SingleGridQ (siehe 2014/01/08) als einzelne SingleQs abgelegt
  • Datenablage: Ergebnisse aus “Berechnungscomputes” werden jetzt in den Datensatz übernommen
  • jQuery Update 1.11 und jQuery UI 1.10.4
  • Fragen mit vollständig gefilterten Labels werden jetzt automatisch übersprungen
  • Fehlermeldung bei Navigationsversuchen in nicht mehr existenten/abgeschlossenen Interviews
  • Json Export: if-assert ergänzt
  • Frageattribut: json=””; - wird im JSON Export berücksichtigt. Beispiel:
json = "{
  \"visibleLabels\": [1, 2, 6, 7, 8],
  \"additionalOutput\": \"noch ein weiterer Text\"
};";
  • Vorbereitungen für neue Funktionen Import/Export/Archivierung von Studien in der GUI
  • Minor Bugfixes

Q. Android:

  • Aufnahme von Mediafiles:
    • Vereinheitlichte Datenablage für alle Medien inkl. Testfall-Unterscheidung und Backup
    • Überarbeitung der Datenübertragung (USB, Web). Jetzt fallbasiert inkl. Mediafiles mit Prozess-Visualisierung
    • Audioaufnahme jetzt sowohl OpenQ gebunden als auch im Hintergrund
  • Q. Android erhält eigenen Code für die Variable _browser
  • Kleinere Optimierungen am Layout

2014/01/08: Umfangreiches Update. Nicht 100% abwärtskompatibel.

Core:

  • Analog zur MultiGridQ erfolgt die Datenablage der SingleGridQ jetzt als mehrere einzelne SingleQs
  • clearFilteredQuestions vorerst funktionslos gemacht
  • numQInputType entfernt. Eingabefelder vom Type “number” werden jetzt nur noch auf Android verwendet und wenn es keine Nachkommastellen gibt (damit sich direkt die Zahlentastatur öffnet)
  • Q. Android und Q. Desktop auf neuen Lizenzierungsdienst umgestellt
  • Sortable (Drag&Drop Ranking) überarbeitet
  • Q. speichert jetzt Betriebssystem und Browser des Teilnehmers in Systemvariablen _os und _browser
  • Bugfix: ActionBefehl dec(VAR);
  • Bugfix: Caching in der Weboberfläche bei neuen Browsern
  • Variante “LEGACY” beim VAR.INC Export ist jetzt default
  • minNumAnswers und maxNumAnswers gibt es jetzt als echte Skriptparameter. Properties gehen noch, sind aber deprecated
  • neuer HTML-Befehl setProperty(“NAME” “VALUE”) löst die Kombination add- und changeProperty ab (deprecated)

Q. Android:

  • kleinere Bugfixes (Whitescreen, USB Transfer)
  • die Einbeziehung des Media-Folders beim USB Upload einer Studie ist jetzt wählbar
  • Wiedergabe von Videos integriert

2013/10/20: Programmupdates, Dokumentation

  • Neue Homepage und neues Q. Handbuch
  • Neue Versionen:
  • Upload von Tabellierskripten für das Onlinereporting jetzt auch bei aktiven Studien
  • Neuer Hilfebereich mit Dokumentationen in der Benutzeroberfläche
  • Q. Android kann jetzt gemachte Fotos wieder in die Befragung aufnehmen

2013/09/02: Youtube-Channel, Notepad++ Supportfiles, Q. Desktop Setup.exe, Lfd-No-Reset

2013/08/30: Neue Textbereiche, NumQ Sortable, Fehlertexte beim Interviewstart, _idmode, Testmodus

  • Benutzeroberfläche an die zukünftige GESS Optik angepasst
  • Alle Textbereiche werden im Script-Check auf Überschreiben kontrolliert
  • Neue Textbereiche:
    • css (wird im Template hinter dem Frageinhalt eingefügt)
    • javascript ( - ” - )
    • pre- und posthelptext (wird beim Template-Platzhalter @prehelptext bzw. @posthelptext eingefügt)
    • pre- und postinterviewerhelptext ( - ” - )
singleq mysq;
text="Text 1";
labels=
1 "A"
2 "B"
;
javascript="alert(123);";
// javascript=""; // Überschreibt vorherige Angabe -> Fehler im Script-Check
css=".mysq{ border:5px solid black; }";
preHelptext = "preHelptext";
postHelptext = "postHelptext";
preInterviewerHelptext = "preInterviewerHelptext";
postInterviewerHelptext = "postInterviewerHelptext";

Gibt es sowohl einen helptext als auch einen interviewerhelptext, wird grundsätzlich zuerst der helptext ausgegeben. Ob und welche Texte ausgegeben werden sollen, kann über die zugehörigen Skriptparameter gesteuert werden.

showHelptext = yes|no;
showInterviewerHelptext = yes|no;
  • NumQs lassen sich auch flexibel als sortierbare Listen darstellen. An dieser Stelle ein Beispiel. Ausführliche Dokumentation erfolgt demnächst im Handbuch.
opennumformat onf_wichtigkeit = 1 1 0 0 1 5 "Bitte wählen Sie Ihre 3 wichtigsten Elemente.";

defaultnomissing = no;
textq selection;
title = "
  Bitte wählen Sie Ihre 3 wichtigsten Aspekte aus und sortieren Sie.
  <ul type = 'source' numq = 'nq1' maxitems = 5></ul>
"; 

numq nq1;
title = "
  Wichtig
  <ul type = 'target' numq = 'nq1' maxitems = 3></ul>
  Unwichtig
";
labels=
1  "Location"   format onf_wichtigkeit 
2  "Geschmack"  format onf_wichtigkeit
3  "Farbe"      format onf_wichtigkeit
4  "Temperatur" format onf_wichtigkeit
5  "Sorte"      format onf_wichtigkeit
;
assert (num(nq1) eq 3) "Bitte wählen Sie 3 Aspekte aus.";
javascript="qSortable.numQ2Sortable();";

screen q1 = row(selection nq1);
  • Folgende neue Skriptparameter (Fehlertexte) lösen die Dateien idfail.q und inactive.q ab:
invalidIdMsg = "";
surveyClosedMsg = "";
  • Im Skript gibt es eine neue interne Variable _idmode, die je nach aktuell verwendetem Interviewmodus (Test, Single, Multi) den Wert t, m oder s annimmt
  • Textersatz ist nun per Default aktiviert
  • Die Bespaltungsvorgabe sortiert Datumsangaben jetzt so, dass immer erst Datum danach Uhrzeit ausgegeben wird
  • Der Testmodus startet implizit mit #define testmode und kann jetzt optional auch mit den hinterlegten MultiIds gestartet werden
  • Bugfix: OpenNumFormat-Prüfung im Script-Check

2013/08/22: Studienvorlagen, Multibuttons, NumQ

  • Studienerstellung jetzt nur noch in Q. Desktop Oberfläche mit Vorlagenkonzept inkl. Vorschau und Erweiterungsmöglichkeit. Vorlagen können in CONFIG/models und zugehörige Vorschau-Screenshots unter SERVER-ROOT/model_previews abgelegt werden, siehe vorhandene Vorlagen und Videoturorial http://www.youtube.com/watch?v=_Zg-053wh_I.
  • Defaultbilder für Multibuttons eingeführt SERVER-ROOT/media/def_multi_button_[checked|unchecked|inactive].gif
  • Neuer HTML Parameter, der den Typ von NumQ Eingabefeldern definiert
  HTML{ numQInputType = "text" };  // alternativ und default: "number" (öffnet Zahlentastatur in Android)
  • Skriptdateien können in Q. Desktop aus der Benutzeroberfläche heraus per Klick im Standardeditor geöffnet werden
  • Android Survey-Download überträgt quotavars.lst mit
  • Bugfix: NumQ Spaltenberechnung bei NA-Option

2013/08/16: Datenhaltung für Export und Reporting, NumQDecimals, kleinere Bugfixes

  • Negative Werte für NumQs überarbeitet
  • OpenQ Eingabelimit per Javascript abgelöst durch HTML Attribut maxlength
  • NumQDecimals obsolet. Punkt und Komma werden fortan als Dezimaltrennzeichen interpretiert
  • Die interne Bereitstellung der Daten für Export und Reporting berücksichtigt jetzt auch manuell modifizierte und entfernte Rohdaten. Button 'rebuild' daher überflüssig und ausgeblendet.
  • Bugfix: Handling bei fehlender finished.msg
  • Bugfix: SingleQ deselect
  • Bugfix: noexport für Filter
  • Bugfix: Upload gtc-Folder

2013/08/01: GTC Tables, Benutzeroberfläche, $surveyname, flt-noexport, yOffset, template_error.html, Open-Access

  • aktuelle Y-Koordinate des Browsers in jedem Screen. Initial mit dem letzten Wert des vorherigen Screens belegt
  • Frage- und Labelfilter können neu mit einem noexport Attribut versehen werden. So gekennzeichnete Filter werden beim Export der Variablendefinition (var.inc) ignoriert.
// Frage...
flt = (1 in geschlecht) "Frage nur an Männer" noexport;
  • var.inc Export weiterentwickelt:
    • Variablenzusammenfassungen mit makefamily jetzt mit gesamtgültigem Filterkontext.
    • mit noexport gekennzeichnete Filter werden ignoriert.
    • mehrfach auftretenden Variablen mit identischem Filterkontext werden ausgelassen.
  • idfail.html und inactive.html abgelöst. Ausnahme(-fehler)fälle (auch ungültige Zeichen in respIds) beim Teilnehmerzugriff werden jetzt per Default im Design der Umfrage oder, falls vorhanden, im Design der Datei template_error.html aus dem Text Ordner ausgegeben.
  • $surveyname Platzhalter im Template jetzt auch auf Finished-Screen
  • Ausgabe von GTC Fehlermeldungen beim SPSS Export
  • Optik der Benutzeroberfläche überarbeitet
  • Start-Interview Seite der Benutzeroberfläche jetzt mit mögl. Angabe von define Werten
  • Offene Nennungen für Reporting u. SPSS Export jetzt immer mit ANSI Encoding an GTC
  • statt mit Underscores (_) werden offene Eingabefelder in Labels jetzt mit Punkten (.) gebildet
    • Bsp. SingleQ s1 mit open an Label 6: s1.6.open
    • Bsp. SingleGridQ sgq mit open an Item 3: sgq.3.open
  • Bugfixes:
    • synchronisierter Zugriff auf ID-Listen
    • Edit-User
    • createLabelOpenValidation

2013/07/17: var.inc Export, Filter-Texte, Survey-Reset, Variablennamen, OpenLabel Referenz

  • der var.inc Export wurde überarbeitet. Es gibt folgende Modi:
    • Legacy (alle Variables des Skripts ohne Filter)
    • Normal (alle Variablen im Main-Block inkl. verschachtelter Filterstruktur, mehrere Vorkommnisse einer Variable werden einzeln mit Ihrem jeweiligen Blockpfad exportiert und am Ende der var.inc zusätzlich als makefamily wieder zusammengefasst)
  • in allen Modi werden NumQs und GridQs in Makro-Form exportiert
  • Export auch von neuen Filtertexten
flt = BEDINGUNG "beschreibender Text";
  • Anführungszeichen in Texten werden beim Export überall in Hochkommata konvertiert und Zeilenumbrüche entfernt
  • Array Indexzugriffe mit [] werden beim Export in GESStabs Syntax konvertiert
  • alle Q. Variablennamen müssen jetzt mit [a-zA-Z] beginnen
  • beim Reset einer Studie werden laufende Interviews ebenfalls gelöscht
  • in der Config-Datei kann ein Backup-Ordner definiert werden, in dem beim Löschen und Reset einer Studie eine Sicherung abgelegt wird
backupPath=PFAD
  • für die Kompatibilität zu anderen Javascript-Frameworks wird in der gesstmpl.js anstelle des $ überall der ausgeschriebene jQuery Operator verwendet (die sonstigen Fragelogiken sind hierhingehend noch nicht überprüft)

2013/06/28: MultiQ Klickreihenfolge, multiexportlimit, SPSS Export

  • die grafische Multi(Grid)Q speichert ihre Daten jetzt in der Klickreihenfolge, in der der Befragte sie ausgewählt hat.
  • neuer Skriptbefehl, der die Anzahl der zu exportierenden Nennungen in Multi(Grid)Qs beschränkt. Der Export einer langen Labelliste mit 300 3-stelligen Codes, die im ASCII File 900 Spalten benötigen würde, kann so z.B. auf die ersten 20 Nennungen (= 60 Spalten) beschränkt werden. Die (vollständigen) Nennungen in den Rohdaten bleiben hiervon unbeeinflusst. Möglicherweise gekürzte Variablen werden im Skript-Check als Warnings gelistet.
  multiexportlimit = INT;
  • Skript-Check Warnungen für die Definition von OpenNumFormats ergänzt.
  • SPSS Export für Serverversionen freigeschaltet (setzt aktuelle GESStabs Version voraus).

2013/06/19: Updater, Data Edit, OPN/CSV, respID, Export

  • Q. Desktop verfügt nun über einen integrierten Updatemechanismus
    • Auf Updates prüfen und downloaden unter Menüpunkt Server Status
    • Eine Installationsabfrage erfolgt beim nächsten Programmstart
  • Unterbrochene Datensätze lassen sich ebenfalls über das Webinterface editieren
  • Bugfix beim Datenexport
    • Sequentielle Abarbeitung von Parallelzugriffen
    • GTC Tabellen und Rebuild Fehlermeldung, wenn keine colmap vorhanden
  • OPN Download funktionell erweitert
    • Encoding wählbar als ANSI oder UTF-8
    • Alternativ als CSV: 1 Zeile pro Fallnummer, Variablen in Spalten mit Headern
  • für Teilnehmer IDs (respid) werden jetzt nur noch die Zeichen A-Z, a-z und 0-9 gestattet
  • Performanceoptimierung des Datenexports

2013/06/19: Umfangreiches Q. Android Update

  • Kleinere Textänderungen in der Benutzeroberfläche
  • Während einer Befragung können über Menü → Info interviewspezifische Informationen abgerufen werden
    • Studienname, Startzeit des Interviews, Fallnummer, aktuell angezeigte Frage
  • Wegen eines möglichen Fehlverhaltens wechselt findet bei USB Datenaustausch kein Wechsel mehr auf die Loginseite statt
  • Q. Android startet jetzt autmatisch mit dem Android Systemstart
  • Integration des GESSAppBlock Dienstes, der alle Anwendungen außer Q. Android verhindert (u.A. auch die Nutzung der Kamera blockiert)
  • Unterbrochene Interviews werden beim Löschen in einen deleted_data Ordner verschoben
  • Die nächste Fallnummer ist jetzt vor einem Interviewstart sichtbar
  • Audioaufnahme implementiert. Start/Stop aus dem Q. Skript an beliebigen Stellen mittels Javascript:
  startAudioRecording("ziel-dateiname");
  stopAudioRecording();
  • Upload von Mediadaten (Bilder, Audio) zum Webserver und per USB
  • Beim Upload/Import von zwischenzeitlich unterbrochenen Datenfiles werden jetzt auch die Zwischenschritte mit übertragen
  • Im Demomodus werden keine Fallnummern mehr hochgezählt
  • Harmonischere Einbindung des QR Code Scanner zum Lesen von Lizenzcodes
  • Das Setting allow unknown IDs spielt für Android-Befragungen keine Rolle mehr
  • Beim Browsen auf externe URLs werden die Inhalte innerhalb von Q. statt im externen Browser dargestellt
  • Javascript Funktion zum Neuladen des aktuellen Screen inkl. Ausführung von zusätzlichem Javascript-Code.
  reload("continueInQ = 1;");

Beispiel: Angenommen Q. Screen x springt abhängig von der Javascript-Variable continueInQ bei 0 in einen externen Teil (z.B. Sawtooth Conjoint). Führt die letzte Seite dieses Teils das o.g. “reload” aus, wird Screen x mit der zusätzlichen Information neu geladen, weiß damit, dass der externe Teil beendet ist und setzt das Interview innerhalb von Q. fort.


2013/06/13: _revision und Export von Q. Systemvariablen

  • Gegenstelle für neue Android-Funktionen von 2013/06/12
    • Media-Files importieren/annehmen, speichern und Mengen darstellen
    • GESSAppBlock Bedienung via GUI
  • neue System-Skriptvariable _revision mit der aktuellen Software-Revision
  • Systemvariablen werden nun in die GESStabs var.inc exportiert
    • _duration
    • _caseid
    • _respid
    • _currentScreen
    • _finished
    • _starttime
    • _finishtime
    • _startdate
    • _finishdate

2013/04/23: Diverse kleinere Updates in Q. und Q. Android

  • Erweiterungen an Q. Desktop (Jetty)
    • Optionaler Start mit root-Pfad als Parameter
    • Request-/Response Header-Size verdoppelt
  • NumQ-Labels berechnen jetzt anhand ihres OpenNumFormats, wie viele Spalten sie beim Datenexport reservieren müssen
  • Überarbeitungen beim Datenexport und im Fehlerfall “doppelte Fallnummern”
  • SingleQ Nennungen lassen sich auch deselektieren
  • Skript-Check wirft nun Warnings für (einige) obsolete Skriptbefehle
  • Opens in Griditems werden nun beim Datenexport berücksichtigt
  • Bugfix: Export von Multigrid-Item-Codes in die var.inc
  • Bugfix: RescueData in UTF-8
  • Neuer HTML Skriptbefehl showQuestionName. Zeigt Fragenamen über dem Titel an.
HTML{ showQuestionName = yes }; // no
  • Q. Android
    • Die Lizenzierung von Apps lässt sich nun auch über das Q. Webinterface vornehmen.
    • Wiederaufnahme von abgebrochenen Testinterviews ist jetzt möglich.
    • Bei Steuerung über das Q. Webinterface springt die App zur (aktualisierten) Startseite.
    • Bugfix: Weiße Seiten, Interview-finished Dialog mit Eingabezwang.

Außerdem nicht neu, aber bislang noch undokumentiert: Verwendung von restrict mit inverser oder komplexerer Logik bzw. der RestrictVar. Hier nur angerissen, da eine ausführlichere Dokumentation folgt. Wichtig ist die Klammersetzung um den Gesamtausdruck.

// Beispiel
singleq msq1;
text="1. Platz";
labels=
1 "a"
2 "b"
3 "c"
4 "d"
5 "e"
;

// RestrictVar rsv = (not(msq1));

singleq msq2;
text="2. Platz";
labels copy msq1;
restrict=(not(msq1));
// restrict=rsv;  // Alternative Schreibweise mit RestrictVar


singleq msq3;
text="3. Platz";
labels copy msq1;
restrict=(not(msq1 or msq2));

Texte oder andere HTML Inhalte über mehrere Screens darstellen.

Es gibt in Q. 8 frei belegbare Systemvariablem mit den Namen template1, …, template8 und vom Typ TextElement. Manuell würde man so etwas so anlegen

textelement NAME;

und in ActionBlöcken mit

setText(NAME, “Text”);

belegen.

Wenn man irgendwo im Template jetzt Platzhalter @tt1, …, @tt8 einfügt, werden die Werte an diesen Stellen eingefügt. Im Template immer an den Zeilenanfang und am Besten immer @dummy drumherumpacken:

@dummy
@tt1
@dummy

Um jetzt dauerhaft die TeilnehmerID anzuzeigen könnte man z.B. im Skript schreiben:

startActionBlock = {
  setText( template1, "@insert(_respid)" );
};

Vorausgesetzt @tt1 ist im Template zu finden, würde die ID nun über die gesamte Befragung hinweg dort angezeigt werden.


2013/03/12: export; für Array, Autostart Netblock via USB, N++ Support

  • Die Notepad++ Support Files auf der Homepage wurden aktualisiert
  • Android: Die Autostart-Funktion für den Netblock Service lässt sich jetzt auch per USB über die Benutzeroberfläche einstellen
  • export lässt sich jetzt auch auf Arrays anwenden
  Array choice[20];
  export;

2013/03/08: Umfangreiches Versionupdate

  • Der komplette Bereich des Datenexports wurde erneuert
    • Eigener Menüpunkt “Data / Export”
    • Die Bespaltungsvorgabe colmap.lst und die Variablendefinition var.inc können nun systematisch über die Benutzeroberfläche erzeugt und modifiziert werden
    • Die Datenstände (ASCII und OPN Files) werden zentral im Hintergrund gepflegt und automatisch mit Bespaltungsvorgabe und Variablendefinition synchronisiert
    • Die Onlinetabellierung wird aus den zentralen Datenständen und der Variablendefinition erzeugt
      • Die colmap_gtc.lst entfällt
      • Die Skriptbefehle gtcDataExportCondition und gtcReplaceExistingCases entfallen
      • Es gibt ein Default a.tab - File, welches ein GESStabs Codebook über alle enthaltenen Variablen in den completed Fällen erzeugt (modifizierbar im config Ordner)
      • Der gtc Ordner kann nun auch für den Studienupload berücksichtigt werden
    • Aus den zentralen Daten kann nun per Klick auch ein SPSS .sav File erzeugt werden (vorerst nur unter Windows)
      • Defaultverhalten im config Ordner exportspss.tab kann ebenfalls manuell im gtc Ordner platziert und modifiziert werden
  • Die Namen beim Anlegen neuer Benutzer oder Studien über die Benutzeroberfläche dürfen jetzt nur noch die Zeichen a-z, A-Z, 0-9 und _ enthalten
  • Android: Der integrierte NetBlock Service kann jetzt über die Q. Benutzeroberfläche aktiviert und deaktiviert werden. Außerdem lässt sich der Dienst auch per Javascript mit den Funktionsaufrufen startNetBlockService() und stopNetBlockService() starten und stoppen
  • Bugfix beim Deselektieren einer SingleQ (Zurücksetzen auf Missingwert)
  • Wegen Festgestellten Fehlverhaltens: clearFilteredQuestions per Default wieder deaktiviert
  • kleinere Bugfixes an der Benutzeroberfläche, Ergänzungen von Fehlermeldungen

2013/01/23: set-/endfilter auskommentiert und Bugfix export

  • Bugfix in Bezug auf das export Statement (siehe 2013/01/07)
  • setfilter / endfilter Zeilen in der var.inc wg. teilweise falscher Syntax vorübergehend auskommentiert

2013/01/21: Q. Android: Studientitel wird jetzt im Studienhauptmenü angezeigt

Aktuelle Version steht zum App internen Update und zum Download bereit http://www.gessgroup.de/qdownload


2013/01/15: Notepad++ Supportfiles und Handbuch aktualisiert

Die Notepad++ Supportfiles und das Q. Handbuch wurden überarbeitet. http://www.gessgroup.de/qdoc


2013/01/11: USB Verbindung zu Android Geräten

Über einen ADB Server (Android Debugging Bridge) ist Q. jetzt in der Lage über USB mit angeschlossenen Android Geräten zu kommunizieren. Voraussetzung dafür ist, dass auf den Geräten der Entwicklermodus bzw. USB-Debugging angekreuzt wurde und das Betriebssystem das Gerät auch als ADB Device erkennt. Gegebenenfalls ist hier die Verwendung von herstellerspezifischen ADB Gerätetreibern notwendig. Die Q. Desktop Installation enthält jetzt einen Windows ADB Server, der beim Programmstart automatisch gestartet wird. Das Webinterface bietet neue Menüpunkte, um auf das per USB angeschlossene Android Gerät zugreifen zu können:

  • Im Menüpunkt “Upload” kann jetzt auch ein Android Gerät als Zielsystem ausgewählt werden, um Studien zu übertragen.
  • Im Menüpunkt “USB Manager” ist Folgendes möglich:
    • Geräteinformationen und vorhandene Studien einsehen
    • Datensätze importieren
    • Studien löschen
    • App Reset ausführen

2013/01/10: Export von SPSS Files (überarbeitet 2013/03/08)

Unter Verwendung von GESStabs ist auf Windowssystemen jetzt auch ein direkter Export von SPSS .sav Files möglich. (Dieses Feature wird demnächst noch weiter ausgebaut und dann detaillierter dokumentiert).


2013/01/07: Export von groups und compute(Bugfix 2013/01/23) (Erweiterung 2013/03/12)

Ob Q. interne Variablen (groups, compute) in Datensatz und var.inc exportiert werden sollen, kann nun mit dem Schlüsselwort export gesteuert werden.

group rtest;
labels=
1 "test"       (strcmp(_respid, "test") eq 0)
2 "nicht test" (strcmp(_respid, "test") ne 0)
;
export;

compute c1=1+2;
export; 

2013/01/02: Schreiben von Rettungsdatensätze

Mit dem Skriptparameter writerescuedata lässt sich einstellen, ob bei Interviews nach jeder Beantwortung einer Frage (oder auch Zurücknavigation) ein Sicherungsdatensatz erstellt werden soll. Bei unerwarteten Abbrüchen von Interviews (z.B. Serverabsturz) gehen so keine Daten verloren. Bei Wiederaufnahme von Interviews wird im Zweifelsfall auch nach einem solchen Rettungsdatensatz gesucht und das Interview aus diesem rekonstruiert. Diese Funktion sollte sehr gewissenhaft eingesetzt werden. Auf Servern mit großer Auslastung ist das Schreiben von Rettungsdatensätzen ein beträchtlicher zusätzlicher Rechenaufwand. Auf Android Geräten ist die Funktion hingegen absolut unkritisch.

writerescuedata = yes|no;

2012/12/10: SingleQs deselektierbar (Bugfix 2013/03/08), Tastatureingabe optimiert

  • In der grafischen SingleQ lässt sich eine Antwort jetzt auch wieder ganz zurücknehmen.
  • Optimierungen und Erweiterungen bei der Tastatureingabe
    • Openlabels werden jetzt berücksichtigt
    • Die Seite scrollt automatisch (vertikal) mit dem Eingabefokus
    • Bugfixes beim Key-Event-Handling

2012/12/06: Lizenzkonzept für Desktop Installation, verschlüsselte Passwörter, Filesystem, Upload-Rechteanpassung

  • Eine Q. Desktop Demoversion (ohne Datenerzeugung) gibt es nun als Windows-Setup auf http://www.gessgroup.de/qdownload. Sie kann mittels Lizenzfile freigeschaltet werden.
  • Beim Programmstart der Desktop Version wird nun automatisch die Q. Loginseite in Ihrem Defaultbrowser geöffnet.
  • Beim Anlegen bzw. Editieren von Benutzern im Webinterface wird das Passwort nun immer in verschlüsselter Form abgelegt.
  • Das Dateimenü ist im Webinterface wieder verfügbar, um Dateien aus “text”- und “media” Verzeichnis herunterzuladen.
  • Um den Studienupload zu benutzen ist jetzt FULL_ACCESS erforderlich. Auf dem Zielsystem muss ein gleichnamiger Benutzer mit mindestens der Zugriffsstufe REDUCED vorhanden sein.
  • Kleinere Bugfixes (Klammersetzung bei compute, etc und Labelgroup Filtern).

2012/11/29: Servlet-Filter

Die Q. Servlet-Varianten (Desktop, Server) verfügen nun über einen Servlet-Filter, der in jedem Fall UTF-8 als Datenaustausch Encoding erzwingt. Bei Webservern sollte in Connector-Tags der server.xml jeweils URIEncoding=“UTF-8” und useBodyEncodingForURI=“false” gesetzt sein.


2012/11/22: Kleinere Erweiterungen und Bugfixes

  • Negative Werte in NumQ
  • Sprungmarken/-Links im Skript-Check
  • kleinere Bugfixes

2012/11/21: GetRemoteContentByURL()

Das Q. Servlet kann mittels HTTP Request nun Inhalte von externen Servern laden und weiterreichen. Das ist z.B. erforderlich wenn in Q. mittels Javascript oder Ajax externe Datenquellen (Json, XML, …) weiterverarbeitet werden müssen. Die Same-Origin-Policy erlaubt es Browsern nicht auf Inhalte zuzugreifen, die von einem anderen Server stammen. Aus Perspektive von Q. stammt die gewünschte Information so vom eigenen Server, der die Information anfordert und nur weiterreicht. Der Request benötigt als Parameter die URL der gewünschten Information, welche URL spezifisch encodiert werden muss.

http://Q-SERVER/SurveyServlet?action=getremotecontentbyurl&url=http%3A%2F%2Fwww.gessgroup.de%2informationen.xml

Nutzung per Javascript am besten:
http://'+ window.document.location.host +'/SurveyServlet?action=getremotecontentbyurl&url=http%3A%2F%2Fwww.gessgroup.de%2informationen.xml

2012/11/16: Zeichen von TextElements mit StrCutLeft() und StrCutRight() abschneiden

Mit folgenden 2 ActionBefehlen können Texte in Q. abgeschnitten werden.

  • StrCutRight(TEXT-ELEMENT, VARIABLE, ANZAHL); schneidet ANZAHL Zeichen von VARIABLE ab und speichert das Ergebnis in TEXT-ELEMENT.
  • StrCutLeft(TEXT-ELEMENT, VARIABLE, ANZAHL); analog zu StrCutRight
TextElement cutted;

OpenQ q1;
text="Bitte was eingeben";
continueActionBlock={
   strCutLeft(cutted, q1, 2);
};
// nach Frage q1 ist in TextElement cutted der Inhalt von q1 ohne die ersten beiden Zeichen abgelegt.

2012/11/15: Individuelle Datenfiles schreiben und lesen mit den ActionBefehlen writeJsonToSurvey() und readRawJsonDataFile()

Um aus Interviews heraus individuelle Datensätze speichern und einlesen zu können gibt es 2 neue ActionBefehle.

  • writeJsonToSurvey(SURVEYNAME, “FILENAME”, (VARIABLE1 VARIABLE2 …)); schreibt einen Datensatz mit dem Namen FILENAME in den Studienordner von Studie SURVEYNAME, der die angegebenen Variablen im JSON Format enthält.
  • readRawJsonDataFile(“FILENAME”); liest einen vorhandenen JSON-Datensatz ein und füllt die Projektvariablen mit den Werten des Datensatzes auf.

2012/08/20: ClearFilteredQuestion (Änderung 2013/03/08) und Server-Monitoring

  • Die Funktion ClearFilteredQuestions (siehe Eintrag 2012/03/11) ist nun per Default aktiviert und wird vor der Logik aus dem cmplActionBlock und der Quotenzählung ausgeführt.
  • Mit dem HTTP Parameter action=getstatus liefert der Q. Server einige elementare Monitoringinformationen, mit deren Hilfe die Funktionalität des Servers überwacht werden kann.

2012/08/19: Serverlast-Balancing: Gewichtete Interviews

Interviews können jetzt mit einer Fließkommazahl und je Studie gewichtet werden.

surveyWeight=2.0; // Default: 1.0

Hierzu lässt sich im Config-File ein Maximalwert für den Server einstellen.

maxSurveyWeight=2000 // Default: 1000

Der Server lässt nun Interviewstarts zu, bis die Summer der Gewichte aller aktiven Interviews den Maximalwert übersteigt. Ist dies der Fall wird die dem Teilnehmer die Datei maxload.html aus dem Konfigurationsverzeichnis vorgelegt


2012/07/28: Diverse prophylaktische Optimierungen und bessere Benutzerfreundlichkeit

  • Um möglichen Namenskollision vorzubeugen, wird der Punkt in Q. nun für den Datenexport reserviert. Für Variablennamen in Q. ist er nicht mehr zulässig (Fehler im Skript-Check).
  • Die Variablennamen in der colmap.lst und in der var.inc werden entsprechend mit der Punktnotation erzeugt.
  • Folgende Fälle führen künftig zu Meldungen im Script-Check
    • (Sich überschreibende) Mehrfachzuweisungen von initActionBlock, resumeActionBlock, startActionBlock, etc. (Warning)
    • Im Skript definierte Fragen, die gar nicht oder mehrfach im Befragungsablauf enthalten sind (Warning)

2012/07/11: Manuelles "Schlafenlegen" aktiver Interviews
  • In der Serverstatistik des Webinterfaces lassen sich jetzt gezielt Interviews per Knopfdruck in den Abbruch-Zustand versetzen.

2012/07/10: Übersichtsseiten mit Koordinatensystemen

  • Das Q. Webinterface bietet jetzt Übersichtsseiten (insgesamt und je Studie), in denen der jüngste Studienverlauf in einem Koordinatensystem visualisiert wird.
  • Weiterhin gibt es ein Tortendiagramm je zu den Abbrechern und Finishern in der Studienstatistik.

2012/07/05: Q. als Standalone Desktop Variante

Q. ist jetzt auch Standalone (ohne zusätzliche Installationen) mit einem vollwertigen und integrierten Webserver verfügbar.


2012/06/29: Toolkit PDF und Notepad++ Support aktualisiert und erweitert

Das Toolkit PDF und die Supportfiles für Notepad++ (Syntaxhighlighting, Autocomplete) wurden überarbeitet und um neue Inhalte ergänzt.
Siehe http://www.gessgroup.de/qdoc.


2012/06/25: Restrict für Textlabels

  • Textlabels können jetzt mit einem Restrict versehen werden, welcher sich auf andere Labels derselben Frage bezieht und mit weiteren Restricts übernommen werden kann.
MultiQ bekannt;
text="Welche Marken kennen Sie?";
labels=
text "Audi" restrict([1:3])
1 "A3"
2 "A6"
3 "A8"
text "BMW" restrict([4:6])
4 "3er"
5 "5er"
6 "7er"
;

MultiQ gekauft;
text="Welche haben Sie schon gekauft?";
labels copy bekannt;
restrict=bekannt; 

2012/06/22: CountValue

  • In einer Datei countvars.lst können jetzt Zählerstände gepflegt werden, die mit dem ActionBefehl getCountValue(VAR, “KEY”) synchronisiert abrufbar sind. Hierbei wird der Zähler “KEY” zuerst inkrementiert und anschließend an Variable VAR geliefert.
  • Die Datei countvars.lst besteht aus einfachen Key-Value Paaren:
zaehler1 0
zaehler2 0
zaehler3 0
  • Beispielskript einer Willkommensnachricht
compute z1 = 0;

textq welcome;
text="
  Herzlich Willkommen!<br>
  Sie sind der @insert(z1). Teilnehmer an dieser Befragung!
";
initactionblock={
  getCountValue(z1, "zaehler1");
};
  • Mit (genau genommen vor) jedem Anzeigen der Frage wird der Zählerstand erhöht. Die Nachrichten werden der Reihe nach wie folgt angezeigt:

Sie sind der 1. Teilnehmer an dieser Befragung!
Sie sind der 2. Teilnehmer an dieser Befragung!
Sie sind der 3. Teilnehmer an dieser Befragung!


2012/06/21: Neue Variable _currentdate, _respid jetzt 40-stellig

  • Analog zu _currenttime gibt es jetzt auch die Variable _currentdate im Format YYYYMMDD
  • Für die Respondent-ID werden im Datensatz jetzt 40 Zeichen reserviert
  • diverse, kleinere Bugfixes: Kalenderauswahl im neuen Webinterface, viewingtime, TextArray, CountValue, surveyname im finished-Screen, in Operator

2012/06/18: Neue Features und Optimierungen in Q. Android

  • Q. Android verfügt jetzt über einen QR Code Scanner, der genutzt werden kann, um Lizenzschlüssel in Form von QR Codes einzulesen
  • Auf Wunsch können Interviews nun im Testmodus durchgeführt werden
  • Unterbrochene Interviews werden nun gelistet und können gelöscht oder wiederaufgenommen werden
  • Bei numerischen Eingabefeldern öffnet Q. Android nun die Zahlentastatur
  • Schieberegler unterstützen jetzt auch Drag&Drop Funktionalität
  • Diverse kleinere Optimierungen am Layout und für bessere Benutzerfreundlichkeit

2012/06/07: Optimierung des Studiendownloads

  • Der Download von Studien eines Q. Servers auf ein Android-Device wurde gefixed (Überschreiben von Mediendateien) und optimiert (FileExcludeFilter)

2012/06/06: In-App Updates in Q. Android

  • Q. Android verfügt jetzt über eine In-App Update-Funktion

RELEASE Q. Version 2.2

2012/06/06: Q. Webinterfaces mit neuem Design

  • diverse Bugfixes

2012/06/01: Q. Webinterfaces mit neuem Design

  • modernes Layout und Navigationskonzept
  • colmap.lst, var.inc, .opn, .dat: Jetzt als echter Dateidownload
  • var.inc, .opn, .dat: Download nur möglich, wenn colmap.lst vorhanden
  • colmap.lst: Direktes Speichern auf dem Server möglich (+ colmap_gtc.lst); Bereits vorhandene Dateien werden gesichert
  • var.inc: Wählbar in ANSI oder UTF-16, wählbar mit Systemkommentaren und Entfernung von HTML/Javascript Inhalten
  • .opn: In UTF-8 mit BOM und mit Systemkommentaren
  • .dat: In UTF-8
  • kleinere Bugfixes
  • Ausgabe von Fehlermeldung an mehreren Stellen (u.A. auch bei Werten mit Überlänge(Spalten) beim .dat Download)
  • Skript-Check zeigt jetzt zuerst die Anzahl der Fehler und Warnings
  • LocalServer um entsprechende Funktionalität erweitert

2012/05/27: Neuer Actionbefehl containsText

  • Der Befehl containsText prüft, ob ein bestimmter Text in einem TextArray enthalten ist.
  • Syntax und Beschreibung folgen…

2012/05/22: Neuer Actionbefehl remove

  • Der Befehl remove löscht Werte in Arrays (setzt sie auf Missing).
  • Syntax: remove(<array>, <wert>, <wert>, …);
Array arr(3);

ActionBlock ab = {
  set( arr[1] = 1 );
  set( arr[2] = 2 );
  set( arr[3] = 3 );
  remove(arr, 2, 3);
};
// Nach Ausführung des ActionBlock ab enthält arr {1, _missing, _missing}

2012/05/14: Logischer Operator XOR

  • Zusätzlich zu AND, OR, NOT, NE, EQ, GT, GE, LT, LE … gibt es jetzt auch den logischen Operator XOR

2012/05/10: MultiQTextInsert zur formatierten Einblendung von Antworten aus MultiQs

  • Syntax: MultiQTextInsert <name>=(<Frage>, ”<TextVOR>”, ”<TextNACH>”, ”<TextZWISCHEN>”);
  • Ein exemplarisches Beispiel:
multiq q9;
text = "Fragetext...";
labels=
1 "A"
2 "B"
3 "C"
4 "D"
;

MultiQTextInsert ti_q9=(q9, "(", ")", ", ");

textq ergebnis;
text = "Sie haben @insert(ti_q9) ausgewählt.";

// Anzeige z.B.: "Sie haben (A), (B), (D) ausgewählt."

2012/05/09: Tastatureingabe erweitert

  • Labelcodes jetzt entsprechend der Angabe x-stellig
  • Akustisches Feedback für getätigte Eingabe

2012/04/27: GTC Onlinereporting

  • Schreibweise im .tab File zur Erzeugung von HTML Tabellen jetzt beliebig (vgl. 2012/03/03).
  • Beschreibung des Onlinereportings mit GTC im Toolkit PDF.

2012/04/23: neue grafische Komponenten

  • ImageMaps
  • 3DRotationViewer

Siehe Toolkit PDF und Demoumfrage 2.


2012/04/16: neue Skriptfeatures: foreach, shareLabels, insertLabels, oversizeArray

  • foreach - Schleife (in ActionBlöcken)
  • insertLabels(Q_ID, APPEND_LABEL, [ NEW_LABELS ]); als Befehl für ActionBlöcke
  • Der Befehl shareLabels=Q_ID; im Rahmen einer Fragedefinition benutzt die Labelliste einer anderen Frage Q_ID. Veränderungen an der Labelliste (zur Laufzeit) werden berücksichtigt.
  • Der Befehl oversizeArray(INT); im Rahmen einer Fragedefinition legt die entsprechende Variable mit Platz für zusätzliche Werte an.
  multiq bekannt;
  text="Welche dieser Marken kennen Sie?";
  labels=
  1 "Lafite Rothschild"
  3 "Haut-Brion"
  5 "Chateau Latour"
  7 "Chateau Montrose"
  ;
  oversizeArray(3);
  initActionBlock={
    insertLabels(bekannt, 1, [ 2 "Mouton Rothschild" ]);
    insertLabels(bekannt, 3, [ 4 "Chateau Margaux" ]);
    insertLabels(bekannt, 5, [ 6 "Mouton Rothschild" ]);
    
    forEach(x=1 3 5 7:9) { /* do some useful calculation */ };
  };
  
  multiq gekauft;
  test="Und welche der Marken haben Sie selbst schon einmal gekauft?";
  shareLabels = bekannt;
  oversizeArray(3);

2012/04/11: GTC Code in Q. Makros

  • Man kann nun in Q.-Makros GTC-Code definieren, der je Instanz des Makros in expandierter Form der comp.inc bzw. tab.inc hinzugefügt wird.
#MACRO makro
SingleQ Frage$1;
...
;
**property("gct_comp", "recode die Frage$1");
property("gct_tab", "tab kopf by Frage$1");**
#ENDMACRO 

2012/04/04: Android Surveydownload überarbeitet

  • Surveydownload mit diversen Bugfixes optimiert

2012/04/03: CSS Class für rechte Item-Text-Zelle in bipolaren Grids

  • neue CSS Class: qrightitemtextcell, damit gleichzeitig Bugfix bei Vergabe der rowclasses

2012/04/02: $surveyname, noAnswerLabel

  • Im Template kann der Studienname neben @surveyname (Zeilenanfang) jetzt auch an beliebigen Stellen mit $surveyname eingesetzt werden
  • Die Schieberegler-Property sl_unspecified_text wurde ersatzlos durch den globalen Parameter noAnswerLabel ersetzt.
  noAnswerLabel = TEXT;

2012/03/15: @insert() jetzt auch mit eckigen und geschweiften Klammern

  @insert()
  @insert[]
  @insert{}

2012/03/12: inactive / idfail

  • Die Hinterlegung der Dateien inactive.q (/.html) und idfail.q (/.html) ist jetzt optional

2012/03/11: showAllErrors, clearFilteredQuestions

  • showOnlyOneError für Gridfragen ersatzlos gestrichen und zum Defaultverhalten deklariert. Dafür gibt es jetzt den Befehl showAllErrors.
  • Am Interviewende erfolgt nun eine Überprüfung aller gefilterten Fragen auf fälschlicherweise vorhandene Inhalte, die bei Benutzung des Zurückbuttons vorhanden sein könnten. Diese werden notfalls ausgeleert (auf Missing gesetzt). Die Überprüfung wird mit clearFilteredQuestions=yes; aktiviert.

2012/03/05: NumQ Bugfix, _surveyname, neue CAPI Checksummenberechnung

  • Bug in HTML NumQ Varianten mit gefilterten Labels gefixed.
  • Im Interview gibt es jetzt eine Variable _surveyname, die den Namen der Umfrage enthält.
  • Optimierung der CAPI Checksumme.

2012/03/03: _endtime und _enddate

  • In den Datensätzen gibt es jetzt, analog zu _starttime und _startdate auch die Variablen _endtime und _enddate.

2012/03/03: GTC Onlinetabellierung für Q. (Reporting)

  • Es gibt jetzt wieder aktuelle GTC Linuxversionen für die Onlinetabellierung.
  • Im a.tab müssen die html-Tabellen explizit mit “html = “ geschrieben werden (Leerzeichen vor und nach = ).
  • Q. erzeugt jetzt ein Logfile für die GTC Tabellierung.
  • GTC-Data-Export für Onlinetabellierung erweitert.
    • gtcDataExportCondition definiert, wann Datensätze an GTC geliefert werden sollen (Achtung: Wird auch bei Abbruch und Timeout ausgewertet).
    • gtcReplaceExistingCases legt fest, ob Datensätze mit bereits existierenden Fallnummern überschrieben werden sollen (z.B. bei mehrstufigen Umfragen).
  gtcDataExportCondition = _finished eq 1;
  gtcReplaceExistingCases = yes;

2012/02/29: Q. für Android-Geräte

  • Q. gibt es jetzt auch für Android-Geräte ab Version 2.1.
  • Der volle Funktionsumfang von Q. Online ist verwendbar.
  • Download von Studien.
  • Upload von Datensätzen.
  • Eine Demoversion gibt es auf http://www.gessgroup.de/qandroid.

2012/02/28: SingleQ-Select in Texten, splitcolumn, Google Charts

  • In der Quotenübersicht und Projektstatistik gibt es jetzt auch erste grafische Darstellungen der Informationen.
  • Mit splitcolumn können Labels in SingleQ, MultiQ und NumQ jetzt flexibel an beliebigen Stellen auf mehrere Spalten verteilt werden:
SingleQ split;
labels=
text "Autos"
1 "5er BMW"
2 "Audi A4"
3 "Mercedes E200"
4 "Volkswagen CC"
splitcolumn
text "Motorräder"
5 "KTM Duke"
6 "Yamaha Fazer"
7 "Honda CBR"
splitcolumn
text = "Fahrräder"
// ...
;
  • SingleQs können jetzt als Select-Input an beliebigen Textstellen eingebunden werden. Die SingleQ muss dazu mit input=no; angelegt und mit in die Screendefinition geschrieben werden:
HTML { input=no; };
SingleQ sonstige;
labels=
1 "Sonstige Variante A"
2 "Sonstige Variante B"
;
HTML { input=yes; };

MultiQ hauptfrage;
text="Welche Variante bevorzugen Sie?";
labels=
1 "Variante a"
2 "Variante b"
3 "Variante c"
9 "sonstige, bitte auswählen: @insert(select sonstige)"
;
Screen scr = column(hauptfrage sonstige); 

2012/02/22: removeDuplicates()

  • Mit removeDuplicates(ARRAY); werden Werte, die mehrfach in einem Array auftreten entfernt. Nur ihr erstes Auftreten bleibt erhalten. Weitere Vorkommen werden durch Missing ersetzt.

2012/02/21: Dynamisches Laden externer Daten im JSON Format

  • readJsonDataFile(FILENAME); läd Inhalte aus lokalen Dateien
  • performHttpRequest(); stellt eine Serveranfrage, die ebenfalls Informationen im JSON Format liefern (muss serverseitig sichergestellt sein). Im folgenden ein Beispiel. Der Parameter data ist optional:
performHttpRequest(
   url="http://www.gessgroup.de/AntwortServlet";
   data="INFORMATION";
); 
  • Beispiel für Inhalte im JSON Format:
{
   "variables": {
      "single1": 4,
      "multi1": [2, 3, 5, 7, 9],
      "open1": "dies ist ein text",
      "num1": [14, 19, 5, 27],
      "sg1": [1,2,3,2],
      "mg1.1.1": [1,2,3],
      "mg1.1.2": [2,1]
   }
}

2012/02/15: JSON Objekte für Projektstatistik/Quotenübersicht per URL abrufbar

  • Quotenübersicht: &action=getjson&survey=studie&document=quotasummary
  • Projektstatistik: &action=getjson&survey=studie&document=surveystats

RELEASE Q. Version 2.1

2012/01/26: Negative Werte im OpenNumFormat
  • Das OpenNumFormat erlaubt nun auch negative Werte. Das Minuszeichen muss hierbei wegen der späteren Berücksichtigung im Datensatz als Vorkommastelle mitgezählt und im OpenNumFormat angegeben werden.

2012/01/18: Werte-Felder in SliderQ
  • Die SliderQ lässt sich über den Parameter sl_showValues jetzt mit den Werten yes|no|left|right|both flexibler einstellen. Neben dem tatsächlich eingestellten Wert auf der rechten Seite, kann nun auch der Restwert auf der linken Seite dargestellt werden.

2011/12/26: OPN Datensätze als Unicode
  • OPN Datenfiles werden nun auch als Unicode UTF-8 codiert. So werden internationale Zeichen, wie kyrillische Buchstaben korrekt dargestellt.

2011/12/05: BOM Skipping bei Unicode
  • Workaround gemäß Java-Bug 4508058. Bei Unicode-Zeichencodierung wird ein möglicherweise vorhandenes BOM jetzt berücksichtigt und beim Einlesen von Dateien übersprungen.

2011/12/04: Grafische Buttons, Packaging, Slider, Ranking jetzt festern Bestandteil von Q.
  • Geänderte Einbindung mit xxxQClass=GSingle(Grid)Q|GMulti(Grid)Q|SliderQ|PackagingQ|RankingQ, siehe auch Toolkit PDF http://www.gessgroup.de/qdoc

2011/11/30: Erkennung von Encodings
  • Das Encoding der Skriptdateien, des HTML-Template etc. wird jetzt automatisch von der Software erkannt (bzw. geschätzt). Falls eine encodings.lst mit entsprechenden Einträgen vorhanden ist, wird diese Angabe jedoch bevorzugt. Es ist die ICU4J-Lib im Ordner WEB-INF notwendig.

RELEASE Q. Version 2.0

2011/11/25: _cancel - Wert bei Cancelbutton
  • Variable _cancel hat nun Wert 1 bei benutzung des Cancel-Buttons, wenn kein cancelMenu vorhanden

2011/11/24: SliderQ überarbeitet; GESS Javascript Lib; Update auf jQuery Version 1.6.2
  • Schieberegler in CSS Layoutmechanismus integriert. Berücksichtigung von defaultnomissing Einstellung.
  • jQuery Update durchgeführt. Supportbereich auf GESS Homepage aktualisiert.

2011/11/22: Modulo Operator ergänzt und Angabe des Config-Pfad geändert
  • Modulo-Funktion (compute a=b%c);
  • Neuer Mechanismus für Pfad zu config-Verzeichnis (init-param in web.xml)

2011/11/16: LocalServer: Neue Version
  • LocalServer (Lokalinstallation) aus Kompatibilitätsgründen auf com.sun.net.httpserver aktualisiert

2011/11/14: Supportbereich auf der Homepage aktualisiert
  • Notepad++ Support Files (Highlighting, AutoComplete, Codesnippets)
  • GESS Javascript Bibliothek
  • Default CSS Template zum Download verfügbar

2011/11/13: Variablenvorbelegung und CancelMenü
  • cancelMenuDefault (Default-Fall für CancelMenü), cancelMenuErrorMsg eingeführt
  • Variablenvorbelegung bei Interviewstart per Datei (eine Datei pro Interview) mittels “datafile”-Parameter in der start-URL, primär für webcati zur Übergabe der Adressdaten

2011/10/26: Usertype "capi" und SHA1 Verschlüsselung
  • Für CAPI Interviewer gibt es jetzt einen Usertyp “capi”
  • Passwörter in der users.lst können nun auch SHA1 verschlüsselt abgelegt werden. Solche Passwörter beginnen in der users.lst mit “sha:” und können z.B. auf http://www.sha1.cz/ erzeugt werden. Beispiel:
unverschlüsselt:
id=capi1;company=capi1;name=capi1;password=capi1;access=capi 

verschlüsselt:
id=capi1;company=capi1;name=capi1;password=sha:fb048b21ca0893c2a76622c47daf69550023e464;access=capi

2011/10/24: StartActionBlock und defaultnomissing jetzt auch bei NumQ
  • StartActionBlock eingeführt (wird bei Start und bei Wiederaufnahme ausgeführt)
  • Bei defaultnomissing=no können jetzt auch NumQ Felder leer gelassen werden

2011/10/21: Einzeilige offene Eingabefelder (OpenQ)

Wird die Property textAreaRows für OpenQs auf 1 gesetzt, fügt die Software automatisch ein einzeiliges HTML <textinput> (ohne Scrollpfeile) anstelle einer <textarea> ein.


2011/10/21: Zeichensatzstandard: UTF-8

Q. nutzt jetzt überall UTF-8 Zeichensätze. In Umfragetemplates ist eine entsprechende Codierung notwendig:

<html>
<head>
  <meta name="Content-Type" content="text/html; charset=utf-8"/>
...

2011/10/17: insertLabels()
  • Einführung eines neuen Befehls insertLabels.

Er bietet zusätzlich zu addLabels die Möglichkeit, bei labels copy neue Labels nicht nur ans Ende der Labelliste zu setzen, sondern an beliebige Stellen.

SingleQ s1;
labels=
1 "1"
3 "3"
;

SingleQ s2;
labels copy s1;
insertLabels=
1(
   2 "2"
);
// fügt Label 2 zwischen 1 und 3 ein

insertLabels gibt es jetzt auch als Funktion für ActionBlöcke, siehe Eintrag von 2012/04/16


2011/10/16: @insert(), count(), hasDuplicateValues()
  • Texteinblendung (Antworten auf ältere Fragen, Variableninhalte) nicht mehr mit geschweiften Klammern, sondern mit @insert(<variable>)
  • Funktion, die die Anzahl der Vorkommen von x in einem Array liefert: count(<array>, x)
  • Funktion, die überprüft, ob Werte in einem Array mehrfach vorkommen: hasDuplicateValues(<array>).
    Liefert 1 falls ja, sonst 0.
  • Bugfix: bei SingleQ bei SELECT-Modus: Bei selbstgebauten HTML-Screens hat die Vorbelegung mit Werten nicht funktioniert

2011/08/18: TextElement, TextArray, setText(), appendText()

Einführung von

  • TextElement (einzelne Textvariable)
  • TextArray (Array mit Textvariablen)
  • setText(<textvar>, “value”) (setzt Texte neu)
  • appendText(<textvar>, “value”) (hängt Texte an vorhandene an)
TextElement myText;

// Referenzierung in Actionblöcken
actionblock ab = {
  setText( myText, "Das ist ein..." );
  appendText(myText, " ...Beispieltext");
};

//------------------------

MultiQ q_marken;
labels=
1 "Audi"
2 "BMW"
3 "Mercedes"
;

TextArray marken = q_marken; // automatische Übernahme der Labels von q_marken
// TextArray marken = {"Audi" "BMW" "Mercedes"};
// Zugriff beim Textersatz über: marken[1], marken[2], marken[3], ...

2011/06/15: Quoten manuell zählen mit incQuota()
  • Quoten lassen sich nun auch manuell zählen, indem ihre Zählbedingung unwahr belegt wird und in einem beliebigen ActionBlöcken incQuota() ausgeführt wird:
quotavar beispielquote = (1 eq 2);
// ...
cmplActionBlock = {
  incQuota(beispielquote);
};

incQuota()

public/qdot/readme.txt · Last modified: 2015/11/07 23:35 by manueltrittel