Jeremy

Forum Replies Created

Viewing 15 posts - 721 through 735 (of 1,522 total)
  • Author
    Posts
  • in reply to: "Pause" issue #7330
    Jeremy
    Keymaster

    Hi Alex,

    I don’t think there’s anything wrong with your experiment. I suspect that the zip file failed to download for some of your participants. Do you know if those participants were able to hear the audio files after seeing the preloading message? Could it be that those participants in particular all live in a specific region (your zip file is on a US Amazon server, which may very well be inaccessible from Mainland China, for example)

    Jeremy

    in reply to: Timers #7329
    Jeremy
    Keymaster

    You get this error message because you are attempting to close the content of newTrial( twice:

        ,
        // Wait 1s before moving to the next trial
        newTimer(6000).start().wait()
      )
      .log( "word"    , row.Word       ) // Append the value of 'Word' at the end of the results lines
    
        newTimer(2000).start().wait()
      )
      .log( "transition"    , row.Transition      ) // Append the value of 'Word' at the end of the results lines
    )

    The first lone ) in this code matches the ( of the newTrial( above in your code. The next .log line applies to that newTrial(...) object whose content was just closed with the preceding ). However, on the next line, you are trying to add yet another newTimer element, even though that line is no longer placed inside the parentheses of a newTrial: that does not make sense to the script, which for all it knows is inside the parentheses of Template, but is done with the newTrial(...) it has already processed at that point. Because newTrial has already been closed, the next lone ) matches the remaining open (, which is the one from the Template( above in your code. Accordingly, the last .log command applies to that Template(...) object, but there is no log command on such objects, only on newTrial(...) objects (and on trial-internal elements, but they have a different meaning). Finally, the very last lone ) matches nothing, because at that point in your script there’s no open ( left

    You can see short error messages about those issues in the text editor on your project’s page, if you move your cursor over the red X icons that appear to the left of the line numbers

    What you probably want is this:

    Template("Word Pair List .csv" , row =>
      newTrial( "experimental-trial" ,
        defaultText.center()            // Horizontally center all Text elements automatically
        ,
        newText("word", row.Word)       // Show the text from the 'Word' column
            .css("font-size", "24pt")   // Increase the font size
            .log()                      // Reports when the Text is displayed in the results file
            .print()
        ,
        newTimer(6000).start().wait()   // Give 6s to read the word
        ,
        getTex("word").remove()         // Take the word off the page
        ,
        newTimer(2000).start().wait()   // Wait 2s on the empty page
      )
      .log( "word"        , row.Word       ) // Append the value of 'Word' at the end of the results lines
      .log( "transition"  , row.Transition ) // Append the value of 'Transition' at the end of the results lines
    )

    Let me know if you have questions

    Jeremy

    in reply to: Timers #7326
    Jeremy
    Keymaster

    Hello,

    It would help if you could share the demonstration link to a project that exhibits the problem. When I try to complete the beginning of the script with either pieces of code, things run normally

    This works:

    Template("Word Pair List .csv" , row =>
      newTrial( "experimental-trial" ,
        defaultText.center()           
        ,
        newText("word", row.Word)      
            .css("font-size", "24pt") 
            .log()                     
            .print()
        ,
        newText("transition")       
            .log()                     
            .print()
        ,
        newTimer(2000).start().wait()
      )
      .log( "transition"    , row.Transition      ) 
    )

    and this works too:

    Template("Word Pair List .csv" , row =&g; 
      newTrial( "experimental-trial" ,
        defaultText.center()           
        ,
        newText("word", row.Word)      
            .css("font-size", "24pt") 
            .log()                     
            .print()
        ,
        newText("transition")       
            .log()                     
            .print()
        ,
        newTimer(6000).start().wait()
     )
      .log( "word"    , row.Word       ) 
    )

    Here is my mock Word Pair List .csv table, for reference:

    Word,Transition
    hello,transition1
    world,transition2

    Jeremy

    in reply to: Troubleshooting #7320
    Jeremy
    Keymaster

    Hello,

    There is no longer an experiment at the link you gave: you probably created that project when signed off and therefore didn’t save it into your account

    I have created a minimal variant of the self-paced reading template to integrate a table of the format you describe (with only 3 mock items though): https://farm.pcibex.net/r/nolGGc/

    As described in the tutorial, participants will be assigned a group based on the project’s internal counter, which is incremented only once a submission is received (which is the default behavior). Complete a test run once and take the experiment again to see another group, or use ?withsquare=N in the URL to override the counter’s value

    Let me know if you have questions

    Jeremy

    in reply to: High number for results of project #7317
    Jeremy
    Keymaster

    Hi Noelia,

    The PCIbex Farm will only let you generate results files with 100k lines max (excluding comments lines) so my recommendation is you estimate how many participants fit in 100k lines, and you download the file and clear the results at those intervals. Just make sure you pause data collection in advance (turn off “published” on your project’s page) so you don’t get new data caught in while deleting results from the farm. Of course you can always not do that and keep collecting data, and use the “only include submissions” option to download your results in multiple batches of less than 100k lines each (maybe refresh the page each time too, if you do that)

    The issue with large results files is that, the more lines the PCIbex Farm has in its database, the longer it takes to access it, resulting in longer delays for saving future incoming results and for downloading results files. We have had several crash episodes in the past related to large results files, so we try to encourage users to keep them light by limiting the number of lines logged, downloading the files regularly and deleting them once safely stored on a local device

    We won’t initiate deletion of results without asking for consent. However, technical problems might cause data loss, for example if a participant loses their connection while taking your experiment, or if the server crashes or is temporarily down at the moment they send their responses (which, again, is more likely for larger data transactions, because of the memory load they incur)

    Jeremy

    in reply to: How to use the latest WebGazer 2.1.0? #7310
    Jeremy
    Keymaster

    Hi Carlos,

    I’m just realizing now that, because I always open Chromium in incognito mode, my browser always blocks third-party cookies. When I try the experiment I linked to above, I see that the browser is blocking two third-party cookies. Regardless, the experiment runs smoothly

    My questions were meant to be about potential problems with running experiments/opening a webgazer page (eg. this one), not about cookies or the TypeError message specifically. That being said, we’ve established that blocking third-party cookies does not prevent you from taking other experiments, if you were able to take the self-paced reading experiment while 6 third-party cookies were blocked

    Jeremy

    in reply to: How to use the latest WebGazer 2.1.0? #7308
    Jeremy
    Keymaster

    Hi,

    Does the problem arise for webpages that use webgazer? And does it also happen for other experiments on the PCIbex Farm that do not use the EyeTracker element?

    It could have to do with the EyeTracker element executing a .js file fetched from a distant site, and for some reason maybe the third-party cookie setting also targets that

    Jeremy

    in reply to: HTML slider doesn't submit #7304
    Jeremy
    Keymaster

    If you know the default value in advance, you can pass it to the hidden input: <input name='proficiency_hidden' type='text' id='pfh' style='display:none;' value='5'>

    Jeremy

    in reply to: HTML slider doesn't submit #7302
    Jeremy
    Keymaster

    Correct, this is what my workaround accomplishes

    NB: the compatibility has to do with how the Ibex Form controller is written, it’s not a general PennController limitation. For example, the PennController Scale element effectively displays an <input type="range"> element when applied the command slider and logs its value just fine

    Jeremy

    in reply to: HTML slider doesn't submit #7299
    Jeremy
    Keymaster

    Hi,

    PennController’s Html element is just a wrapper for Ibex’s Form controller. This controller only detects <input type="text">, <textarea>, <input type="checkbox"> and <input type="radio"> fields (reference)

    If you really want to use an HTML input element of type range and have its value recorded, you can do this:

    <input name="proficiency" min="1" max="9" step="1" type="range" onchange="(function(e){document.querySelector('#pfh').value=e.value;})(this)">
    <input name='proficiency_hidden' type='text' id='pfh' style='display:none;'>
    

    Jeremy

    in reply to: How to use the latest WebGazer 2.1.0? #7298
    Jeremy
    Keymaster

    Hi,

    The PCIbex Farm does not use third-party cookies, and as far as I can tell WebGazer does not use cookies at all. The PCIbex Farm uses only one session cookie that strictly stores minimally necessary information for navigating the website

    I don’t know why the issue was solved in your case by allowing third-party cookies

    Jeremy

    in reply to: How to use the latest WebGazer 2.1.0? #7291
    Jeremy
    Keymaster

    Hi,

    The experiment runs just fine when I replace webgazer’s js file URL, including the calibration phase: https://farm.pcibex.net/r/TEscrL/

    (note that the eye tracker works best on Chrome; it’s been quite laggy on Firefox in my experience, when I was able to make it run)

    Feel free to work on a copy of this project

    Jeremy

    in reply to: How to add a "come back" button to the practice trial #7290
    Jeremy
    Keymaster

    Hi,

    Yes, there is a Ctrl+F function, you access it by pressing… Ctrl+F 😉

    (on MacOS, it’s Apple+F, and make sure you have your cursor in the editor—click ‘+’ to open the replace field)

    Jeremy

    in reply to: Stopping a timer #7284
    Jeremy
    Keymaster

    Hello,

    Your logic is good, but you start and wait for all the Timer elements you create by default, so the “stop early” Key element is created only after the “delay” Timer element has ended. Move newKey("stop early", "FJ").callback( getTimer("delay").stop()) just above newTimer("delay", 2000) and it should work (you don’t need the start and wait commands on the “delay” Timer element—nor on the “break” one, since those are executed by default)

    Jeremy

    in reply to: How to add a "come back" button to the practice trial #7280
    Jeremy
    Keymaster

    Hi Larissa,

    You script works fine when I try it myself: https://farm.pcibex.net/r/vjsHXy/
    (I had to make a couple minor adjustments to the images and create a dummy table to make this project run—don’t hesitate to share your own project’s demonstration link in the future so we can see your code in its original environment and test it without making those edits)

    Lorrainy: your callback command should be .callback( jump("pratica1") , end() )—when I apply this edit to (a copy of) your project, it works as expected: the experiment goes back to “pratica1” as soon as I click the “Voltar” button, I don’t need to click the “Seguir” one

    Jeremy

Viewing 15 posts - 721 through 735 (of 1,522 total)