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 - 166 through 180 (of 2,950 total)
  • Author
    Search Results
  • #51808
    Hans
    Participant

    Hello everyone,

    I apologize for my long post, in advance ;-)

    Situation:

    For my Form “Tracks” (Tracks for Hike / Bike), there are two important fields:

    1) Creation Date of the Track: The date (typical date field), when the track has been created for the first time. It could be today, or in the past, not in the future. In the past only, when I enter the data today for a track, created in, e.g., 2006.

    2) Track number: It is a text field with two-digit numbers 01-99. It is a text field, because of the missing leading zero (“0”) within the number fields for numbers 1-9. It is mandatory, that the track number is always a two-digit number.

    2.1) The aim of the field is to have a unique number, starting with one (“01”) and should be entered manually, when a new entry is created. It is like a counter: the number of records that have been created per month. It is mandatory that each number within a month is unique.

    2.2) Examples: in January, the first record is 01, the second record is 02 and the third record is 03. In February, the first record is 01, the second record is 02 and so on. March: 01, 02, 03 …

    I need these two fields to create a unique six-digit track ID, which consists of the year (YY), the month (MM) and the track number (xx):

    YYMMxx, e.g. 250401, 250402, 250403, 250404, 250501, 250502 …

    250401 = First record in April 2025
    250402 = Second record in April 2025

    E.g., it is today, and I would like to enter a track that was created for the first time in June 2016. This “new” record is the third record for June 2016.

    The track ID should be 160603 (year = 2016, month = June, and track number = 03).

    After I have entered the Creation Date (1st of June 2016), the script should tell me that for this month (June) in this year, the minimum Track Number must be 03.

    As already mentioned, the problem is that I also create entries retrospectively.

    My question:

    Which JavaScript could I use to check which is the highest number for the the month, for which I would like to create the Track Number? Something like:

    var MinimumTrackNumber = (MAX(TrackNumber)) within ( (YEAR(of Creation Date) + MONTH(of Creation Date) ) + 1; // +1 => one more, than already available.
    
    RETURN("The minimum Track Number for this track must be: " + MinimumTrackNumber);
    

    Thanks in advance. BR

    #51792
    Daniel Leu
    Participant

    The easiest way is using a calculation field. Enable Show reverse relationship in the link field of the parent form. Then in the child field, use a calculation field to propagate the the client name or the project name down the hierarchy. Don’t forget to set the return type to text.

    The other option would be Javascript. You’d need to enable Show reverse relationship, get the parent record from the link field and from there get the field value.

    • This reply was modified 7 months ago by Daniel Leu.

    Cheers, Daniel

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

    #51788
    Shane
    Participant

    Hey Brendan,

    Actually I’m looking to pass the data down the hierarchy. So the field data would technically cascade downwards. So one would create client, then from the client add projects. Going to the projects form, one would create tasks for the projects and on each task we would add time tracking entries for billing the client. However to bill the client, the time tracking form would have to inherit project and client data from the top. Through the “link to form” field you can have the child form inherit a single field but the time tracking form would need to inherit two fields of data namely the project and client info. I know, it’s hard to visualize the topology through text.

    The easiest way around it is to just work from the bottom of the hierarchy, namely the time tracking form and manually pick the client, project, and tasks each time one tracks their work but I feel that would be unnecessarily arduous, especially once those forms are well populated. I could do this using PHP/ SQL etc but if I can get Tapforms to handle it, it would save a lot of time from having to manually program everything from scratch.

    I’ve been going through Ford’s JS Tapforms tutorials which have been very interesting and useful. At this point I believe I should be able to somehow use scripts to pass the appropriate field info down the hierarchy to the time tracking form. We shall see. :)

    • This reply was modified 7 months ago by Shane.
    • This reply was modified 7 months ago by Shane.
    • This reply was modified 7 months ago by Shane.
    #51783
    Brendan
    Keymaster

    Hi Groove,

    You’ll need to use a Calculation or Script field to get the total hours on the Link To Form field. And then you’ll need another one on the parent form to display the grand total of them all.

    That’s how you can propagate values from the lower levels of the hierarchy up.

    Thanks,

    Brendan

    Shane
    Participant

    I understand the need for a subscription model. It’s great for developers as it keeps a relatively steady cash flow coming in they can live off of. It’s good for end-users because it means the app will be consistently be supported.

    #51761

    In reply to: Run Fieldscript

    Daniel Leu
    Participant

    Currently, you are using a form script. Change this to a field script (create a field of type script and assign this script to it), then whenever you change one of the source fields, your markdown field will be updated. That should do what you’re looking for.

    Cheers, Daniel

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

    #51759

    Topic: Run Fieldscript

    in forum Script Talk
    Josef Tingbratt
    Participant

    Hi!
    I have used chatGPT to create a script in a field that creates a nice Markdown filed of parts of my data. It makes it easy to save datain our devops from my meeting-notes and I can still keep track of my records.

    However it only works when I open up the script in edit script and clicks “save”. So I have to that when I cwant to create a markdown. Is it possible to make the script run when a post is saved?

    I have tried ChatGPT here, but it only talks about functions and buttons I can’t find I tap Forms.

    tonyt
    Participant

    Hi Brendan
    How will the subscription work? Per year, per major point upgrade, every other major point upgrade as some other apps do, or something else?
    Cant wait!
    Best
    Tony

    #51749
    Shane
    Participant

    Hello all,

    I’m just starting to learn how to use scripts in TapForms 5. I do have some knowledge of Javascript from a web programming perspective.

    I thought I’d start with something simple such as create a button that deletes a record. I created the button, and assigned the following script which gets the current record, and then attempts to delete it:

    function delete_record() {
    
    	// get current record
    	var thisRecord = record.getId();
    	// delete the record
    	form.deleteRecord(thisRecord);
    }
    
    delete_record();

    The console reports: “deleteRecord: TypeError: Argument does not match Objective-C Class, line:(null)”

    I’m sure I’m doing something really noob here such as combining a record function with a form function.

    Thanks in advance.

    Brendan
    Keymaster

    It will be a subscription. With a period of time discount for existing customers.

    If I continued with a pay once model like I have for the last 16 years, I will not be developing Tap Forms for much longer. And that would make you and I very unhappy. I’ve been working on this new version for the past 2 years. It will be much better as a subscription app because I’ll be able to release new features and fixes as I develop them rather than having to wait so long to bundle them up into a new upgrade. There’s nothing stopping you from continuing to use Tap Forms 5 though. It will still work for years to come. Even Tap Forms 3.5 still works on Sequoia and that hasn’t been updated since 2016.

    As you know, Apple doesn’t support the paid upgrade model in the App Store, so it’s very difficult for developers to offer that kind of service. I managed it with the App Store bundle upgrade feature, but that also meant that I had to keep Tap Forms 3.5 around without updates since then. And Apple actually removed the iPhone and iPad versions of Tap Forms 4 from sale, so the iOS upgrade bundle is no longer available. I’ve just been waiting for them to remove the Mac version too.

    As an indie app developer, I don’t have a huge bank account like medium to large companies do in order to continuously fund new development. I do this because I love it and am passionate about adding cool new things into Tap Forms and interacting with my customers, but I still need to be able to earn a living and pay my bills too.

    I hope you understand my reasoning.

    Thanks,

    Brendan

    Shane
    Participant

    Hi Brendan,

    Will the new version be a paid upgrade or (hopefully not) a subscription?

    • This reply was modified 7 months, 1 week ago by Shane.
    #51739
    Hans
    Participant

    @Daniel / @Brendan : You made my day! Thanks! The script is running, and I already use the structure of the script for other use cases.

    #51735
    Hans
    Participant

    Thank you for your prompt feedback. Yes, the field was unfortunately empty, and now I get the values. It was for sure a beginner’s mistake.

    Now I have the values:

    {
        altitude = “yyy.xxxxxxxxxx”;
        heading = “z”;
        lat = “45.xxxxxx”;
        lon = “12.xxxxxx”;
        pitch = 0;
        title = “street, ZIP city region, country”;
    }
    

    Now I know that this is the output of a dictionary, which contains keys (e.g., “title”, “lon” …) and values (e.g., 45.xxxxxx).

    Question: What do I have to do now to get the value from the key “title”, for example?

    The suggestions here in the forum or on “stack overflow” have only produced errors within the script, and unfortunately, I don’t understand why – maybe because I am a beginner ;-).

    If I get this solved, I have the form of “POIs” ready and can then develop all the other forms further, as I have similar queries here.

    Many thanks in advance.

    Best Regards, Hans

    #51733
    Hans
    Participant

    Dear forum participants.

    Briefly about me, my question (problem) below.

    For over 8 years, I have managed my data with a NINOX -DB. I have tested Tap Forms sporadically, but I would rather not try the scripts. Well, from today’s perspective, a mistake ;-)

    Finally, I found my way to Tap Forms, and I am very enthusiastic because Tap Forms offers everything I had before, and it is even easier and much more stable than NINOX. And I also get along well with JavaScript so far.

    My DB is used:

    • POIs (Point of Interests) for hiking, biking, and photography
    • Tracks and routes: Record tour data (places, countries), types (MTB, hiking), difficulty (S0, S1, …), duration of a tour, with breaks, etc., weather data, and much more.

    To my question, for which I need your support:

    Goal: I would like to place the content from two different fields in a third field:

    1)) Source: “Name of the location”
    2)) Source: “Address of the location”
    3)) Target: (“Name of the location”, “Address of the location”)

    However, with a simple console query, I only get the error message “undefined”.

    Script:

    function Addresse_mit_Name() {
    
    	// field: address of the POI
    	// 1st row: street, ZIP, city
    	// 2nd row: lat & lon (GPS)
    	//
    	var adresse_des_poi = record.getFieldValue('fld-2a75296d19a64123ba33be5a6e5808ba');
    
    	// check values of field
    	console.log(adresse_des_poi);
    
    	// return of combined values
    	return(adresse_des_poi);
    }
    
    Addresse_mit_Name();
    

    Question:

    What do I have to do to get the address from the location field, which I can then process as a variable?

    Source field:

    1)) Address
    Type “location”
    Name: “Address of the POI”
    field-ID: ‘fld-2a75296d19a64123ba33be5a6e5808ba’

    Many thanks in advance for your support.

    Best regards, Hans

    #51728
    Brendan
    Keymaster

    I’m not sure what you mean by “a way/ or script that can be made to download all to one document”. Do you mean you want to import into a different Tap Forms document?

    It sounds to me like you’re building a website and want to display your images from Tap Forms on the web? Then you could just take the images exported and upload them all to your images folder on your website and then update the HTML to reference the images appropriately. Tap Forms will include the image name in the CSV file export that matches the export. If you want to make it easier for yourself, you could add a Calculation field which generates a path to the photos that’s appropriate to reference on your website. So it would just be a matter of importing that CSV file into your website and then uploading the images to the right folder.

    Thanks,

    Brendan

Viewing 15 results - 166 through 180 (of 2,950 total)