Jump to content

Vitalikssssss

Caspio Evangelist
  • Content Count

    532
  • Joined

  • Last visited

  • Days Won

    54

Posts posted by Vitalikssssss

  1. 19 hours ago, sfraden said:

    Thanks, that solves the one issue, of auto submitting, but not the other.

    When the user goes to make a new submission, they open a datapage to do it.  I need that new submission page to be pre-populated with yesterdays data.  Triggered events only occur AFTER the user hits 'SUBMIT', and tasks only occur on a timed basis, so neither of these can populate the fields of a submission form after loading the form.....

     

    Actually, you can base your Triggered Action on the table that is used as data source for the Details Datapage on which you would like to incorporate the JavaScript snippet to click on the "Update" button. You can create a Triggered action that runs "on update" and inserts the data from one table to another. You would need to use "Single Record Update" Datapage to redirect the user  after "Update" button clicked, since the record will be created by the Triggered Action and user just need to confirm/edit the values that was inserted by Triggered Action.

    Regards,

    Vitalikssssss

     

  2. Hi @David17,

    You can use the following JavaScript snippet that does not allow input of negative numbers of letters into the field.

    Place below code into the Footer of Submission Form Datapage:

    <script>
    
    document.addEventListener('DataPageReady', checkNegative);
    
    function checkNegative(){
    
        let input = document.getElementById('InsertRecordYOUR_FIELD_NAME'); //change this according to the name of your field
        input.type = "number";
        input.onkeydown = function(e) {
        if(!((e.keyCode > 95 && e.keyCode < 106)
          || (e.keyCode > 47 && e.keyCode < 58) 
          || e.keyCode == 8)) {
            return false;
        }
      }
    }
    
    </script>

    Make sure that you disable HTML editor prior inserting the code.

    Hope this helps.

    Regards,

    vitalikssssss

     

  3. Hi @kcastagnaro,

    Well, Caspio has release some Triggered Action enhancement called "Loops" that could simplify the solution.

    As of now you would need to have two tables (i.e. three before). First table would hold event name and start and end date. The second table would hold each day of the event as a separate record. So the Triggered Action would look like the following:

    707da63f2e12.png

    The package with tables and Triggered action here.

    Hope this helps.

    Regards,

    vitalikssssss

     

  4. Hi @Tyler,

    I can suggest using a different approach for this case that does not require JS snippet.

    You may create a lookup table that would be prefilled with date range Monday-Sunday (current week) with a help of Application Task.

    The Task might look like the following: 

    a6f7305064be.png

    You may use this lookup table as a source for a dropdown with predefined options.

    Hope this helps.

    Regards,

    Vitalikssssss

  5. Hi @JMR21,

    It is possible to add a JavaScript snippet on web-page. Basically you would need to place your datapages in some block elements and change the style property of the block from "display:block;" to "display:none;".  You may use "FormSubmitted" AJAX event of Caspio Datapage.

    Here is an example of web-page that has 3 DP deployed:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
    
    <div id="page_1">
        <script type="text/javascript" src="https://xxxxxxx.caspio.com/dp/498c4000904cc6b6744049ea8b30/emb"></script>
    
    </div>
    
    <div id="page_2" style="display: none;">
    
        <script type="text/javascript" src="https://xxxxxxxx.caspio.com/dp/498c4000802149cd8ef64f44a37b/emb"></script>
    
    </div>
    
    <div id="page_3" style="display: none;">
        <script type="text/javascript" src="https://xxxxxxxxx.caspio.com/dp/498c4000e67cc919259840428b77/emb"></script>
    </div>
    
    
    
    <script type="text/javascript">
    document.addEventListener('FormSubmitted', function(event) {
    //checks if user forgot to input all required fields    
    let err = document.querySelector(".cbFormCommonError");
    	if (event.detail.appKey == '498c4000904cc6b6744049ea8b30' && !err ) {
                  document.getElementById("page_1").style.display = "none";
                  document.getElementById("page_2").style.display = "block";
           	} else if (event.detail.appKey == '498c4000802149cd8ef64f44a37b' && !err)    {
                  document.getElementById("page_2").style.display = "none";
                  document.getElementById("page_3").style.display = "block";
    	}
    });
    </script>
    
        
    </body>
    </html>

    Also, you may consider using an approach of rendering datapage "on fly" explained in this post. 

    Hope this helps.

    Regards,

    vitalikssssss

  6. Hi @Mitch,

    Perhaps you will find below tutorial useful.

    Also, in order to start using REST API you need to have a solid knowledge of any back-end language. I would recommend learning the PHP since in my opinion it is the easiest to learn. 

    There a lot of training materials on PHP available in the web. 

    There is a post with PHP code samples that you may find useful too: 

     

    Hope this helps.

    Regards,

    vitalikssssss

     

  7. Hi @achatwani,

    Please try the following JavaScript:

    <script type="text/javascript">
    
    
    document.addEventListener('DataPageReady', function (event) {
      
      var suffix = event.detail.uniqueSuffix;
      
      document.querySelector(".cbFormSelect").addEventListener("change", myFunction);
    
      function myFunction(){
         
        var button = document.querySelector(`#searchID${suffix}`);
         if(button) {
    
          button.click();
          
        }
    
      }
      
      });
    
    </script>

    Place it in the Footer of Search Form and make sure that you have disabled HTML editor prior to inserting the code.

    Hope this helps.

    Regards,

    vitalikssssss

     

  8. Hi @Paolo,

    You may use timeout setting of authentication in order to log-out the user.

    • Time out and redirection – Configure session expiration after user inactivity and provide a page or URL to redirect timed out users.

    You can set the interval when authentication session will expire, however the log-out will happen only after session expires and user tries to do some action on a form.

    It will not be possible to terminate the session of the user simply closes a browser tab or browser.

    If you are looking for automatic log out even if user left the page open, then you can use the following JavaScript:

    <script type="text/javascript">
    document.addEventListener('DataPageReady', ()=>{
    
        setTimeout(()=>{
    
            window.location = "https://xxxxxxxx.caspio.com/folderlogout"; //your logout URL from caspio authentication
    
        }, 5000); // duration of session in milliseconds 
    });
    
    </script>

    Hope this helps.

    Regards,

    vitalikssssss

  9. Hi @Paolo,

    Caspio offers custom events if you have AJAX enabled.

    The one that you need to use called "BeforeFormSubmit" it occurs after user clicks on "Submit" button, but unfortunately before the default form validation checks(*required) happens.

    I can suggest to write all validation needed in JavaScript and use "BeforeFormSubmit" event.

    Here is documentation: https://howto.caspio.com/datapages/ajax-loading/

    Hope this helps.

    Regards,

    vitalikssssss

  10. Hi @DesiLogi,

    It is possible with JavaScript to disable Cascading dropdown, however I would recommend using a Cascading TextField that has an option to disable the input field if only one option returned.

    If my suggestion does not fit your workflow than you can use the following JavaScript:

    <script>
    document.addEventListener('DataPageReady', function (event) {
        const el = document.querySelector('select[id^="InsertRecordYOUR_FIELD"]');
        el.addEventListener('change', ()=>el.disabled="true");   
    });
    </script>

    Regards,

    vitalikssssss

×
×
  • Create New...