Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 08/16/2021 in Posts

  1. What does yours look like? Mine adjusts accordinly...
    2 points
  2. try this, basically, it's excluding the elements with the said classes using 'not' <SCRIPT LANGUAGE="JavaScript"> var elems = document.querySelectorAll("td:not([class^='cbResultSetGroup1Label']):not([class^='cbResultSetTotalsData'])"); for (var i=0, m=elems.length; i<m; i++) { if (elems[i].innerHTML=="1") { elems[i].style.color="BACK";} if (elems[i].innerHTML=="1") { elems[i].style.backgroundColor="LIGHTGREEN";} } </SCRIPT>
    2 points
  3. autonumber

    Trigger and Task?

    Hi @Gigigigi, Task are operations that you can create in your application and run them manually or automatically based on a predefined schedule while Triggered Actions allow data manipulation, calculations, and sending notifications by constructing application logic with a visual interface. They will be executed on specified events to perform actions on data in your tables. You can also use Triggered Actions to transfer data from another table but if you have existing records it is recommended to use Task.
    2 points
  4. Additionally, you may refer to this article about SQL Convert: https://www.sqlshack.com/sql-convert-function/
    2 points
  5. Yes. Convert first your formula into VARCHAR. For example: CONVERT(VARCHAR(255), [@field:Field1] + ' ' + [@field:Field2])
    2 points
  6. Hi @FredFarfadoe, To achieve that you will need to add a CSS code on the header of the DataPage: You can use this: <style> g.highcharts-series-group { pointer-events: none!important; } .highcharts-a11y-proxy-button { pointer-events: none!important; } tspan { pointer-events: none!important; } </style>
    2 points
  7. Tubby

    Remove Record Counter

    Hi. You can also just go to "Results Page Options" in you DataPage Wizard and go to the Advanced Tab then check this option:
    1 point
  8. kpcollier

    Remove Record Counter

    I thought there use to be a setting in the DataPage Wizard to toggle that on and off, but I can't find it either. Putting this in the header should make it disappear. <style> .cbRecordCountMessage{ display: none; } </style>
    1 point
  9. I think task would do the work for this. If I got it correctly, the only conditions are to check if the user is under any of the three lead groups and if they have submitted their answers for the survey. You can do something like this for the task: This is assuming that it is only a one-time thing. If this is going to be recurring then you might need to tweak this to have another field to base on( like a date field or something else).
    1 point
  10. Hello! I just want to update this workaround since I have found a way that will show the last submitted record without using any JavaScript. First, delete the existing script I have mentioned in the previous reply. Then, go to the Advanced tab of the Results Page Options window and set the Total Records returned into 1. Then, go to the next window and check this checkbox so that it will automatically skip the results page, and show the details page immediately for the last submitted record. Lastly, save the DataPage. Hope this helps!
    1 point
  11. Hi! I agree with TellMeWhy this can be achieved using Triggered Actions. I just wanted to add these links that you can refer to in creating Triggered Actions. https://howto.caspio.com/tables-and-views/triggered-actions/
    1 point
  12. So, only NEW company will trigger the Triggered Action to insert on the Process Table, right? If so, yes, that can be done with Triggered Action, maybe you just have to set a condition where if it doesn't exist yet, or even count the records with the same company name, if it's more than 0, it will not insert.
    1 point
  13. GoodBoy

    Trigger and Task?

    Hi @Gigigigi, you may want to check these informative videos as well about triggered actions and tasks. - https://www.caspio.com/webinars/introduction-to-triggered-actions/ -
    1 point
  14. autonumber

    Trigger and Task?

    Just to add, you can check these links: https://howto.caspio.com/tables-and-views/triggered-actions/ https://howto.caspio.com/tasks/
    1 point
  15. Hi all, I wanted to share a solution I came up with, which might be helpful for you. Problem: I have recently been trying to streamline page loading times, and one of the ways I've done this is to move record update datapages to Bootstrap 5 modals. It was working great for me with single record update datapages embedded in modals, but when it came to a report datapage, with a bulk edit feature, I was stumped. See the attached image. Basically, when I clicked the edit button, the pop-up for bulk edit would show up, but it would be BEHIND the modal (see my attached screenshot). Since I have my modal set to static background, that basically meant I wasn't able to edit anything in the pop-up window until I closed the modal. Not helpful! Solution: Use jQuery to assign a .click() handler to any bulk edit buttons in my datapage that is embedded in the modal. The .click() handler will wait half a second (to give the bulk edit pop-up time to be written to the page), then it will move the bulk edit pop-up div to inside the modal body. This solution is only for situations where you're including jQuery and Bootstrap 5. Here's my html modal, which lives at the bottom of my html page where the first datapage is embedded: <div class="modal fade" id="cb-modal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="imgModalLabel" aria-hidden="true"> <div id="cb-modal-dialog" class="modal-dialog modal-larger-dialog"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="cb-modal-title">Modal title</h5> <button type="button" class="btn-close bg-transparent" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <div id="cb-modal-body" class="cb-form-fluid cb-form-resp"></div> </div> </div> </div> </div> The datapage that is embedded in that html page happens to be a report style datapage. Every record includes a link which will dynamically embed a second datapage in my modal, and open it. Complete with params. Here is the code for one of my links: <a href="#" role="button" data-bs-toggle="modal" data-bs-target="#cb-modal" onclick="openModal( 'Edit/Add Items', '1dae6000bcb0b9a06b9841e2a9c0', '?cbResetParam=1&garments_CustomerInvoiceNo=[@field:PSST_CustomerInvoiceNo]&garments_TrackingNo=[@field:PSST_TrackingNo]&garments_Order_id=[@field:PSST_workOrder_id]&garments_CustCode=[@field:Garments_Items_CustCode]&garments_ShipVia=[@field:Garments_Items_ShipVia_endcodedForURL]&garments_ShipDate=[@field:PSST_ShipDate]&garments_Distributor=[@field:Garments_Items_Distributor_encodedForURL]&garments_Whse=[@field:PSST_Whse]&garments_CustomerName=[@field:Garments_Items_CustomerName_encodedForURL]&garments_CustomerPO=[@field:Garments_Items_CustomerPO_encodedForURL]&garments_CustomerAccount=[@field:Garments_Items_CustomerAccount]' );">Edit/Add Items</a> Here is my function for openModal(), saved in an external javascript file, which is included with my html page: // function - deploy DP in modal function openModal(modalTitle, appKey, params) { $('#cb-modal-body').html(''); deployDP('cb-modal-body', appKey, params); $('#cb-modal-title').html(modalTitle); // draggable modal $(".modal-header").on("mousedown", function(mousedownEvt) { var $draggable = $(this); var x = mousedownEvt.pageX - $draggable.offset().left, y = mousedownEvt.pageY - $draggable.offset().top; $("body").on("mousemove.draggable", function(mousemoveEvt) { $draggable.closest(".modal-content").offset({ "left": mousemoveEvt.pageX - x, "top": mousemoveEvt.pageY - y }); }); $("body").one("mouseup", function() { $("body").off("mousemove.draggable"); }); $draggable.closest(".modal").one("bs.modal.hide", function() { $("body").off("mousemove.draggable"); }); }); } function deployDP(containerID, appKey, params) { var params = params || ''; var dataPageScript = document.createElement("script"); var container = document.getElementById(containerID); dataPageScript.src = cbDataPagePrefix + appKey + '/emb' + params; container.innerHTML = ''; container.appendChild(dataPageScript); } Finally, in the Footer in the Configure Results Page Fields section of my second datapage - the one that is embedded dynamically within the modal - I have this code: <script type="text/javascript"> document.addEventListener('DataPageReady', function (event) { $('#cb-modal .cbResultSetBulkEditActionLink').click(function () { setTimeout(function () { // gives the bulk edit update form time to load if (document.getElementById('BulkUpdateForm') && document.getElementById('cb-modal')) { $('#cb-modal div.modal-body').append($('#BulkUpdateForm')); // moves the bulk edit update form inside the modal body, thereby making it editable while the modal is open. } }, 500); }); $('#cb-modal .cbResultSetBulkDeleteActionLink').click(function () { setTimeout(function () { // gives the delete confirmation time to load if (document.getElementById('Alert') && document.getElementById('cb-modal')) { $('#cb-modal div.modal-body').append($('#Alert')); // moves the delete confirmation alert inside the modal body. } }, 500); }); }); </script> I know this is a really specific example, but it seemed to me like something that could come up for other people, so I figured I'd share! Hope this is helpful.
    1 point
  16. Wow that was quick! Thanks guys. I think I'll try @GoodBoy's solution first as I do not think I will be hitting that 255 character limit soon and I am kinda in a rush to finish this. I will try @Tubby's solution later on after my presentation.
    1 point
  17. Hi there~ The reason why it doesn't allow you to use the formula field as the "Field for value" of the Cascading Elements is because of it's character limit. Since you are concatenating two Text(255) fields in the formula field, the system assumes that you will exceed the character limit of Cascading Elements which is 255 characters. GoodBoy's solution might work for you if you are sure that the two Text(255) fields combined will not exceed 255 characters any time soon. Otherwise, it will cut the exceeding characters in your formula field. A workaround that I have for this that will not remove any characters from the formula field is to create criteria under the formula field and change their form elements to the cascading element of your choice but have them use the two fields that you are concatenating as their "Field for value" so they wont exceed 255 characters. For the first criteria, use the original parent field that you are planning to use. For the second criteria, use the first criteria as the parent field to avoid any filter only records that contain the text on the first criteria. Lastly, change the comparison type to "Contains" to avoid "No records found." message when you are not search for the exact values. Here's a sample screenshot: Hope this helps! ~Tubbs
    1 point
  18. Hello @BeffreyJezos, I believe the solution in this post might work for you as well.
    1 point
  19. Heather

    Inline Insert is grayed out

    Thanks, @Tubby! So, in my case, it is because the email field is not included in my results page.
    1 point
  20. Try putting this after the addeventlistener line event.stopImmediatePropagation(); If it does not work, try putting it inside every 'if'
    1 point
  21. Do you have other fields on your Details page configuration besides those? An update button only shows up when you have editable fields. Perhaps you have some hidden fields there too?
    1 point
  22. Hi @imJihyo I experienced this before as well! Apparently, they do have a limitation for downloadable records in result pages. As a workaround, I enabled the compress feature and I haven't had any problems with it. As far as I can remember, the most number of records I was able to download was around 90k. Haven't tried going over that number though. I hope this helps! - LOEY
    1 point
  23. BINGO! Thank you so very much. Domo Arigato. Danke sehr. Merci beaucoup. Gracias.
    1 point
  24. TellMeWhy

    Click to Timestamp

    It should be EditRecord then instead of InsertRecord
    1 point
  25. GoodBoy

    Table Formatting in Task

    Hey! You may try to include this code in your email body: <head> <style> table, th, td { border: 1px solid black !important; } th { text-align: center !important; } td { text-align: left !important; } </style> </head> [@variable:TableName] Don't forget to set the body to HTML first, then click the source button and paste the code. Please note that the <head> tag may be removed or be gone once you re-edit the email body, so you need to put it again if that happens. This works on me. Hope this helps!
    1 point
  26. Meekeee

    Chart Style

    Hi @Catra - you can change it in Styles -> DataPage Elements: Charts Legend: I hope it helps!
    1 point
  27. Just to add, here is the documentation I use as reference: https://howto.caspio.com/troubleshooting/troubleshooting-notification-emails/
    1 point
  28. Hello~ I experienced this issue last year and I believe whitelisting my domain name is the best solution for it. Some emails are still delayed, but it is not an issue with Caspio anymore but with the email provider like Gmail. Hope you resolve your issue as well.
    1 point
  29. TellMeWhy

    Use Range in Date Field

    If you want it to precise to DATE without the time (cause sometimes it conflicts), you can just convert to date instead of datetime.
    1 point
  30. If you have multiple datapages on one webpage, the alert might go off for all of them when loaded. If this is the case, you'll need to modify the script a bit. document.addEventListener('DataPageReady', function (event) { if (event.detail.appKey == 'MY_DATAPAGE_APPKEY') { setTimeout(function(){ alert("Please save your work."); }, 1800000); } }); You can find the DataPage's Appkey for 'MY_DATAPAGE_APPKEY' in the 'Properties' section of the datapage in the Caspio Bridge.
    1 point
  31. This may not be the best way, but it should work. Put this in the footer of your datapage. The '1800000' is 30 minutes in milliseconds. <script> document.addEventListener("DataPageReady", function(){ setTimeout(function(){ alert("Please save your work."); }, 1800000); }); </script>
    1 point
  32. Not sure if what I understood is correct, but, you can try this, create a Calculated Value, this is to check if the date today is less than 5 or not. If it's 1, user can input any date, if it's 0, only on the current month and later. CASE WHEN DATEPART(day, GetUTCDate()) <5 OR (DATEPART(day, GetUTCDate()) >= 5 AND DATEPART(month,GetUTCDate()) <= DATEPART(month, [@field:Date])) THEN 1 ELSE 0 END Script on the footer: (change the number on cbParamVirtual1 depending in your Virtual Field) <script> document.addEventListener("BeforeFormSubmit", function(e){ var a= document.querySelector("input[name='cbParamVirtual1']").value; if (a == 0){ e.preventDefault(); alert("Please input Date within or after the current month"); } }); </script> If you want this to trigger on change of the field that is being used in the Calculated Field. Change the InsertRecordFIELDNAME to your actual field's id cbParamVirtual1 to your Virtual Field's name if it's 1 2 3 or whatevers <script> document.getElementById("InsertRecordFIELDNAME").addEventListener("change", function(e){ document.querySelector("input[name='cbParamVirtual1']").addEventListener("change", function checker(){ var a= document.querySelector("input[name='cbParamVirtual1']").value; if (a == 0){ //if Calculated Value is 0 then alert alert("Please input Date within or after the current month"); //add another code } this.removeEventListener("change",checker); }); }); </script>
    1 point
  33. NailDyanC

    Running Balance Question

    Hi just to update this post and to add in the previous comment above, you may also consider checking this post:
    1 point
  34. Hi @trevans, Enable sticky header row option can be enabled when you disable Responsive here:
    1 point
  35. Hi Marc, Yes you can. When your trial account expires, select Caspio Personal plan which is free. You can see a comparison of our plans here. Regards, Jonathan
    1 point
  36. Tubby

    Datahub calls

    Yes. Failed Datahub import/exports are still counted as Datahub calls. This is because there is still an attempt from Caspio to connect to your server/s. There are no documentations about this but here is an article about Scheduled Tasks (DataHub) Tips and Best Practices that might help with understanding the different Error and Warning Messages: https://howto.caspio.com/tables-and-views/scheduled-import-and-export/scheduled-tasks-datahub/ ~Tubbs
    0 points
×
×
  • Create New...