Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 03/20/2024 in all areas

  1. Thank you @ParkLoey and @imJihyo! That's very helpful.
    1 point
  2. Hi @ClayG! This seems to be a pretty simple app. Here's my suggestion: create a table where you will put all the booth locations create a table where the system will record who picked what booth create a submission form where vendors will choose a booth and submit a record vendors can choose a booth using a dropdown field which gets the options from the table where you put all booth locations Now, the thing you need to do to make the booth unavailable when a vendor has already chosen it is to use triggered actions. Make the trigger delete the booth on the booth table after it has already been chosen. Here's a sample of the trigger Hope this gives you an idea.
    1 point
  3. Hello, There is an option to set the Y Axis range manually: To change the chart using JavaScript, I found this article that shows some options: https://howto.caspio.com/tech-tips-and-articles/customize-caspio-chart-datapages/ I tried to change that code and I was able to make the Chart to always start from 0 on the YAxis and it seems to work for some Charts. Maybe there is someone else that knows a better approach: <script> document.addEventListener('DataPageReady', function() { var cleaner = function(interv) { clearInterval(interv); } let interv = setInterval(() => { if(typeof Highcharts == "undefined" || !Highcharts.charts.length) return; var seriesLength = Highcharts.charts[0].series.length; var getInsideValue = Highcharts.charts[0].series[0].userOptions.data.length; cleaner(interv); Highcharts.charts[0].yAxis[0].min = 0 Highcharts.charts[0].redraw(); }) }); </script>
    1 point
  4. CoopperBackpack

    Need help in trigger

    Hello @bookish, As far as I understood you need to stamp the time when the specific field is updated. The basic approach to track the changes is: 1) To join the Table and the #inserted table on the unique field. This is needed to identify the record that is being updated. 2) To compare the previous value and the new(updated) value. If they are not equal, this means that the value was updated. For example, the 'Update_Date' field will be updated when the 'Name' field is changed. Could you clarify this part 'but not when non-payment fields are updated'? In my understanding, the field you are interested in can be updated along with the other fields. So, if you only need to track the change in the specific field regardless of the other fields, the example on the screenshot should work. Feel free to ask questions if you need further assistance on this.
    1 point
  5. Thank you for the fast and great answer! After reviewing your answer, I was thinking I can also just do a virtual field that is the sum of those two prices. I could also hide those 2 fields. Then I'll see if the normal aggregation allows me to reference the virtual field.
    1 point
  6. @Flowers4Algernon had already resolved and well aware of triggered actions as use them quite frequently with complex actions this was a specific use case I couldn't quite get the syntax right but thanks for the link.
    1 point
  7. Hello @MarkMayhrai, To add, the background color of the header can be applied/changed under the Styles: Results page > Table Layout > Header Cells > Background Options > Color To color specific cells, you need to refer to the number of the column. For example: <style> /* color the 2nd and 3rd header cell */ form[action*='[@cbAppKey]'] th[class*="cbResultSetHeaderCell"]:nth-child(2), form[action*='[@cbAppKey]'] th[class*="cbResultSetHeaderCell"]:nth-child(3){ background-color: #00d5e4; } /* chnage the styles of the 4th header cell */ form[action*='[@cbAppKey]'] th[class*="cbResultSetHeaderCell"]:nth-child(4){ background-color: transparent; border: none; } </style>
    1 point
  8. Hi @MarkMayhrai Do you have responsiveness on the DataPage enabled or disabled? If it is enabled, you can add the following CSS code snippet to the header of your DataPage: <style> .cbResultSetTable tr th:nth-child(column order number) { background-color: color; } </style> Where the "column order number" represents the column order number. So you need to specify which table header columns must have which background colors in this rule. It will look like this: <style> .cbResultSetTable tr th:nth-child(10), .cbResultSetTable tr th:nth-child(11) { background-color: white; } .cbResultSetTable tr th:nth-child(7), .cbResultSetTable tr th:nth-child(8), .cbResultSetTable tr th:nth-child(9) { background-color: blue; } </style>
    1 point
  9. Thanks it highlights the entire row, my code is working as posted so no need to update. Remove the console.log obviously. Cheers
    1 point
  10. Hello @BrianI, You can try the following: let dueDate = new Date('[@field:due_date]'); let today = new Date(); if(dueDate < today){ //do something } However, it is good to know the use case details, because using SQL instead of JavaScript could be possible.
    1 point
  11. Hello @BrianI, It is expected that only editable fields are available https://howto.caspio.com/datapages/forms/conditional-forms/ So, I would use the following workaround. 1) Add a Virtual field, set it as a Calculated Value, and add the Yes/No field as a parameter 2) In a Rule use this Virtual field. Compare with Y or N. Y is for the checked checkbox, N is for the unchecked one. 3) Hide the Virtual 1 field after testing the DataPage.
    1 point
  12. Hi @kpcollier The code must be modified. Try the following version: <script> document.addEventListener('DataPageReady', function (event) { document.querySelector('[name="cbParamVirtual1"]').addEventListener("change", myFunction); function myFunction(event) { let calcField = event.target.value; document.querySelector('#InsertRecordBulletin').value= calcField.toLocaleString(); document.querySelector('#InsertRecordBulletin').nextElementSibling.querySelector('iframe').contentDocument.querySelector('body').innerHTML = calcField document.removeEventListener('DataPageReady', myFunction); } }); </script>
    1 point
  13. Hello! You may want to look into this video where Ned has used Make.com to connect with Trello:
    1 point
  14. Hello @CoopperBackpack This works perfect thanks, you truely are a Caspio Rockstar and this is greatly appreciated Cheers, Roosta
    1 point
  15. Hello @Roosta, You can use the following approach: the condition checks if the first character is zero and if the condition is met concatenates 44 and the number without the first character. This works if the phone number is stored in the Text(255) field.
    1 point
  16. Hello! Caspio releases another new enhancement to the WebHooks feature, refer below: Latest enhancements available to non-HIPAA/Compliance accounts, webhooks can now be: Sent based on table events initiated by triggered actions and tasks. Configured for tables that have triggered actions enabled for the same event as the webhook. Source: https://howto.caspio.com/release-notes/caspio-46-0/#:~:text=Enhancements to Caspio Webhooks
    1 point
  17. HI @CoopperBackpack, I used your second script (pop-up message instead of browser alert). It worked! I just had to put the code because if the one booking typically uses CAPS then the form will submit. const nonDietRegex = /room|floor|bedroom/i; if(nonDietRegex.test(textField)) {
    1 point
  18. Thanks, @CoopperBackpack - I considered that and agree. I don't have a sense for how big it has to be to be a problem. One table has about 2500 records and is unlikely to see material growth. The other is (basically) a b2b customer table. The result set could be millions of records... but not until I get thousands of (b2b) customers. I'm thinking it would be a good problem to have...
    1 point
  19. Hello @bookish, My understanding of your workflow is the following: - this is the Submission Form DataPage; - the user populates the 'RecordID' and the 'ACTIVITY_TYPE' fields; - the 'combined_ID' field should store the combination of those 2 values. If this is correct, you can apply the easier solution. Instead of using JavaScript, you can utilize Calculated value. For that, select the 'Calculated Value' Form element for the 'combined_ID' field and add the calculation you need. When the Form element is 'Calculated value', on the Advanced tab there is an option to hide this field: An example with the visible 'combined_ID' field to showcase the approach: If the workflow is different, please provide more details about the DataPage type, and form elements of the fields involved in this workflow.
    1 point
  20. Thank you so much @CoopperBackpack! I will try it soon (this weekend) and I will let you know how it works for my programs!
    1 point
  21. LEFT() function Syntax: LEFT(string, number_of_chars) number_of_chars passed to the function must be a positive number. Syntax in Triggered Actions/Tasks: Analog of syntax on DataPages/in Formula field: LEFT([@field:Status], 2) Return Type: String Function description: The LEFT() function extracts a number of characters from a string (starting from left). RIGHT() function Syntax: RIGHT(string, number_of_chars) number_of_chars passed to the function must be a positive number. Syntax in Triggered Actions/Tasks: Analog of syntax on DataPages/in Formula field: RIGHT([@field:Status], 5) Return Type: String Function description: The RIGHT() function extracts a number of characters from a string (starting from right). Example of use case: Create a Unique_Username that will be used as a Composite Key and which consists of the first character of the user First_Name, the last character of the user Last_Name, and the User_Pin value. As for the MID() function, it looks like it is used in Excel to get a part of the string. In SQL it is the SUBSTRING() function. SUBSTRING() function Syntax: SUBSTRING(string, start, length) start - The start position. The first position in the string is 1. Can be a negative number. length - The number of characters to extract. Must be a positive number. Syntax in Triggered Actions/Tasks: OR For ‘substring between’ the start value is included in the extracted substring, but the end value is not included. For example, when extracting between 1st and 4th characters, the 4th character is not included: Analog of syntax on DataPages/in Formula field: SUBSTRING([@field:String], 3, 2) Return Type: String Function description: The SUBSTRING() function returns part of a string according to the start position and length provided. Example of use case: Extract the third and fourth characters from the string․ Please note that all these functions are available within one block, just need to select them from the dropdown:
    1 point
  22. Hi @Volomeister Thanks for the reply. I implemented something very similar which is working! I'm surprised something which could be a simple sql query ends up being so convoluted but there it works. Cheers Brian
    1 point
  23. Hello @bookish, You can use the following code instead: <script> document.addEventListener('BeforeFormSubmit', checkValuesHandler) function checkValuesHandler(event){ const textField = document.querySelector('#InsertRecordFIELDNAME').value; //replace FIELDNAME with your field name if(textField.includes('room') || textField.includes('floor') || textField.includes('bedroom')){ event.preventDefault(); alert('Please specify your diet requirement.'); } } </script> You can add more conditions if needed. Just copy this part and replace the keyword. || textField.includes('KEYWORD') You may use an additional tool for displaying pop-up messages instead of the basic browser alert. For that, you can use the following code: <script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script> <script> document.addEventListener('BeforeFormSubmit', checkValuesHandler) function checkValuesHandler(event){ const textField = document.querySelector('#InsertRecordFIELDNAME').value; //replace FIELDNAME with your field name if(textField.includes('room') || textField.includes('floor') || textField.includes('bedroom')){ event.preventDefault(); Swal.fire( '', 'Please specify your diet requirement.', 'warning' ); } } </script> This is an example:
    1 point
  24. Hi @BrianI Here is what you can do: 1. Add a checkbox field to your Table A. This checkbox will indicate whether there are related records in Table B 2. Add triggered actions on Table B's insert, update, and delete events. These triggered actions will check or uncheck a checkbox on a related Table A record based on your specified condition. 3. Add an application task that will run once a day to loop through all records in Table A and check if they have related records in Table B with a date after today. 4. Build a view based on Table A to filter out records based on the checkbox. 5. Build report DataPage based on this view
    1 point
  25. Hi Emmanuel Katto, CRM is Customer Relationship Management . It helps to manage customer data. Businesses generate vast amount of data everyday. To manage this enormous amount of data, companies need CRM systems. A CRM system essentially provides a central place where businesses can store customer and prospect data, track customer interactions, and share this information with colleagues. It allows businesses to manage relationships with customers, helping the business to grow. Thanks!
    1 point
  26. Hello @AaronJ, If my understanding is correct, there is a training date in the table and it is individual (the date depends on the particular employee). You may check the following approach: 1) Create a new Date/Time field. In my example its name is 'Training_Date_Exp': 2) This field can be populated by a Task that runs daily: The logic is to add the date if 12 months have passed. For today, after the Task run, the result is: 3) As a next step you may either create a View that filters records where the 'Training_Date_Exp' field is not blank and build the DataPages based on this View. Or you may filter records directly on the DataPage if the Search is not needed. If you need a different result, please provide more details.
    1 point
  27. Kurumi

    Add icons to form fields

    Hi! In addition to having Font icons such as Font Awesome for labels, you can also apply this in the Header in the Results Page of Report DataPage. To apply in the DataPage, follow these steps: 1. Insert Header and Footer. In the Header, insert the installation CDN <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/js/all.min.js"></script> 2. Search your icon here: https://fontawesome.com/v5/search?o=r&m=free&s=solid 3. Copy code snippets such as <i class="fas fa-users"></i> 4. Paste the code in Labels in the Header where you like to add an icon. Result:
    1 point
  28. In case you store all data in one table, for example: Then you may use this Task design: Maybe the Task can be optimized, however these Tasks work from my side. Hope this helps.
    1 point
  29. Keep in mind hiding these buttons through CSS will not disable them. If anyone presses 'Enter' they will be able to 'click' the button. You need JavaScript to disable it completely and then use CSS for hiding, or you can use JavaScript for both. For Submission, you do it like: <script> document.getElementsByClassName('cbSubmitButton')[0].disabled = true; document.getElementsByClassName('cbSubmitButton')[0].style.display = 'none'; </script> Update Form/Details Page <script> document.getElementsByClassName('cbUpdateButton')[0].disabled = true; document.getElementsByClassName('cbUpdateButton')[0].style.display = 'none'; </script> If you have multiple forms on a single Webpage, just change 0 to any number depending on the order of the forms, 0 means it's the first form, and so on. If you just really want to hide, then just remove the 1st line.
    1 point
  30. You can actually use @Nuke354 workflow on report datapages with calculated field to make it work conditionally. For example, on your results page , you only want to hide the value of those fields depending on a value from another field, you may try this kind of workflow, 1) at the very bottom of the page, create 2 html blocks. Set them up as described on Nuke's workflow. 2) Create a calculated field there and use a case when formula like this: Case when [@field:indicator] = 1 then 'none' else 'block' end 3) Encapsulate the actual fields you wanted to hide on html blocks. On the HTML block for the top 1, use this kind of html syntax instead: <table style = "display:[@calcfield:1];"> <tr> <td> That should now reflect on the return value of your calculated field. With that, those actual fields will only be hidden base on the condition you set on the calculated field. Hope it helps. quack
    1 point
  31. Alison

    Icon inside input field

    Hi @vinebath, You can add a Glyph icon with the additional CSS styles and bootstrap library: 1. Open "Search and Report Wizard - Configure Search Fields" screen, where should be at least one field. Create a Header and Footer element and two HTML blocks, where the HTML editor should be disabled. Please look at the screenshot below to see the structure of the DataPage elements: 2. Move to the Header and put the following code there: <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet"> <style> .cbFormTextField { padding-left: 25px; } .inner-addon { position: relative; } /* style glyph */ .inner-addon .glyphicon { position: absolute; padding: 10px; pointer-events: none; } .glyphicon { top: 11px !important; } /* align glyph */ .left-addon .glyphicon { left: 95px; } /* add padding */ .left-addon input { padding-left: 30px; } </style> 3. Put the following code into the first HTML block: <div class="inner-addon left-addon"> <i class="glyphicon glyphicon-search"></i> 4. Put the code below to the second HTML block: </div> 5. The result is the following:
    1 point
  32. Hi, just to add to the previous comment. Yes, Caspio has a disclaimer that says : "This is a Caspio free app. Do not submit passwords or other sensitive data. Report Abuse" this is to ensure that the page is not used as a phishing site since this is a Free account. I also suggest to upgrade your plan and I recommend to review Caspio new pricing plan's resources to ensure the needs of your application. You can visit the newest pricing plan at these sites and for you to not worry about the disclaimer. For Standard Plan:https://www.caspio.com/pricing/standard-edition-plans-features/ For Premium Plan: https://www.caspio.com/pricing/premium-edition-plans-features/
    1 point
  33. You may insert the following java script in the html block: <script> var x=[@cbRecordIndex]; var y=[@field:Your_field]; document.write(x*y); </script> Don't forget to change name of the field in the y variable Cheers!
    1 point
  34. In case anyone comes across this post, I did finally find an answer to my question. If I deploy the style to hide the column in the header of the WEBPAGE (vs header of the caspio page) then I can conditionally hide columns. Based on what page I am on, I hide different columns. Works perfect!
    1 point
  35. MayMusic

    Updating A Unique Field

    If it is an update for you should change document.getElementById("InsertRecordcombined_ID").value = res; to document.getElementById("EditRecordcombined_ID").value = res;
    1 point
×
×
  • Create New...