Jump to content


Caspio Guru
  • Content Count

  • Joined

  • Last visited

  • Days Won


DefinitelyNot31337 last won the day on August 5

DefinitelyNot31337 had the most liked content!


About DefinitelyNot31337

Recent Profile Visitors

550 profile views
  1. I agree that a feature like this is really a must-have for the platform. Meanwhile, for everyone's appreciation, we may also utilize Pivot Tables for the meantime. Add your distinct-to-be field in the Row, and your date for Values. Then set the summary to Max Do note, however, that Pivot Tables' performance becomes terrible as the DataSource grows. Less that 10,000 should work fine.
  2. Hi In addition to my response here, you may also check my latest solution which dynamically sets the height of the iframe based on its content. Hope this helps -DN31337!
  3. Hello @Didier, I was able to formulate a working solution by putting together workflows from external resources. On the Footer of the DataPage you want to deploy as iframe, paste the snippet below (Make sure HTML Editor is disabled from the Advanced Tab). //Script tested on Tabular Report <script> document.addEventListener('DataPageReady', function() { parent.postMessage(document.documentElement.scrollHeight, "*"); console.log(document.documentElement.scrollHeight); }) </script> On cases of Submission Form / Details Drilldown, you may want to put the snippet below on an HTML Block instead. //Not tested <script> parent.postMessage(document.documentElement.scrollHeight, "*"); console.log(document.documentElement.scrollHeight); </script> Then, on the page where you will be embedding the iframe, place this code snippet: Replace iframe src with the URL Deployment of your DataPage <iframe id="ifr-cdr" src="https://xxx.caspio.com/dp/2abe231b344545ff9945230aaaeeffccc" frameborder="0">Sorry, but your browser does not support frames.</iframe> <script> // Create IE + others compatible event handler (Credits to: https://davidwalsh.name/window-iframe) var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; var eventer = window[eventMethod]; var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; // Listen to message from child window eventer(messageEvent,function(e) { document.getElementById('ifr-cdr').height = e.data; },false); </script> Works for me. Hope this helps. -DN31337!
  4. @Batchini, you may also consider this solution. 1.) Create a view. INNER JOIN on Table1.Project_ID = Table2.ProjectID. 2.) Create a Pivot Table using the View on item#1 as your DataSource 3.) For your rows, use Table1.ProjectName 3.) For your values, use Table2.Status; then set "Summarize values by:" to Min Hope this helps -DN31337!
  5. If you intend to filter your Parent records based on min(FieldName), Triggered Actions would be the way to go since Caspio does not have the capability to filter a report by a Calculated Field as of the moment. Also, it might be worth mentioning that Triggered Actions are not available on Explore plans x). --
  6. Hi @NickO, I agree that doing 15 Calculated Fields is better in performance the more complex Pivot Table. To my knowledge, I believe this is the most optimized solution we can implement. You just have a big amount of data. === You may want to consider "caching" your results by creating 15 integer fields (corresponding to each of your criteria) on your table, then populate it either by Tasks/Triggered Actions. Sorry for the late revert. Do feel free to tag/mention me with the "@" sign so I get notified when you respond.
  7. Hi @kristina, I believe you need to remove the space between thisDP and .querySelector. There are two instances of this in your code which results to a syntax error (^_^)v In addition, everyone else may also try this version of JS by putting this on an HTML Block in their search form: <script> var thisDP = document.querySelector(`[action*="[@cbAppKey]"]`); thisDP.addEventListener('change', function() { console.log('Changed!'); thisDP.querySelector('.cbSearchButton').click(); }); </script> This will automatically hit search everytime an input value has been changed, then put out-of-focus. Hope this helps. -DN31337!
  8. Try checking Aggregation and Pivot Table Reports. https://howto.caspio.com/getting-started/advanced-reporting/advanced-reporting-1-of-2-grouping-and-aggregation/ https://howto.caspio.com/getting-started/advanced-reporting/advanced-reporting-2-of-2-calculated-fields/ https://howto.caspio.com/datapages/reports/pivot-table/ https://howto.caspio.com/getting-started/create-a-pivot-table-report/ You may need to create a separate DataPage for each reporting aggregation (i.e. Monthly, Yearly) As for per individual, departments, company overview, looks like you just need to setup the correct filter to the processed Data
  9. Hello Arnold. You might want to check my answer to this thread: The workflow above would be just one part of your solution since it only just allows you to duplicate a whole form, not a section. I'd suggest partnering that one with multi-step forms/one-to-many relationship so each section of your form is a different DataPage, and you can duplicate as needed. https://howto.caspio.com/tech-tips-and-articles/common-customizations/how-to-create-a-multi-page-form/ https://youtu.be/J6dBPuipaNc https://www.youtube.com/watch?v=Hgflq6tUliU https://www.youtube.com/watch?v=IstAk982ntA https://howto.caspio.com/tech-tips-and-articles/tech-parameters/how-to-create-a-one-to-many-relational-datapage/ -DN31337!
  10. I also think that is currently not possible. I was thinking of a Cascading Trigger workflow would do the trick, but unfortunately, it doesn't. Below is how I simulated it's runtime. === The children table, on record update, would append the value of the updated record to its corresponding parent in the parent table This Task should initially clear out the values in the parent table; After that, update each record in the child table so the trigger would be executed for each record. ==== However, it appears that the "Update child" action on the Task only runs once. They are populating the #inserted temp table with records so only the Top 1 record is written onto the parent table. Not sure if my explanation is clear enough or if you get the gist of it but I hope this helps. Regards, ~DN31337!
  11. The listener on the element should be "change". In addition, I'd recommend using a Query Selector wildcard since AJAX Loading generates a random suffix for the attribute. Finally, while arrow functions () => {} look more neat, this doesn't work on IE11 and lower browsers. Putting it all together and updating George43's code, try this and see if it will work: <script type="text/javascript"> document.addEventListener('DataPageReady', function (event) { document.querySelector('[id*=InsertRecordSource_Shift]').addEventListener('change', function() { //your function body } }); </script> Hope this helps. -DN31337!
  12. Running a Task every 1 hour might not be your best bet since it will frequently have to run through tables. It could affect the performance of your Application. Why not create a View that filters out the record created 10 minutes prior to current timestamp? To do so, just add 10 minutes to your timestamp field so we can identify which fields we can show (more on this below). Create a view to return the records that are created 10 minutes offset advanced of the current time After then, just use this as your DataSource instead of the actual table. You may use tasks to clean-up your actual table. Maybe once a day, or perhaps every three hours at most. Hope this solution helps. -DN31337!
  13. Just right click on the concatenate block and select "Vertical View". In addition, you may double click on some blocks to minimize it. -DN31337!
  14. Not sure if I understood your question correctly. If you have a Contents table, you may use that as a DataSource to a Tabular Report DataPage, then create 15 Calculated Fields with this syntax: SELECT COUNT(Criteria1) FROM _v_ViewName WHERE ContentID = target.[@field:ContentID] Repeat as needed for Criteria2 through 15
  15. If you have a timestamp field on your table, you can use a Calculated Field to do so. The syntax is as follows: SELECT fieldname FROM yourTable WHERE timestampfield > target.[@field:timestampfield] It should get the value of the next record on your table. Note that using a criteria to filter the DataPage does not affect the SQL query, it still returns the next record FROM THE TABLE, however, you may add criteria to the WHERE clause of your SQL Statement. === Also if by transpose you mean in terms of X and Y, I believe that would be impossible in Caspio since we cannot dynamically generate columns on a Tabular Report, and you can have as many rows as you want.
  • Create New...