soil-analysis-pdf.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <title>[[*longtitle]] | [[++site_name]]</title>
  5. <base href="[[!++site_url]]" >
  6. <meta charset="[[++modx_charset]]" >
  7. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" >
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
  9. <meta name="keywords" content="[[*introtext]]" >
  10. <meta name="description" content="[[*description]]" >
  11. [[!Profile]]
  12. <link rel="icon" href="client-assets/images/favicon.ico?v=2" type="image/x-icon" >
  13. <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
  14. <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous" rel="stylesheet" type="text/css" />
  15. <link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css" />
  16. <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/css/all.css" integrity="sha256-PF6MatZtiJ8/c9O9HQ8uSUXr++R9KBYu4gbNG5511WE=" crossorigin="anonymous" rel="stylesheet" type="text/css" />
  17. <link type="text/css" href="/client-assets/weather-icons/css/weather-icons.min.css?version=1.16" rel="stylesheet" type="text/css" />
  18. <link href="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/magnific-popup.css" rel="stylesheet" type="text/css" />
  19. <script type="text/javascript" src="https://use.fontawesome.com/1e2844bb90.js"></script>
  20. <link href="/client-assets/css/dashboard.css" rel="stylesheet" type="text/css" />
  21. <script src="https://unpkg.com/gijgo@1.9.11/js/gijgo.min.js" type="text/javascript"></script>
  22. <link href="https://unpkg.com/gijgo@1.9.11/css/gijgo.min.css" rel="stylesheet" type="text/css" />
  23. <script src="client-assets/js/skycons.js" type="text/javascript"></script>
  24. <link href="client-assets/home/css/graphing.css" rel="stylesheet" type="text/css" media="screen" />
  25. <link href="client-assets/home/css/alux.min.css" rel="stylesheet" type="text/css" media="screen" />
  26. <script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.9.3/html2pdf.bundle.min.js" integrity="sha512-YcsIPGdhPK4P/uRW6/sruonlYj+Q7UHWeKfTAkBW+g83NKM+jMJFJ4iAPfSnVp7BKD4dKMHmVSvICUbE/V1sSw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  27. <style>
  28. @media print {
  29. @page {
  30. size: A4 portrait;
  31. }
  32. @page :left {
  33. margin-left: 0.5cm;
  34. }
  35. @page :right {
  36. margin-right: 0.5cm;
  37. }
  38. @page :top {
  39. margin-top: 0cm;
  40. }
  41. @page :bottom {
  42. margin-bottom: 0cm;
  43. }
  44. }
  45. </style>
  46. </head>
  47. <body>
  48. <div class="grid">
  49. <?php
  50. // Replace Logo with Customer Logo if supplied.
  51. $client = '';
  52. echo "<div class='col-md-3'>";
  53. if ($client === "") {
  54. echo "<img class='img-fluid' src='client-assets/images/crop-monitor.png' alt='Crop Monitor' >";
  55. } else {
  56. echo "<img class='img-fluid' src='client-assets/images/crop-monitor.png' alt='Crop Monitor' >";
  57. }
  58. //echo "<span class='col'></span>";
  59. //Client Test Description
  60. if ($client === "") {
  61. echo "";
  62. } else {
  63. echo "<img class='img-fluid' src='client-assets/images/crop-monitor.png' alt='Crop Monitor' >";
  64. }
  65. echo "</div>";
  66. echo "<div class='col-md-9'></div>";
  67. ?>
  68. <?php
  69. $result = null;
  70. $client_id = (int) (isset($_GET["cid"])) ? $_GET["cid"] : ""; // client number
  71. $record_id = (float) (isset($_GET["rid"])) ? $_GET["rid"] : ""; // record number
  72. $rand_id = (float) (isset($_GET["rand"])) ? $_GET["rand"] : "";
  73. $today = date('jS F Y');
  74. //Database connection
  75. //$con = mysqli_connect("localhost", "root", "R3M0T31", "cropmonitor");
  76. $con = mysqli_connect("localhost", "cropmonitor", "brvnCcaEYxlPCS3", "cropmonitor");
  77. // Check connection
  78. if (mysqli_connect_errno()) {
  79. echo "Failed to connect to MySQL: " . mysqli_connect_error();
  80. }
  81. // Get results from database
  82. $result = mysqli_query($con, "SELECT * FROM `soil_records` WHERE `id` = '" . $record_id . "' AND `rand` = '" . $rand_id . "' ");
  83. if ($result === FALSE) {
  84. die(mysqli_error($con)); // TODO: better error handling
  85. echo "User Profile incorrect";
  86. } else {
  87. while ($row = mysqli_fetch_array($result)) {
  88. //TEST
  89. $client = $row['client_name'];
  90. $address = $row['site_address'];
  91. $state = $row['state_postcode'];
  92. $email = $row['email'];
  93. $labNo = $row['lab_no'];
  94. $sampleDate = $row['date_sampled'];
  95. $sample = $row['site_id'];
  96. $crop = $row['sample_id'];
  97. if ($rand_id === NULL) { //if element not tested hide row
  98. } else {
  99. ?>
  100. <table class='title'>
  101. <tbody>
  102. <tr>
  103. <th class='col-20'></th>
  104. <th class='col-20'></th>
  105. <th class='col-20'></th>
  106. <th class='col-20'></th>
  107. <th class='col-20'></th>
  108. </tr>
  109. <tr>
  110. <td class='right'><b>DATE:</b></td>
  111. <td class='left'><?php echo $today; ?></td>
  112. <td></td>
  113. <td class='right'><b>SAMPLE ID:</b></td>
  114. <td class='left'><?php echo $sample; ?></td>
  115. </tr>
  116. <tr>
  117. <td class='right'><b>CLIENT:</b></td>
  118. <td class='left'><?php echo $client; ?></td>
  119. <td></td>
  120. <td class='right'><b>DATE SAMPLED:</b></td>
  121. <td class='left'><?php echo $sampleDate; ?></td>
  122. </tr>
  123. <tr>
  124. <td class='right'><b>ADDRESS:</b></td>
  125. <td class='left'><?php echo $address; ?></td>
  126. <td></td>
  127. <td class='right'><b>LAB NUMBER:</b></td>
  128. <td class='left'><?php echo $labNo; ?></td>
  129. </tr>
  130. <tr>
  131. <td class='right'><b> </b></td>
  132. <td class='left'><?php echo $state; ?></td>
  133. <td></td>
  134. <td class='right'><b>CROP:</b></td>
  135. <td class='left'><?php echo $crop; ?></td>
  136. </tr>
  137. <tr>
  138. <td class='right'><b> </b></td>
  139. <td class='left'><?php echo $email; ?></td>
  140. <td></td>
  141. <td class='right'></td>
  142. <td class='left'></td>
  143. </tr>
  144. </tbody>
  145. </table>
  146. <?php
  147. }
  148. }
  149. }
  150. mysqli_close($con);
  151. /*
  152. <div class="row pt-3">
  153. <div class="col-md-2 text-right"><b>DATE:</b></div>
  154. <div class="col-md-3 text-left"><?php echo $today; ?></div>
  155. <div class="col-md-1"></div>
  156. <div class="col-md-3 text-right"><b>SAMPLE ID:</b></div>
  157. <div class="col-md-3 text-left"><?php echo $sample; ?></div>
  158. </div>
  159. <div class="row pt-1">
  160. <div class="col-md-2 text-right"><b>CLIENT:</b></div>
  161. <div class="col-md-3 text-left"><?php echo $client; ?></div>
  162. <div class="col-md-1"></div>
  163. <div class="col-md-3 text-right"><b>DATE SAMPLED:</b></div>
  164. <div class="col-md-3 text-left"><?php echo $sampleDate; ?></div>
  165. </div>
  166. <div class="row pt-1">
  167. <div class="col-md-2 text-right"><b>Address:</b></div>
  168. <div class="col-md-3 text-left"><?php echo $address; ?></div>
  169. <div class="col-md-1"></div>
  170. <div class="col-md-3 text-right"><b>Lab Number:</b></div>
  171. <div class="col-md-3 text-left"><?php echo $labNo; ?></div>
  172. </div>
  173. <div class="row pt-1">
  174. <div class="col-md-2 text-right"><b></b></div>
  175. <div class="col-md-3 text-left"><?php echo $state; ?></div>
  176. <div class="col-md-1"></div>
  177. <div class="col-md-3 text-right"><b>CROP:</b></div>
  178. <div class="col-md-3 text-left"><?php echo $crop; ?></div>
  179. </div>
  180. <div class="row pt-1">
  181. <div class="col-md-2 text-right"><b></b></div>
  182. <div class="col-md-3 text-left"><?php echo $email; ?></div>
  183. <div class="col-md-1"></div>
  184. <div class="col-md-3 text-right"><b></b></div>
  185. <div class="col-md-3 text-left"></div>
  186. </div>
  187. */
  188. ?>
  189. <div class="clearfix"></div>
  190. <!-- Graph Button -->
  191. <div class="pdfHide">
  192. <?php
  193. $sample = (isset($_GET["cid"])) ? $_GET["cid"] : ""; // client number
  194. $insert = (isset($_GET["rid"])) ? $_GET["rid"] : ""; // record number
  195. $rand_id = (isset($_GET["rand"])) ? $_GET["rand"] : ""; // random number for security
  196. $croptype = (isset($_GET["stid"])) ? $_GET["stid"] : "";
  197. $pageid = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
  198. $pageid = basename($pageid,'.html');
  199. $query_string = '[[~41~]]?rand=' . urlencode($rand_id) . '&cid=' . urlencode($sample) . '&rid=' . urlencode($insert) . '&stid=' . urlencode($croptype);
  200. $pdf_string = '[[~66~]]?rand=' . urlencode($rand_id) . '&cid=' . urlencode($sample) . '&rid=' . urlencode($insert) . '&stid=' . urlencode($croptype) . '&pgid=' . urlencode($pageid);
  201. $email_string = '[[~37~]]?rand=' . urlencode($rand_id) . '&cid=' . urlencode($sample) . '&rid=' . urlencode($insert) . '&stid=' . urlencode($croptype);
  202. //echo "<button class='btn btn-primary btn-brown' onclick='window.open(' . htmlentities($query_string) . '); return false;'>Create PDF</button>";
  203. echo "<a href='$query_string' target='_blank'> <input type='button' class='button' value='Analysis Page' /> </a>";
  204. echo "<a href='$pdf_string' target='_blank'> <input type='button' class='button' value='Create PDF' /> </a>";
  205. echo "<a href='$email_string' target='_blank'> <input type='button' class='button' value='Email Analysis' /> </a>";
  206. ?>
  207. </div>
  208. <!-- GRAPH BANNER -->
  209. <div class="nav-wrap">
  210. <div class="graph-header text-center">ANALYSIS RESULTS</div>
  211. </div>
  212. <div class="clearfix"></div>
  213. <hr>
  214. <!-- CHART HEADER -->
  215. <table class="chart">
  216. <tbody>
  217. <tr class="chart-header">
  218. <th colspan=3 class="text-center col-50 border-left border-right border-top">ELEMENT</th>
  219. <th colspan=3 class="text-center col-50 border-right border-top">STATUS</th>
  220. </tr>
  221. <tr class="chart-header-sub">
  222. <th class="text-center col-16 border-left"></th>
  223. <th class="text-center col-16">DESIRED</th>
  224. <th class="text-center col-16">FOUND</th>
  225. <th class="text-center col-16 stripe-1">LIGHT</th>
  226. <th class="text-center col-16 stripe-1">MEDIUM</th>
  227. <th class="text-center col-16 border-right stripe-1">HEAVY</th>
  228. </tr>
  229. <tr>
  230. <td class="border-left"></td>
  231. <td class="border-left"></td>
  232. <td class="border-left nutrient-balance"></td>
  233. <td class="border-left"></td>
  234. <td class="border-left"></td>
  235. <td class="border-left border-right"></td>
  236. </tr>
  237. [[!soilAnalysisCalcs? &element=cec &sbl=`` &nutrient=`CEC` &min=`` &max=`` &graph=lightorangeGraph]]
  238. [[!soilAnalysisCalcs? &element=tec &sbl=`` &nutrient=`TEC` &min=`` &max=`` &graph=lightorangeGraph]]
  239. <tr class="chart-header-sub">
  240. <th class="text-center col-16 border-left white"></th>
  241. <th class="text-center col-16 border-left white"></th>
  242. <th class="text-center col-16 border-left nutrient-balance"></th>
  243. <th class="text-center col-16 border-left stripe-1">DEFICIT</th>
  244. <th class="text-center col-16 stripe-1">IDEAL</th>
  245. <th class="text-center col-16 border-right stripe-1">HIGH</th>
  246. </tr>
  247. [[!soilAnalysisCalcs? &element=ph_h2o &sbl=`` &nutrient=`pH-level (H20)` &min=`` &max=`` &graph=lightorangeGraph]]
  248. [[!soilAnalysisCalcs? &element=ph_cacl2 &sbl=`` &nutrient=`pH-level (CaCl2)` &min=`` &max=`` &graph=lightorangeGraph]]
  249. [[!soilAnalysisCalcs? &element=ocarbon &sbl=`` &nutrient=`Organic Carbon` &min=`` &max=`` &graph=lightorangeGraph]]
  250. [[!soilAnalysisCalcs? &element=omatter &sbl=`` &nutrient=`Organic Matter` &min=`` &max=`` &graph=lightorangeGraph]]
  251. <tr class="chart-header-sub">
  252. <th colspan=3 class="col-16 border-left text-center lightblue">RATIOS</th>
  253. <th class="text-center col-16 stripe-1"></th>
  254. <th class="text-center col-16 stripe-1"></th>
  255. <th class="text-center col-16 border-right stripe-1"></th>
  256. </tr>
  257. [[!soilAnalysisRatio? &element=ca_mehlick3 &elementTwo=mg_mehlick3 &sbl=`` &rec=`ca_mg_ratio` &nutrient=`Ca:Mg Ratio` &min=`` &max=`` &graph=lightblueGraph]]
  258. [[!soilAnalysisCalcs? &element=NH3_N &sbl=`` &nutrient=`Total Nitrogen` &type=`%` &min=`` &max=`` &graph=lightblueGraph]]
  259. [[!soilAnalysisCalcs? &element=ocarbon &sbl=`` &nutrient=`Total Carbon` &type=`%` &min=`` &max=`` &graph=lightblueGraph]]
  260. [[!soilAnalysisRatio? &element=ocarbon &elementTwo=NO3_N &sbl=`` &rec=`c_n_ratio` &nutrient=`C:N Ratio` &min=`` &max=`` &graph=lightblueGraph]]
  261. <tr class="chart-header-sub">
  262. <th colspan=3 class="col-16 border-left text-center lightgreen">MAJOR ELEMENTS</th>
  263. <th class="text-center col-16 stripe-1"></th>
  264. <th class="text-center col-16 stripe-1"></th>
  265. <th class="text-center col-16 border-right stripe-1"></th>
  266. </tr>
  267. [[!soilAnalysisCalcs? &element=NO3_N &sbl=`No3` &nutrient=`Nitrate Nitrogen` &min=`` &max=`` &type=ppm &graph=lightgreenGraph]]
  268. [[!soilAnalysisCalcs? &element=NH3_N &sbl=`Nh3` &nutrient=`Ammonium Nitrogen` &min=`` &max=`` &min=`` &max=`` &type=ppm &graph=lightgreenGraph]]
  269. [[!soilAnalysisCalcs? &element=p_mehlick &sbl=`P` &nutrient=`Phosphorus (mehlick III)` &min=`` &max=`` &type=ppm &graph=lightgreenGraph]]
  270. [[!soilAnalysisCalcs? &element=p_bray2 &sbl=`P` &nutrient=`Phosphorus <br>(Bray 2)` &min=`` &max=`` &type=ppm &graph=lightgreenGraph]]
  271. [[!soilAnalysisCalcs? &element=p_morgan &sbl=`P` &nutrient=`Phosphate <br>(morgan)` &min=`` &max=`` &type=ppm &graph=lightgreenGraph]]
  272. [[!soilAnalysisCalcs? &element=p_colwell &sbl=`P` &nutrient=`Phosphate <br>(colwell)` &min=`` &max=`` &type=ppm &graph=lightgreenGraph]]
  273. <tr class="chart-header-sub">
  274. <th colspan=3 class="col-16 border-left text-center lightred">TRACE ELEMENTS</th>
  275. <th class="text-center col-16 stripe-1"></th>
  276. <th class="text-center col-16 stripe-1"></th>
  277. <th class="text-center col-16 border-right stripe-1"></th>
  278. </tr>
  279. [[!soilAnalysisCalcs? &element=s_morgan &sbl=`S` &nutrient=`Sulfur` &min=`` &max=`` &type=ppm &graph=lightredGraph]]
  280. [[!soilAnalysisCalcs? &element=b_cacl2 &sbl=`B` &nutrient=`Boron` &min=`` &max=`` &type=ppm &graph=lightredGraph]]
  281. [[!soilAnalysisCalcs? &element=mn_dtpa &sbl=`Mn` &nutrient=`Manganese` &min=`` &max=`` &type=ppm &graph=lightredGraph]]
  282. [[!soilAnalysisCalcs? &element=cu_dtpa &sbl=`Cu` &nutrient=`Copper` &min=`` &max=`` &type=ppm &graph=lightredGraph]]
  283. [[!soilAnalysisCalcs? &element=zn_dtpa &sbl=`Zn` &nutrient=`Zinc` &min=`` &max=`` &type=ppm &graph=lightredGraph]]
  284. [[!soilAnalysisCalcs? &element=fe_dtpa &sbl=`Ir` &nutrient=`Iron` &min=`` &max=`` &type=ppm &graph=lightredGraph]]
  285. [[!soilAnalysisCalcs? &element=al &sbl=`Al` &nutrient=`Aluminium` &min=`` &max=`` &type=ppm &graph=lightredGraph]]
  286. [[!soilAnalysisCalcs? &element=sl_cacl2 &sbl=`Si` &nutrient=`Silicon` &min=`` &max=`` &type=ppm &graph=lightredGraph]]
  287. <tr class="chart-header-sub">
  288. <th colspan=3 class="col-16 border-left text-center lightpurple">BASE SATURATION</th>
  289. <th class="text-center col-16 stripe-1"></th>
  290. <th class="text-center col-16 stripe-1"></th>
  291. <th class="text-center col-16 border-right stripe-1"></th>
  292. </tr>
  293. [[!soilAnalysisCalcs? &element=`BS_ca2` &sbl=`Ca` &nutrient=`Calcium` &min=`cabs_min` &max=`cabs_max` &type=`%` &graph=lightpurpleGraph]]
  294. [[!soilAnalysisCalcs? &element=`BS_mg2` &sbl=`Mg` &nutrient=`Magnesium` &min=`mgbs_min` &max=`mgbs_max` &type=`%` &graph=lightpurpleGraph]]
  295. [[!soilAnalysisCalcs? &element=`BS_k` &sbl=`K` &nutrient=`Potassium` &min=`kbs_min` &max=`kbs_max` &type=`%` &graph=lightpurpleGraph]]
  296. [[!soilAnalysisCalcs? &element=`BS_na` &sbl=`Na` &nutrient=`Sodium` &min=`nabs_min` &max=`nabs_max` &type=`%` &graph=lightpurpleGraph]]
  297. [[!soilAnalysisCalcs? &element=`BS_al3` &sbl=`` &nutrient=`Other Bases` &min=`` &max=`` &type=`%` &graph=lightpurpleGraph]]
  298. [[!soilAnalysisCalcs? &element=`BS_h` &sbl=`` &nutrient=`Hydrogen` &min=`` &max=`` &type=`%` &graph=lightpurpleGraph]]
  299. <tr class="chart-header-sub">
  300. <th colspan=3 class="col-16 border-left text-center lightgrey">SOLUBLE MORGAN 2 EXTRACT</th>
  301. <th class="text-center col-16 stripe-1"></th>
  302. <th class="text-center col-16 stripe-1"></th>
  303. <th class="text-center col-16 border-right stripe-1"></th>
  304. </tr>
  305. [[!soilAnalysisCalcs? &element=s_morgan &sbl=`Ca` &nutrient=`Calcium` &min=`` &max=`` &type=`%` &graph=lightgreyGraph]]
  306. [[!soilAnalysisCalcs? &element=b_cacl2 &sbl=`Mg` &nutrient=`Magnesium` &min=`` &max=`` &type=`%` &graph=lightgreyGraph]]
  307. [[!soilAnalysisCalcs? &element=mn_dtpa &sbl=`K` &nutrient=`Potassium` &min=`` &max=`` &type=`%` &graph=lightgreyGraph]]
  308. <tr class="chart-header-sub">
  309. <th colspan=3 class="col-16 border-left text-center lightgrey">ADDITIONAL DATA</th>
  310. <th class="text-center col-16 stripe-1">LOW</th>
  311. <th class="text-center col-16 stripe-1">IDEAL</th>
  312. <th class="text-center col-16 border-right stripe-1">EXCELLENT</th>
  313. </tr>
  314. [[!soilAnalysisCalcs? &element=s_morgan &sbl=`Ca` &nutrient=`Calcium` &min=`` &max=`` &type=`%` &graph=lightgreyGraph]]
  315. <tr>
  316. <td class="border-bottom border-left"></td>
  317. <td class="border-bottom border-left"></td>
  318. <td class="border-bottom border-left nutrient-balance"></td>
  319. <td class="border-bottom border-left"></td>
  320. <td class="border-bottom border-left"></td>
  321. <td class="border-bottom border-left border-right"></td>
  322. </tr>
  323. </tbody>
  324. </table>
  325. <div class="clearfix"></div>
  326. </div>
  327. <!--
  328. <script src="https://cloud.tinymce.com/stable/tinymce.min.js?apiKey=xcotawi18mg1imp8im144buq68h9g3ndd3c9c8215w8qu3ld"></script>
  329. <script>
  330. tinymce.init({
  331. selector: 'textarea',
  332. menubar: false,
  333. toolbar: 'bold italic | alignleft aligncenter alignright alignjustify | bullist numlist | removeformat',
  334. plugins: 'autosave',
  335. autosave_interval: '20s'
  336. });
  337. </script>
  338. -->
  339. <!-- jQuery first, then Popper.js, then Bootstrap JS -->
  340. <script type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
  341. <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
  342. <script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
  343. <script type="text/javascript">
  344. addEventListener("load", function() {
  345. setTimeout(hideURLbar, 0);
  346. }, false);
  347. function hideURLbar(){
  348. window.scrollTo(0,1);
  349. }
  350. </script>
  351. <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js" integrity="sha384-xrRywqdh3PHs8keKZN+8zzc5TX0GRTLCcmivcbNJWm2rs5C8PRhcEn3czEjhAO9o" crossorigin="anonymous"></script>
  352. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.js"></script>
  353. <script src="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/jquery.magnific-popup.js"></script>
  354. <script>
  355. //https://github.com/eKoopmans/html2pdf.js
  356. $('.downloadPDF').click(function () {
  357. var element = document.getElementById('content'); //document.createElement("body");
  358. element.classList.remove('screen');
  359. element.classList.add('print');
  360. var opt = {
  361. margin: 3,
  362. filename: 'soil-analysis.pdf',
  363. image: { type: 'jpeg', quality: 1.0 },
  364. html2canvas: { scale: 2, letterRendering: true, windowWidth: 1024 }, //, windowWidth: 1024
  365. jsPDF: { orientation: 'portrait', unit: 'mm', format: 'a4', putOnlyUsedFonts: true, floatPrecision: 'smart', }
  366. };
  367. html2pdf()
  368. .from(element)
  369. .toPdf()
  370. .set(opt)
  371. .save()
  372. .then(function(){
  373. element.classList.remove('print');
  374. element.classList.add('screen');
  375. });
  376. });
  377. </script>
  378. </body>
  379. </html>