Jump to content


Caspio Rockstar
  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by Vitalikssssss

  1. Hi @mhand, You may try to use the following JavaScript snippet: <script> document.addEventListener('DataPageReady', eventHandler); function eventHandler(){ document.querySelector('input[name="cbParamVirtual4"]').addEventListener('change', copyFields); document.querySelector('input[name="cbParamVirtual5"]').addEventListener('change', copyFields); } function copyFields(e){ const element = e.target.name; if(element === "cbParamVirtual4"){ document.querySelector('#cbDSField1').value = e.target.value; } else if (element === "cbParamVirtual5") { document.querySelector('#cbDSField2').value = e.target.value; } } </script> Regards, vitalikssssss
  2. Hi @Elderberg, JS snippet looks correct. Perhaps you have some Triggered action which interfere with updated records. If not, you can share a whole snippet, so we could help you to narrow down the issue. Regards, vitalikssssss
  3. Hi @CraigSZ, Here is a page which has a Chart page dynamically rendered depending on which button was clicked. You would need to have some div element which would serve as a container for updated Datapage. <div id="datapage-container"></div> Here is a code which I have in Datapage. 1. HTML block with buttons: <div class="buttons"><input id="[@field:Name]" type="button" value="Sales in Eastern region"></div> <br> <div class="buttons"><input id="[@field:Name]" type="button" value="Sales in Central region"></div> 2. JavaScript snippet which render Datapage and also pass parameters: <script type="text/javascript"> document.addEventListener('DataPageReady', addEvents); //Add event listeners to buttons function addEvents(){ const buttons = document.querySelectorAll("input[type='button']"); buttons.forEach(element => { element.addEventListener('click', showDp) }); } //Checks which button is clicked and pass different parameters function showDp(e){ if(e.target.value.includes('Eastern')){ createPage('Eastern', e.target.id); } else if (e.target.value.includes('Central')){ createPage('Central', e.target.id); } } //Removes old DataPage if it exist and creates new one function createPage(par1, par2) { const newDataPage = document.createElement('script'); const container = document.querySelector('#datapage-container'); newDataPage.src = `https://xxxxxx.caspio.com/dp/xxxxxxxxxxxxxxxxxxxxxxxx/emb?region=${par1}&name=${par2}`; //Deploy code of new Datapage //Checks if there is a DP rendered already if(container.firstChild){ //Removes datapage if it already exist while(container.firstChild){ container.firstChild.remove(); } //Adds new datapage document.getElementById('datapage-container').appendChild(newDataPage); } else { document.getElementById('datapage-container').appendChild(newDataPage); } } </script> Hope this helps. Regards, vitalikssssss
  4. Hi @Elderberg, I have recently found that you can get suffix from DataPage event. <script type="text/javascript"> document.addEventListener('DataPageReady', function (event) { let suffix = event.detail.uniqueSuffix; console.log(suffix); }); </script> Regards, vitalikssssss
  5. Hi @Chrille, The issue is caused by the following line of code. You can simple removed it in order to make it work. document.removeEventListener('DataPageReady', drawSignature); Regards, vitalikssssss
  6. Hi @Libby, Triggered Action have 10,000 records limit per run and same applies to Application Tasks. You will not be able to run a Task on table which has 61,000 records https://howto.caspio.com/tables-and-views/triggered-actions/
  7. Hi @aquintanilla, Here is possible way how you can achieve the desired functionality. 1. Add Virtual field to the form and set a default value URL to which user will be re-directed after submit. 2. Add the following snippet in Datapage Header. Make sure you make changes in lines with comment ***Change <script type="text/javascript"> document.addEventListener('DataPageReady', creatBtn); // function creatBtn () { // Hides the Virtual field const link = document.querySelector("#cbParamVirtual1"); //***Change Virtual1 if needed link.style.display = 'none'; //Create a button element const Btn = document.createElement('input'); Btn.type = 'submit'; Btn.name = 'customBtn'; Btn.classList.add('cbSubmitButton'); Btn.value = 'Custom Button'; //***Change the name of the button here Btn.style.background = '#f51212d9'; //***Change color of the button here Btn.addEventListener('click', function() { changeURL(link)}); //Add button next to the default Submit button document.querySelector("div.cbSubmitButtonContainer").appendChild(Btn); } function changeURL(link){ //Changes URL link in Virtual field if the user clicks custom button link.value = 'https://google.com'; //***Change URL here } </script> 3. Set an action to go to New page after record submit and use Virtual field as a parameter: Hope this helps. Regards, vitalikssssss
  8. Hi @ahmedramadan, Perhaps you may try the following code snippet: <script type="text/javascript"> document.addEventListener('DataPageReady', initGeolocation); function initGeolocation() { if(navigator.geolocation) { // Call getCurrentPosition with success navigator.geolocation.getCurrentPosition(success); } else { alert("Sorry, your browser does not support geolocation services."); } } function success(position) { //Change to EditRecord for an update form //Current_Long and Current_Lat should change to reference correct field names document.getElementById("InsertRecordLong").value = position.coords.longitude; document.getElementById("InsertRecordLat").value = position.coords.latitude; document.removeEventListener('DataPageReady', initGeolocation); } </script> Regards, vitalikssssss
  9. Hi @MrRee, I think it is better to raise a ticket for the support department: https://support.caspio.com/ Regards, vitalikssssss
  10. Hi @Elderberg, Yes, it is possible. Here is a topic from Stackoverflow with code sample: https://stackoverflow.com/questions/979975/how-to-get-the-value-from-the-get-parameters Regards, vitalikssssss
  11. Hi @Darnellhood123, You can update any fields with Triggered action. Makes sure you select #inserted if you would like to update same record which was submitted or updated. Regards, vitalikssssss
  12. Hi @HughOD, This method works if you disabled the Responsive feature.
  13. Hi @HughOD, This method works only with Responsive option disabled. If you would like to preserve responsive design of Datapages you may try using the following code in HTML blocks: HTML block #1 </header><div style="display:none;"><header> HTML block #2 </footer></div><footer> Cheers, vitalikssssss
  14. Hi @CraigSZ, You may utilize the concept explained in this post: Hope this helps. Regards, vitalikssssss
  15. Hi @HughOD, I had a similar issue before and it is some kind of limitation of the Free version of Caspio. I have raised a ticket regarding this and Support rep informed me that there was some security check which run behind the scene and affected the loading time. You can raise a ticket here: https://support.caspio.com/ Regards, vitalikssssss
  16. Hi @NickO, It would not be possible to write some generic code which would be easy to tweak, because Datapages with Groupping enabled has difference in HTML structure. I have created a sample based on your screenshots and my understanding of the HTML structure. I have added a Total and Aggregation field which would be used as a criteria for hiding. The report looks like the following without Javascript: I have set the criteria in JS code to hide Category name and all rows within a group if Total is less than 70, so the Datapage looks like the following: The JavaScript solution has been modified slightly compare to the first version: <script type="text/javascript"> document.addEventListener('DataPageReady', hideRows); function hideRows () { document.querySelectorAll("td[class*='cbResultSetGroup1LabelCellNumberDate']").forEach(function (el) { if (el.innerHTML < 70) { //replace this value with the one which you would like to set as target el.parentNode.firstChild.click(); el.parentNode.style.display = 'none'; } }); document.removeEventListener('DataPageReady', hideRows); } </script> Regards, vitalikssssss
  17. Hi @BFuchs, You need to make sure that you select Date and Time type of precision in the filtering settings. Also, you need to setup a correct logic for filtering within a range of Date&Time values: You may use a Submission Form which would pass a parameters from Virtual fields to Report Datapage. Submission form should have separate Virtual fields for Date and Time input. Calculated value can be used to concatenate Date and Time input and pass it as a parameter to the next form. Finally, you need to create a Report Datapage with predefined filtering criteria which will receive a filtering parameter. Here is an example of these Datapages deployed on single web-page. You may also import this example into your account to check it further. Hope this helps. Regards, vitalikssssss TT_DATE_TIME_FILTER_1_0_2020-May-15_1247.zip
  18. @NickO hi! I think you have a different setup on the Datapage compare to mine test page. Perhaps, you can send a screenshot of the table (without JS), so I could build something similar and test the JS further. Regards, vitalikssssss
  19. Hi @streetsmart, The post with Signature Pad solution has been updated and now supports AJAX and Responsive features. Regards, vitalikssssss
  20. Hi @Melodybelle, Original post has been updated recently and it includes now a solution for two signature pads. Let me know if you run into an issue while implementing this solution. Thanks, vitalikssssss
  21. Hi @Chrille, The post with Signature Pad solution has been updated and now supports AJAX and Responsive features. Let me know if you run into some issues while implementing solution from updated post. Thanks, vitalikssssss
  22. Hi @Vincent, Your data needs to reside in Caspio tables in order to work with it via Datapages. You may check this article which explains how you can import your date: https://howto.caspio.com/tables-and-views/importing-data/ You may also consider using REST API for transferring the data from you database into Caspio: https://howto.caspio.com/web-services-api/rest-api/ Hope this helps. Regards, vitalikssssss
  23. Hi @Elderberg, You may add underscore after the field name if you would like to reference Virtual field #2^ document.querySelector('[id*=cbParamVirtual2_]'); Regards, vitalikssssss
  24. Hi @Talmax, Here is some information which should help: 1. You may use the following syntax to receive the parameter in custom elements such as <div> located in Datapage: [@PARAMETER_NAME] 2. You may use timeout redirection settings if you have authentication enabled. 3. Make sure that you pass the parameter which identifies the record which will be shown. e.g. if you try to open below Datapage you would need to pass parameter with a name Record_ID and it should look like the following. https://xxxxxxx.caspio.com/dp/xxxxxxx273ac9f6ff0a41199812?Record_ID=3 Regards, vitalikssssss
  25. Hi @NickO, It looks like it possible only with Collapsible group --> Collapsed by default settings enabled: You may use the following JS if you have the same type in your Datapage: <script type="text/javascript"> document.addEventListener('DataPageReady', hideRows); function hideRows () { document.querySelectorAll("td[class*='cbResultSetGroup1LabelCellNumberDate']").forEach(function (el) { if (el.innerHTML < 1000) { //replace this value with the one which you would like to set as target el.parentNode.style.display = 'none'; } }); document.removeEventListener('DataPageReady', hideRows); } </script> Hope it helps. Regards, vitalikssssss
  • Create New...