plant-test-report.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.js" integrity="sha256-gfQwA6PlkZsLqWu4bU4hXPrbTqzixm0B5MdvBLI+Oas=" crossorigin="anonymous"></script>
  2. <div class="grid-form1">
  3. <h3 id="forms-example" class="">[[*longtitle]]</h3>
  4. <span class="error">* required fields.</span>
  5. [[!clientDetailsFORM]]
  6. <form method="post" action="#" id="PlantcsvForm" class="needs-validation" novalidate > <!-- ~[*id*]~] [[~28~]] -->
  7. [[!Personalize?
  8. &yesChunk=`analysisLogged_Clientdetails`
  9. &noChunk=`analysis_Clientdetails`
  10. ]]
  11. <hr>
  12. [[$plantAnalysisForm]]
  13. <button form="PlantcsvForm" type="submit" name="PlantcsvForm" class="btn btn-success">Submit</button>
  14. </form>
  15. [[!plantformSubmit]]
  16. [[!newClientDetails]]
  17. <hr>
  18. <div class="card">
  19. <div class="card-body">
  20. <h5 class="card-title">Excel/CSV Upload</h5>
  21. <p class="card-text">Download a csv of this form for easy filling or upload a filled form to pre-populate.</p>
  22. <div class="input-group mt-3">
  23. <div class="custom-file">
  24. <input type="file" class="custom-file-input" id="upload">
  25. <label class="custom-file-label border-success" for="upload">Choose file</label>
  26. </div>
  27. <div class="input-group-append">
  28. <button class="btn btn-success" type="button" id="download">Download</button>
  29. </div>
  30. </div>
  31. </div>
  32. </div>
  33. </div>
  34. <!-- ************************ Download Form as CSV ************************ -->
  35. <script>
  36. document.getElementById("upload").addEventListener("change", upload, false);
  37. document.getElementById("download").addEventListener("click", download, false);
  38. function upload(e) {
  39. var data = null;
  40. var file = e.target.files[0];
  41. var reader = new FileReader();
  42. reader.readAsText(file);
  43. reader.onload = function (event) {
  44. var csvData = event.target.result;
  45. var parsedCSV = d3.csv.parseRows(csvData);
  46. parsedCSV.forEach(function (d, i) {
  47. if (i == 0) return true; // skip the header
  48. document.getElementById(d[0]).value = d[1];
  49. });
  50. }
  51. }
  52. function download(e) {
  53. data = [ ["id","value"]];
  54. var f = d3.selectAll("#csvForm input, select")[0];
  55. f.forEach(function(d,i){
  56. data.push([d.id, d.value]);
  57. });
  58. console.log(data);
  59. var csvContent = "data:text/csv;charset=utf-8,";
  60. data.forEach(function (d, i) {
  61. dataString = d.join(",");
  62. csvContent += i < data.length ? dataString + "\n" : dataString;
  63. });
  64. var url = window.location.pathname;
  65. var filename = url.substring(url.lastIndexOf('/')+1);
  66. var fname = filename.split(".")[0];
  67. var today = new Date();
  68. var date = today.getDate()+''+(today.getMonth()+1)+''+today.getFullYear();
  69. var csvname = date+''+fname+"-plant.csv";
  70. var encodedUri = encodeURI(csvContent);
  71. var link = document.createElement("a");
  72. link.setAttribute("href", encodedUri);
  73. link.setAttribute("download", csvname);
  74. link.click();
  75. }
  76. </script>
  77. <script type="text/javascript">
  78. // JavaScript for disabling form submission if there are invalid fields
  79. (function() {
  80. 'use strict';
  81. window.addEventListener('load', function() {
  82. // Fetch all the forms we want to apply custom Bootstrap validation styles to
  83. var forms = document.getElementsByClassName('needs-validation');
  84. // Loop over them and prevent submission
  85. var validation = Array.prototype.filter.call(forms, function(form) {
  86. form.addEventListener('submit', function(event) {
  87. if (form.checkValidity() === false) {
  88. event.preventDefault();
  89. event.stopPropagation();
  90. }
  91. form.classList.add('was-validated');
  92. }, false);
  93. });
  94. }, false);
  95. })();
  96. </script>