product-list.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  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. <link rel="icon" href="client-assets/images/favicon.ico?v=2" type="image/x-icon"> [[!Profile]]
  12. <script type="text/javascript">
  13. window.dataLayer = window.dataLayer || [];
  14. function gtag() {
  15. dataLayer.push(arguments);
  16. }
  17. gtag('js', new Date());
  18. gtag('set', {
  19. 'user_id': '[[+modx.user.id]]'
  20. }); // Set the user ID using signed-in user_id.
  21. gtag('config', 'UA-133963301-1');
  22. </script>
  23. <link href="https://cdn.jsdelivr.net/npm/simple-datatables@latest/dist/style.css" rel="stylesheet" />
  24. <link href="client-assets/css/dashboard-2021.css" rel="stylesheet" />
  25. <script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/js/all.min.js" crossorigin="anonymous"></script>
  26. <link href="https://cdn.datatables.net/1.10.20/css/dataTables.bootstrap4.min.css" rel="stylesheet" crossorigin="anonymous" />
  27. <script src="client-assets/js/skycons.js"></script>
  28. <style>
  29. .btn-append {
  30. color: #495057;
  31. background-color: #e9ecef;
  32. border: 1px solid #ced4da;
  33. }
  34. .footer {
  35. position: absolute;
  36. bottom: 0;
  37. width: 100%;
  38. height: 60px;
  39. line-height: 60px;
  40. }
  41. </style>
  42. </head>
  43. <body class="sb-nav-fixed" id="page-top">
  44. [[!Personalize?
  45. &yesChunk=`navHeaderLogged`
  46. &noChunk=`navHeader`
  47. &allowedGroups=`basicClients,bacicAdmin,companyClients,companyManagers`
  48. ]]
  49. <div id="layoutSidenav">
  50. <div id="layoutSidenav_nav">
  51. <!-- Sidebar -->
  52. [[Wayfinder?
  53. &startId=`2`
  54. &displayStart=`0`
  55. &startitemTpl=`startitemTpl`
  56. &selfClass=`show`
  57. &level=`2`
  58. &outerTpl=`outer`
  59. &outerClass=`sb-sidenav accordion sb-sidenav-dark`
  60. &rowTpl=`row`
  61. &rowClass=`nav-link`
  62. &parentRowTpl=`parentRow`
  63. &parentClass=`nav-link collapsed`
  64. &innerTpl=`inner`
  65. &innerClass=`collapse`
  66. &innerRowTpl=`secondInner`
  67. &innerRowClass=`nav-link`
  68. ]]
  69. </div>
  70. <div id="layoutSidenav_content">
  71. <main>
  72. <div class="container-fluid px-4">
  73. <h1 class="mt-4">[[*pagetitle]]</h1>
  74. <ol class="breadcrumb mb-4"> [[$dash-breadcrumbs]] </ol>
  75. <div class="row">
  76. <div class="grid-form">
  77. <!---->
  78. <div class="grid-form1">
  79. <h3>Company Product Analysis</h3>
  80. <p>Products used in Soil Analysis recommendation programs.</p>
  81. <div class="tab-content">
  82. <!-- Company Product list here -->
  83. <?php
  84. $result = null;
  85. $modx_user = $modx->user->get('id');
  86. ?>
  87. <table class="table table-bordered">
  88. <tbody>
  89. <tr>
  90. <th class='col-20'>ID</th>
  91. <th class='col-20'>Product</th>
  92. <th class='col-20'>Chemical</th>
  93. <th class='col-20'>N</th>
  94. <th class='col-20'>P</th>
  95. <th class='col-20'>K</th>
  96. <th class='col-20'>Na</th>
  97. <th class='col-20'>Ca</th>
  98. <th class='col-20'>Mg</th>
  99. <th class='col-20'>B</th>
  100. <th class='col-20'>Zn</th>
  101. <th class='col-20'>Cu</th>
  102. <th class='col-20'>Mn</th>
  103. <th class='col-20'>Fe</th>
  104. <th class='col-20'>Co</th>
  105. <th class='col-20'>Mo</th>
  106. </tr>
  107. <?php
  108. //Database connection
  109. //$con = mysqli_connect("localhost", "root", "R3M0T31", "cropmonitor");
  110. $con = mysqli_connect("localhost", "cropmonitor", "brvnCcaEYxlPCS3", "cropmonitor");
  111. // Check connection
  112. if (mysqli_connect_errno()) {
  113. echo "Failed to connect to MySQL: " . mysqli_connect_error();
  114. }
  115. // Get results from database
  116. $result = mysqli_query($con, "SELECT * FROM `fertiliser_specifications` WHERE `modx_user_id` = " . $modx_user . " ");
  117. //
  118. if ($result === FALSE) {
  119. die(mysqli_error($con)); // TODO: better error handling
  120. echo "User Profile incorrect";
  121. } else {
  122. while ($row = mysqli_fetch_array($result)) {
  123. $id = $row['id'];
  124. $modx_user = $row['modx_user_id'];
  125. ?>
  126. <tr>
  127. <td class='left'><?php echo $row['id']; ?> </td>
  128. <td class='left'><b><?php echo $row['name']; ?></b></td>
  129. <td class='left'><?php echo $row['chemical']; ?></td>
  130. <td contenteditable='true' onBlur="updateDatabase(this,'n','<?php echo $id; ?>')" onClick='showEdit(this);' class='left'><?php echo $row['n']; ?></td>
  131. <td contenteditable='true' onBlur="updateDatabase(this,'p','<?php echo $id; ?>')" onClick='showEdit(this);' class='left'><?php echo $row['p']; ?></td>
  132. <td contenteditable='true' onBlur="updateDatabase(this,'k','<?php echo $id; ?>')" onClick='showEdit(this);' class='left'><?php echo $row['k']; ?></td>
  133. <td contenteditable='true' onBlur="updateDatabase(this,'Na','<?php echo $id; ?>')" onClick='showEdit(this);' class='left'><?php echo $row['Na']; ?></td>
  134. <td contenteditable='true' onBlur="updateDatabase(this,'Ca','<?php echo $id; ?>')" onClick='showEdit(this);' class='left'><?php echo $row['Ca']; ?></td>
  135. <td contenteditable='true' onBlur="updateDatabase(this,'Mg','<?php echo $id; ?>')" onClick='showEdit(this);' class='left'><?php echo $row['Mg']; ?></td>
  136. <td contenteditable='true' onBlur="updateDatabase(this,'B','<?php echo $id; ?>')" onClick='showEdit(this);' class='left'><?php echo $row['B']; ?></td>
  137. <td contenteditable='true' onBlur="updateDatabase(this,'Zn','<?php echo $id; ?>')" onClick='showEdit(this);' class='left'><?php echo $row['Zn']; ?></td>
  138. <td contenteditable='true' onBlur="updateDatabase(this,'Cu','<?php echo $id; ?>')" onClick='showEdit(this);' class='left'><?php echo $row['Cu']; ?></td>
  139. <td contenteditable='true' onBlur="updateDatabase(this,'Mn','<?php echo $id; ?>')" onClick='showEdit(this);' class='left'><?php echo $row['Mn']; ?></td>
  140. <td contenteditable='true' onBlur="updateDatabase(this,'Fe','<?php echo $id; ?>')" onClick='showEdit(this);' class='left'><?php echo $row['Fe']; ?></td>
  141. <td contenteditable='true' onBlur="updateDatabase(this,'Co','<?php echo $id; ?>')" onClick='showEdit(this);' class='left'><?php echo $row['Co']; ?></td>
  142. <td contenteditable='true' onBlur="updateDatabase(this,'Mo','<?php echo $id; ?>')" onClick='showEdit(this);' class='left'><?php echo $row['Mo']; ?></td>
  143. </tr>
  144. <?php
  145. }
  146. }
  147. mysqli_close($con);
  148. ?>
  149. </tbody>
  150. </table>
  151. <script type="text/javascript">
  152. function showEdit(editableObj) {
  153. $(editableObj).css("background", "#97e499");
  154. }
  155. function updateDatabase(editableObj, column, id) {
  156. $(editableObj).css("background", "#FDFDFD");
  157. $.ajax({
  158. url: "[[~57]]",
  159. type: "POST",
  160. data: 'column=' + column + '&editval=' + editableObj.innerHTML + '&id=' + id,
  161. success: function (data) {
  162. $(editableObj).css("background", "white");
  163. }
  164. });
  165. }
  166. </script>
  167. ?>
  168. </div>
  169. </div>
  170. <div class="bs-example2 bs-example-padded-bottom">
  171. <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  172. Add Product
  173. </button>
  174. <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: none;">
  175. <div class="modal-dialog">
  176. <div class="modal-content">
  177. <div class="modal-header">
  178. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  179. <h2 class="modal-title">Add New Product</h2>
  180. </div>
  181. <div class="modal-body">
  182. <form method="post" action="" id="newClientDetails" >
  183. <div class="grid-form">
  184. <input type="hidden" class="form-control" name="m_user" id="m_user" value="[[+modx.user.id]]" required>
  185. <input type="hidden" class="form-control" name="modx_user_attributes" id="modx_user_attributes" value="[[+modx.user.id]]" required>
  186. <div class="form-horizontal">
  187. <div class="form-group">
  188. <label class="sr-only" for="name">Product:</label>
  189. <input type="text" class="form-control" name="name" placeholder="Product Name" id="name" required >
  190. </div>
  191. <div class="form-group">
  192. <label class="sr-only" for="chemical">Chemical Symbol:</label>
  193. <input type="text" class="form-control" name="chemical" placeholder="Chemical" id="chemical" >
  194. </div>
  195. </div>
  196. <div class="form-horizontal">
  197. <div class="form-group">
  198. <label class="sr-only" for="N">Nitrogen - N</label>
  199. <input type="email" class="form-control" name="N" placeholder="Nitrogen" required id="N" >
  200. </div>
  201. <div class="form-group">
  202. <label class="sr-only" for="P">Phosphorus - P</label>
  203. <input type="text" class="form-control" name="P" placeholder="Phosphorus" id="P" >
  204. </div>
  205. </div>
  206. <div class="form-horizontal">
  207. <div class="form-group">
  208. <label class="sr-only" for="k">Postassium - K</label>
  209. <input type="text" class="form-control" name="K" placeholder="Postassium" id="K" >
  210. </div>
  211. <div class="form-group">
  212. <label class="sr-only" for="Na">Sodium - Na</label>
  213. <input type="text" class="form-control" name="Na" placeholder="Sodium" id="Na" >
  214. </div>
  215. </div>
  216. <div class="form-horizontal">
  217. <div class="form-group">
  218. <label class="sr-only"for="Ca">Calcium - Ca</label>
  219. <input type="text" class="form-control" name="Ca" placeholder="Calcium" required id="Ca" >
  220. </div>
  221. <div class="form-group">
  222. <label class="sr-only" for="Mn">Magnesium - Mg</label>
  223. <input type="text" class="form-control" name="Mg" placeholder="Magnesium" required id="Mg" >
  224. </div>
  225. </div>
  226. <div class="form-horizontal">
  227. <div class="form-group">
  228. <label class="sr-only" for="B">Boron - B</label>
  229. <input type="text" class="form-control" name="B" placeholder="Boron" id="B" >
  230. </div>
  231. <div class="form-group">
  232. <label class="sr-only" for="Zn">Zinc - Zn</label>
  233. <input type="text" class="form-control" name="Zn" placeholder="Zinc" id="Zn" >
  234. </div>
  235. </div>
  236. <div class="form-horizontal">
  237. <div class="form-group">
  238. <label class="sr-only" for="Cu">Copper - Cu</label>
  239. <input type="text" class="form-control" name="Cu" placeholder="Copper" id="Cu" >
  240. </div>
  241. <div class="form-group">
  242. <label class="sr-only" for="Mn">Manganese - Mn</label>
  243. <input type="text" class="form-control" name="Mn" placeholder="Manganese" id="Mn" >
  244. </div>
  245. </div>
  246. <div class="form-horizontal">
  247. <div class="form-group">
  248. <label class="sr-only" for="Fe">Iron - Fe</label>
  249. <input type="text" class="form-control" name="Fe" placeholder="Iron" id="Fe" >
  250. </div>
  251. <div class="form-group">
  252. <label class="sr-only" for="Co">Colbalt - Co</label>
  253. <input type="text" class="form-control" name="Co" placeholder="Colbalt" id="Co" >
  254. </div>
  255. </div>
  256. <div class="form-horizontal">
  257. <div class="form-group">
  258. <label class="sr-only" for="M0">Molybdenum - Mo</label>
  259. <input type="text" class="form-control" name="Mo" placeholder="Molybdenum" id="Mo" >
  260. </div>
  261. </div>
  262. </div>
  263. </form>
  264. </div>
  265. <div class="modal-footer">
  266. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  267. <button type="button" class="btn btn-primary">Save changes</button>
  268. </div>
  269. </div><!-- /.modal-content -->
  270. </div><!-- /.modal-dialog -->
  271. </div>
  272. </div>
  273. </div>
  274. </div>
  275. </div>
  276. </main>
  277. <footer class="py-4 bg-light mt-auto">
  278. <div class="container-fluid px-4">
  279. <div class="d-flex align-items-center justify-content-between small">
  280. <div class="text-muted">[[SimpleCopyright? &startYear=`2003`]]. All Rights Reserved <a href="[[~1]]"></a></div>
  281. <div>
  282. <a href="[[~39~]]">Privacy Policy</a>
  283. &middot;
  284. <a href="[[~39~]]">Terms &amp; Conditions</a>
  285. </div>
  286. </div>
  287. </div>
  288. </footer>
  289. </div>
  290. </div>
  291. <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
  292. <script>
  293. /*!
  294. * Start Bootstrap - SB Admin v7.0.3 (https://startbootstrap.com/template/sb-admin)
  295. * Copyright 2013-2021 Start Bootstrap
  296. * Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-sb-admin/blob/master/LICENSE)
  297. */
  298. //
  299. // Scripts
  300. //
  301. window.addEventListener('DOMContentLoaded', event => {
  302. // Toggle the side navigation
  303. const sidebarToggle = document.body.querySelector('#sidebarToggle');
  304. if (sidebarToggle) {
  305. // Uncomment Below to persist sidebar toggle between refreshes
  306. // if (localStorage.getItem('sb|sidebar-toggle') === 'true') {
  307. // document.body.classList.toggle('sb-sidenav-toggled');
  308. // }
  309. sidebarToggle.addEventListener('click', event => {
  310. event.preventDefault();
  311. document.body.classList.toggle('sb-sidenav-toggled');
  312. localStorage.setItem('sb|sidebar-toggle', document.body.classList.contains('sb-sidenav-toggled'));
  313. });
  314. }
  315. });
  316. </script>
  317. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js" crossorigin="anonymous"></script>
  318. <script src="https://cdn.jsdelivr.net/npm/simple-datatables@latest" crossorigin="anonymous"></script>
  319. </body>
  320. </html>