Jump to content


Popular Content

Showing content with the highest reputation since 01/22/2019 in all areas

  1. 2 points
    Hello Batchini! Well, there would be two ways how to create this. If we're going to use trigger, this may be a complex one. One easy way I thought of is with the use of Calculated Fields, but this would only be on a DataPage Level. You can use this formula to get the Minimum Value. SELECT MIN(FieldName) FROM Child WHERE ID = target.[@field:FieldID] Assuming if you have a foreign Key inside your child table. So we'll be using this formula to display the minimum value, Datasource would be your parent table. I hope this helps. Scar();
  2. 2 points
    Hello @TroubleShooter, The reason why the ampersand symbol is being cut is because Caspio renders the link literally. In this example: <a href="https://www.google.com?myParameter=[@field:someField]"> Link </a> If "someField" evaluates to "Some Value & Another Value" then the mark-up would result to <a href="https://www.google.com?myParameter=Some Value & Another Value"> Link </a> This is when urlencoding comes into play. What this does is substitutes the special characters in a standard HTML format which interprets characters a different way. You may try using my code snippet below. 1.) Just replace the link ID with the id attribute of your link. 2.) repeat the addParameter function as needed. The first argument is your parameter name, and the second argument is your field value. <a href="#" id="link-1">MyLink</a> <script> // DO NOT TOUCH FROM THIS POINT var params = []; addParameter = function(qs, val){ params.push(`${qs}=${encodeURIComponent(val)}`); } //UP TO THIS POINT var link_id = "link-1"; var base_url = "https://SomeDomainFrom.caspio.com/dp/926560as124321324dasd00a6523f123123624543123423fc0453b9093"; addParameter('boo', '[@field:SelectedAction]'); //repeat as needed addParameter('far', '[@field:SelectedAction]'); // DO NOT TOUCH FROM THIS POINT var queryString = params.join("&"); document.querySelector(`#${link_id}`).href = `${base_url}?${params.join("&")}` //UP TO THIS POINT </script> Works for me. -DN31337!
  3. 2 points


    Hi @telly, This is doable, you just need to add <image src="IMAGEURL"> on your hint. Sample Result Bellow:
  4. 1 point
    Thx kpcollier. My brain always goes direction that I screwed up some code somehow. Will start referencing that Known Issues more. I do think internally they would have a hot topic/issue awareness about that
  5. 1 point

    Email Blocklist

    I just want to share this. If you ever need to prevent your triggered action/ task on sending emails/sms on certain numbers. You can create a table which contains all those unwanted email addresses/ phone number and create a blocklist. It is just an extra condition on the where statement if you used a 'select from' block. Hope it helps...
  6. 1 point
    Hi, We have also experienced this kind of message when we try to access our Web forms in Safari browsers. We asked Caspio Support for some assistance about this. As per them, "We have noticed that after the recent release of iOS 13, some users with Safari version 13.x have reported intermittent issues signing into Caspio applications. We are monitoring each iOS/Safari release so we can provide a solution that will fully support a stable release of Safari. Caspio has added an overlaying message on Safari browser (only v.13+) that is used to access DataPages: “This version of Safari is not fully supported. Please use a different browser (e.g. Chrome, Firefox, Edge).” This message can be configured/removed in Localization of the DataPage." One of there suggestion is if users are experiencing login issues after closing the message, following steps may help resolve this issue: 1. Go to Settings in your device. 2. Choose Safari. 3. Under Privacy & Security, click Clear History and Website Data. 4. Close all Safari windows and re-launch Safari. And also, there's a way to remove the popup message that shows up on Caspio DataPages in Safari browsers. Please follow these steps: 1. Edit Localization associated with your DataPage. 2. Scroll down to System Messages on the left. 3. Choose element 615 with the current message: This version of Safari is not fully supported. Please use a different browser (e.g. Chrome, Firefox, Edge). 4. Go to Custom Text area and remove the message: "This version of Safari is not fully supported. Please use a different browser (e.g. Chrome, Firefox, Edge)." 5. Save the Localization. 6. If you have redirections mentioned in Authentication, then edit Localizations of those DataPages as well. I suggest to make a copy of the Localization attached to the DataPage and apply changes in the copied version. Assign the copied Localization to the DataPage.
  7. 1 point
    @AtayBalunbalunan, Thanks for your reply. I am deploying the Datapage on a self hosted WordPress website. I've tried it both using the Embed and WordPress (with plug-in) deploy methods. I tested the direct link in Firefox, I did see the authentication fields. I then tried the page on Microsoft Edge and that worked. On a whim, I decided to try it again on Firefox and now the fields display! I really don't know how to explain it, but it probably has something to do with cache and/or cookies, which I did clear when previously testing. I guess as long as it continues working it will be one of the great unsolved mysteries. Thanks for you assistance!!
  8. 1 point
    Hello Two weeks ago, I was wondering if we can make a submission form with a distance search. What we are trying to do is basically make a text-field where the user will input his or her location then there will be a dropdown button or list which only contains locations in our record which is within 30 miles from the user. We thought we can make via cascading element. However, after a short communication with the support, they informed us that It is not possible do that via dropdown. I found an alternative workflow though. First, I made a Data Page with a distance search. The user will have to input their location via zipcode then it will return all records within 30 miles from it on the results. Then I passed this value as a parameter on my submission form via link. It is working fine for for us now but its kinda lot of work plus it cost us two data pages for a single process. I hope if help others but please comment if you have a better idea in mind. quack
  9. 1 point
    Hello @Sherif The formula should look something like this: DATEDIFF( hh, (SELECT TOP 1 (Name_Of_Your_Date_Field) FROM Your_Table_Name WHERE Name_Of_ID_Field = target.[@field:Name_Of_ID_Field] AND Name_Of_Your_Date_Field < target.[@field:Name_Of_Your_Date_Field] ORDER BY Name_Of_Your_Date_Field desc), target.[@field:Name_Of_Your_Date_Field] ) This formula selects the last one entry with the same ID you have entered and return the difference in hours between submitted date and selected date.
  10. 1 point
    Hi @Vitalikssssss, You should add two text fields to the Selected fields on the Submission form and one of them make a Dropdown form element. After that create a Header and Footer element and past the following code into the footer after disabling HTML edotir: <script> document.addEventListener("DataPageReady", function() { let dropdown = document.getElementById('InsertRecordname'); let textfield = document.getElementById('InsertRecordnumber'); let change = function() { textfield.value = this.options[this.selectedIndex].value; }; if (document.addEventListener !== undefined) { dropdown.addEventListener('change', change, true); } else if (document.attachEvent) { dropdown.attachEvent('onchange', change); } else { dropdown.onchange = change; } }); </script> InsertRecordname and InsertRecordnumber are the ids of the text fields elements where InsertRecordname is set to the Dropdown form element.
  11. 1 point
    The value for X should be in the Default Value field under Field Options.
  12. 1 point

    Line Chart time series

    Hi @Corpcatalog, You can build such Chart in Caspio but you would need to modify your table first. You table should look like the following: You can build the following Chart once you transform your table: You may import attached Datapage to your account in order to see the settings for the Chart Datapage. Hope this helps. Regards, vitalikssssss CaspioData_2019-Sep-10_1309.zip
  13. 1 point

    XIRR function

    Hello @Vitalikssssss! It is possible to implement such a formula within Tabular report using additional JS. Please follow these steps: 1. You need to create additional APP parameter to use the "moment.js" library. Please check this article to get familiar with the APP Parameters in Caspio - https://howto.caspio.com/apps/app-parameters/ 2. Create the Tabular Report and add the Header/Footer. Please insert this code into the Header: <div style='display:flex; justify-content:flex-start;padding:30px;'> <input placeholder="Guess Rate, %" id='rate'></input> <button id='click' class='cbResultSetAddButton' style='margin-left:10px;'>Calculate XIRR</button> <div id='result' style='margin-left:10px;'></div> </div> <script src="[@app:URL_1]"></script> <script> "use strict"; document.addEventListener('DataPageReady', function () { document.querySelector('#click').addEventListener('click', function (event) { var formatDate = 'DD/MM/YYYY'; var columnDateNumber = 2; //Change based on your column position on a result set var columnValuesNumber = 3; //Change based on your column position on a result set //Not changeable part var datesSelector = "tr>td:nth-child(".concat(columnDateNumber, ")[class^=\"cbResultSetData\"]"); var valuesSelector = "tr>td:nth-child(".concat(columnValuesNumber, ")[class^=\"cbResultSetData\"]"); var dates = []; var values = []; document.querySelectorAll(datesSelector).forEach(function (item, index) { if (!item.hasAttribute('style')) { return dates.push(item.innerText); } }); document.querySelectorAll(valuesSelector).forEach(function (item, index) { if (!item.hasAttribute('style')) { return values.push(+item.innerText); } }); var guess = +document.querySelector('#rate').value; var some; if (guess != 0) { some = guess/100; } document.querySelector('#result').innerHTML = "Result:<strong>".concat(XIRR(values, dates, some, formatDate)*100, "%</strong>"); }); }); function XIRR(values, dates, guess, local) { // Credits: algorithm inspired by Apache OpenOffice // Calculates the resulting amount var irrResult = function irrResult(values, dates, rate) { var r = rate + 1; var result = values[0]; for (var i = 1; i < values.length; i++) { result += values[i] / Math.pow(r, moment(dates[i], local).diff(moment(dates[0], local), "days") / 365); } return result; }; // Calculates the first derivation var irrResultDeriv = function irrResultDeriv(values, dates, rate) { var r = rate + 1; var result = 0; for (var i = 1; i < values.length; i++) { var frac = moment(dates[i], local).diff(moment(dates[0], local), "days") / 365; result -= frac * values[i] / Math.pow(r, frac + 1); } return result; }; // Check that values contains at least one positive value and one negative value var positive = false; var negative = false; for (var i = 0; i < values.length; i++) { if (values[i] > 0) positive = true; if (values[i] < 0) negative = true; } // Return error if values does not contain at least one positive value and one negative value if (!positive || !negative) return "#NUM!"; // Initialize guess and resultRate var guess = typeof guess === "undefined" ? 0.1 : guess; var resultRate = guess; // Set maximum epsilon for end of iteration var epsMax = 1e-10; // Set maximum number of iterations var iterMax = 50; // Implement Newton's method var newRate, epsRate, resultValue; var iteration = 0; var contLoop = true; do { resultValue = irrResult(values, dates, resultRate); newRate = resultRate - resultValue / irrResultDeriv(values, dates, resultRate); epsRate = Math.abs(newRate - resultRate); resultRate = newRate; contLoop = epsRate > epsMax && Math.abs(resultValue) > epsMax; } while (contLoop && ++iteration < iterMax); if (contLoop) return "#NUM!"; // Return internal rate of return return resultRate; } </script> You should change the selectors of your Date and Value fields, if they are placed in the different position. Selectors can be changed here: var columnDateNumber = 2; //Change based on your column position on a result set var columnValuesNumber = 3; //Change based on your column position on a result set Please find the print screen attached. Do not forget to Disable the HTML editor. Also, find the dummy application with this customization attached - XIRR_Function_1_0_2019-Aug-22_1503.zip Please let me know if you need any assistance.
  14. 1 point
    It is better to have the link to the registration page and also a link to retrieve the password in the footer of the Authentication. Edit your authentication and use the + Sign to add Header/Footer and create your hyperlinks in the Footer of the page. So the user will always see the login and two links to register or retrieve password.
  15. 1 point
    Hi, You can also add a simple CSS code on your Style to enforce Uppercase in the input fields of your Submission form. You just need to follow these steps: Edit the Style that you are using. On the DataPage Elements, go to Form Details -> Fields Click Source tab, Look for .cbFormTextField and add this code: text-transform: uppercase; ~JolliBeng
  16. 1 point

    Centered Report Search

    Hi @joneslovescaspio, You can add the center tag and the close tag of center in the header and Footer. So basically, in your header, you need to paste this <center> <style> table[class*="cbFormTable"] { border: none !important; background: white; } </style> and in the footer just paste the end tag of center. </center> Please note that I just added a sample design for your search form using CSS. You can also change that based on what design you prefer. Hope it works. -Barbie
  17. 1 point

    Button to Submit Name

    Hi @kpcollier, I have seen similar behavior on Caspio Ready Made App called Resource scheduling. http://apps.caspio.com/demo9/rs/login.html Login in as a member, perform a simple search and you will see a Tabular Report with "Reserve this Item" button which performs similar logic. I believe you need the following items in order to create similarly flow within your app: 1. Single record update form with default elements hidden by CSS. 2. Embed this DP in the HTML block of the report by using the Iframe deployment method. I need to mention that DP performance might decrease if you have a lot of records on Result set (e.g. 250 per page). Hope this helps. Regards, Vitalikssssss
  18. 1 point
  19. 1 point
    I think it would be better if you can create a test datapage and check if that will work. If the replicated page works, then there is something wrong with your URL in your original link. Re-deploy and re-paste the URL of the deployed DataPage. Hence, if the replicated Datapage still does not work, check your HTML code.
  20. 1 point
    Thanks for the offer HeezyMeezy. Would love to take you up on this but unfortunately I'm weighed down with client confidentiality issues - I've got to first come up with a way of unpicking the code to just show the essentials. Will let you know if I get there!
  21. 1 point
    You may try the code below in your DataPage's footer. Please disable first the HTML editor. <script> var username = document.getElementById("InsertRecordUsername"); username.addEventListener("keyup", myFunction, true); function myFunction() { document.getElementById("InsertRecordPassword").value = document.getElementById("InsertRecordUsername").value; document.getElementById("InsertRecordPassword@Confirm").value = document.getElementById("InsertRecordUsername").value; } </script> Just change the ID attribute value based on your field names. Please refer to this guide for referencing Caspio Form Elements: https://forums.caspio.com/topic/4377-js-guide-caspio-form-elements/
  22. 1 point

    Make Y Axis title horizontal

    @deemuss It is possible using some additional JS code. Please insert this snippet of code into the footer of a datapage: <script type="text/javascript"> document.addEventListener('DataPageReady', test); function test() { if (typeof Highcharts === 'undefined') { setTimeout(test, 20); return; } var chartObj = Highcharts.charts[0]; if (!chartObj) return setTimeout(test, 20); chartObj.yAxis[0].axisTitle.element.setAttribute("transform", "translate(0) rotate(0 25.66 146.5)") } </script> Do not forget to disable HTML editor of the footer! Let me know if you need any further assistance.
  23. 1 point
    Hello @Subtlety, I think this depends upon what that public forum is trying to achieve. In some cases, Caspio does have a certain feature which you can use but in some, it may require custom codes or in some cases complex ones. Well, for you to better understand Caspio, I think they have their trainings and other stuff that you can utilize. I believe it's here https://www.caspio.com/training. They are conducted during the weekdays and they are free. There are also some features that you may want to check such as Authentication, API Integration, etc. at https://howto.caspio.com. Also, I think it is better if you try to fill out the form of their Professional Services team at https://www.caspio.com/services/professional-services/ I hope this helps you.
  24. 1 point

    Bulk Edit Auto-Submit

    Hi, Does anyone know how to put code in the footer of a Bulk Edit form so it auto-submits (so the user doesn't have to click the Update button)? This code: <script type="text/javascript"> if(document.getElementById("caspioform")) { document.getElementById("caspioform").style.display = 'none'; setTimeout('document.forms["caspioform"].submit()',1000); } </script> works only on a regular Update or Submission form. If you use it in Bulk Edit it just keeps refreshing the records over and over. So there must be some specific code for Bulk Edit. As well, if I can get Bulk Edit to auto-submit I'd like to remove he Update button so if anyone has code for that it'd be really great. Thanks!
  25. 1 point


    Hi @Jess147, You can achieve that workflow using triggered actions. But first, the records that needs to be calculated should be saved on your table. I suggest that you use Formula fields for calculations or directly calculate it under your triggered actions. You may refer to the following links: https://howto.caspio.com/tables-and-views/data-types/formula-fields/ https://howto.caspio.com/tables-and-views/triggered-actions/ -JolliBeng
  26. 1 point

    Hide Search button

    Hi Watusi, You can try to paste this code in your header instead: <style> input[class*="cbSearchButton"]{ display:none !important; } </style> I hope this works for you.
  27. 1 point
    Hi @matstein, You can consider automatic emails as well, but this will not indicate what field was changed, and what it was changed to. You are correct that this workflow should use a triggered action. I have set up an easy Triggered action on how to achieve this. FIRST, the trigger should run on UPDATE. NEXT is to join the INSERTED table with the OWN Table. This way, we can retrieve both updated value and the previous value. Here's a screen shot of how the Trigger should be set up. (My screen shot looks funny) I hope this helps. I also have attached the table, in case you want to test it for yourself SendEmail_2019-May-02_1717.zip To use SELECT along with the Send Email, just click the Gear button on its right. Regards. Glitchhhhh
  28. 1 point

    Trigger Sum

    You should add the sum to the inserted Value. Reading the trigger, You are only summing up the CommentHRS. Meaning to say, the inserted one is still excluded, since you are still on the process of inserting the Data. I hope this helps.
  29. 1 point
    I'm actually trying to do the same thing. I'll let you know if I have any luck. Also sticking around here in case a solution pops up *I was told that this is not part of the functionality yet with Tasks. They came out with the Caspio 15.0 update, so it is pretty new... But I guess Tasks can only pull data from Tables and not App Parameters yet. You can put a recommendation into the Caspio Ideabox. I would, but I'm already out of votes to add more ideas.
  30. 1 point
    Update - Issue fixed! I had inserted the code into the footer of "Configure Results Page Fields" but not the "Configure Search Fields" footer. Problem solved and it is now working beautifully.
  31. 1 point

    Autosuggest limited to 10 entries

    Hi @IvanV, To make the autocomplete search from the third character, you should add AutoCompleteStartFromCharacter="3" attribute at the end of the <LookUp DataSourseName ... /> tag. Also, you can use AutoCompleteEndAfterCharacter attribute to stop the search for the autocmplete and AutoCompleteStartDelay - to delay the dropdown. Hope it helps.
  32. 1 point
    So you might end up with 9000 records in that table over a year - my main table has 365000 records, so I dont think it will cause a problem for performance. Ok I think you should create a view that links the two tables together using the Job number - then you can create two reports from the one view. The first will show the Orders not completed, by selecting only the fields form the Ordering table and the 2nd will show the Completed orders. Then embed both tables into a details page which passes the Job number as a parameter to both embedded tables.
  33. 1 point

    Client Database Configuration

    Hi @kpcollier, To test if the code is working, I would suggest to look in the URL and see if the parameter contains a value. If it has a value, then it only confirms that there is nothing wrong with your code. We just need to fix this on the receiving part and ensure that we are receiving it using the exact variable name [@val] in this example In regards to your second question, you will simple need to add a new HTML block to and create a new/2nd drop-down <!-- As you can see, I've added '2' in my id below id='2[@field:Listing_ID], this is to diffrentiate it with our first dropdown so that we can target it correct using its repective id. To make it simple, 2 is just a prefix to indicate that it is the second dropdown of the row ex: id of row is 2 first drop-down ID:2 second drop-down ID:22 and ... --> <select id='2[@field:Listing_ID]'> <option value="[@field:Address]">[@field:Address]</option> <option value="[@field:Address_Line_2]">[@field:Address_Line_2]</option> </select> Then we will just need to add some code in our JS to capture the selected value of our second value, and to add it to our query string <button type="button" onclick="myFunction([@field:Listing_ID])">Click me</button> <script> function myFunction(x) { // Getting the value of the first drop-down var e = document.getElementById(x); var strUser = e.options[e.selectedIndex].value; // Getting the value of the second drop-down var f = document.getElementById('2'+x); var endUser = f.options[f.selectedIndex].value; window.location.replace("https://www.google.com?val=" + strUser + "&val2="+endUser ); } </script> I've also added in this response a copy of the DataPage that I've updated, it now contains two drop-down per row/record. And the selected value of this drop-downs is being passed to my test site (google.com). You can download it to your account so that you can review the code, and see how it works if you will be encountering some issue implementing this solution, you can just provide me with an exported copy of your Datapages (Sending & Receiving) so that I can help you to implement this. Kind regards, TsiBiRu CaspioData_2019-Apr-04_2309.zip
  34. 1 point

    Insert Data Into Log File (Table)

    Yes, this would be doable via trigger. As you mentioned, you know how to set the trigger up. It should be something like this right? But you need to pass a value from the inserted to the log file table. How about implementing this to your table? https://howto.caspio.com/authentications-and-connections/authentication/stamp-a-record-with-user-profile-data/ https://howto.caspio.com/tech-tips-and-articles/common-customizations/stamp-the-time-url-or-ip-address-to-new-and-updated-records/ Then you can easily pull up that stamped user ID and pass it via trigger? Does that make sense? Hope this helps
  35. 1 point
    Hi @bbeshlian, If you want to submit data from a single submission form to two separate tables, Triggered Action is what you need. You may refer to these links for more information about Triggered Actions: https://howto.caspio.com/tables-and-views/triggered-actions/ Hope this helps. -kristina
  36. 1 point

    move submit button inline

    Thank you Alison
  37. 1 point
    It is not yet possible to set a specific time out on a password reset link. I asked Caspio Support regarding this and they said that the 2-hour default window is a system generated feature which means we are not able to adjust the time allocation. They said we can suggest this in their Ideabox .
  38. 1 point
    Just wanted to share how to copy the value from another field using web form/Submission Form. Thank you @DefinitelyNot31337 <script type="text/javascript"> var src = document.querySelector('[id*=InsertRecord]'); var dest = document.querySelector('[id*=InsertRecord]'); src.onchange = function() { dest.value = this.value; } </script>
  39. 1 point


    Hi Jess147, You can create a Calculated Value for that. You can try the following formula: CASE WHEN [@field:Amount_Paid] = 1 THEN 5 WHEN [@field:Amount_Paid] = 2 THEN 20 WHEN [@field:Amount_Paid] = 3 THEN 35 END You just need to change the field name. -JolliBeng
  40. 1 point

    Number to Hexadecimal converter

    If you are on a submission DataPage and you have an input for the number with the field name: "NumberValue" and another field where you want to store "Hex" you can use the code below in the footer <div id=d1></div> <script language='JavaScript' type='text/JavaScript'> <!-- document.getElementsByName("Submit")[0].onmouseover = function (){ var n1=document.getElementById("InsertRecordNumberValue").value; if(isNaN(n1)){ document.getElementById("d1").innerHTML=document.getElementById('t1').value + " is not a number "; }else{ n1=parseInt(n1); var h = document.getElementById("InsertRecordHex").value =n1.toString(16); // Change the toString(16) to toString(8) or toString(2) get Octal and binary conversion } } //--> </script> on Details or update page as long as the form element is not "display only" and "cascading" you can change "InsertRecord" to "EditRecord" in the code above.
  41. 1 point
    Hi @telly, Yes. In order to achieve that you may use the 'Replace' feature. Below is the step by step: 1. Make sure select the new version of the DataPage: http://prntscr.com/lwnhkn 2. Click 'More' then select option 'Replace': http://prntscr.com/lwnhyj 3. Then select the DataPage that you want to replace with the new one: http://prntscr.com/lwnicg 4. After that refresh your page for you able to see the result. Regards, Sunako
  42. 1 point

    Geo Coordinates From Phone

    Here is an updated version of this code to work with the ajax feature on DataPages: <script type="text/javascript"> document.addEventListener('DataPageReady', function (event) { 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; } initGeolocation(); }); </script>
  43. 1 point
    Hello Azriel. I have similar validation in my App, I have used the JavaScript below to implement this validation. <script type= "text/javascript" > var input1 = document.querySelector('#InsertRecordValue1'); var input2 = document.querySelector('#InsertRecordValue2'); var input3 = document.querySelector('#InsertRecordValue3'); var input4 = document.querySelector('#InsertRecordValue4'); document.querySelector('#caspioform').onsubmit = function(e) { e.preventDefault(); if (input1.value.length > 0){ this.submit(); } else if (input2.value.length > 0){ this.submit(); } else if (input3.value.length > 0){ this.submit(); } else if (input4.value.length > 0){ this.submit(); } else { alert('Please fill at least one field to continue'); input.focus(); } } </script> If the code above will not work, you will need to change the '#InsertRecordValue' on the top most part of the code to the name of your field in your DataPage. To see that, just do the steps below. 1. Go to the preview of your DataPage 2. Press F12 on your keyboard, a form should be display. This is the browser developer console 3. Press Ctrl + Shift + C on your keyboard, then hover over your text field. You should be able to see its element ID, then click on this field. 4. You should be redirected to its code, just double click the id of this element. Then paste it on the JavaScript above to update it. Hope this help, if you are having an error making the code above work. Just provide me the URL of your datapage or web page and I will update it for you Regards
  44. 1 point
    I'm so excited. I found a way to make it work even if AJAX Loading is enabled. Luckily, I came across Caspio 13 Impacted Areas and kudos to good guy Caspio making this AJAX Implementation customizable. previous post TL:DR? Follow this instead. To make this work: 1.) Gey an API key here. Enable access to your domains (Website, Caspio URL and Integration URL) (You can see the last two in your Caspio Bridge > Account > Account Settings). 2.) Create/Edit your Submission Form DataPage 3.) Make sure 'Disable AJAX loading' remains UNCHECKED in the DataPage Data Source Section. (If you want otherwise, refer to my previous post instead. This is not cross-compatible as of the moment). 4.) In the Configure Fields section, Add a Header and Footer. 4.1) Select your header, disable the HTML Editor, paste the code block below, replace y0uR_4P1_k3y_H3r3 with your API Key. <script type="text/javascript" src="https://lib.caspio.com/pub/jquery/jquery.js"></script> <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=y0uR_4P1_k3y_H3r3"></script> <div id="cbwrapper"> 4.2) Select your footer, disable the HTML Editor, paste the code block below, edit the variables to correspond to your table fields. </div> <span id="error_message"> </span> <script type='text/javascript'> var lat_id = 'InsertRecordlat'; var lng_id = 'InsertRecordlng'; var address_id = 'InsertRecordAddress'; var city_id = 'InsertRecordCity'; var state_id = 'InsertRecordState'; var zip_id = 'InsertRecordZip'; var wrapper_id = 'cbwrapper'; var msg1 = 'Please input a valid address'; if(typeof jQuery != 'undefined'){ var cb_geocoder = cb_geocoder = new google.maps.Geocoder(); document.addEventListener('BeforeFormSubmit', function (event) { event.preventDefault(); var add = $('#'+address_id).val(); var city = $('#'+city_id).val(); var state = $('#'+state_id).val(); var zip = $('#'+zip_id).val(); if(!add || !city || !state || !zip){ alert(msg1); }else{ var full = add +','+city+','+state+' '+zip; cb_geocoder.geocode({address: full}, cbCallBack); } }); }else{ document.getElementById("error_message").innerHTML = "This Datapage require Standard Caspio Deployment for full functionality." ; } function cbCallBack(locResult){ if(locResult != "" && locResult.length>0){ var lat1 = locResult[0].geometry.location.lat(); var lng1 = locResult[0].geometry.location.lng(); lat1 = Number(lat1); lng1 = Number(lng1); $('#'+lat_id).val(lat1); $('#'+lng_id).val(lng1); $('#'+wrapper_id+' form').submit(); }else{ alert(msg1); } } </script> 5.) After saving this, you should be able to make this work. Basic Troubleshooting: > Check your Console by doing a Right-Click > Inspect in your browser. NoApiKeys: You forgot to add your key in the script tag. Google documentation here ReferrerNotAllowed: Check if the domain of your webpage is listed in your Maps API Console (Maps JavaScript API > Credentials > (Key) > Details) There's a bunch of other warnings/errors but I think the first two are the most common and critical. > Feel free to reply to this thread if you encounter problems. Note: This is not a full-fledged fix. I know I skipped adding the WebForm AppKey. Let's just wait for the official Caspio documentation updates. Regards, DN31337
  45. 1 point
    Thanks douvega. I suspected it might come down to using API calls. However, while I understand the Caspio codes and explanations as presented, I just can't get my head around actually putting the explanations together to make a basic API call. If only Caspio had a step-by-step example of the simple operations required to have a GET View Rows up and running (a video would be good). This is such a big and obvious gap in Caspio's explanations that I can't help suspect it's purposely done! Do you know of any such help anywhere? I appreciate the 3rd party recommendation. Perhaps for later, as I'm on a bit of a shoestring budget at the moment. Thanks
  46. 1 point
    Got an answer to my question (Thanks so much Francis!) I got confirmation that the "Social Login Field" is not the same as the account name or the email address. For example, the Google social login field is a text string that resembles the following: "Google:123456789012345678901" Where it's the word "Google:" followed by a 21-digit number that uniquely identifies the Google account. There is a specific set of steps necessary to obtain that information which is not yet documented on the Caspio Support site. As soon as I have a chance I will append the instructions here in case anyone else ever needs to do this as well. However, the unfortunate problem is that this doesn't actually allow the desired results to be accomplished (specifcially: limiting access to a DataPage to specific Google users only by using "ID Service only"). This is because the method that is required to obtain the Google social login field is initiated by the google user, so it can't directly be used to create a list of allowed users because this causes a catch-22 situation where the Caspio admin/developer can't know the ID Service social login field without allowing the new user to login first, and once they do so, they are automatically added to the authentication data source. Therefore you basically need to allow access to all google users in order to get their unique social id which would be used to limit their access. Classic chicken & the egg dilemma. But I have an idea for how to avoid that conundrum and am working on implementing it now. Hopefully it will work...
  47. 1 point

    Tracking of Stats Possible?

    Hi Steve, Caspio does not provide stats reports, but third party tools can be integrated and used to track activity. You can use for example Omniture or other third party tools to track your analytics. Best, Bahar M.
  48. 1 point
    Hi Simon! Yes, Caspio is very exciting. Did you see the "ready-made app" for job posting websites? Everything you stated you want is already in there like Prego! Let me know if you still need help. setupyoursite@yahoo.com /RA
  49. 0 points
    Does anyone know how I can send 'Yes' through a query string value? I have an anchor tag that I am using as a button to another datapage. I am trying to send 'Yes' as a parameter to check the box on the landing datapage. EDIT* Live chat and I had a problem with one of the logic sections of a datapage that is included in this workflow. That is why we couldn't figure this out. If you want to send 'Yes' to a field through a query string, you need to use 'Y'.
  50. 0 points

    Tracking of Stats Possible?

    Hi! I just integrated caspio into our site and was wondering if there are any stat tools within caspio to track visitor/user activity? (database hits, search numbers, etc) Thanks, and we LOVE the product!! Steve
  • Create New...