Tap Forms app icon half
Tap Forms Forum text image
Blue gradient background

Exchange tips and ideas with the Tap Forms community

Search Results for 'script'

Viewing 15 results - 31 through 45 (of 2,950 total)
  • Author
    Search Results
  • #52965
    Shane
    Participant

    Hey all,

    For some reason TF5 can copy but not paste (see screenshot). I tested it in Tap Forms Pro which works fine. The option to paste is greyed out, nor can I use commond+V. Anyone else notice this problem?

    I tried going into the Mac’s security and privacy settings and allowing TF5 to control the computer, then relaunching but it didn’t do anything.

    Attachments:
    You must be logged in to view attached files.
    #52963
    Daniel Leu
    Participant

    Second time I’m trying to post an answer…. the first time caused the forum to crash :-(. So this answer will be a bit shorter.

    The field script has an error. The dash - in the field ids is not a dash and therefore, no value is read. I modified the script to call the form script in the Coins form:

    (function() {
      const ct = record.getFieldValue('fld-1231556e0f234de9b2d85f50225b8135');
      const yr = record.getFieldValue('fld-4b84b047badd4d4cbb4a67ef6839522f');
      const mm = record.getFieldValue('fld-adb0be16f1a347dbbecc4ef562d779a7');
    
      if (ct && yr && mm) {
          console.log("condition met")
        document.getFormNamed('Coins').runScriptNamed('Variety Prompt');
      }
      return '';
    })();

    When running the Variety Prompt script, I run into an error where the constants were already defined. This has to do with how javascript is handled within Tap Forms Pro. So I moved that section inside your function:

    // === Script ===
    (function () {
    
        // === CONFIG (your IDs kept as-is) ===
        const COINS_FORM_NAME   = 'Coins';
        const MINTAGE_FORM_NAME = 'Coin Mintage';
        
        const COINS_FIELDS = {
          coinType:  'fld-1231556e0f234de9b2d85f50225b8135',
          year:      'fld-4b84b047badd4d4cbb4a67ef6839522f',
          mintMark:  'fld-adb0be16f1a347dbbecc4ef562d779a7',
          variety:   'fld-2a73d81d137e4f718378819f5e4d54e0'
        };
        
        const MINTAGE_FIELDS = {
          coinType:  'fld-fdf93db206d141bd956d8c9e7634f25e',
          year:      'fld-9579d7c74e88414daf27ccbc5d4e0346',
          mintMark:  'fld-8d72d0971ed34c2c9de6c03d240e9543',
          variety:   'fld-f76a6eb7ed0c4ae28b77fc6fdf055d53'
        };
            
      if (typeof record === 'undefined' || !record) {
    ...
    

    Now it seems to work. Good luck!

    Cheers, Daniel

    ---
    See https://lab.danielleu.com/tapformspro/ for scripts and tips&tricks

    #52952
    Daniel Leu
    Participant

    You definitely can run a form or document script from a field script. I do this all the time. For a form script, you can use document.getFormNamed('demo').runScriptNamed('test');, for a document script use document.runScriptNamed('test');.

    Do you have a test file you can share? You can email it if you prefer.

    Cheers, Daniel

    ---
    See https://lab.danielleu.com/tapformspro/ for scripts and tips&tricks

    #52949
    Mark Moran
    Participant

    Again thanks for your help.

    My research says that I can use the prompter in a field script. Also, I can’t run a form script from a field script. This eliminates the process I want to accomplish. I want it to prompt for the variety field from the records in the coin mintage form.

    #52939

    In reply to: Hiding form fields

    Daniel Leu
    Participant

    Automatically, no. But you could have a button that launches a script that selects the layout based on certain field values.

    Cheers, Daniel

    ---
    See https://lab.danielleu.com/tapformspro/ for scripts and tips&tricks

    #52937

    In reply to: Hiding form fields

    Brendan
    Keymaster

    Hi Peter,

    Well, there is a hide field setting for a field, but it hides the field for every record.

    One solution to the problem though is on the Mac version to create different layouts. With custom layouts you don’t have to have every field on every layout. So one layout can have the Diameter field and another layout can have the Width and Length fields.

    Although you can control the hide field property using a script which can run when you select a value from a Pick List, scripts don’t run just by switching records, So even if the field was hidden when you selected a value, switching records wouldn’t automatically re-show that field if the next record had a different value from your Pick List.

    So not exactly what you’re looking for here though.

    Thanks,

    Brendan

    #52932
    Mark Moran
    Participant

    Thanks again. Knowing how the field script trigger works helps.

    The choices are only valid values and nothing else. Still no clue where the unspecified is coming from.

    Mark

    #52928
    Daniel Leu
    Participant

    re “unspecified”: To start with, I would check that the list of values really only contains valid values and nothing else. Add a console.log(choises.join(" | ")) before the prompter code.

    Re “field script trigger”. This is from an older post from Brendan:

    … my Objective-C code scans your source code to determine which fields you’re referencing in the script by looking for the text .getFieldValue(‘fld-…..’). Or when using a variable instead of (‘fld-….’).

    When one of the referenced fields changes, the field script is triggered.

    Hope this helps!

    Cheers, Daniel

    ---
    See https://lab.danielleu.com/tapformspro/ for scripts and tips&tricks

    #52926
    Mark Moran
    Participant

    Thanks Daniel. Extremely helpful as usual.

    Totally missed the default value. Still has “unspecified” as an option. But at least it now defaults to possible answer I would want.

    Using the field script… I’m not clear on field scripts, they are triggered when exactly? Are field scripts triggered when another script uses thisRecord.getFieldVlaue(‘fld-xxx’) as I think you’re saying above? Kind of a chicken and egg thing, where is the thisRecord.getFieldValue used that it triggers the field script or the form script?

    #52918
    Daniel Leu
    Participant

    1) Maybe it’s because you don’t use a default value. E.g., prompter.addParameter('Variety:', 'choice', 'popup', choices, choices[0])

    2) Instead of a form script, use a field script. They are automatically triggered when you use thisRecord.getFieldValue('fld-xxx'). You could call your form script form a field script as well after checking that your three fields are set.

    Cheers, Daniel

    ---
    See https://lab.danielleu.com/tapformspro/ for scripts and tips&tricks

    #52913
    Mark Moran
    Participant

    Ended up creating a regular date field and then a script field that essentially set the new field with the Date Created field and ran the recalculation. Deleted the Date Created and Script field. Now I have the type field I want. 😀

    #52911
    Mark Moran
    Participant

    Hi all—

    I’ve got a Tap Forms JavaScript that works as follows:
    • From the Coins form, it reads three fields: Coin Type, Year, Mintmark.
    • If there’s a match, it looks up matching records in Coin Mintages (there can be multiple) and collects their Variety values.
    • It then presents those Variety options in a prompt so the user can pick one, and the choice is written back to the Variety field on Coins.

    Two issues I’m trying to solve:
    1. Prompt includes <unspecified>
    • The choice list always includes an extra <unspecified> entry even though I only push actual Variety strings.
    • What’s the correct way to prevent that entry from appearing? (e.g., do I need to filter out null/undefined/”” before calling the prompt function, or is there an option/flag in the Tap Forms prompt API that disables an empty choice?)
    2. Auto-run when 3 fields are completed
    • I’d like this to run automatically whenever Coin Type, Year, and Mintmark are all non-empty on a Coins record—so users don’t have to open the Scripts menu.
    • Is there a supported way to trigger a Form Script on field change/record save?
    • If not, would a Script field (or a calculated/auto script field) be the right pattern to re-evaluate and prompt as soon as those three fields are populated?

    ======

    // Coins → Form Script (current record only; clears Variety on <unspecified>)

    // === CONFIG ===
    const COINS_FORM_NAME = ‘Coins’;
    const MINTAGE_FORM_NAME = ‘Coin Mintage’;

    const COINS_FIELDS = {
    coinType: ‘fld-1231556e0f234de9b2d85f50225b8135’,
    year: ‘fld-4b84b047badd4d4cbb4a67ef6839522f’,
    mintMark: ‘fld-adb0be16f1a347dbbecc4ef562d779a7’,
    variety: ‘fld-2a73d81d137e4f718378819f5e4d54e0’
    };

    const MINTAGE_FIELDS = {
    coinType: ‘fld-fdf93db206d141bd956d8c9e7634f25e’,
    year: ‘fld-9579d7c74e88414daf27ccbc5d4e0346’,
    mintMark: ‘fld-8d72d0971ed34c2c9de6c03d240e9543’,
    variety: ‘fld-f76a6eb7ed0c4ae28b77fc6fdf055d53’
    };

    // === Script ===
    (function () {
    if (typeof record === ‘undefined’ || !record) {
    Utils.alertWithMessage(‘No Record’, ‘Run this from a Coins record.’);
    return;
    }

    function norm(v) { return (v === null || v === undefined) ? ” : String(v).trim(); }
    function eq(a, b) { return norm(a) === norm(b); }

    var coinType = norm(record.getFieldValue(COINS_FIELDS.coinType));
    var year = norm(record.getFieldValue(COINS_FIELDS.year));
    var mintMark = norm(record.getFieldValue(COINS_FIELDS.mintMark));

    if (!coinType || !year) {
    Utils.alertWithMessage(‘Missing Data’, ‘Current record needs Coin Type and Year.’);
    return;
    }

    var mintageForm = document.getFormNamed(MINTAGE_FORM_NAME);
    if (!mintageForm) {
    Utils.alertWithMessage(‘Form Not Found’, ‘Could not find form: ‘ + MINTAGE_FORM_NAME);
    return;
    }

    var mintageRecords = mintageForm.fetchRecords();
    if (!mintageRecords || mintageRecords.length === 0) {
    Utils.alertWithMessage(‘No Varieties’, ‘No records in Coin Mintage.’);
    return;
    }

    var choices = [];
    var seen = {};

    for (var i = 0; i < mintageRecords.length; i++) {
    var r = mintageRecords;
    var t = norm(r.getFieldValue(MINTAGE_FIELDS.coinType));
    var y = norm(r.getFieldValue(MINTAGE_FIELDS.year));
    var m = norm(r.getFieldValue(MINTAGE_FIELDS.mintMark));
    var v = norm(r.getFieldValue(MINTAGE_FIELDS.variety));
    if (!v) continue;

    if (eq(t, coinType) && eq(y, year) && eq(m, mintMark)) {
    if (!seen[v]) { seen[v] = true; choices.push(v); }
    }
    }

    if (choices.length === 0) {
    Utils.alertWithMessage(‘No Varieties’, ‘No matching Variety entries found in Coin Mintage.’);
    return;
    }

    choices.sort(function (a, b) { if (a < b) return -1; if (a > b) return 1; return 0; });

    var title = ‘Select Variety — ‘ + coinType + ‘ ‘ + year + (mintMark ? ‘ ‘ + mintMark : ”);
    var prompter = Prompter.new();
    prompter.cancelButtonTitle = ‘Skip’;
    prompter.continueButtonTitle = ‘Set Variety’;
    prompter.addParameter(‘Variety:’, ‘choice’, ‘popup’, choices)
    .show(title, function (continued) {
    if (!continued) return;

    // If user leaves the popup on <unspecified> (choice is falsy), clear the field.
    if (!choice) {
    record.setFieldValue(COINS_FIELDS.variety, ”);
    document.saveAllChanges();
    return;
    }

    record.setFieldValue(COINS_FIELDS.variety, String(choice));
    document.saveAllChanges();
    });
    })();

    #52893
    Chung-Bae Park
    Participant

    Danke, das bedeutet, das ich Tab Forms 5 (ohne Pro) noch für ca. 2 Jahre uneingeschränkt weiter nutzen kann?

    Wäre schön, wenn Sie bis dahin eine einmalige Kaufversion anbieten würden, denn ein Abo werde ich sicherlich nicht kaufen, aus Prinzip.

    Vielen Dank.

    Thanks. Does that mean I can continue to use Tab Forms 5 (without Pro) without restrictions for about two more years?

    It would be nice if you offered a one-time purchase version until then, because I certainly won’t buy a subscription, on principle.

    Thank you very much.

    #52884
    Brendan
    Keymaster

    Hi Chung-Bae,

    If the subscription lapses, Tap Forms Pro will go into a limited mode where you can see up to 10 records per form. You won’t be able to add new forms or add new records. But you can still export ALL your data so you can import it into another application if you choose.

    Thanks,

    Brendan

    #52883
    Chung-Bae Park
    Participant

    Hallo,

    leider wurde Tap Forms Pro ja nun ein Abo Modell.
    Dazu habe ich eine Frage:

    Was passiert, wenn ich ein Jahres-Abo abschließe, dieses aber nach 1 JAhr kündige, also das Abo nicht verlängere?

    Kann ich dann den letzten Software Zustand von Tap Form Pro uneingeschränkt weiter nutzen, oder ist eine weitere Nutzung dann nicht mehr möglich?

    Danke für Hinweise dazu.

    Gruß

    Hello,

    Unfortunately, Tap Forms Pro has now become a subscription model.
    I have a question about this:

    What happens if I sign up for an annual subscription but cancel it after one year, meaning I don’t renew the subscription?

    Can I then continue to use the last version of Tap Form Pro without restrictions, or will further use no longer be possible?

    Thanks for any feedback.

    Regards

Viewing 15 results - 31 through 45 (of 2,950 total)