From c6805fec042ac60faf9eaa159a04f0d03c09fb0b Mon Sep 17 00:00:00 2001 From: elserj Date: Tue, 14 Jan 2014 00:42:25 +0000 Subject: [PATCH] Restore messed up commit of inventory svn path=/; revision=521 --- inventory_web/' | 79 +++ inventory_web/InventoryTracker.php | 179 +++++++ inventory_web/create_user_script.php | 53 ++ inventory_web/dataTables.css | 501 +++++++++++++++++++ inventory_web/dataTables.js | 141 ++++++ inventory_web/edit_item.php | 108 ++++ inventory_web/images/background_grey.jpg | Bin 0 -> 57909 bytes inventory_web/images/cal.gif | Bin 0 -> 127 bytes inventory_web/images/calendar_background.jpg | Bin 0 -> 4945 bytes inventory_web/jquery.ui.selectmenu.css | 27 + inventory_web/lab_inventory.php | 59 +++ inventory_web/login_page.php | 109 ++++ inventory_web/note.php | 68 +++ inventory_web/print_qr.php | 73 +++ inventory_web/search_results.php | 159 ++++++ inventory_web/style.css | 78 +++ inventory_web/temp_search.php | 234 +++++++++ inventory_web/tmp-images/.gitignore | 0 inventory_web/to_database.php | 217 ++++++++ inventory_web/view_notes.php | 97 ++++ 20 files changed, 2182 insertions(+) create mode 100644 inventory_web/' create mode 100644 inventory_web/InventoryTracker.php create mode 100644 inventory_web/create_user_script.php create mode 100644 inventory_web/dataTables.css create mode 100644 inventory_web/dataTables.js create mode 100644 inventory_web/edit_item.php create mode 100644 inventory_web/images/background_grey.jpg create mode 100644 inventory_web/images/cal.gif create mode 100644 inventory_web/images/calendar_background.jpg create mode 100644 inventory_web/jquery.ui.selectmenu.css create mode 100644 inventory_web/lab_inventory.php create mode 100644 inventory_web/login_page.php create mode 100644 inventory_web/note.php create mode 100644 inventory_web/print_qr.php create mode 100644 inventory_web/search_results.php create mode 100644 inventory_web/style.css create mode 100644 inventory_web/temp_search.php create mode 100644 inventory_web/tmp-images/.gitignore create mode 100644 inventory_web/to_database.php create mode 100644 inventory_web/view_notes.php diff --git a/inventory_web/' b/inventory_web/' new file mode 100644 index 0000000..db04053 --- /dev/null +++ b/inventory_web/' @@ -0,0 +1,79 @@ +body{ + font-family:"Arial Black", Gadget, sans-serif; + background-color:EBFFFA; +} + +.optional{ + border:none; +} + +.required{ + background-color:A62000; + color:000000; + font-weight:900; +} + +.header{ + border:none; + background-color:A6A6A6; + box-shadow: inset 0 3px 3px 0 rgba(255, 255, 255, 0.32); + font-size:15; + white-space:nowrap; +} + +.spacer { + border:none; +} + +tr.no-border-row td { + border:none; +} + +td { + height:50; + border-radius:5px; + vertical-align:middle; +} + +#logindiv { + width:500px; + background-color:919191; + margin:0 auto; + -moz-border-radius: 15px; + border-radius: 15px; +} + +textarea.rounded { + border: 1px solid #ccc; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + -moz-box-shadow: 2px 2px 3px #666; + -webkit-box-shadow: 2px 2px 3px #666; + box-shadow: 2px 2px 3px #666; + font-size: 20px; + padding: 1px 1px; + outline: 1; + -webkit-appearance: none; +} + +input.rounded { + border: 1px solid #ccc; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + -moz-box-shadow: 2px 2px 3px #666; + -webkit-box-shadow: 2px 2px 3px #666; + box-shadow: 2px 2px 3px #666; + font-size: 20px; + padding: 4px 7px; + outline: 0; + -webkit-appearance: none; +} + +input.rounded:focus { + border-color: #339933; +} + +.required_input { +} diff --git a/inventory_web/InventoryTracker.php b/inventory_web/InventoryTracker.php new file mode 100644 index 0000000..8aac1d7 --- /dev/null +++ b/inventory_web/InventoryTracker.php @@ -0,0 +1,179 @@ + + + + + + + + + + Jaiswal Lab Inventory Tracker + + + + + + + + + + +
+
+

Add Inventory Item

+
+ + + + + + + + + + + + + + + + + + +

ITEM INFORMATION:

NOTES

REQUIRED:Type:Quantity:
OPTIONAL:Price:Collection Date:Expiration
Date:
OPTIONAL:Species:Line:


LOCATION

REQUIRED:Building/Room:
OPTIONAL:Freezer #:Shelf:Cupboard:


CURATOR

REQUIRED:Name:
OPTIONAL:Email:
+
+ + + +

Search Inventory Database

+
+ + + + + + + + + + + + + + +
+Search In: +
From: To:
Or search for most recent entries
+
+
+ + + + + + + + + diff --git a/inventory_web/create_user_script.php b/inventory_web/create_user_script.php new file mode 100644 index 0000000..38416b5 --- /dev/null +++ b/inventory_web/create_user_script.php @@ -0,0 +1,53 @@ + + diff --git a/inventory_web/dataTables.css b/inventory_web/dataTables.css new file mode 100644 index 0000000..ce8045e --- /dev/null +++ b/inventory_web/dataTables.css @@ -0,0 +1,501 @@ +/* + * * File: demo_table_jui.css + * * CVS: $Id$ + * * Description: CSS descriptions for DataTables demo pages + * * Author: Allan Jardine + * * Created: Tue May 12 06:47:22 BST 2009 + * * Modified: $Date$ by $Author$ + * * Language: CSS + * * Project: DataTables + * * + * * Copyright 2009 Allan Jardine. All Rights Reserved. + * * + * * *************************************************************************** + * * DESCRIPTION + * * + * * The styles given here are suitable for the demos that are used with the standard DataTables + * * distribution (see www.datatables.net). You will most likely wish to modify these styles to + * * meet the layout requirements of your site. + * * + * * Common issues: + * * 'full_numbers' pagination - I use an extra selector on the body tag to ensure that there is + * * no conflict between the two pagination types. If you want to use full_numbers pagination + * * ensure that you either have "example_alt_pagination" as a body class name, or better yet, + * * modify that selector. + * * Note that the path used for Images is relative. All images are by default located in + * * ../images/ - relative to this CSS file. + * */ + + +/* + * * jQuery UI specific styling + * */ + +.paging_two_button .ui-button { + float: left; + cursor: pointer; + * cursor: hand; + * } + * + * .paging_full_numbers .ui-button { + * padding: 2px 6px; + * margin: 0; + * cursor: pointer; + * * cursor: hand; + * color: #333 !important; + * } + * + * .dataTables_paginate .ui-button { + * margin-right: -0.1em !important; + * } + * + * .paging_full_numbers { + * width: 350px !important; + * } + * + * .dataTables_wrapper .ui-toolbar { + * padding: 5px; + * } + * + * .dataTables_paginate { + * width: auto; + * } + * + * .dataTables_info { + * padding-top: 3px; + * } + * + * table.display thead th { + * padding: 3px 0px 3px 10px; + * cursor: pointer; + * * cursor: hand; + * } + * + * div.dataTables_wrapper .ui-widget-header { + * font-weight: normal; + * } + * + * + */* + * Sort arrow icon positioning + * */ +table.display thead th div.DataTables_sort_wrapper { + position: relative; + padding-right: 20px; +} + +table.display thead th div.DataTables_sort_wrapper span { + position: absolute; + top: 50%; + margin-top: -8px; + right: 0; +} + + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * * + * * Everything below this line is the same as demo_table.css. This file is + * * required for 'cleanliness' of the markup + * * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * * DataTables features + * */ + +.dataTables_wrapper { + position: relative; + clear: both; +} + +.dataTables_processing { + position: absolute; + top: 0px; + left: 50%; + width: 250px; + margin-left: -125px; + border: 1px solid #ddd; + text-align: center; + color: #999; + font-size: 11px; + padding: 2px 0; +} + +.dataTables_length { + width: 40%; + float: left; +} + +.dataTables_filter { + width: 50%; + float: right; + text-align: right; +} + +.dataTables_info { + width: 50%; + float: left; +} + +.dataTables_paginate { + float: right; + text-align: right; +} + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * * DataTables display + * */ +table.display { + margin: 0 auto; + width: 100%; + clear: both; + border-collapse: collapse; +} + +table.display tfoot th { + padding: 3px 0px 3px 10px; + font-weight: bold; + font-weight: normal; +} + +table.display tr.heading2 td { + border-bottom: 1px solid #aaa; +} + +table.display td { + padding: 3px 10px; +} + +table.display td.center { + text-align: center; +} + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * * DataTables sorting + * */ + +.sorting_asc { + background: url('../images/sort_asc.png') no-repeat center right; +} + +.sorting_desc { + background: url('../images/sort_desc.png') no-repeat center right; +} + +.sorting { + background: url('../images/sort_both.png') no-repeat center right; +} + +.sorting_asc_disabled { + background: url('../images/sort_asc_disabled.png') no-repeat center right; +} + +.sorting_desc_disabled { + background: url('../images/sort_desc_disabled.png') no-repeat center right; +} + + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * * DataTables row classes + * */ +table.display tr.odd.gradeA { + background-color: #ddffdd; +} + +table.display tr.even.gradeA { + background-color: #eeffee; +} + + + + +table.display tr.odd.gradeA { + background-color: #ddffdd; +} + +table.display tr.even.gradeA { + background-color: #eeffee; +} + +table.display tr.odd.gradeC { + background-color: #ddddff; +} + +table.display tr.even.gradeC { + background-color: #eeeeff; +} + +table.display tr.odd.gradeX { + background-color: #ffdddd; +} + +table.display tr.even.gradeX { + background-color: #ffeeee; +} + +table.display tr.odd.gradeU { + background-color: #ddd; +} + +table.display tr.even.gradeU { + background-color: #eee; +} + + +tr.odd { + background-color: #E2E4FF; +} + +tr.even { + background-color: white; +} + + + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * * Misc + * */ +.dataTables_scroll { + clear: both; +} + +.dataTables_scrollBody { + -webkit-overflow-scrolling: touch; +} + +.top, .bottom { + padding: 15px; + background-color: #F5F5F5; + border: 1px solid #CCCCCC; +} + +.top .dataTables_info { + float: none; +} + +.clear { + clear: both; +} + +.dataTables_empty { + text-align: center; +} + +tfoot input { + margin: 0.5em 0; + width: 100%; + color: #444; +} + +tfoot input.search_init { + color: #999; +} + +td.group { + background-color: #d1cfd0; + border-bottom: 2px solid #A19B9E; + border-top: 2px solid #A19B9E; +} + +td.details { + background-color: #d1cfd0; + border: 2px solid #A19B9E; +} + + +.example_alt_pagination div.dataTables_info { + width: 40%; +} + +.paging_full_numbers a.paginate_button, + .paging_full_numbers a.paginate_active { + border: 1px solid #aaa; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + padding: 2px 5px; + margin: 0 3px; + cursor: pointer; + *cursor: hand; + color: #333 !important; +} + +.paging_full_numbers a.paginate_button { + background-color: #ddd; +} + +.paging_full_numbers a.paginate_button:hover { + background-color: #ccc; + text-decoration: none !important; +} + +.paging_full_numbers a.paginate_active { + background-color: #99B3FF; +} + +table.display tr.even.row_selected td { + background-color: #B0BED9; +} + +table.display tr.odd.row_selected td { + background-color: #9FAFD1; +} + + +/* + * * Sorting classes for columns + * */ +/* For the standard odd/even */ +tr.odd td.sorting_1 { + background-color: #D3D6FF; +} + +tr.odd td.sorting_2 { + background-color: #DADCFF; +} + +tr.odd td.sorting_3 { + background-color: #E0E2FF; +} + +tr.even td.sorting_1 { + background-color: #EAEBFF; +} + +tr.even td.sorting_2 { + background-color: #F2F3FF; +} + +tr.even td.sorting_3 { + background-color: #F9F9FF; +} + + +/* For the Conditional-CSS grading rows */ +/* + * Colour calculations (based off the main row colours) + * Level 1: + * dd > c4 + * ee > d5 + * Level 2: + * dd > d1 + * ee > e2 + * */ +tr.odd.gradeA td.sorting_1 { + background-color: #c4ffc4; +} + +tr.odd.gradeA td.sorting_2 { + background-color: #d1ffd1; +} + +tr.odd.gradeA td.sorting_3 { + background-color: #d1ffd1; +} + +tr.even.gradeA td.sorting_1 { + background-color: #d5ffd5; +} + +tr.even.gradeA td.sorting_2 { + background-color: #e2ffe2; +} + +tr.even.gradeA td.sorting_3 { + background-color: #e2ffe2; +} + +tr.odd.gradeC td.sorting_1 { + background-color: #c4c4ff; +} + +tr.odd.gradeC td.sorting_2 { + background-color: #d1d1ff; +} + +tr.odd.gradeC td.sorting_3 { + background-color: #d1d1ff; +} + +tr.even.gradeC td.sorting_1 { + background-color: #d5d5ff; +} + +tr.even.gradeC td.sorting_2 { + background-color: #e2e2ff; +} + +tr.even.gradeC td.sorting_3 { + background-color: #e2e2ff; +} + +tr.odd.gradeX td.sorting_1 { + background-color: #ffc4c4; +} + +tr.odd.gradeX td.sorting_2 { + background-color: #ffd1d1; +} + +tr.odd.gradeX td.sorting_3 { + background-color: #ffd1d1; +} + +tr.even.gradeX td.sorting_1 { + background-color: #ffd5d5; +} + +tr.even.gradeX td.sorting_2 { + background-color: #ffe2e2; +} + +tr.even.gradeX td.sorting_3 { + background-color: #ffe2e2; +} + +tr.odd.gradeU td.sorting_1 { + background-color: #c4c4c4; +} + +tr.odd.gradeU td.sorting_2 { + background-color: #d1d1d1; +} + +tr.odd.gradeU td.sorting_3 { + background-color: #d1d1d1; +} + +tr.even.gradeU td.sorting_1 { + background-color: #d5d5d5; +} + +tr.even.gradeU td.sorting_2 { + background-color: #e2e2e2; +} + +tr.even.gradeU td.sorting_3 { + background-color: #e2e2e2; +} + + +/* + * * Row highlighting example + * */ +.ex_highlight #example tbody tr.even:hover, #example tbody tr.even td.highlighted { + background-color: #ECFFB3; +} + +.ex_highlight #example tbody tr.odd:hover, #example tbody tr.odd td.highlighted { + background-color: #E6FF99; +} diff --git a/inventory_web/dataTables.js b/inventory_web/dataTables.js new file mode 100644 index 0000000..4e62102 --- /dev/null +++ b/inventory_web/dataTables.js @@ -0,0 +1,141 @@ +/*! DataTables 1.9.4 + * * ©2008-2013 SpryMedia Ltd - datatables.net/license + * */ +(function(X,l,n){var L=function(h){var j=function(e){function o(a,b){var c=j.defaults.columns,d=a.aoColumns.length,c=h.extend({},j.models.oColumn,c,{sSortingClass:a.oClasses.sSortable,sSortingClassJUI:a.oClasses.sSortJUI,nTh:b?b:l.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.oDefaults:d});a.aoColumns.push(c);if(a.aoPreSearchCols[d]===n||null===a.aoPreSearchCols[d])a.aoPreSearchCols[d]=h.extend({},j.models.oSearch);else if(c=a.aoPreSearchCols[d], +c.bRegex===n&&(c.bRegex=!0),c.bSmart===n&&(c.bSmart=!0),c.bCaseInsensitive===n)c.bCaseInsensitive=!0;m(a,d,null)}function m(a,b,c){var d=a.aoColumns[b];c!==n&&null!==c&&(c.mDataProp&&!c.mData&&(c.mData=c.mDataProp),c.sType!==n&&(d.sType=c.sType,d._bAutoType=!1),h.extend(d,c),p(d,c,"sWidth","sWidthOrig"),c.iDataSort!==n&&(d.aDataSort=[c.iDataSort]),p(d,c,"aDataSort"));var i=d.mRender?Q(d.mRender):null,f=Q(d.mData);d.fnGetData=function(a,b){var c=f(a,b);return d.mRender&&b&&""!==b?i(c,b,a):c};d.fnSetData= +L(d.mData);a.oFeatures.bSort||(d.bSortable=!1);!d.bSortable||-1==h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortableNone,d.sSortingClassJUI=""):-1==h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortable,d.sSortingClassJUI=a.oClasses.sSortJUI):-1!=h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortableAsc,d.sSortingClassJUI=a.oClasses.sSortJUIAscAllowed):-1== +h.inArray("asc",d.asSorting)&&-1!=h.inArray("desc",d.asSorting)&&(d.sSortingClass=a.oClasses.sSortableDesc,d.sSortingClassJUI=a.oClasses.sSortJUIDescAllowed)}function k(a){if(!1===a.oFeatures.bAutoWidth)return!1;da(a);for(var b=0,c=a.aoColumns.length;bj[f])d(a.aoColumns.length+j[f],b[i]);else if("string"===typeof j[f]){e=0;for(w=a.aoColumns.length;eb&&a[d]--; -1!=c&&a.splice(c,1)}function S(a,b,c){var d=a.aoColumns[c];return d.fnRender({iDataRow:b,iDataColumn:c,oSettings:a,aData:a.aoData[b]._aData,mDataProp:d.mData},v(a,b,c,"display"))}function ea(a,b){var c=a.aoData[b],d;if(null===c.nTr){c.nTr=l.createElement("tr");c.nTr._DT_RowIndex=b;c._aData.DT_RowId&&(c.nTr.id=c._aData.DT_RowId);c._aData.DT_RowClass&& +(c.nTr.className=c._aData.DT_RowClass);for(var i=0,f=a.aoColumns.length;i=a.fnRecordsDisplay()?0:a.iInitDisplayStart,a.iInitDisplayStart=-1,y(a));if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++;else if(a.oFeatures.bServerSide){if(!a.bDestroying&&!wa(a))return}else a.iDraw++;if(0!==a.aiDisplay.length){var g= +a._iDisplayStart;d=a._iDisplayEnd;a.oFeatures.bServerSide&&(g=0,d=a.aoData.length);for(;g")[0];a.nTable.parentNode.insertBefore(b,a.nTable);a.nTableWrapper=h('
')[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var c=a.nTableWrapper,d=a.sDom.split(""),i,f,g,e,w,o,k,m=0;m")[0];w=d[m+ +1];if("'"==w||'"'==w){o="";for(k=2;d[m+k]!=w;)o+=d[m+k],k++;"H"==o?o=a.oClasses.sJUIHeader:"F"==o&&(o=a.oClasses.sJUIFooter);-1!=o.indexOf(".")?(w=o.split("."),e.id=w[0].substr(1,w[0].length-1),e.className=w[1]):"#"==o.charAt(0)?e.id=o.substr(1,o.length-1):e.className=o;m+=k}c.appendChild(e);c=e}else if(">"==g)c=c.parentNode;else if("l"==g&&a.oFeatures.bPaginate&&a.oFeatures.bLengthChange)i=ya(a),f=1;else if("f"==g&&a.oFeatures.bFilter)i=za(a),f=1;else if("r"==g&&a.oFeatures.bProcessing)i=Aa(a),f= +1;else if("t"==g)i=Ba(a),f=1;else if("i"==g&&a.oFeatures.bInfo)i=Ca(a),f=1;else if("p"==g&&a.oFeatures.bPaginate)i=Da(a),f=1;else if(0!==j.ext.aoFeatures.length){e=j.ext.aoFeatures;k=0;for(w=e.length;k'):""===c?'':c+' ',d=l.createElement("div");d.className=a.oClasses.sFilter;d.innerHTML="";a.aanFeatures.f||(d.id=a.sTableId+"_filter");c=h('input[type="text"]',d);d._DT_Input=c[0];c.val(b.sSearch.replace('"',"""));c.bind("keyup.DT",function(){for(var c=a.aanFeatures.f,d=this.value===""?"":this.value, +g=0,e=c.length;g=b.length)a.aiDisplay.splice(0,a.aiDisplay.length),a.aiDisplay=a.aiDisplayMaster.slice();else if(a.aiDisplay.length==a.aiDisplayMaster.length||i.sSearch.length>b.length||1==c||0!==b.indexOf(i.sSearch)){a.aiDisplay.splice(0, +a.aiDisplay.length);la(a,1);for(b=0;b").html(c).text()); +return c.replace(/[\n\r]/g," ")}function ma(a,b,c,d){if(c)return a=b?a.split(" "):oa(a).split(" "),a="^(?=.*?"+a.join(")(?=.*?")+").*$",RegExp(a,d?"i":"");a=b?a:oa(a);return RegExp(a,d?"i":"")}function Ja(a,b){return"function"===typeof j.ext.ofnSearch[b]?j.ext.ofnSearch[b](a):null===a?"":"html"==b?a.replace(/[\r\n]/g," ").replace(/<.*?>/g,""):"string"===typeof a?a.replace(/[\r\n]/g," "):a}function oa(a){return a.replace(RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"), +"\\$1")}function Ca(a){var b=l.createElement("div");b.className=a.oClasses.sInfo;a.aanFeatures.i||(a.aoDrawCallback.push({fn:Ka,sName:"information"}),b.id=a.sTableId+"_info");a.nTable.setAttribute("aria-describedby",a.sTableId+"_info");return b}function Ka(a){if(a.oFeatures.bInfo&&0!==a.aanFeatures.i.length){var b=a.oLanguage,c=a._iDisplayStart+1,d=a.fnDisplayEnd(),i=a.fnRecordsTotal(),f=a.fnRecordsDisplay(),g;g=0===f?b.sInfoEmpty:b.sInfo;f!=i&&(g+=" "+b.sInfoFiltered);g+=b.sInfoPostFix;g=ja(a,g); +null!==b.fnInfoCallback&&(g=b.fnInfoCallback.call(a.oInstance,a,c,d,i,f,g));a=a.aanFeatures.i;b=0;for(c=a.length;b",c,d,i=a.aLengthMenu;if(2==i.length&&"object"===typeof i[0]&&"object"===typeof i[1]){c=0;for(d=i[0].length;c'+i[1][c]+""}else{c=0;for(d=i.length;c'+i[c]+""}b+="";i=l.createElement("div");a.aanFeatures.l|| +(i.id=a.sTableId+"_length");i.className=a.oClasses.sLength;i.innerHTML="";h('select option[value="'+a._iDisplayLength+'"]',i).attr("selected",!0);h("select",i).bind("change.DT",function(){var b=h(this).val(),i=a.aanFeatures.l;c=0;for(d=i.length;ca.aiDisplay.length||-1==a._iDisplayLength?a.aiDisplay.length:a._iDisplayStart+a._iDisplayLength}function Da(a){if(a.oScroll.bInfinite)return null;var b=l.createElement("div");b.className=a.oClasses.sPaging+a.sPaginationType;j.ext.oPagination[a.sPaginationType].fnInit(a, +b,function(a){y(a);x(a)});a.aanFeatures.p||a.aoDrawCallback.push({fn:function(a){j.ext.oPagination[a.sPaginationType].fnUpdate(a,function(a){y(a);x(a)})},sName:"pagination"});return b}function qa(a,b){var c=a._iDisplayStart;if("number"===typeof b)a._iDisplayStart=b*a._iDisplayLength,a._iDisplayStart>a.fnRecordsDisplay()&&(a._iDisplayStart=0);else if("first"==b)a._iDisplayStart=0;else if("previous"==b)a._iDisplayStart=0<=a._iDisplayLength?a._iDisplayStart-a._iDisplayLength:0,0>a._iDisplayStart&&(a._iDisplayStart= +0);else if("next"==b)0<=a._iDisplayLength?a._iDisplayStart+a._iDisplayLengthh(a.nTable).height()-a.oScroll.iLoadGap&&a.fnDisplayEnd()d.offsetHeight||"scroll"==h(d).css("overflow-y")))a.nTable.style.width=q(h(a.nTable).outerWidth()-a.oScroll.iBarWidth)}else""!==a.oScroll.sXInner?a.nTable.style.width= +q(a.oScroll.sXInner):i==h(d).width()&&h(d).height()i-a.oScroll.iBarWidth&&(a.nTable.style.width=q(i))):a.nTable.style.width=q(i);i=h(a.nTable).outerWidth();C(s,e);C(function(a){p.push(q(h(a).width()))},e);C(function(a,b){a.style.width=p[b]},g);h(e).height(0);null!==a.nTFoot&&(C(s,j),C(function(a){n.push(q(h(a).width()))},j),C(function(a,b){a.style.width=n[b]},o),h(j).height(0));C(function(a,b){a.innerHTML= +"";a.style.width=p[b]},e);null!==a.nTFoot&&C(function(a,b){a.innerHTML="";a.style.width=n[b]},j);if(h(a.nTable).outerWidth()d.offsetHeight||"scroll"==h(d).css("overflow-y")?i+a.oScroll.iBarWidth:i;if(r&&(d.scrollHeight>d.offsetHeight||"scroll"==h(d).css("overflow-y")))a.nTable.style.width=q(g-a.oScroll.iBarWidth);d.style.width=q(g);a.nScrollHead.style.width=q(g);null!==a.nTFoot&&(a.nScrollFoot.style.width=q(g));""===a.oScroll.sX?D(a,1,"The table cannot fit into the current element which will cause column misalignment. The table has been drawn at its minimum possible width."): +""!==a.oScroll.sXInner&&D(a,1,"The table cannot fit into the current element which will cause column misalignment. Increase the sScrollXInner value or remove it to allow automatic calculation")}else d.style.width=q("100%"),a.nScrollHead.style.width=q("100%"),null!==a.nTFoot&&(a.nScrollFoot.style.width=q("100%"));""===a.oScroll.sY&&r&&(d.style.height=q(a.nTable.offsetHeight+a.oScroll.iBarWidth));""!==a.oScroll.sY&&a.oScroll.bCollapse&&(d.style.height=q(a.oScroll.sY),r=""!==a.oScroll.sX&&a.nTable.offsetWidth> +d.offsetWidth?a.oScroll.iBarWidth:0,a.nTable.offsetHeightd.clientHeight||"scroll"==h(d).css("overflow-y");b.style.paddingRight=c?a.oScroll.iBarWidth+"px":"0px";null!==a.nTFoot&&(R.style.width=q(r),l.style.width=q(r),l.style.paddingRight=c?a.oScroll.iBarWidth+"px":"0px");h(d).scroll();if(a.bSorted||a.bFiltered)d.scrollTop=0}function C(a,b,c){for(var d= +0,i=0,f=b.length,g,e;itd",b));j=N(a,f);for(f=d=0;fc)return null;if(null===a.aoData[c].nTr){var d=l.createElement("td");d.innerHTML=v(a,c,b,"");return d}return J(a,c)[b]}function Pa(a,b){for(var c=-1,d=-1,i=0;i/g,"");e.length>c&&(c=e.length,d=i)}return d}function q(a){if(null===a)return"0px";if("number"==typeof a)return 0>a?"0px":a+"px";var b=a.charCodeAt(a.length-1); +return 48>b||57/g,""),i=q[c].nTh,i.removeAttribute("aria-sort"),i.removeAttribute("aria-label"),q[c].bSortable?0d&&d++;f=RegExp(f+"[123]");var o;b=0;for(c=a.length;b
')[0];l.body.appendChild(b);a.oBrowser.bScrollOversize= +100===h("#DT_BrowserTest",b)[0].offsetWidth?!0:!1;l.body.removeChild(b)}function Va(a){return function(){var b=[s(this[j.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return j.ext.oApi[a].apply(this,b)}}var U=/\[.*?\]$/,Wa=X.JSON?JSON.stringify:function(a){var b=typeof a;if("object"!==b||null===a)return"string"===b&&(a='"'+a+'"'),a+"";var c,d,e=[],f=h.isArray(a);for(c in a)d=a[c],b=typeof d,"string"===b?d='"'+d+'"':"object"===b&&null!==d&&(d=Wa(d)),e.push((f?"":'"'+c+'":')+d);return(f? +"[":"{")+e+(f?"]":"}")};this.$=function(a,b){var c,d,e=[],f;d=s(this[j.ext.iApiIndex]);var g=d.aoData,o=d.aiDisplay,k=d.aiDisplayMaster;b||(b={});b=h.extend({},{filter:"none",order:"current",page:"all"},b);if("current"==b.page){c=d._iDisplayStart;for(d=d.fnDisplayEnd();c=d.fnRecordsDisplay()&&(d._iDisplayStart-=d._iDisplayLength,0>d._iDisplayStart&&(d._iDisplayStart=0));if(c===n||c)y(d),x(d);return g};this.fnDestroy=function(a){var b=s(this[j.ext.iApiIndex]),c=b.nTableWrapper.parentNode,d=b.nTBody,i,f,a=a===n?!1:a;b.bDestroying=!0;A(b,"aoDestroyCallback","destroy",[b]);if(!a){i=0;for(f=b.aoColumns.length;itr>td."+b.oClasses.sRowEmpty,b.nTable).parent().remove();b.nTable!=b.nTHead.parentNode&&(h(b.nTable).children("thead").remove(),b.nTable.appendChild(b.nTHead));b.nTFoot&&b.nTable!=b.nTFoot.parentNode&&(h(b.nTable).children("tfoot").remove(),b.nTable.appendChild(b.nTFoot));b.nTable.parentNode.removeChild(b.nTable);h(b.nTableWrapper).remove();b.aaSorting=[];b.aaSortingFixed=[];P(b);h(T(b)).removeClass(b.asStripeClasses.join(" "));h("th, td",b.nTHead).removeClass([b.oClasses.sSortable,b.oClasses.sSortableAsc, +b.oClasses.sSortableDesc,b.oClasses.sSortableNone].join(" "));b.bJUI&&(h("th span."+b.oClasses.sSortIcon+", td span."+b.oClasses.sSortIcon,b.nTHead).remove(),h("th, td",b.nTHead).each(function(){var a=h("div."+b.oClasses.sSortJUIWrapper,this),c=a.contents();h(this).append(c);a.remove()}));!a&&b.nTableReinsertBefore?c.insertBefore(b.nTable,b.nTableReinsertBefore):a||c.appendChild(b.nTable);i=0;for(f=b.aoData.length;i=t(d);if(!m)for(e=a;et<"F"ip>')):h.extend(g.oClasses,j.ext.oStdClasses);h(this).addClass(g.oClasses.sTable);if(""!==g.oScroll.sX||""!==g.oScroll.sY)g.oScroll.iBarWidth=Qa();g.iInitDisplayStart===n&&(g.iInitDisplayStart=e.iDisplayStart, +g._iDisplayStart=e.iDisplayStart);e.bStateSave&&(g.oFeatures.bStateSave=!0,Sa(g,e),z(g,"aoDrawCallback",ra,"state_save"));null!==e.iDeferLoading&&(g.bDeferLoading=!0,a=h.isArray(e.iDeferLoading),g._iRecordsDisplay=a?e.iDeferLoading[0]:e.iDeferLoading,g._iRecordsTotal=a?e.iDeferLoading[1]:e.iDeferLoading);null!==e.aaData&&(f=!0);""!==e.oLanguage.sUrl?(g.oLanguage.sUrl=e.oLanguage.sUrl,h.getJSON(g.oLanguage.sUrl,null,function(a){pa(a);h.extend(true,g.oLanguage,e.oLanguage,a);ba(g)}),i=!0):h.extend(!0, +g.oLanguage,e.oLanguage);null===e.asStripeClasses&&(g.asStripeClasses=[g.oClasses.sStripeOdd,g.oClasses.sStripeEven]);b=g.asStripeClasses.length;g.asDestroyStripes=[];if(b){c=!1;d=h(this).children("tbody").children("tr:lt("+b+")");for(a=0;a=g.aoColumns.length&&(g.aaSorting[a][0]=0);var k=g.aoColumns[g.aaSorting[a][0]];g.aaSorting[a][2]===n&&(g.aaSorting[a][2]=0);e.aaSorting===n&&g.saved_aaSorting===n&&(g.aaSorting[a][1]= +k.asSorting[0]);c=0;for(d=k.asSorting.length;c=parseInt(n,10)};j.fnIsDataTable=function(e){for(var h=j.settings,m=0;me)return e;for(var h=e+"",e=h.split(""),j="",h=h.length,k=0;k'+k.sPrevious+''+k.sNext+"":'';h(j).append(k);var l=h("a",j), +k=l[0],l=l[1];e.oApi._fnBindAction(k,{action:"previous"},n);e.oApi._fnBindAction(l,{action:"next"},n);e.aanFeatures.p||(j.id=e.sTableId+"_paginate",k.id=e.sTableId+"_previous",l.id=e.sTableId+"_next",k.setAttribute("aria-controls",e.sTableId),l.setAttribute("aria-controls",e.sTableId))},fnUpdate:function(e){if(e.aanFeatures.p)for(var h=e.oClasses,j=e.aanFeatures.p,k,l=0,n=j.length;l'+k.sFirst+''+k.sPrevious+''+k.sNext+''+k.sLast+"");var t=h("a",j),k=t[0],l=t[1],r=t[2],t=t[3];e.oApi._fnBindAction(k,{action:"first"},n);e.oApi._fnBindAction(l,{action:"previous"},n);e.oApi._fnBindAction(r,{action:"next"},n);e.oApi._fnBindAction(t,{action:"last"},n);e.aanFeatures.p||(j.id=e.sTableId+"_paginate",k.id=e.sTableId+"_first",l.id=e.sTableId+"_previous",r.id=e.sTableId+"_next",t.id=e.sTableId+"_last")}, +fnUpdate:function(e,o){if(e.aanFeatures.p){var m=j.ext.oPagination.iFullNumbersShowPages,k=Math.floor(m/2),l=Math.ceil(e.fnRecordsDisplay()/e._iDisplayLength),n=Math.ceil(e._iDisplayStart/e._iDisplayLength)+1,t="",r,B=e.oClasses,u,M=e.aanFeatures.p,L=function(h){e.oApi._fnBindAction(this,{page:h+r-1},function(h){e.oApi._fnPageChange(e,h.data.page);o(e);h.preventDefault()})};-1===e._iDisplayLength?n=k=r=1:l=l-k?(r=l-m+1,k=l):(r=n-Math.ceil(m/2)+1,k=r+m-1);for(m=r;m<=k;m++)t+= +n!==m?''+e.fnFormatNumber(m)+"":''+e.fnFormatNumber(m)+"";m=0;for(k=M.length;mh?1:0},"string-desc":function(e,h){return eh?-1:0},"html-pre":function(e){return e.replace(/<.*?>/g,"").toLowerCase()},"html-asc":function(e,h){return eh?1:0},"html-desc":function(e,h){return e< +h?1:e>h?-1:0},"date-pre":function(e){e=Date.parse(e);if(isNaN(e)||""===e)e=Date.parse("01/01/1970 00:00:00");return e},"date-asc":function(e,h){return e-h},"date-desc":function(e,h){return h-e},"numeric-pre":function(e){return"-"==e||""===e?0:1*e},"numeric-asc":function(e,h){return e-h},"numeric-desc":function(e,h){return h-e}});h.extend(j.ext.aTypes,[function(e){if("number"===typeof e)return"numeric";if("string"!==typeof e)return null;var h,j=!1;h=e.charAt(0);if(-1=="0123456789-".indexOf(h))return null; +for(var k=1;k")?"html":null}]);h.fn.DataTable=j;h.fn.dataTable=j;h.fn.dataTableSettings=j.settings;h.fn.dataTableExt=j.ext};"function"===typeof define&&define.amd?define(["jquery"],L):jQuery&&!jQuery.fn.dataTable&& +L(jQuery)})(window,document); diff --git a/inventory_web/edit_item.php b/inventory_web/edit_item.php new file mode 100644 index 0000000..0975546 --- /dev/null +++ b/inventory_web/edit_item.php @@ -0,0 +1,108 @@ + + + + + diff --git a/inventory_web/images/background_grey.jpg b/inventory_web/images/background_grey.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5d28ce8adc880842fbf9c3cde513cc284c13c461 GIT binary patch literal 57909 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 doLy(-# + + + + + + diff --git a/inventory_web/login_page.php b/inventory_web/login_page.php new file mode 100644 index 0000000..e3cd846 --- /dev/null +++ b/inventory_web/login_page.php @@ -0,0 +1,109 @@ +Sorry, username and password combination not recognized."; + if($_GET['request']=='app') { + echo "failure"; + $try_login=false; + } else { + $try_login = true; + } + } + +} +if($try_login) { + echo ""; + echo ' + Jaiswal Lab Inventory Tracker + + + + + + + +'; + echo ''; + echo ""; + echo "
"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "
Username:
Password:
"; + echo "
"; + echo ""; +} + + + + + +?> diff --git a/inventory_web/note.php b/inventory_web/note.php new file mode 100644 index 0000000..304db1f --- /dev/null +++ b/inventory_web/note.php @@ -0,0 +1,68 @@ + + + + + + + + +
+Add a note to an existing inventory item: + + + + + + + + +
Item ID:
Name:
Note:
+ +
+ + diff --git a/inventory_web/print_qr.php b/inventory_web/print_qr.php new file mode 100644 index 0000000..5cd430d --- /dev/null +++ b/inventory_web/print_qr.php @@ -0,0 +1,73 @@ + + + + +'; +?> diff --git a/inventory_web/search_results.php b/inventory_web/search_results.php new file mode 100644 index 0000000..897babd --- /dev/null +++ b/inventory_web/search_results.php @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + The following results match your query: "; + echo "\n"; + echo "\n"; + echo ""; + while($row != null) { + echo ""; + $row = mysql_fetch_row($results); + + } + echo ""; + +?> + +Back to Search + + + + + + + diff --git a/inventory_web/style.css b/inventory_web/style.css new file mode 100644 index 0000000..fce415a --- /dev/null +++ b/inventory_web/style.css @@ -0,0 +1,78 @@ +body{ + background-color:EBFFFA; +} + +.optional{ + border:none; +} + +.required{ + background-color:FFAE00; + color:000000; + font-weight:900; +} + +.header{ + border:none; + background-color:A6A6A6; + box-shadow: inset 0 3px 3px 0 rgba(255, 255, 255, 0.32); + font-size:15; + white-space:nowrap; +} + +.spacer { + border:none; +} + +tr.no-border-row td { + border:none; +} + +td { + height:50; + border-radius:5px; + vertical-align:middle; +} + +#logindiv { + width:500px; + background-color:919191; + margin:0 auto; + -moz-border-radius: 15px; + border-radius: 15px; +} + +textarea.rounded { + border: 1px solid #ccc; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + -moz-box-shadow: 2px 2px 3px #666; + -webkit-box-shadow: 2px 2px 3px #666; + box-shadow: 2px 2px 3px #666; + font-size: 20px; + padding: 1px 1px; + outline: 1; + -webkit-appearance: none; +} + +input.rounded { + border: 1px solid #ccc; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + -moz-box-shadow: 2px 2px 3px #666; + -webkit-box-shadow: 2px 2px 3px #666; + box-shadow: 2px 2px 3px #666; + font-size: 20px; + padding: 4px 7px; + outline: 0; + -webkit-appearance: none; +} + +input.rounded:focus { + border-color: #339933; +} + +.required_input { +} diff --git a/inventory_web/temp_search.php b/inventory_web/temp_search.php new file mode 100644 index 0000000..bc0a5d3 --- /dev/null +++ b/inventory_web/temp_search.php @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + +"; + + + echo "
TYPEQUANTITYPRICELINEEXPIRATION DATESPECIESCOLLECTION DATETIMESTAMP
$row[1]$row[2]$row[3]$row[4]$row[5]$row[6]$row[7]$row[8] +
+
+
+
+
+
"; + echo ""; + echo ""; + while($row != null) { + echo ""; + for($i = 1; $i < sizeOf($row); $i++) { + echo ""; + } + echo ""; + echo ""; + $row = mysql_fetch_row($results); + } + echo ""; + echo "
TypeQuantityPriceLineExpiration DateSpeciesCollection DateTimestamp
" . $row[$i] . "See Item
"; + + +} +#search each database for the input parameters +if($_POST['category'] == "all") { + +if(isset($_GET['search'])) $search_param = $_GET['search']; +if(isset($_POST['search'])) $search_param = $_POST['search']; +$some_results = false; +$item_ids; + +mysql_connect("floret.cgrb.oregonstate.edu","lab-inventory-user","lab-inventory-user_pw"); +mysql_select_db("lab_inventory"); +$date_search = ""; +if(isset($_POST['from_date']) && isset($_POST['to_date']) && $_POST['from_date']!="" && $_POST['to_date']!="") { + $date_search = "(time_stamp between '" . $_POST['from_date'] . " 00:00:00' and '" . $_POST['to_date'] . " 23:59:59')"; +} + +#if no search query was entered, then search only by date +$match_against = ""; +if($search_param != "") { + $match_against = "(match(type,line,species) against ('$search_param'))"; +} + +$and = ""; +if($date_search!= "" && $match_against != "") $and = "AND"; + +$query = "select * from item where $match_against $and $date_search"; +$results = mysql_query($query); +$row = mysql_fetch_row($results); +if($row != null) { + $some_results = true; + echo "

Your query matched the following items:

"; + + + echo ""; + echo ""; + echo ""; + while($row != null) { + echo ""; + for($i = 1; $i < sizeOf($row); $i++) { + echo ""; + } + echo ""; + echo ""; + $row = mysql_fetch_row($results); + } + echo ""; + echo "
TypeQuantityPriceLineExpiration DateSpeciesCollection DateTimestamp
" . $row[$i] . "See Item
"; +} + +$query = "select * from notes where match(note,curator) against('$search_param')"; +$results = mysql_query($query); +$row = mysql_fetch_row($results); + +if($row != null) { + $some_results = true; + echo "
Your query matched the following notes:
"; + echo ""; + echo ""; + + while($row != null) { + echo ""; + for($i = 1; $i < sizeOf($row); $i++) { + echo ""; + } + echo ""; + echo ""; + $row = mysql_fetch_row($results); + } + echo "

Note

Curator

Date

" . $row[$i] . "See Item
"; +} + +$query = "select * from meta where match(msds_link,warranty_info,service,manufacturer) against('$search_param')"; +$results = mysql_query($query); +$row = mysql_fetch_row($results); +if($row != null) { + $some_results = true; + echo "
Your query matched the following meta information:
"; + + echo ""; + echo ""; + echo ""; + while($row != null) { + for($i = 1; $i < sizeOf($row); $i++) { + echo $row[$i] . "\t"; + } + echo "See Item"; + echo "
"; + $row = mysql_fetch_row($results); + } + echo ""; + echo "

MSDS Link

Warranty Info

Service

Manufacturer

"; +} +if($some_results==false) { + echo "

Sorry, your query found no results!

"; + +} +} else { + $table; + $param = $_POST['search']; + $additive = ""; + + $category = $_POST['category']; + $curator_categories = array("name","email"); + $location_categories = array("building/room","freezer","shelf","cupboard"); + $item_categories = array("type","quantity","price","collection date","expiration date","species","line"); + if(in_array($category,$item_categories)) { + $table = "item"; + if(isset($_POST['from_date']) && isset($_POST['to_date']) && $_POST['from_date']!="" && $_POST['to_date']!="") { + $additive = "&from_time=" . $_POST['from_date'] . " 00:00:00&to_time=" . $_POST['to_date'] . " 24:59:59"; + } + } elseif(in_array($category,$location_categories)) { + $table = "location"; + } elseif(in_array($category,$curator_categories)) { + $table = "curator"; + } + $url = "search_results.php?table=$table&category=$category¶m=$param" . $additive; + header("Location: $url"); + + +} +?> diff --git a/inventory_web/tmp-images/.gitignore b/inventory_web/tmp-images/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/inventory_web/to_database.php b/inventory_web/to_database.php new file mode 100644 index 0000000..2f9548b --- /dev/null +++ b/inventory_web/to_database.php @@ -0,0 +1,217 @@ + + + + + + + + Item Created + + + + + + + + + + + + + +Submission successful.
Print and tag the item with a qr code:"; + +$rand = FLOOR(10000*RAND()); +echo " "; +echo ""; + +exec('cd;qrencode -o /data/www/Jaiswal-Lab/inventory/tmp-images/qr_code' . $rand . ".png '$qr_code'"); + + + +} else if($_GET['type'] == "note") { + + $database = "lab_inventory"; + $user = "lab-inventory-user"; + $password = "lab-inventory-user_pw"; + $host = "floret.cgrb.oregonstate.local:3306"; + + + $connection=mysql_connect($host,$user,$password); + + mysql_select_db($database); + + $name = $_POST['note_name']; + $note = $_POST['note']; + $id = $_POST['item_id']; + + if($id != null) { + $query = "insert into notes (id,note,curator,date) values ($id,'$note','$name',$date)"; + mysql_query($query); + echo "Thank you for your note submission. Submission was successful, and future queries of this item will have your note attached."; + } else { + echo "Sorry, that is not a valid QR Code. Please rescan the item or double check the code you entered."; + } + +} + + +?> + + + + + + diff --git a/inventory_web/view_notes.php b/inventory_web/view_notes.php new file mode 100644 index 0000000..67433f3 --- /dev/null +++ b/inventory_web/view_notes.php @@ -0,0 +1,97 @@ + + + +"; +echo ""; +while($column_row != null) { + echo "$column_row[0]"; + $column_row = mysql_fetch_row($column_results); +} +echo ""; + +while($row != null) { + + echo ""; + for($i = 1; $i < sizeOf($row);$i ++) { + echo "$row[$i]"; + } + echo ""; + + $row = mysql_fetch_row($results); + +} +echo ""; + + + + + + +?> -- 2.34.1