Expressies

Inhoud

    Expressies zijn krachtige en complexe onderdelen van de software. Expressies dienen verschillende doeleinden, zoals het tonen of verbergen van een vraag of categorie op basis van gegeven antwoorden of sample-waarden, het overslaan van een of meer vragen en andere soortgelijke functies.

    In dit artikel wordt een korte uitleg gegeven over hoe expressies werken en hoe ze worden gebruikt. Expressies kunnen ook worden gemaakt via de Query builder.

    TypeScript

    Expressies maken gebruik van TypeScript (wat vergelijkbaar is met JavaScript) en het werken met expressies vereist enige kennis van programmeren.

    Binnen de vragenlijst worden vragen weergegeven als TypeScript-objecten met eigenschappen zoals text (de vraagtekst die aan de gebruiker wordt getoond), enabled (of de vraag actief is), visible (of de vraag wordt weergegeven) en value (het gegeven antwoord). Daarnaast worden variabelen en vertaalbare items ook weergegeven als objecten waarnaar kan worden verwezen en die kunnen worden gemanipuleerd.

    Deze eigenschappen, inclusief de vraagtekst en andere attributen, kunnen worden geraadpleegd, gewijzigd en gebruikt via TypeScript-code.

    Voorbeeld

    In de Survey Editor kan de zichtbaarheid van een vraag worden ingesteld. In de sectie Layout is een knop beschikbaar met de naam Show conditionally . Wanneer deze knop wordt geselecteerd, wordt het window van de expressie-editor geopend, dat twee tabbladen bevat.

    Het tabblad Editor toont een interface die vergelijkbaar is met de afbeelding aan de linkerzijde.

    Hoe werkt het

    De letter q wordt gebruikt om vragen te representeren. Elke vraag wordt aangeroepen in de vorm q.name, waarbij name overeenkomt met de naam van de vraag zoals gedefinieerd in de Survey Editor.
    Wanneer q. getypt wordt (q gevolgd door een punt), wordt een lijst met alle beschikbare vragen weergegeven. Deze lijst staat bekend als IntelliSense en biedt handige opties voor automatische aanvulling.

    Na het selecteren van een vraag kunnen naar behoefte extra eigenschappen zoals .text, .isVisible of .value worden toegevoegd, waaraan waarden kunnen worden toegekend.

    Voor .isVisible kunnen alleen de waarden true of false worden gebruikt. De eigenschap .text accepteert stringwaarden. De eigenschap .value is afhankelijk van het vraagtype; een numerieke vraag vereist bijvoorbeeld een getal als waarde.


    De zichtbaarheid van een vraag hangt vaak af van sample-variabelen of van het antwoord op een eerdere vraag. De onderstaande afbeelding illustreert een voorbeeld van deze configuratie: de node infostart wordt alleen weergegeven als het antwoord op textquestion gelijk is aan ‘my answer’.

    Voorbeeld van een eenvoudige expressie.

    Eigenschappen instellen

    De eigenschappen isVisible en isEnabled van een node kunnen in de Survey Editor worden geconfigureerd door op het rekenmachine-icoon naast deze instellingen te klikken. Wanneer de Expression Editor op deze manier wordt geopend, wordt de naam van de bijbehorende node automatisch ingevoegd en kan alleen die specifieke vraag worden gewijzigd. Dit betekent dat andere vragen vanuit deze context niet kunnen worden verborgen of uitgeschakeld.

    Wanneer de Expression editor wordt geopend vanuit de rich text editor, kan in plaats daarvan de tekst van een vraag worden gewijzigd.

    De collecties

    De onderstaande tabel toont de mogelijke “collecties”, zoals q.

    CollectieDescription
    qBevat alle vragen, inclusief variabelen en node-informatie.
    rBevat alle rapporten. Typ r. (de letter r gevolgd door een punt) om een overzicht van alle beschikbare rapporten weer te geven.
    tBevat vertaalbare items zoals gedefinieerd in het tabblad Translations. Dit is vooral handig bij het weergeven van tekst in meerdere talen.
    mBevat een set metadata, zoals totalTimeSpent. Deze waarden kunnen worden gebruikt om bijvoorbeeld respondenten uit te sluiten die de vragenlijst zeer snel invullen, de zogenaamde speeders.
    pBevat de gegevens van de incentivepool, zoals de naam van een incentivepool en andere gerelateerde informatie.

    Sample-waarden

    Sample-waarden kunnen ook in expressies worden gebruikt, maar ze worden anders behandeld dan vragen. Als de naam van een sample-veld bekend is, kan de waarde ervan worden opgevraagd met s[‘samplefield’].

    Het wordt echter aanbevolen om het sample-veld aan een variabele toe te wijzen — bijvoorbeeld q.samplefield.value = s[‘samplefield’] — in plaats van herhaaldelijk de haakjesnotatie te gebruiken binnen expressies. Deze aanpak vermindert het risico op typefouten, zorgt ervoor dat de naam van het sample-veld slechts één keer wordt gedefinieerd en maakt het mogelijk om de waarde voor te bewerken (bijvoorbeeld omzetten naar kleine letters) voordat deze wordt gebruikt.

    Goto-statements/routing

    Routing is een van de belangrijkste aspecten van een vragenlijst. Het bepaalt waar een respondent vervolgens naartoe wordt geleid, op basis van de gegeven antwoorden. In dit geval is het resultaat van een expressie geen tekstwaarde of een true/false-uitkomst, maar een verwijzing naar een andere node in de vragenlijst.

    In het onderstaande voorbeeld leidt het goto-statement de respondent naar xxx als het sample-type gelijk is aan “draft”. Anders wordt de respondent naar een andere node geleid.

    Voorbeeld van een goto-expressie.

    Deze notatie, die gebruikmaakt van een vraagteken (?) and een dubbele punt (:), staat bekend als een voorwaardelijke verklaring (conditional statement). De expressie vóór het vraagteken definieert de voorwaarde. Het deel direct na het vraagteken wordt uitgevoerd als de voorwaarde waar (true) is, terwijl het deel na de dubbele punt wordt uitgevoerd als de voorwaarde onwaar (false) is.

    Functies

    Functies zijn zeer nuttig, omdat ze de hoeveelheid werk bij het maken van expressies aanzienlijk kunnen verminderen. Een veelvoorkomend voorbeeld is de contains-functie: contains(q.car, “bmw”, “volvo”) retourneert true als het antwoord op de car-vraag ofwel “bmw” of “volvo” is, en false als dat niet het geval is (of als er geen antwoord is gegeven).

    Er is een verscheidenheid aan functies beschikbaar. Deze zijn toegankelijk via het vervolgkeuzemenu boven de Expression Editor. De verstrekte beschrijvingen maken het, samen met IntelliSense, eenvoudiger om te begrijpen hoe elke functie werkt en hoe deze moet worden gebruikt.

    Volledige TypeScript

    De knop Export Code in de Survey Editor kan worden gebruikt om de TypeScript-code voor de geselecteerde vragenlijst te exporteren. De code wordt opgeslagen als een TypeScript-bestand met de extensie .ts. Alle geconfigureerde expressies zijn aan het einde van dit bestand opgenomen.

    Het geëxporteerde bestand kan worden geopend in een code-editor zoals Visual Studio Code, waar de expressies automatisch worden gevalideerd. Eventuele syntaxis- of validatiefouten worden gemarkeerd met een rode onderstreping.

    Voorbeeld van een TypeScript-bestand dat een fout bevat.

    Het geëxporteerde TypeScript-bestand kan ook dienen als een nuttig overzicht, omdat het alle expressies en variabelen die in de vragenlijst worden gebruikt op één locatie weergeeft. Dit maakt het mogelijk om de routinglogica en de flow van de vragenlijst te controleren zonder elke individuele node in de Survey Editor te openen.