Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 07/17/2013 in Posts

  1. 7 points
    lugoimports

    User authentication

    I have a table used to authenticate access. For some reason, I currently have 24 users and it works. The problem is I'm trying to add more and the id/password doesn't work for the new users. What am I doing wrong? Is there a restriction as far as how many users you can have???
  2. 5 points
    ezIQchad

    Conditional Formatting Trick

    Check out this trick I stumbled upon. Put Caspio Variables into your Classes so you can use CSS to dynamically style your pages. (js not required) Div to dynamically format <div class="action[@field:action]"></div> css .actionCall { background-image: URL("../img/call.png"); } .actionEmail { background-image: URL("../img/email.png"); } .actionText { background-image: URL("../img/text.png"); } Dynamic Elements - load all options, and hide all but needed <a class="btnFile fileName[@field:FileName]" href="../some/dir/[@field:FileName]">Download</a> <a class="btnLink fileLink[@field:FileLink]" href="[@field:FileLink]">View File</a> css /*-- when [@field:***] is null, hide the div --*/ .fileName, .fileLink { display: none; } Hope this helps Think Easy CHAD -I know the Title of this Forum is "Ask....", but IDK where else to share stuff like this.
  3. 5 points
    JavaScript Solution: Select multiple values from a listbox in an Update DataPage Feature Description: This JavaScript solution shows how to enable the selection of multiple values using a listbox form element in an Update or Details DataPage. When the DataPage is submitted, the values selected in the listbox are stored in the table as a comma-separated string. For example: A field named state in a table contains US states. If three states California, Nevada and Oregon are selected in this listbox, the value stored in that field will be "California, Nevada, Oregon". When the DataPage is opened, the current values will be preselected in the listbox. Implementation: This solution can be used "as-is", without any changes if a. It is used in an Update or Details DataPage and b. The field name state exists in the DataPage. To use this solution, copy the code below and paste inside the HTML Footer section of the Update/Details DataPage using the Caspio Bridge DataPage Wizard. <script type="text/javascript"> var v_state = "[@field:state]" ; var o_state = document.getElementById("EditRecordstate") ; o_state.multiple = true ; function f_listbox() { if ( v_state.indexOf(",") > 0 ) { for (var i=0 ; i < o_state.options.length; i++ ) { if(o_state[i].value == v_state) { o_state.remove(i); break ; } } var o_st = v_state.split(", ") ; for (var j=0 ; j < o_st.length; j++) { for (var i=0 ; i < o_state.options.length; i++ ) { if(o_st[j]== o_state.options[i].value){ o_state.options[i].selected = true ; break ; } } } } } document.addEventListener('DataPageReady', f_listbox); //You can also use the line below instead of the eventlistener // setTimeout(f_listbox, 20); </script> Tips for Customization To customize this script to enable the same feature for the additional field, duplicate the first three lines using your second field name. Then duplicate the code inside the f_listbox function. Tested Browsers This JavaScript solution was tested on the following platforms and Internet Browsers only. # MS Windows - IE 10, Firefox 25.0.1, Chrome 31.0.1650.57, Safari 5.1.7 Disclaimer: Use these JavaScript solutions at your own risk! They are provided to assist you in the customization of your programs and while we believe they work properly, by using them you accept all responsibility about them and confirm that they are not a feature of Caspio's platforms and as such are provided "as is" without any warranties, support or guarantees.
  4. 4 points
    kme

    Timestamp When "y" Clicked

    MayMusic - Thanks so much, it is working now. For those interested in the solution, The additional problem was that Timestamp field in the Table had to have a datatype of Text(255). In the Details Page, Timestamp was changed to a Text Field. Once Yes was clicked, the textfield was filled with a timestamp, and then when Update was clicked, the field in the Results Page was filled with the timestamp. Thanks again.
  5. 2 points
    SunakoChan

    Tooltip

    Hi @telly, This is doable, you just need to add <image src="IMAGEURL"> on your hint. Sample Result Bellow:
  6. 2 points
    IMDora

    JS Date Restrictions Quit Working

    @abitaquest, There's a possibility that the reason it's not working now is because of the recent Caspio update. Event like onsubmit will no longer be supported and you need to use Caspio's built-in event handlers. Kindly please check the link below for more information: https://howto.caspio.com/release-notes/caspio-bridge-13-0/13-0-impacted-areas/ https://howto.caspio.com/datapages/ajax-loading/ I hope this helps.
  7. 2 points
    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
  8. 2 points
    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...
  9. 2 points
    Hi, The update button appears only if you have at least one editable field on the datapage. Perhaps you hide that field using rules or javascript. Anyway you can hide update button using java script. Just add header/footer and paste the following code in the footer: <script> window.onload = function hide(){ document.getElementById("Mod0EditRecord").style.visibility = 'hidden'; } </script>
  10. 2 points
    kRv

    Reload Main Page

    Hello Farnsbarnes, Can you tell me please, do you use different domains for parent page, and for iframe? If yes, proposed solution cannot works due to security restrictions. Can you please open browser console, and look for some run-time errors, when you submit form in iframe? Can you see some error with similar text? "SecurityError: Blocked a frame with origin..." If you have similar error, you can use some different technique based on messages. Please pay your attention that it will works in modern browsers only. You can see list of supported browsers here http://caniuse.com/#search=postMessage Add code below to header on your parent page: window.onmessage = function (e) { if (e.data === "refresh") { location.reload(); } }; Add code below to footer in your DataPage, which will open via iframe. <script type="text/javascript"> document.getElementById("caspioform").onsubmit = function () { if (window.parent && window.parent.postMessage) { window.parent.postMessage("refresh", "http://bridge.caspio.net"); //put your own domain here } } </script> Thanks
  11. 2 points
    I address it this way: I have a few Caspio user classes, say user, superuser, admin. All datapages that use the "user" authentication, are embedded on wordpress "User" template-based Pages. The User template, in turn calls a specific WP "User" menu. So I have 3 authentications, 3 Page templates, and 3 menus. Finally, and I'm embarassed to say it: since these WP menus are NOT behind Caspio authentication, public users who guess a URL of one of your pages could see the menu, but obviously not the datapage embedded on the page. Still, I don't like that, so I have a script that looks for a DIV in my authentication form, and if present, hides the WP nav with CSS. Pretty nasty, and not really that effective, but it beats using 3 Caspio datapages for 3 menus.
  12. 2 points
    Thank you Iren, Looking at your option, i came to a simple solution in caspio. Search and Report Wizard - Results Page Options (advanced) > Total records returned: 1 Search and Report Wizard - Results Page Options (Standaard) > Default sort order: id = z-a Search and Report Wizard - Details Page > Always skip Results Page when only one record found: checkt thank you for you input
  13. 2 points
    MayMusic

    Expiration Date

    Add this code to the footer of the page. Make sure to replace "DATEFIELDNAME" with the field name you want to save this expiration date on <script> function f_date(){ var v_currentDate=new Date(); v_currentDate.setDate(v_currentDate.getDate() +10); var v_assignDate = (v_currentDate.getMonth() + 1) + "/" + v_currentDate.getDate() + "/" + (v_currentDate.getFullYear()); document.getElementById('InsertRecordDATEFIELDNAME').value = v_assignDate; } f_date(); </script>
  14. 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.
  15. 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.
  16. 1 point
    The value for X should be in the Default Value field under Field Options.
  17. 1 point
    Hastur

    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.
  18. 1 point
    Barbie

    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
  19. 1 point
    Vitalikssssss

    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
  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
    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.
  22. 1 point
    Alison

    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.
  23. 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.
  24. 1 point
    Hi @bbeshlian , Here is a snippet of JavaScript and JQuery code to hide columns if they are empty: <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script> document.addEventListener('DataPageReady', function(e) { let $table = $('.cbResultSetTable:first'); let tbody = $table[0].tBodies[0]; let colsLen = tbody.rows[0].cells.length, rowsLen = tbody.rows.length; let hideNode = function(node) { if (node) node.style.display = "none"; }; for (var j = 0; j < colsLen; ++j) { let counter = 0; for (var i = 1; i < rowsLen; ++i) { if (tbody.rows[i].cells[j].textContent.trim() == '') ++counter; } if (counter == (rowsLen - 1)) { for (var i = 1; i < rowsLen; ++i) { hideNode(tbody.rows[i].cells[j]); } hideNode(tbody.rows[0].cells[j]); } } }); </script> You should put the code above into the Footer element on the Search and Report Wizard - Configure Results Page Fields.
  25. 1 point
    Hi @jonaslovescaspio, I had the same issue as yours from my past projects. Make sure to enable one of the Edit Records from the Results Page Editing Options of that Datapage. And then, go to the Configure Results Page field of the same DataPage and select the element that you want to become editable. There should be an additional tab named Editing. Finally, from the Grid and Inline Edit Options, mark the Allow field to be editable as checked. I hope this one helps.
  26. 1 point
    You can duplicate the field then hide the extra dropdown by using rules (https://howto.caspio.com/datapages/forms/conditional-forms/). It will look like this: If role is not admin then hide admin dropdown; if the role is admin then show the admin dropdown and hide the other dropdowns. Hope it helps. Thanks.
  27. 1 point
    Hi @DefinitelyNot31337 That seems to be working for me now. Thank you so much for the help!
  28. 1 point
    WatashiwaJin

    Conditional Authentication

    Hi @JanineB, You can create a single Log-In screen for this. Alter the code provided in the documentation just add (& "[@authfield:Checkbox]" == "1"). This action is just to identify if the checkbox is checked or not. Please note that in checkbox (Yes/check = 1) and (No/uncheck = 0) You can refer to this documentation: https://howto.caspio.com/tech-tips-and-articles/common-customizations/create-user-specific-redirect-after-login/ I hope this helps
  29. 1 point
    Hi bookish, Please note that bulk edit is treated as a single update event in Triggered Action as you have already discovered. I would suggest using COUNT expression in order to count the number of records updated with a bulk edit and add this value to existing value from SCHEDULES table. So, you Triggered Action will look similar to this one: Hope this helps.
  30. 1 point
    brunor

    Any Programmers for Hire

    Working with Chad (ezIQ) was effortless and an absolute pleasure. I asked him to figure out a few custom solutions for my Caspio project, and he quickly provided javascript solutions that have functioned beyond my expectations. His code is well organized and includes plenty of comments for the novice, such as myself. I highly recommend his services and look forward to future projects.
  31. 1 point
    MayMusic

    Convert Text Number To Phone Format.

    @telepet Change this line document.getElementById(o_els[i]).onchange=tel; To: document.getElementById(o_els[i]).onkeyup=tel;
  32. 1 point
    Mathilda

    Use a Formula within a Formula

    Yes, there is a workaround. You can perform this calculation in a calculated field on a report datapage
  33. 1 point
    Hi, it can be done using sql substing query in the formula field: SUBSTRING ([@field:First_name] ,1 , 1) + SUBSTRING ([@field:Last_name] ,1, 1) However, in case of further using username field in authentication, this is not the best option since you can using only unique field as a username. Therefore, you may insert the following script in the footer of your submission form. <SCRIPT LANGUAGE="JavaScript"> function concatenate() { var position1 = document.getElementById("InsertRecordFirst_name").value; var position2 = document.getElementById("InsertRecordLast_name").value; document.getElementById("InsertRecordUsername").value = position1.substring(0, 1) + position2.substring(0, 1); } document.getElementById("caspioform").onsubmit=concatenate; </SCRIPT>
  34. 1 point
    You need to hit the source tab before inserting code to the footer. This article should help. Also don't forget to change the filed name in the code and you need to hold the Ctrl key on the keyboard while clicking on the required values simultaneously. Hope that helps
  35. 1 point
    Hi TexterVaid, It sounds like cascade update setting in relationship. You can read more here Hope that helps
  36. 1 point
    Mathilda, I am using Wix site builder. I believe it was working at one point but it is not consistent. I am using an image on Wix as a link, so when the user clicks on the image an http request is generated. I just appended caspio specific parameters to the end per the instructions to call the Caspio web form. Is there any other way to get around the iFrame issue as a second option? But I would like to first make this option work. It should work as a Query String as Caspio describes. Thanks.
  37. 1 point
    This is not possible in Caspio platform, unless you write a trigger to add the value once there is a new entry to the table. It is easier if you do it in Excel and them import the complete sheet to Caspio
  38. 1 point
    Thanks for sharing
  39. 1 point
    Hello, I have implemented the Caspio responsive code on several types of reports and they have worked perfectly. However, I am now trying to use the responsive code on a submission form and the page width does not adjust correctly. I believe it is due to the submit button within the form as it is not scaling properly. Since the submit button image does not adjust, then this impacts the overall width of my page when viewed on a mobile browser. Below is the URL: http://directlinecruises.com/carsite/freecruisebrochure.htm Any suggestion on how to control the scaling of the submit button to fix this issue? Thank you.
  40. 1 point
    Now that Caspio has been nice enough to add pivot tables to reports, I went to build an attendance report that I had been waiting to build. My non-profit education group needed to check students in to an after-school program, then have a real-time view of who was checked in that day, and how many/which sessions each student had checked into over time. Perfect application for a simple pivot table, right? Each student is checked in by clicking on their name on a drop-down list and clicking Save. I wanted the date to be automatic to save check in time and preserve accuracy. Columns would be the date of the visit, rows would be the student name or ID for the pivot table. But there was a catch. If I used the timestamp field to record the date it was saved as mm/dd/yyyy hh:mm:ss. Then if I used that value for my column in the pivot table, each second was given its own column. I wanted each date to be a column. After a couple of hours of looking for an answer online and in documentation I found none, but eventually figured it out, and want to share it with the community. The workaround that I figured out was to create a second data field called override date in the table in date/time format. I then fill that field in the data input form on the Configure Screens page of the Web Form Wizard using an external parameter and a label format that I found buried in one of the reports: [@cbTimestamp*]. Click on the thumbnail below to view the attached jpeg for a screenshot. So now this field only contains the mm/dd text data from the timestamp and when I use it as my column, any student who was clocked in that calendar day shows up in that column of the pivot table. Hope this helps someone.
  41. 1 point
    Hi, I'm new to Caspio. I have a 9 date text fields with calendar picker. When user picks date for 1st field I need the subsequent 8 fields to populate with the 1st field's date + 1 business day. The result would be as follows: field 1 - 01/16/2015 SELECTED field 2 - 01/19/2015 AUTOPOPULATED field 3 - 01/20/2015 AUTOPOPULATED field 4 - 01/21/2015 AUTOPOPULATED field 5 - 01/22/2015 AUTOPOPULATED field 6 - 01/23/2015 AUTOPOPULATED field 7 - 01/26/2015 AUTOPOPULATED field 8 - 01/27/2015 AUTOPOPULATED field 9 - 01/28/2015 AUTOPOPULATED THEN SUBMIT* Any help, javascript and/or implementation would be greatly appreciated. Thanks.
  42. 1 point
    I have a Single Record Update form where once a user has submitted data on Record #123, I want any other users subsequently trying to update Record #123 to be "locked out" from submitting via that form. In other words, I need to be able to disable a form after it's been used once, or when Some_Field = Whatever. You could just disable it with Rules, but if 2 people arrive on the form before either has submitted, then the 2nd User rewrites over the 1st User's data. I need to prevent that from happening. Caspio Support recommends: In order to prevent the next users to submit/edit the same record, the "timestamp check" should be done upon form submission. A solution would be to write a JavaScript function to perform the "timestamp check" and then call the function on the form submission event. Can anyone please assist with this? I'm JavaScript illiterate. Thanks!
  43. 1 point
    ezIQchad

    Format On Display

    Hello, I have been storing phone numbers with the special characters ( ) - and I would prefer to store numbers only and format the data into phone numbers on display. I can format one per page, but only the first one. Can anybody help me with this? Thanks CHAD
  44. 1 point
    You need to change the code to: <script> if ("[@calcfield:3]"!="[@field:Current_Pay_Grade]") { document.write('<img width="15px" src="https://umghr-sjecs....images/flag.jpg" />'); document.write("[@field:Current_Pay_Grade] does not align with [@calcfield:3]. Check each job factor and the grand total."); } </script>
  45. 1 point
    Jan

    No Records Found?

    Hello Aleks, Can you open your 2014-15 table in the Bridge? Does the data get imported at all? If you do not enter any name, do you get the same message? Is it the same Excel or maybe you have used a newer version of it?
  46. 1 point
    MayMusic

    Result Page In A Pop Up Window

    Create your search and result pages in two different pages as described here http://howto.caspio.com/tech-tips-and-articles/parameters/how-to-separate-search-page-and-results-page-into-two-different-webpages/ In Configure Fields screen of the search page add Hear/Footer to create your customized button using the code below in the Footer: <input type="button" value="Search" onClick="gotoreport();"> <script language="javascript" type="text/javascript"> function gotoreport() { var URL = "URL OF THE REPORT PAGE?PARAMNAME=" + document.getElementById('FIELD ID').value + "& PARAMNAME=" + document.getElementById('FIELD ID').value; newwindow=window.open(URL,'name','height=200,width=150'); if (window.focus) {newwindow.focus()} return false; } </script> You need to replace URL OF THE REPORT PAGE with URL of the report page and PARAMNAME with the parameter name you are receiving in the report page in Configure Filtering Fields screen as described in the tutorial. Also FIELD ID with the real field ID. To hide the original submit button you can either add display:none; to .cbSubmitButton in the style you are using for this page or add a Header to the page and use: <style> #Submit{ display:none; } </style>
  47. 1 point
    MayMusic

    Conditional Text On Report

    You can add an HTML Block to your report and use this code: <script> if ("[@field:FIELDNAME]" == "Not Completed") { document.write("<a href='http://caspio.com'> Click Here</a>"); } </script> Replace the link and also FIELDNAME in the code above
  48. 1 point
    MayMusic

    Reduce Row Hight

    It is good to know the order for padding which is : padding: top right bottom left
  49. 1 point
    In a detail page I have a field that is a check box, I also have a virtual field that displays text. When the checkbox is NOT checked I want the virtual field hidden. For some reason the rules do not allow me to "hide" any virtual fields. Any suggestions why?
  50. 1 point
    slusk

    File upload

    Is there a way to receive the uploaded file as an attachment in email?
×
×
  • Create New...