Export Fields as RAW / ASCII Text

Tagged: 

Viewing 8 reply threads
  • Author
    Posts
  • May 9, 2021 at 8:32 AM #44335

    DrJJWMac
    Participant

    I am creating a database with text fields. I want to export the data records as the equivalent to raw, ASCII text. I do not want the quotation marks around the text and I want the “\r” (carriage return) character to expand properly.

    How can I accomplish this?

    I am conversant enough in the JavaScript to use that method if needed.


    JJW

    May 9, 2021 at 10:16 PM #44338

    Sam Moffatt
    Participant

    The CSV export will likely wrap things in quotes for compatibility reasons, I don’t believe there is a way I’ve seen to turn it off.

    You could easily create a form script that generates the output via console.log that you could easily grab out of the display, something like:

    for (let record of form.getRecords()) {
      console.log(record.getFieldValue('fld-yourfieldid'));
    }
    

    Would do the trick to dump out all of the records to the console for you. Replace the fld-yourfieldid with the field ID you care about, you can get the field ID by double clicking on the field you want in the script editor or from underneath the field description in the field editor.

    May 10, 2021 at 9:23 AM #44342

    DrJJWMac
    Participant

    Thank you.

    Two things then. First, would you have a recommendation on how to dump the output directly to a file?

    Second, let me use this opportunity to put in a request for a RAW/TEXT option for exporting records.

    May 10, 2021 at 10:07 PM #44350

    Sam Moffatt
    Participant

    There isn’t a way to write a file directly, if I was to put it straight to a file I would send it to a web service and use that to dump it to disk for me. You can use Utils.postContentToUrlWithContentType() or Utils.postJsonToUrl() to call out to a web service. Probably for your use case postContentToUrlWithContentType with a simple text content would suffice. They’re pretty simple API’s with details on the Javascript page.

    Something like this should work:

    let entries = [];
    for (let record of form.getRecords()) {
      entries.append(record.getFieldValue('fld-yourfieldid'));
    }
    Utils.postContentToUrlWithContentType(entries.join("\n"), "http://localhost/tapforms-bridge.php", "text/plain");
    

    Then tapforms-bridge.php could look like this:

    <?php
    file_put_contents("/tmp/file.txt", file_get_contents("php://input"));
    

    As a simple example of getting data out, it’s not the greatest solution but it should do the trick. You’d need to get the built in Apache and PHP set up on your Mac but there are plenty of guides out there for that.

    May 11, 2021 at 8:14 AM #44356

    DrJJWMac
    Participant

    Thank you again.

    I am beginning to think that an easier alternative will be to export as CSV and then run a converter (AppleScript or other) to massage the CSV to raw.

    FWIW, my objective is to use TapForms as a front end GUI to a database of LaTeX-encoded problems. An example record output would appear as below.

    \begin{defproblem}{enthalpy-phasetransitionenthalpy-default}
    From the attached plot, what is the molar enthalpy $\Delta_{vap}\bar{H}$ to heat the room?

    \smallskip

    \putfig[0.1\textwidth]{fig-enthalpyplot}
    \end{defproblem}

    I can set fields for the topic (enthalpy), problem (phase transition enthalpy), set (button choices from A … example, default), LaTeX problem (From the attached plot …), has figure (yes/no), figure name (enthalpyplot), and relative figure size (0.1). A JavaScript field builds the final output from the data form. I intend to use this to administer sets of problems in a topic to track across exams, homework, and examples. I can build the exam or homework questions and then add examples (eventually with answers) to assure that students have seen what I will test against. The raw outputs for any cases are compiled into a final document using a LaTeX package called probsoln.

    In closing, I will use this thread once more to request a RAW/ASCII export option either directly or through JavaScript.


    JJW

    May 11, 2021 at 12:37 PM #44358

    Brendan
    Keymaster

    It would be good to have some cover methods to let you write directly to the file system from JavaScript.

    May 11, 2021 at 6:56 PM #44360

    DrJJWMac
    Participant

    An alternative would be to have a checkbox in the export dialog box that would say the equivalent of

    [ ] strip quotation marks from output

    Thanks for the consideration. I am glad to be back to Tap Forms with this potential use after a few years on other ventures. The app was and remains quite nice to use.

    —-
    JJW

    May 11, 2021 at 10:17 PM #44364

    Brendan
    Keymaster

    Yes, an extra option to include or exclude quotes is also a thing I could add. Will consider it for a future version. Thanks for the feature request.

    May 12, 2021 at 10:36 PM #44372

    Sam Moffatt
    Participant

    One other way to get to your data could be to go through the CouchDB API but that’s probably more work than its worth. You don’t necessarily need to set up a CouchDB server to try it out, you can use the local Nearby sync port to get access to the data leveraging a DNS-SD Browser to find it.

Viewing 8 reply threads

You must be logged in to reply to this topic.