Jeremy

Forum Replies Created

Viewing 15 posts - 601 through 615 (of 1,522 total)
  • Author
    Posts
  • in reply to: Restricting to desktop #7679
    Jeremy
    Keymaster

    Thank you for the detailed updates

    Unfortunately navigator.userAgentData.mobile is not currently supported by Firefox and Safari according to MDN Web Docs

    Checking the min/max width of the page is indeed a minimally intrusive proxy, although it doesn’t really check whether the participant is using a mobile device—admittedly, user agent sniffing also has its limits, as it can be tweaked by the client

    Jeremy

    in reply to: Self-paced no 'next' button #7678
    Jeremy
    Keymaster

    Hi Jana,

    The experiment works on my browser: I press Space until the sentence disappears from the page (ie. I press space after the last period character of the self-paced reading sentence) and then I click a button on the 5-point scale, at which point a button “Nastavi” shows up and I click it, and it moves to the next trial

    I think Alex Drummond (who wrote the code for the DashedSentence controller) included a button you can click to reveal the next word on touchscreen devices rather than pressing space, but if my memory serves me it only shows up on iPhones. You can take a look at this thread on the original Ibex google group forums

    FYI, you might want to share your demonstration link rather than your data-collection link here (with /r/ instead of /p/, and a different sequence of characters) so you don’t get data from testruns in your final results file and, more importantly, so we can see the debugger and edit your project to help you troubleshoot the issue

    Jeremy

    in reply to: Missing data (Failed submission) #7670
    Jeremy
    Keymaster

    Hi,

    Unfortunately that submission was sent to the farm’s servers precisely at the beginning of a short downtime episode, at 2:12am GMT on January 13. The submission entry was created, but the service crashed right before the data could be saved to memory

    Unfortunately there is not much you can do on your end. I have been monitoring the problem more closely these past couple days, and the crashes appear to happen when there is a lot of incoming data at once, so minimizing the data in the submissions is good practice, but in your case, we’re talking about only 30 lines per submission, which is already very little

    My attempts at controlling or working around those crashes have not been the most successful so far. The service is supposed to temporarily save a copy of the incoming data on disk before sending it to the database, but even that copy seems to have failed to be saved in your case

    I apologize for the inconvenience. I am still actively working on addressing the issue

    Jeremy

    in reply to: re-taking randomized item order #7668
    Jeremy
    Keymaster

    Dear Jones,

    You will have to write some custom javascript for that. The idea is to store the audio references in an array that you shuffle, and use that array to generate both types of trials. Then you can run the trials themselves in their original order, since the references will have been randomized anyway

    Assuming you are using a CSV file with a column named Audio that references filenames, your code should look like this:

    Sequence("start","Item","ItemQ")
    
    newTrial("start", newButton("Start").print().wait() )
    
    audios = []     // audios will reference the audios in a randomized order for simple playback
    audios2 = []    // audios2 will ultimately be a copy of audios
    // Create dummy trials to browse the table and feed then shuffle audios
    Template( row => newTrial( audios.push(row.Audio),fisherYates(audios) ) )
    
    // Now create the Item trials reading the audio references from audios
    audio = ""
    Template( row =>
        newTrial( "Item",
            audio = audios.shift(), // Extract next entry from audios
            audios2.push(audio)     // Place it in audios2
            ,
            newAudio( audio ).play().wait() // Play back the audio
            ,
            newButton( "Next" ).print().wait()
        )
        .log("audio", audio)    // Log which audio was played
    )
    
    // Now create the ItemQ trials reading the audio references from audios2
    audio = ""
    Template( row =>
        newTrial( "ItemQ",
            audio = audios2.shift() // Extract next entry from audios2
            ,
            newAudio( audio ).play().wait() // Play back the audio
            ,
            newTextInput("answer", "What did it say?").print().log()
            ,
            newButton( "Next" ).print().wait()
        )
        .log("audio", audio)
    )

    Jeremy

    in reply to: Centering the sentences, shown in the Controller #7665
    Jeremy
    Keymaster

    Hello,

    Use .center() before .print() on your two Controller elements

    Jeremy

    in reply to: Troubleshooting #7663
    Jeremy
    Keymaster

    Hi Monica,

    Thank you for following up! It’s funny, when I edit the experiment you shared above (https://farm.pcibex.net/r/ldGLsD/) and upload PennController 2.1 beta to the Modules folder and then test it on Firefox, everything just runs smoothly: I don’t experience any preloading time and the videos play back normally. It’s actually when I don’t upgrade to 2.1 beta that I experience preloading times. This will be hard to troubleshoot…

    Anyway, happy new year to you too!

    Jeremy

    in reply to: result download mystery #7659
    Jeremy
    Keymaster

    Dear Marije,

    I looked up our database, and your project does have a total of 25 submissions, with the most recent being received on 2021-12-22, and the one before that on 2021-11-22

    All these submissions represent a total of 62300 rows, so you can download them in a single batch with no worries of exceeding the 100000 line threshold

    Submissions are not always ordered chronologically in the results file (something I should fix). Could you double-check whether the December 22 submission appears somewhere before the November 22 when you download your results in batches?

    Jeremy

    in reply to: DebugOff() does not work #7658
    Jeremy
    Keymaster

    Hi Elise,

    I disabled DebugOff at demonstration links on the farm during the last update, as several issues that users faced proved to be detected by the debugger although it had been turned off while the project was still under development. The debugger is automatically turned off at the data-collection link though, making DebugOff entirely effectless on the farm

    You can close the debugger while testing your experiment by clicking the cross button at the top-right corner of its popup window (and you can bring it back up later by pressing ctrl-d, by the way)

    Jeremy

    in reply to: Changing style of before and after text in scale #7657
    Jeremy
    Keymaster

    Hi Özge,

    You can use the same css commands on your Text elements:

    newScale(7)
        .radio()
        .labelsPosition("bottom") 
        .before( newText("left", row.answer1).css("font-size","24px").css("font-family", "Helvetica, sans-serif") )
        .after( newText("right", row.answer2).css("font-size","24px").css("font-family", "Helvetica, sans-serif") )
        .css("font-size","24px")
        .css("font-family", "Helvetica, sans-serif")
        .log()
        .print()
        .wait()
    

    Jeremy

    in reply to: Callback of MouseTracker #7656
    Jeremy
    Keymaster

    Hi Elise,

    Thank you for your messages, it will be certainly be helpful to future users who face the same situation

    Jeremy

    in reply to: Problems with logging the random code onto the user #7655
    Jeremy
    Keymaster

    Hello Camelia,

    Apologies for the late reply, and happy new year to you too!

    Were you able to fix this issue? Your code looks fine to me

    Jeremy

    in reply to: Timers #7654
    Jeremy
    Keymaster

    Hi Elias,

    Use the command Sequence, as illustrated here, to control the order of presentation of your trials. For example: Sequence("consent", "instructions", "questionnaire", randomize("phase1"), randomize("phase2"), randomize("phase3")) (the details will depend on the specificities of your project, but I cannot see trials labeled “questionnaire” or “phase1/2/3” in the project at the link you shared—all three )

    Jeremy

    in reply to: Change calibration threshold randomly by participant #7653
    Jeremy
    Keymaster

    Hello,

    Apologies for the late reply. You can use 30+20*Math.floor(3*Math.random()) in place of ??? to randomly draw a number from 30, 50 and 70. However, in order to keep track of that number in your results file, you might want to do something like:

    caltresh = 30+20*Math.floor(3*Math.random());
    newTrial(
      "calibration",
      newFunction(() =>
        $(
          "div:contains(Not recording), .PennController-MediaRecorder-record"
        ).hide()
      ).call(),
      // Explain that the website uses the participant's web-cam, and that the calibration starts
      newText(`<p style="text-align:center">この実験では視線計測を行うために,お使いのパソコンのウェブカメラを使用します。</p>
               <p style="text-align:center">この実験の実施中,みなさまがパソコン画面のどこを見ているか記録します。</p>
               <p style="text-align:center">これから視線計測のための調整をします。</p>`)
        .center()
        .print(),
      // Permission to continue
      newButton("同意して続行")
        .center()
        .print()
        .wait(newEyeTracker("tracker").test.ready())
        .remove(),
      clear(),
      fullscreen(),
      // Start calibrating the eye-tracker, allow for up to 2 attempts
      // 50 means that calibration succeeds when 50% of the estimates match the click coordinates
      // Increase the threshold for better accuracy, but more risks of losing participants
      getEyeTracker("tracker").calibrate(caltresh, 2), 
      // Explain that participants are required to see a green ball during the calibration session
      newText(`<p>試行の前に,毎回●(丸印)が画面中央に表示されます。</p>
               <p>丸印をクリックしてから,丸印を一定時間見続けてください。</p>
               <p>視線が正しく計測できている場合,実験が自動的に始まります。</p>
               <p>視線が正しく計測できていない場合,再調整の案内が表示されます。</p>`)
        .center()
        .print(),
      // Click here to continue
      newButton("このボタンを押すと実験が始まります").center().print().wait()
    )
    .log("calibration", caltresh)
    

    Jeremy

    in reply to: Removing "borders" in eyetracking #7652
    Jeremy
    Keymaster

    Hi Philip,

    Apologies for the late reply. I am not sure I can identify the issue you describe, and your project is no longer accessible at the URL you shared. Let me know if you’d still like assistance with this, and if so please share a new URL with me

    Jeremy

    in reply to: Troubleshooting #7635
    Jeremy
    Keymaster

    Hi Noelia,

    Simply use randomize(anyOf("sentence_noquestion", "sentence_w/question")) instead of rshuffle("sentence_noquestion", "sentence_w/question") (Reference)

    Jeremy

Viewing 15 posts - 601 through 615 (of 1,522 total)