From 2a4dfcf13753a440a0c60d07b744d20004c64cbe Mon Sep 17 00:00:00 2001 From: Ekunola Ezekiel Date: Wed, 14 Nov 2018 17:46:04 +0100 Subject: [PATCH 1/6] [ft #161954730] created UI for category page --- UI/admin_category.html | 104 ++ UI/admin_dashboard.html | 2 +- UI/css/style.css | 1808 +++++++++++----------- client/admin_category.html | 103 ++ client/admin_create_product.html | 1 + client/admin_create_sales_attendant.html | 1 + client/admin_dashboard.html | 1 + client/admin_edit_product.html | 1 + client/admin_view_attendants.html | 1 + client/admin_view_products.html | 1 + client/admin_view_sales.html | 1 + client/js/middleware.js | 4 +- 12 files changed, 1118 insertions(+), 910 deletions(-) create mode 100644 UI/admin_category.html create mode 100644 client/admin_category.html diff --git a/UI/admin_category.html b/UI/admin_category.html new file mode 100644 index 0000000..8114c8e --- /dev/null +++ b/UI/admin_category.html @@ -0,0 +1,104 @@ + + + + + + + + + Store Manager | Category + + + + + + + + + + + +
+ × +
  • Dashboard
  • +
  • Create Product
  • +
  • View Products
  • +
  • Create Sales Attendant
  • +
  • View Sales
  • +
  • Category
  • +
  • Logout
  • +
    + +
    +
    +
    +
    +
    +

    Create New Category

    +
    +

    Category Name

    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Categories
    Category NameEditDelete
    Fashion
    Electronics
    Gaming
    +
    +
    +
    +
    + + +
    +

    Store Manager Copyright © 2018

    +
    + + + + + \ No newline at end of file diff --git a/UI/admin_dashboard.html b/UI/admin_dashboard.html index 07a0030..758ad23 100644 --- a/UI/admin_dashboard.html +++ b/UI/admin_dashboard.html @@ -43,7 +43,7 @@
  • View Products
  • Create Sales Attendant
  • View Sales
  • -
  • Assign Products
  • +
  • Category
  • Logout
  • diff --git a/UI/css/style.css b/UI/css/style.css index 8df4862..568bdfa 100644 --- a/UI/css/style.css +++ b/UI/css/style.css @@ -7,464 +7,464 @@ */ html { - line-height: 1.15; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ - height: 100%; - margin: 0; - padding: 0; - } - - /* Sections - ========================================================================== */ - - - /** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ - - h1 { - font-size: 2em; - margin: 0.67em 0; - } - - /* Grouping content - ========================================================================== */ - - /** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ - - hr { - box-sizing: content-box; /* 1 */ - height: 0; /* 1 */ - overflow: visible; /* 2 */ - } - - /** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - - pre { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ - } - - /* Text-level semantics - ========================================================================== */ - - /** - * Remove the gray background on active links in IE 10. - */ - - a { - background-color: transparent; - } - - /** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ - - abbr[title] { - border-bottom: none; /* 1 */ - text-decoration: underline; /* 2 */ - text-decoration: underline dotted; /* 2 */ - } - - /** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - - b, - strong { - font-weight: bolder; - } - - /** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - - code, - kbd, - samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ - } - - /** - * Add the correct font size in all browsers. - */ - - small { - font-size: 80%; - } - - /** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ - - sub, - sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; - } - - sub { - bottom: -0.25em; - } - - sup { - top: -0.5em; - } - - - /* Embedded content - ========================================================================== */ - - /** - * Remove the border on images inside links in IE 10. - */ - - img { - border-style: none; - } - - /* Forms - ========================================================================== */ - - /** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ - - button, - input, - optgroup, - select, - textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ - } - - /** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ - - button, - input { /* 1 */ - overflow: visible; - } - - /** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ - - button, - select { /* 1 */ - text-transform: none; - } - - /** - * Correct the inability to style clickable types in iOS and Safari. - */ - - button, - [type="button"], - [type="reset"], - [type="submit"] { - -webkit-appearance: button; - } - - /** - * Remove the inner border and padding in Firefox. - */ - - button::-moz-focus-inner, - [type="button"]::-moz-focus-inner, - [type="reset"]::-moz-focus-inner, - [type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; - } - - /** - * Restore the focus styles unset by the previous rule. - */ - - button:-moz-focusring, - [type="button"]:-moz-focusring, - [type="reset"]:-moz-focusring, - [type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; - } - - /** - * Correct the padding in Firefox. - */ - - fieldset { - padding: 0.35em 0.75em 0.625em; - } - - /** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ - - legend { - box-sizing: border-box; /* 1 */ - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - padding: 0; /* 3 */ - white-space: normal; /* 1 */ - } - - /** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - - progress { - vertical-align: baseline; - } - - /** - * Remove the default vertical scrollbar in IE 10+. - */ - - textarea { - overflow: auto; - } - - /** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ - - [type="checkbox"], - [type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ - } - - /** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ - - [type="number"]::-webkit-inner-spin-button, - [type="number"]::-webkit-outer-spin-button { - height: auto; - } - - /** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ - - [type="search"] { - -webkit-appearance: textfield; /* 1 */ - outline-offset: -2px; /* 2 */ - } - - /** - * Remove the inner padding in Chrome and Safari on macOS. - */ - - [type="search"]::-webkit-search-decoration { - -webkit-appearance: none; - } - - /** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ - - ::-webkit-file-upload-button { - -webkit-appearance: button; /* 1 */ - font: inherit; /* 2 */ - } - - /* Interactive - ========================================================================== */ - - /* - * Add the correct display in Edge, IE 10+, and Firefox. - */ - - details { - display: block; - } - - /* - * Add the correct display in all browsers. - */ - - summary { - display: list-item; - } - - /* Misc - ========================================================================== */ - - /** - * Add the correct display in IE 10+. - */ - - template { - display: none; - } - - /** - * Add the correct display in IE 10. - */ - - [hidden] { - display: none; - } + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + height: 100%; + margin: 0; + padding: 0; +} + +/* Sections + ========================================================================== */ +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ -@font-face { - font-family: 'k2d_semiboldregular'; - src: url('../fonts/k2d/k2d-webfont.woff2') format('woff2'), - url('../fonts/k2d/k2d-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; } +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} + + + @font-face { - font-family: 'Poiret One'; + font-family: 'k2d_semiboldregular'; + src: url('../fonts/k2d/k2d-webfont.woff2') format('woff2'), + url('../fonts/k2d/k2d-webfont.woff') format('woff'); + font-weight: normal; font-style: normal; - font-weight: 400; - src: url('../fonts/poiretOne/poiret-one-v6-latin-regular.eot'); /* IE9 Compat Modes */ - src: local('Poiret One'), local('PoiretOne-Regular'), - url('../fonts/poiretOne/poiret-one-v6-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('../fonts/poiretOne/poiret-one-v6-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ - url('../fonts/poiretOne/poiret-one-v6-latin-regular.woff') format('woff'), /* Modern Browsers */ - url('../fonts/poiretOne/poiret-one-v6-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ - url('../fonts/poiretOne/poiret-one-v6-latin-regular.svg#PoiretOne') format('svg'); /* Legacy iOS */ + +} + +@font-face { +font-family: 'Poiret One'; +font-style: normal; +font-weight: 400; +src: url('../fonts/poiretOne/poiret-one-v6-latin-regular.eot'); /* IE9 Compat Modes */ +src: local('Poiret One'), local('PoiretOne-Regular'), + url('../fonts/poiretOne/poiret-one-v6-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/poiretOne/poiret-one-v6-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/poiretOne/poiret-one-v6-latin-regular.woff') format('woff'), /* Modern Browsers */ + url('../fonts/poiretOne/poiret-one-v6-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/poiretOne/poiret-one-v6-latin-regular.svg#PoiretOne') format('svg'); /* Legacy iOS */ } body{ - font-family: 'k2d_semiboldregular', sans-serif; - font-size: 15px; - line-height: 1.5; - padding: 0; - margin: 0; - background-color: #f4f4f4; - overflow-x: hidden; - height: 100%; - /* min-height: 100%; */ - /* position: relative; */ + font-family: 'k2d_semiboldregular', sans-serif; + font-size: 15px; + line-height: 1.5; + padding: 0; + margin: 0; + background-color: #f4f4f4; + overflow-x: hidden; + height: 100%; + /* min-height: 100%; */ + /* position: relative; */ } /* body { - background-color: #f4f4f4; - overflow-x: hidden; + background-color: #f4f4f4; + overflow-x: hidden; } */ /* Global */ .container{ - width: 100%; - /* margin: 100px; */ - overflow: hidden; +width: 100%; +/* margin: 100px; */ +overflow: hidden; } .text-center{ - text-align:center; +text-align:center; } .topmargin{ - margin-top: 100px; +margin-top: 100px; } .dashboard{ - display: none !important; +display: none !important; } /* Navigation */ nav .highlight, nav .current a{ - color: #0099ff; - font-weight: bold; - font-size: 22px; +color: #0099ff; +font-weight: bold; +font-size: 22px; } nav a:hover{ - color:#cccccc; - font-weight: bold; +color:#cccccc; +font-weight: bold; } #appnameli{ - float: left; +float: left; } #appname{ - font-size: 25px; - margin: 0; - padding: 0; - +font-size: 25px; +margin: 0; +padding: 0; + } #searchimg{ - width: 40px !important; - height: 40px !important; - margin-top: 1.5%; - padding: 0px; - display: block; - float: right; - color: #fff; - background: inherit; - font-size: 28px; +width: 40px !important; +height: 40px !important; +margin-top: 1.5%; +padding: 0px; +display: block; +float: right; +color: #fff; +background: inherit; +font-size: 28px; } #userimg{ - width: 40px; - height: 40px; - margin-top: 0; - padding: 0px; - display: block; - float: right; - color: #fff; - border-radius: 50%; - border: #0099ff 3px solid; +width: 40px; +height: 40px; +margin-top: 0; +padding: 0px; +display: block; +float: right; +color: #fff; +border-radius: 50%; +border: #0099ff 3px solid; } #cartimage{ - width: 40px; - height: 40px; - margin: 0; - padding: 0px; - /* display: block; */ - float: right; - /* background: #fff; */ +width: 40px; +height: 40px; +margin: 0; +padding: 0px; +/* display: block; */ +float: right; +/* background: #fff; */ } .navbar{ - background-color: #1c588a; - overflow: hidden; - height: 63px; - position: fixed; - top: 0; - z-index: 1; - width: 100%; - /* margin-bottom: 500px; */ - border-bottom: #0099ff 3px solid; + background-color: #1c588a; + overflow: hidden; + height: 63px; + position: fixed; + top: 0; + z-index: 1; + width: 100%; + /* margin-bottom: 500px; */ + border-bottom: #0099ff 3px solid; } @@ -473,150 +473,150 @@ float: left; } .navbar a{ - float: right; - /* display: block; */ - color: #f2f2f2; - text-align: center; - padding: 14px 16px; - text-decoration: none; - font-size: 17px; - /* margin-right: 10px; */ + float: right; + /* display: block; */ + color: #f2f2f2; + text-align: center; + padding: 14px 16px; + text-decoration: none; + font-size: 17px; + /* margin-right: 10px; */ } .navbar ul { - margin: 8px 0 0 0; - list-style: none; + margin: 8px 0 0 0; + list-style: none; } /* .navbar a:hover { - background-color: #ddd; - color: black; + background-color: #ddd; + color: black; } */ .search{ - outline: none; - height: 30px; - color: black; - text-align: center; - /* background: #cccccc; */ - border: 2px solid #0099ff; - /* width: 30%; */ - font-size: 16px; +outline: none; + height: 30px; + color: black; + text-align: center; + /* background: #cccccc; */ + border: 2px solid #0099ff; + /* width: 30%; */ + font-size: 16px; } .side-nav{ - height: 100%; - width: 0; - position: fixed; - z-index: 1; - top: 0; - left: 0; - background-color: #111; - opacity: 0.9; - overflow-x: hidden; - padding-top: 60px; - transition: 0.5s; + height: 100%; + width: 0; + position: fixed; + z-index: 1; + top: 0; + left: 0; + background-color: #111; + opacity: 0.9; + overflow-x: hidden; + padding-top: 60px; + transition: 0.5s; } .side-nav a{ - padding: 10px 10px 10px 30px; - text-decoration: none; - font-size: 20px; - color: #ccc; - display: block; - transition: 0.3; - text-align: center; - text-transform: uppercase; + padding: 10px 10px 10px 30px; + text-decoration: none; + font-size: 20px; + color: #ccc; + display: block; + transition: 0.3; + text-align: center; + text-transform: uppercase; } .side-nav .current a{ - color: #0099ff; - font-weight: bold; +color: #0099ff; +font-weight: bold; } .side-nav a:hover{ - color: #fff; - background: #0099ff; + color: #fff; + background: #0099ff; } .side-nav .btn-close{ - position: absolute; - top: 0; - right: 22px; - font-size: 25px; - margin-left: 50px; - background: inherit !important; + position: absolute; + top: 0; + right: 22px; + font-size: 25px; + margin-left: 50px; + background: inherit !important; } .side-nav li{ - list-style: none; +list-style: none; } -#side-menu{ - width: 250px; -} +/* #side-menu{ + width: 250px; +} */ #main{ - transition: margin-left 0.5s; - overflow: hidden; - width: 100%; + transition: margin-left 0.5s; + overflow: hidden; + width: 100%; } /* TopCards */ .topcardsgroup { - display: flex ; - justify-content: space-between; - justify-items: flex-start; - +display: flex ; +justify-content: space-between; +justify-items: flex-start; + } #topcards{ - /* margin: 20px 0 20px 0; */ - margin-top: 100px; +/* margin: 20px 0 20px 0; */ +margin-top: 100px; } .topcardsbox{ - background: linear-gradient(89deg, #4d4dff 0%, #80bfff 100%) !important; - width: 31%; - text-align: center; - margin: 0 auto; - height: 100%; +background: linear-gradient(89deg, #4d4dff 0%, #80bfff 100%) !important; +width: 31%; +text-align: center; +margin: 0 auto; +height: 100%; } .showcasecard{ - padding: 5%; - transition: 0.9s; - -webkit-box-shadow: -1px 2px 7px -1px rgba(0,0,0,0.75); - -moz-box-shadow: -1px 2px 7px -1px rgba(0,0,0,0.75); - box-shadow: -1px 2px 7px -1px rgba(0,0,0,0.75); - box-sizing: border-box; +padding: 5%; +transition: 0.9s; +-webkit-box-shadow: -1px 2px 7px -1px rgba(0,0,0,0.75); +-moz-box-shadow: -1px 2px 7px -1px rgba(0,0,0,0.75); +box-shadow: -1px 2px 7px -1px rgba(0,0,0,0.75); +box-sizing: border-box; } /* Category Filter */ #categoryfiltersection { - margin-top: 100px; - width: 100%; +margin-top: 100px; +width: 100%; } .categoryfiltercontent { - width: 50%; - margin: 0 auto; - display: flex; - justify-content: center; +width: 50%; +margin: 0 auto; +display: flex; +justify-content: center; } .categoryfiltercontent select{ - height: 38px; - margin-right: 2%; - - font-family: 'Poiret One'; - font-weight: 900; +height: 38px; +margin-right: 2%; + +font-family: 'Poiret One'; +font-weight: 900; } /* End of Category Filter */ @@ -626,130 +626,130 @@ float: left; .cardgroup{ - width: 100%; - display: block; - text-align: center; +width: 100%; +display: block; +text-align: center; } .card { - background: #fff; - border-radius: 2px; - display: inline-block; - height: 400px; - margin: 1rem; - position: relative; - width: 300px; - box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); - transition: all 0.3s cubic-bezier(.25,.8,.25,1); +background: #fff; +border-radius: 2px; +display: inline-block; +height: 400px; +margin: 1rem; +position: relative; +width: 300px; +box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); +transition: all 0.3s cubic-bezier(.25,.8,.25,1); } .card:hover { - box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); +box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); } .cardimg{ - width: 300px; - height: 150px; +width: 300px; +height: 150px; } .cardbody{ - margin-bottom: 10px; - background: #ccc; - height: 250px; +margin-bottom: 10px; +background: #ccc; +height: 250px; } .button_1{ - height: 38px; - background: #0099ff; - border: none; - padding-left: 20px; - padding-right: 20px; - color: #ffffff; - cursor: pointer; +height: 38px; +background: #0099ff; +border: none; +padding-left: 20px; +padding-right: 20px; +color: #ffffff; +cursor: pointer; } .button_2{ - height: 38px; - background: red; - border: none; - padding-left: 20px; - padding-right: 20px; - color: #ffffff; - cursor: pointer; +height: 38px; +background: red; +border: none; +padding-left: 20px; +padding-right: 20px; +color: #ffffff; +cursor: pointer; } .button_3{ - height: 38px; - background: green; - border: none; - padding-left: 20px; - padding-right: 20px; - color: #ffffff; - cursor: pointer; +height: 38px; +background: green; +border: none; +padding-left: 20px; +padding-right: 20px; +color: #ffffff; +cursor: pointer; } .button_1 a{ - text-decoration: none; - color: inherit; - background: inherit; - margin: 0; - padding: 0; +text-decoration: none; +color: inherit; +background: inherit; +margin: 0; +padding: 0; } input[type="number"]{ - border: none; - /* border-bottom: 1px solid black; */ - /* background: transparent; */ - outline: none; - height: 30px; - color: black; - text-align: center; - /* background: #cccccc; */ - border: 2px solid #0099ff; - width: 30%; - font-size: 16px; +border: none; +/* border-bottom: 1px solid black; */ +/* background: transparent; */ +outline: none; +height: 30px; +color: black; +text-align: center; +/* background: #cccccc; */ +border: 2px solid #0099ff; +width: 30%; +font-size: 16px; } /* Table Styling */ table { - border: 1px solid #ccc; - border-collapse: collapse; - margin: 0px auto; - padding: 0; - width: 80%; - table-layout: fixed; +border: 1px solid #ccc; +border-collapse: collapse; +margin: 0px auto; +padding: 0; +width: 80%; +table-layout: fixed; } table caption { - font-size: 1.5em; - margin: .5em 0 .75em; +font-size: 1.5em; +margin: .5em 0 .75em; } table tr { - background-color: #f8f8f8; - border: 1px solid #ddd; - padding: .35em; +background-color: #f8f8f8; +border: 1px solid #ddd; +padding: .35em; } table th, table td { - padding: .625em; - text-align: center; +padding: .625em; +text-align: center; } table th { - font-size: .85em; - letter-spacing: .1em; - text-transform: uppercase; - font-size: 18px; +font-size: .85em; +letter-spacing: .1em; +text-transform: uppercase; +font-size: 18px; } table td { - font-family: 'Poiret One'; - font-weight: 900; +font-family: 'Poiret One'; +font-weight: 900; } @@ -758,43 +758,43 @@ table td { /* End Of Table Styling */ .footerstickbottom{ - position: absolute !important; - bottom:0; - left: 0; +position: absolute !important; +bottom:0; +left: 0; } #footer{ - padding: 20px; - margin-top: 20px; - /* height: 100px; */ - color: #ffffff; - background: #1c588a; - text-align: center; - position: relative; - font-family: 'Poiret One'; - width:100%; - } +padding: 20px; +margin-top: 20px; +/* height: 100px; */ +color: #ffffff; +background: #1c588a; +text-align: center; +position: relative; +font-family: 'Poiret One'; +width:100%; +} .wrapper { - min-height: 100%; - /* margin-bottom: -20px; */ - /* position: absolute; */ - /* margin: 0 auto; */ +min-height: 100%; +/* margin-bottom: -20px; */ +/* position: absolute; */ +/* margin: 0 auto; */ } #productviewsection{ - display: flex; +display: flex; } .productviewcardimg{ - width: 300px; - height: 300px; +width: 300px; +height: 300px; } #productdetailsimg{ - float: left; - margin-left: 100px; - /* width: 50%; */ +float: left; +margin-left: 100px; +/* width: 50%; */ } @@ -806,20 +806,20 @@ width: 50%; .list-group { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; +display: flex; +flex-direction: column; +padding-left: 0; +margin-bottom: 0; } .list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid rgba(0,0,0,.125); - overflow-wrap: break-word; +position: relative; +display: block; +padding: 10px 15px; +margin-bottom: -1px; +background-color: #fff; +border: 1px solid rgba(0,0,0,.125); +overflow-wrap: break-word; } @@ -828,159 +828,159 @@ width: 50%; /* Login Page */ #loginbody{ - margin: 0; - padding: 0; - /* background: url(../img/background.jpg) no-repeat; */ - background-size: cover; - background-position: center; - font-family: 'Poiret One'; - height: 100%; +margin: 0; +padding: 0; +/* background: url(../img/background.jpg) no-repeat; */ +background-size: cover; +background-position: center; +font-family: 'Poiret One'; +height: 100%; } /* Styling For Login Page */ .loginbox{ - width: 50%; - height: auto; - background: #1c588a; - color: #fff; - top: 50%; - left: 50%; - position: relative; - transform: translate(-50%,-50%); - box-sizing: border-box; - padding: 70px 30px; - box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); - box-shadow: #fff; - opacity: 0.9; - margin-bottom: 10%; +width: 50%; +height: auto; +background: #1c588a; +color: #fff; +top: 50%; +left: 50%; +position: relative; +transform: translate(-50%,-50%); +box-sizing: border-box; +padding: 70px 30px; +box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); +box-shadow: #fff; +opacity: 0.9; +margin-bottom: 10%; } .avatar{ - width: 100px; - height: 100px; - border-radius: 50%; - position: absolute;; - top: -50px; - left: calc(50% - 50px); +width: 100px; +height: 100px; +border-radius: 50%; +position: absolute;; +top: -50px; +left: calc(50% - 50px); } /* h1{ - margin: 0; - padding: 0 0 20px; - text-align: center; - font-size: 22px; +margin: 0; +padding: 0 0 20px; +text-align: center; +font-size: 22px; } */ .loginfooter { - position: absolute !important; +position: absolute !important; } .loginbox p{ - margin: 0; - padding: 0; - font-weight: bold; - font-size: 20px; +margin: 0; +padding: 0; +font-weight: bold; +font-size: 20px; } .loginbox input{ - width: 100%; - margin-bottom: 20px; - color: #fff; +width: 100%; +margin-bottom: 20px; +color: #fff; } .loginbox input[type="text"], input[type="password"]{ - border: none; - border-bottom: 1px solid #fff; - background: transparent; - outline: none; - height: 40px; - color: #fff; - font-size: 14px; +border: none; +border-bottom: 1px solid #fff; +background: transparent; +outline: none; +height: 40px; +color: #fff; +font-size: 14px; } #loginpassword { - color: #fff !important; - font-size: 14px !important; - border-bottom-color: white; +color: #fff !important; +font-size: 14px !important; +border-bottom-color: white; } .loginbox input[type="submit"]{ - border: none; - outline: none; - height: 40px; - background: #0099ff; - color: #fff; - font-size: 18px; - border-radius: 20px; +border: none; +outline: none; +height: 40px; +background: #0099ff; +color: #fff; +font-size: 18px; +border-radius: 20px; } .loginbox input[type="submit"]:hover{ - cursor: pointer; - background: #99ebff; - color: #000; +cursor: pointer; +background: #99ebff; +color: #000; } .loginbox a{ - text-decoration: none; - font-size: 12px; - line-height: 20px; - color: #fff; +text-decoration: none; +font-size: 12px; +line-height: 20px; +color: #fff; } .loginbox a:hover{ - color: #99ebff; +color: #99ebff; } /* End Of Stying For Login Page */ /* Shopping Cart Modal Styling */ .modal { - display: none; /* Hidden by default */ - position: fixed; /* Stay in place */ - z-index: 1; /* Sit on top */ - padding-top: 100px; /* Location of the box */ - left: 0; - top: 0; - width: 100%; /* Full width */ - height: 100%; /* Full height */ - overflow: auto; /* Enable scroll if needed */ - background-color: rgb(0,0,0); /* Fallback color */ - background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ +display: none; /* Hidden by default */ +position: fixed; /* Stay in place */ +z-index: 1; /* Sit on top */ +padding-top: 100px; /* Location of the box */ +left: 0; +top: 0; +width: 100%; /* Full width */ +height: 100%; /* Full height */ +overflow: auto; /* Enable scroll if needed */ +background-color: rgb(0,0,0); /* Fallback color */ +background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ } /* Modal Content */ .modal-content { - background-color: #fefefe; - margin: auto; - padding: 20px; - border: 1px solid #888; - width: 80%; +background-color: #fefefe; +margin: auto; +padding: 20px; +border: 1px solid #888; +width: 80%; } /* The Close Button */ .close { - color: #aaaaaa; - float: right; - font-size: 28px; - font-weight: bold; +color: #aaaaaa; +float: right; +font-size: 28px; +font-weight: bold; } .close:hover, .close:focus { - color: #000; - text-decoration: none; - cursor: pointer; +color: #000; +text-decoration: none; +cursor: pointer; } /* End Of Shopping Cart Modal Styling */ #prof { - margin: 0 auto; - width: 90%; +margin: 0 auto; +width: 90%; } #profiledetails { - display: flex; - text-align: center; - justify-content: center; +display: flex; +text-align: center; +justify-content: center; } #profileimg { @@ -990,300 +990,294 @@ margin: 5% 2% 0 0; } #profilecontent { - width: 60% !important; - margin: 5% 2% 0 0; +width: 60% !important; +margin: 5% 2% 0 0; } /* Styling For Admin Create Sales Attendant Page */ select{ - width: 50%; - overflow: hidden !important; - height: 30px; - outline: none; - /* margin: 20px; */ +width: 50%; +overflow: hidden !important; +height: 30px; +outline: none; +/* margin: 20px; */ } #create_sales_assistant{ - width: 50%; - /* text-align: center; */ - margin: 0 auto; - padding: 5%; +width: 50%; +/* text-align: center; */ +margin: 0 auto; +padding: 5%; } #create_sales_assistant p{ - margin: 0; - padding: 0; - font-weight: bold; +margin: 0; +padding: 0; +font-weight: bold; } #create_sales_assistant h1{ - text-transform: uppercase; - margin-bottom: 2%; +text-transform: uppercase; +margin-bottom: 2%; } #create_sales_assistant input{ - width: 100%; - margin-bottom: 20px; +width: 100%; +margin-bottom: 20px; } -#create_sales_assistant input[type="text"], input[type="password"], input[type="email"], , input[type="number"]{ - border: none; - border-bottom: 1px solid #0099ff; - background: transparent; - outline: none; - height: 40px; - color: #000; - font-size: 16px; +#create_sales_assistant input[type="text"], input[type="password"], input[type="email"], input[type="number"]{ +border: none; +border-bottom: 1px solid #0099ff; +background: transparent; +outline: none; +height: 40px; +color: #000; +font-size: 16px; } #create_sales_assistant input[type="submit"]{ - border: none; - outline: none; - height: 40px; - background: #0099ff; - color: #fff; - font-size: 18px; - border-radius: 20px; +border: none; +outline: none; +height: 40px; +background: #0099ff; +color: #fff; +font-size: 18px; +border-radius: 20px; } #create_sales_assistant input[type="submit"]:hover{ - cursor: pointer; - background: #99ebff; - color: #000; +cursor: pointer; +background: #99ebff; +color: #000; } /* End Of Styling For Admin Create Sales Attendant Page */ #pagination { - margin-top: 50px; +margin-top: 50px; } #pagination ul { - float: right; - transform: translate(-50%, -50%); - display: flex; - padding: 0; - margin: 0; +float: right; +transform: translate(-50%, -50%); +display: flex; +padding: 0; +margin: 0; } #pagination ul li { - list-style: none; +list-style: none; } #pagination ul li a { - position: relative; - display: block; - width: 40px; - height: 40px; - font-size: 20px; - text-align: center; - line-height: 40px; - background: #353535; - color: #565656; - text-decoration: none; - margin: 5px 5px 0 0; - border-radius: 4px; +position: relative; +display: block; +width: 40px; +height: 40px; +font-size: 20px; +text-align: center; +line-height: 40px; +background: #353535; +color: #565656; +text-decoration: none; +margin: 5px 5px 0 0; +border-radius: 4px; box-shadow: inset 0 5px 10px rgba(0, 0, 0, .1), 0 2px 5px rgba(0, 0, 0, .5); } #pagination ul li a.active, #pagination ul li a:hover { - color: #fff; - text-shadow: 0 0 20px #0099ff, - 0 0 20px #0099ff, - 0 0 20px #0099ff, - 0 0 20px #0099ff, - 0 0 20px #0099ff, - 0 0 20px #0099ff, - 0 0 20px #0099ff; +color: #fff; +text-shadow: 0 0 20px #0099ff, +0 0 20px #0099ff, +0 0 20px #0099ff, +0 0 20px #0099ff, +0 0 20px #0099ff, +0 0 20px #0099ff, +0 0 20px #0099ff; } - @media (max-width: 1020px) { - .loginbox{ - width: 75%; - } - .card { - width: 450px; - } - .cardimg{ - width: 450px; - } +.loginbox{ + width: 75%; +} +.card { + width: 450px; +} +.cardimg{ + width: 450px; +} } @media (max-width: 985px) { - .card { - width: 400px; - } - .cardimg{ - width: 400px; - } +.card { + width: 400px; +} +.cardimg{ + width: 400px; +} } @media (max-width: 885px) { - .card { - width: 300px; - } - .cardimg{ - width: 300px; - } +.card { + width: 300px; +} +.cardimg{ + width: 300px; +} } @media (max-width: 830px) { .loginbox{ - margin-bottom: 15%; - } - - #create_sales_assistant{ - width: 80%; - /* text-align: center; */ - margin: 0 auto; - padding: 5%; - } +margin-bottom: 15%; } -@media (max-width: 687px) { - .card { + #create_sales_assistant{ width: 80%; + /* text-align: center; */ + margin: 0 auto; + padding: 5%; } - .cardimg{ - width: 100%; - } - .loginbox{ - width: 90%; +} +@media (max-width: 687px) { +.card { + width: 80%; +} +.cardimg{ + width: 100%; +} +.loginbox{ + width: 90%; + +} + +#pagination { + padding-left: 100px; + width: 100%; } - #pagination { - padding-left: 100px; - width: 100%; - } - #pagination ul { - float: right; - justify-content: flex-end; - transform: translate(-50%, -50%); - display: flex; - text-align: center; - align-content: center; - align-items: center; - } +#pagination ul { + float: right; + justify-content: flex-end; + transform: translate(-50%, -50%); + display: flex; + text-align: center; + align-content: center; + align-items: center; +} - #pagination ul li a { - width: 30px; - height: 30px; - font-size: 15px; - line-height: 30px; - } +#pagination ul li a { + width: 30px; + height: 30px; + font-size: 15px; + line-height: 30px; + } } @media screen and (max-width: 600px) { - .footerstickbottom { - position: relative !important; - } - table { - border: 0; - } +.footerstickbottom { + position: relative !important; +} +table { + border: 0; +} - table caption { - font-size: 1.3em; - } - - table thead { - border: none; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; - } - - table tr { - border-bottom: 3px solid #ddd; - display: block; - margin-bottom: .625em; - } - - table td { - border-bottom: 1px solid #ddd; - display: block; - font-size: .8em; - text-align: right; - /* font-family: 'Poiret One'; */ - /* font-weight: 900; */ - } - - table th { - font-weight: 900; - } - table td::before { - /* - * aria-label has no advantage, it won't be read inside a table - content: attr(aria-label); - */ - content: attr(data-label); - float: left; - font-weight: bold; - text-transform: uppercase; - } - - table td:last-child { - border-bottom: 0; - } +table caption { + font-size: 1.3em; +} + +table thead { + border: none; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +table tr { + border-bottom: 3px solid #ddd; + display: block; + margin-bottom: .625em; +} + +table td { + border-bottom: 1px solid #ddd; + display: block; + font-size: .8em; + text-align: right; + /* font-family: 'Poiret One'; */ + /* font-weight: 900; */ +} + +table th { + font-weight: 900; +} +table td::before { + /* + * aria-label has no advantage, it won't be read inside a table + content: attr(aria-label); + */ + content: attr(data-label); + float: left; + font-weight: bold; + text-transform: uppercase; +} + +table td:last-child { + border-bottom: 0; +} } @media (max-width: 568px) { - .dashboard{ - display: block !important; - } +.dashboard{ + display: block !important; +} - #profiledetails { - display: block; - text-align: center; - } - - #profileimg { - width: 100%; - height: 300px; - } - - #profilecontent { - width: 100% !important; - } +#profiledetails { + display: block; + text-align: center; +} - .topcardsgroup { - display: block; - } - .topcardsbox{ - display: block; - text-align: center; - /* float: ; */ - display: block !important; - width: 100%; - padding: 5px; - text-align: center; - margin: 5px; - } +#profileimg { +width: 100%; +height: 300px; +} + +#profilecontent { + width: 100% !important; +} - .navbar-nav{ - display: none; - } +.topcardsgroup { + display: block; +} +.topcardsbox{ + display: block; + text-align: center; + /* float: ; */ + display: block !important; + width: 100%; + padding: 5px; + text-align: center; + margin: 5px; +} - #side-menu{ - width: 0; - } + .navbar-nav{ + display: none; + } - #main{ - margin-left: 0; - } + #side-menu{ + width: 0; + } - #loginbody{ - height: 90%; + #main{ + margin-left: 0; } -} -/* @media (min-width: 568px) { - .open-slide{ - display: none; - } -} */ \ No newline at end of file +#loginbody{ +height: 90%; +} +} \ No newline at end of file diff --git a/client/admin_category.html b/client/admin_category.html new file mode 100644 index 0000000..5163f30 --- /dev/null +++ b/client/admin_category.html @@ -0,0 +1,103 @@ + + + + + + + + + Store Manager | Category + + + + + + + + + + +
    + × +
  • Dashboard
  • +
  • Create Product
  • +
  • View Products
  • +
  • Create Sales Attendant
  • +
  • View Sales
  • +
  • View Attendants
  • +
  • Category
  • +
  • Logout
  • +
    +
    +
    +
    +
    +
    +

    Create New Category

    +
    +

    Category Name

    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Categories
    Category NameEditDelete
    Fashion
    Electronics
    Gaming
    +
    +
    +
    +
    + + +
    +

    Store Manager Copyright © 2018

    +
    + + + + + \ No newline at end of file diff --git a/client/admin_create_product.html b/client/admin_create_product.html index e2ece8f..4399e32 100644 --- a/client/admin_create_product.html +++ b/client/admin_create_product.html @@ -43,6 +43,7 @@
  • Create Sales Attendant
  • View Sales
  • View Attendants
  • +
  • Category
  • Logout
  • diff --git a/client/admin_create_sales_attendant.html b/client/admin_create_sales_attendant.html index 5e96015..e0cc237 100644 --- a/client/admin_create_sales_attendant.html +++ b/client/admin_create_sales_attendant.html @@ -43,6 +43,7 @@
  • Create Sales Attendant
  • View Sales
  • View Attendants
  • +
  • Category
  • Logout
  • diff --git a/client/admin_dashboard.html b/client/admin_dashboard.html index 99a8b66..9327458 100644 --- a/client/admin_dashboard.html +++ b/client/admin_dashboard.html @@ -44,6 +44,7 @@
  • Create Sales Attendant
  • View Sales
  • View Attendants
  • +
  • Category
  • Logout
  • diff --git a/client/admin_edit_product.html b/client/admin_edit_product.html index 6e6128f..e6d6074 100644 --- a/client/admin_edit_product.html +++ b/client/admin_edit_product.html @@ -43,6 +43,7 @@
  • Create Sales Attendant
  • View Sales
  • View Attendants
  • +
  • Category
  • Logout
  • diff --git a/client/admin_view_attendants.html b/client/admin_view_attendants.html index 94f2978..cb6144a 100644 --- a/client/admin_view_attendants.html +++ b/client/admin_view_attendants.html @@ -44,6 +44,7 @@
  • Create Sales Attendant
  • View Sales
  • View Attendants
  • +
  • Category
  • Logout
  • diff --git a/client/admin_view_products.html b/client/admin_view_products.html index 9f6b81f..7713aa3 100644 --- a/client/admin_view_products.html +++ b/client/admin_view_products.html @@ -44,6 +44,7 @@
  • Create Sales Attendant
  • View Sales
  • View Attendants
  • +
  • Category
  • Logout
  • diff --git a/client/admin_view_sales.html b/client/admin_view_sales.html index 63f9705..cebff9c 100644 --- a/client/admin_view_sales.html +++ b/client/admin_view_sales.html @@ -45,6 +45,7 @@
  • Create Sales Attendant
  • View Sales
  • View Attendants
  • +
  • Category
  • Logout
  • diff --git a/client/js/middleware.js b/client/js/middleware.js index d3d8f00..ce6b1b7 100644 --- a/client/js/middleware.js +++ b/client/js/middleware.js @@ -1,5 +1,5 @@ -this.base_url = 'https://store--manager.herokuapp.com/'; -this.url = 'https://store--manager.herokuapp.com/api/v1'; +this.base_url = 'http://localhost:3000/'; +this.url = 'http://localhost:3000/api/v1'; // this.dashboard = ''; const request = (url, method, payload = null, isUpload = false) => { From 00f9a1ee2bd9ebe2cd1cca6ac24485520dc3adcb Mon Sep 17 00:00:00 2001 From: Ekunola Ezekiel Date: Wed, 14 Nov 2018 18:35:18 +0100 Subject: [PATCH 2/6] [ft #161954730] integrated creating and deleting category with API --- client/admin_category.html | 26 +++------- client/cart.html | 4 +- client/js/category.js | 85 ++++++++++++++++++++++++++++++++ server/controllers/categories.js | 5 +- 4 files changed, 96 insertions(+), 24 deletions(-) create mode 100644 client/js/category.js diff --git a/client/admin_category.html b/client/admin_category.html index 5163f30..ab8ba6f 100644 --- a/client/admin_category.html +++ b/client/admin_category.html @@ -13,7 +13,7 @@ - + diff --git a/client/admin_create_product.html b/client/admin_create_product.html index 4399e32..982b510 100644 --- a/client/admin_create_product.html +++ b/client/admin_create_product.html @@ -30,7 +30,7 @@ diff --git a/client/admin_create_sales_attendant.html b/client/admin_create_sales_attendant.html index e0cc237..61c4604 100644 --- a/client/admin_create_sales_attendant.html +++ b/client/admin_create_sales_attendant.html @@ -30,7 +30,7 @@ diff --git a/client/admin_dashboard.html b/client/admin_dashboard.html index 9327458..339c36c 100644 --- a/client/admin_dashboard.html +++ b/client/admin_dashboard.html @@ -7,6 +7,7 @@ Store Manager | Welcome + @@ -31,7 +32,7 @@
  • -
  • Store Manager

  • +
  • Store Manager

  • @@ -234,7 +235,6 @@

    Lenovo flex 6

    Store Manager Copyright © 2018

    - diff --git a/client/admin_edit_product.html b/client/admin_edit_product.html index e6d6074..cceecfa 100644 --- a/client/admin_edit_product.html +++ b/client/admin_edit_product.html @@ -30,7 +30,7 @@ diff --git a/client/admin_view_attendants.html b/client/admin_view_attendants.html index cb6144a..1482cc6 100644 --- a/client/admin_view_attendants.html +++ b/client/admin_view_attendants.html @@ -31,7 +31,7 @@ diff --git a/client/admin_view_products.html b/client/admin_view_products.html index 7713aa3..b7f9b59 100644 --- a/client/admin_view_products.html +++ b/client/admin_view_products.html @@ -31,7 +31,7 @@ diff --git a/client/admin_view_sales.html b/client/admin_view_sales.html index cebff9c..21d32fe 100644 --- a/client/admin_view_sales.html +++ b/client/admin_view_sales.html @@ -31,7 +31,7 @@ diff --git a/client/attendant_admin_view.html b/client/attendant_admin_view.html index f0fbcf0..b72ce9b 100644 --- a/client/attendant_admin_view.html +++ b/client/attendant_admin_view.html @@ -32,7 +32,7 @@
  • -
  • Store Manager

  • +
  • Store Manager

  • diff --git a/client/attendant_dashboard.html b/client/attendant_dashboard.html index f8b3bf5..ccff14a 100644 --- a/client/attendant_dashboard.html +++ b/client/attendant_dashboard.html @@ -7,6 +7,7 @@ Store Manager | Welcome + @@ -31,14 +32,14 @@
  • -
  • Store Manager

  • +
  • Store Manager

  • × -
  • Dashboard
  • +
  • Dashboard
  • View Sales Record
  • Profile
  • Logout
  • @@ -223,7 +224,6 @@

    Lenovo flex 6

    Store Manager Copyright © 2018

    - diff --git a/client/cart.html b/client/cart.html index 2984400..964d6fd 100644 --- a/client/cart.html +++ b/client/cart.html @@ -31,7 +31,7 @@
  • -
  • Store Manager

  • +
  • Store Manager

  • @@ -40,7 +40,6 @@ ×
  • Dashboard
  • Store Attendant
  • -
  • Admin
  • Logout
  • diff --git a/client/dashboard.html b/client/dashboard.html deleted file mode 100644 index df180d2..0000000 --- a/client/dashboard.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - Store Manager | Welcome - - - - - - - - - - - - -
    - -
    -
    -

    Filter By Category


    - -
    - - - -
    - -
    -
    -
    -
    -
    -
    - -
    - - -
    -

    Google Pixel 2

    -

    The Google Pixel 2 is powered by 1.9GHz octa-core

    -

    Quantity: 3

    -

    Price: $649

    - - -
    - -
    - -
    - - -
    -

    Google Pixel 3

    -

    The Pixel 3 is the latest causality. Wireless charging is..

    -

    Quantity: 3

    -

    Price: $649

    - - -
    - -
    - -
    - - -
    -

    Iphone XS

    -

    The iPhone XS display has rounded corners that...

    -

    Quantity: 3

    -

    Price: $1500

    - - -
    - -
    - -
    - - -
    -

    IPhone X

    -

    The phone comes with a 5.80-inch touchscreen display

    -

    Quantity: 3

    -

    Price: $890

    - - -
    - -
    - -
    - - -
    -

    MacBook Air 2018

    -

    The MacBook Air 2018 drastically improves on the processor...

    -

    Stock: 3

    -

    Price: $1,190

    - - -
    - -
    - -
    - - -
    -

    13-inch MacBook Pro

    -

    Turbo Boost up to 3.6GHz, Intel Iris Plus Graphics 640...

    -

    Stock: 34

    -

    Price: $1,499

    - - -
    - -
    - -
    - - -
    -

    Iphone XS

    -

    2.3GHz dual-core 7th-generation Intel Core i5 processor...

    -

    Stock: 90

    -

    Price: $1500

    - - -
    - -
    - -
    - - -
    -

    Lenovo flex 6

    -

    Value-conscious without sacrificing performance, the stylish...

    -

    Stock: 300

    -

    Price: $899

    - - -
    - -
    -
    -
    -
    -
    - - - - -
    -

    Store Manager Copyright © 2018

    -
    - - - - - \ No newline at end of file diff --git a/client/js/cart.js b/client/js/cart.js index 10ab9cd..2732c7d 100644 --- a/client/js/cart.js +++ b/client/js/cart.js @@ -98,6 +98,7 @@ const checkout = () => { switch (status) { case 201: alert(data.message) + localStorage.removeItem('products'); window.location.reload(); break; case 400: diff --git a/client/js/category.js b/client/js/category.js index 410db83..b0d6216 100644 --- a/client/js/category.js +++ b/client/js/category.js @@ -14,7 +14,7 @@ const viewCategories = () => { output += ` ${category.name} - + `; @@ -23,7 +23,7 @@ const viewCategories = () => { categorytablebody.innerHTML = output; break; case 404: - alert(data.message) + alert(data.message); break; default: return alert('Error Fetching Category, Try again'); diff --git a/client/js/main.js b/client/js/main.js index e4ec67f..b6c3b5d 100644 --- a/client/js/main.js +++ b/client/js/main.js @@ -11,94 +11,9 @@ const closeSlideMenu = () =>{ document.getElementById('main').style.marginLeft = '0'; }; -// const addtocart = (nameofproduct, amountofproduct) => { -// const quantity = document.getElementById('number').value; -// let product = {}; -// let data = []; -// let previouscartitem = JSON.parse(localStorage.getItem('product')); -// if (previouscartitem) { -// data = previouscartitem; -// amountofproduct = amountofproduct.replace('Price: ', '') -// product = { -// id: previouscartitem.id++, -// productname: nameofproduct, -// productquantity: quantity, -// productamount: amountofproduct -// }; -// data.push(product); -// } else { -// amountofproduct = amountofproduct.replace('Price: ', ''); -// product = { -// id: 1, -// productname: nameofproduct, -// productquantity: quantity, -// productamount: amountofproduct -// }; -// data.push(product); -// } +// Set user icon image +document.getElementById('userimg').src = this.userImage; -// localStorage.setItem('product', JSON.stringify(data)); -// const totalcartitem = JSON.parse(localStorage.getItem('product')); -// document.getElementById('shoppingcartlabel').innerHTML = totalcartitem.length; -// showCart(totalcartitem); -// }; - -// // This function shows cart in table format -// const showCart = (data) => { -// if (data === undefined) { -// data = JSON.parse(localStorage.getItem('product')); -// } -// if (data == null || data == undefined) { -// let cartmodaldiv = document.getElementById('cartmodaldiv'); -// cartmodaldiv.style.display = 'none'; -// cartmodaldiv.style.backgroundColor = 'white'; -// } else { -// let cartmodaldiv = document.getElementById('cartmodaldiv'); -// cartmodaldiv.style.display = 'block'; -// let carttablebody = document.getElementById('carttablebody'); -// carttablebody.innerHTML = data.map((val) => { -// return `${val.productname}${val.productamount}${val.productquantity}`; -// }).join(''); -// } -// }; - -// // THis function clears the cart and reloads the page -// const clearCart = () => { -// localStorage.clear(); -// return window.location.reload(); -// }; - -// // Populate shopping cart -// let totalcartitem = JSON.parse(localStorage.getItem('product')); -// if (totalcartitem) { -// document.getElementById('shoppingcartlabel').innerHTML = totalcartitem.length; -// } - -// showCart(); - -// // Get the modal -// const modal = document.getElementById('myModal'); - -// // Get the button that opens the modal -// const btn = document.getElementById("shoppingcart"); - -// // Get the element that closes the modal -// const span = document.getElementsByClassName("close")[0]; - -// // When the user clicks the button, open the modal -// btn.onclick = function () { -// modal.style.display = "block"; -// }; - -// // When the user clicks on (x), close the modal -// span.onclick = function () { -// modal.style.display = "none"; -// }; - -// // When the user clicks anywhere outside of the modal, close it -// window.onclick = function (event) { -// if (event.target == modal) { -// modal.style.display = "none"; -// } -// }; +// Set dashboard url +document.getElementById('appnamehref').href = this.dashboard_url; \ No newline at end of file diff --git a/client/js/middleware.js b/client/js/middleware.js index ce6b1b7..90e999a 100644 --- a/client/js/middleware.js +++ b/client/js/middleware.js @@ -1,6 +1,6 @@ this.base_url = 'http://localhost:3000/'; this.url = 'http://localhost:3000/api/v1'; -// this.dashboard = ''; +this.dashboard_url = 'admin_dashboard.html'; const request = (url, method, payload = null, isUpload = false) => { let token = localStorage.getItem('token') || null; @@ -45,10 +45,8 @@ if (window.location.pathname !== '/' && window.location.pathname !== '/index.htm }; let decodedToken = parseJwt(token); - const userImage = `${this.base_url}${decodedToken.userImage}`; - - // Set user icon image - document.getElementById('userimg').src = userImage; + this.userImage = `${this.base_url}${decodedToken.userImage}`; + // if token expires, redirect to login page if (decodedToken.exp < Date.now() / 1000) { @@ -57,6 +55,7 @@ if (window.location.pathname !== '/' && window.location.pathname !== '/index.htm // Check if attendant is trying to access admin routte if (decodedToken.type === 2) { + this.dashboard_url = 'attendant_dashboard.html'; if(document.location.href.indexOf('admin') > -1) { alert('Forbidden, PS: You would be fired soon'); return window.history.back(); diff --git a/client/sales_view.html b/client/sales_view.html index 653825b..2a2b3a5 100644 --- a/client/sales_view.html +++ b/client/sales_view.html @@ -31,7 +31,7 @@ diff --git a/client/store_attendant_profile.html b/client/store_attendant_profile.html index 87fc098..00da10b 100644 --- a/client/store_attendant_profile.html +++ b/client/store_attendant_profile.html @@ -31,7 +31,7 @@ diff --git a/client/view_product_details.html b/client/view_product_details.html index fcdcfc6..4bb2372 100644 --- a/client/view_product_details.html +++ b/client/view_product_details.html @@ -31,7 +31,7 @@ From a6441d2a29ca4b208ba3d1d0889d7630c83296dd Mon Sep 17 00:00:00 2001 From: Ekunola Ezekiel Date: Wed, 21 Nov 2018 16:57:36 +0100 Subject: [PATCH 4/6] working on edit product and edit category --- .../1542815496371Capture paystack.PNG | Bin 0 -> 21318 bytes .../1542815520153Capture paystack.PNG | Bin 0 -> 21318 bytes .../1542815685294Capture paystack.PNG | Bin 0 -> 21318 bytes client/admin_create_product.html | 19 ++------ client/admin_dashboard.html | 2 +- client/admin_edit_product.html | 16 ++++--- client/attendant_dashboard.html | 2 +- client/js/middleware.js | 2 +- client/js/products.js | 44 ++++++++++++++++++ server/controllers/products.js | 5 +- server/models/queries.js | 2 +- server/routes/api/v1/products.js | 2 +- 12 files changed, 64 insertions(+), 30 deletions(-) create mode 100644 assets/uploads/products/1542815496371Capture paystack.PNG create mode 100644 assets/uploads/products/1542815520153Capture paystack.PNG create mode 100644 assets/uploads/products/1542815685294Capture paystack.PNG diff --git a/assets/uploads/products/1542815496371Capture paystack.PNG b/assets/uploads/products/1542815496371Capture paystack.PNG new file mode 100644 index 0000000000000000000000000000000000000000..1e9402caccbcf1098a4a215f7954bd47cc3f5a9d GIT binary patch literal 21318 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 i@ISl>`6W7v*G*jqEV#dEw1|=R2l%L_{i+ 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 i@ISl>`6W7v*G*jqEV#dEw1|=R2l%L_{i+ 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 i@ISl>`6W7v*G*jqEProduct Price

    Product Quantity

    -

    Product Image

    +
    - +

    Category

    +

    Product Summary

    - +

    Product Amount

    - +

    Product Quantity

    - +

    Product Image

    - +
    +

    Category

    - @@ -85,6 +86,7 @@

    Category

    + \ No newline at end of file diff --git a/client/attendant_dashboard.html b/client/attendant_dashboard.html index ccff14a..c01ae09 100644 --- a/client/attendant_dashboard.html +++ b/client/attendant_dashboard.html @@ -7,7 +7,7 @@ Store Manager | Welcome - + diff --git a/client/js/middleware.js b/client/js/middleware.js index 90e999a..3a82340 100644 --- a/client/js/middleware.js +++ b/client/js/middleware.js @@ -57,7 +57,7 @@ if (window.location.pathname !== '/' && window.location.pathname !== '/index.htm if (decodedToken.type === 2) { this.dashboard_url = 'attendant_dashboard.html'; if(document.location.href.indexOf('admin') > -1) { - alert('Forbidden, PS: You would be fired soon'); + // alert('Forbidden, PS: You would be fired soon'); return window.history.back(); } } diff --git a/client/js/products.js b/client/js/products.js index afd107f..a799d46 100644 --- a/client/js/products.js +++ b/client/js/products.js @@ -158,3 +158,47 @@ const deleteProduct = (id) => { // e.preventDefault(); // // createProduct(); // }); + + function showImage() { + if (this.files && this.files[0]) { + let obj = new FileReader(); + obj.onload = (data) => { + let image = document.getElementById('showimage'); + image.src = data.target.result; + image.style.display = 'block'; + image.style.justifyContent = 'center'; + } + obj.readAsDataURL(this.files[0]); + } +} + +const getProductsById = () => { + let urlParams = new URLSearchParams(window.location.search); + + const productId = urlParams.get('id'); + + request(`/products/${productId}`, 'GET') + .then(res => { + return res.json() + }) + .then(data => { + const response = data.data; + console.log(data) + let productname = document.getElementById('productname'); + let productsummary = document.getElementById('productsummary'); + let productamount = document.getElementById('productamount'); + let productquantity = document.getElementById('productquantity'); + let productimage = document.getElementById('productimage'); + let categoryoption = document.getElementById('categoryoption'); + let image = document.getElementById('showimage'); + image.src = response.product_image; + image.style.display = 'block'; + image.style.justifyContent = 'center'; + console.log(response.name) + productname.value = response.name; + productsummary.value = response.description; + productamount.value = `$${response.price}`; + productquantity.value = response.quantity; + productimage.filename = response.product_image; + }) +} \ No newline at end of file diff --git a/server/controllers/products.js b/server/controllers/products.js index f4d441b..a23eab0 100644 --- a/server/controllers/products.js +++ b/server/controllers/products.js @@ -160,7 +160,7 @@ class productController { productImage = req.file.path; } const { - name, description, quantity, price, + name, description, quantity, price, category_id } = req.body; const text = queries.productUpdateWithId; @@ -170,13 +170,14 @@ class productController { description, quantity, price, + category_id, productImage, new Date(), ]; db.query(text, values).then((dbres) => { return res.status(200).json({ status: 'success', data: dbres.rows[0] }); - }).catch(() => { + }).catch((e) => { console.log(e) return res.status(400).json({ status: 'error', message: 'Error Updating Products, Please try again' }); }); } diff --git a/server/models/queries.js b/server/models/queries.js index 2d5e9e9..4b87834 100644 --- a/server/models/queries.js +++ b/server/models/queries.js @@ -13,7 +13,7 @@ const queries = { productExist: 'SELECT * FROM products ', productExistWithId: 'SELECT * FROM products WHERE id = $1', productDeleteWithId: 'DELETE FROM products WHERE id = $1 returning *', - productUpdateWithId: 'UPDATE products SET name=($2), description=($3), quantity=($4), price=($5), product_image=($6), updated_at=($7) WHERE id=($1) returning *', + productUpdateWithId: 'UPDATE products SET name=($2), description=($3), quantity=($4), price=($5), category_id=($6), product_image=($7), updated_at=($8) WHERE id=($1) returning *', productUpdateCategoryWithId: 'UPDATE products SET category_id=($2), updated_at=($3) WHERE id=($1) returning *', categoryExists: 'SELECT * FROM categories ', categoryExistWithId: 'SELECT * FROM categories WHERE id = $1', diff --git a/server/routes/api/v1/products.js b/server/routes/api/v1/products.js index 433b4cd..8f65cf7 100644 --- a/server/routes/api/v1/products.js +++ b/server/routes/api/v1/products.js @@ -67,7 +67,7 @@ router.delete('/:id', isLoggedIn, isAdmin, deleteProductById); // @route PUT api/v1/products/ // @desc Update a single product record // @access Private -router.put('/:id', isLoggedIn, isAdmin, updateProductById); +router.put('/:id', isLoggedIn, isAdmin, upload.single('productImage'), updateProductById); // @route PUT api/v1/products// // @desc Assign Products To Category From 877bedae7a33692c06c8c1674c474d895a9ae13d Mon Sep 17 00:00:00 2001 From: Ekunola Ezekiel Date: Thu, 22 Nov 2018 15:09:48 +0100 Subject: [PATCH 5/6] working on edit product and edit category --- .../1542815496371Capture paystack.PNG | Bin 21318 -> 0 bytes client/admin_dashboard.html | 2 +- client/js/category.js | 100 ++++++++++++++---- client/js/products.js | 4 +- server/controllers/categories.js | 26 +++++ server/routes/api/v1/categories.js | 9 +- 6 files changed, 115 insertions(+), 26 deletions(-) delete mode 100644 assets/uploads/products/1542815496371Capture paystack.PNG diff --git a/assets/uploads/products/1542815496371Capture paystack.PNG b/assets/uploads/products/1542815496371Capture paystack.PNG deleted file mode 100644 index 1e9402caccbcf1098a4a215f7954bd47cc3f5a9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21318 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 i@ISl>`6W7v*G*jqELenovo flex 6

    Store Manager Copyright © 2018

    - + diff --git a/client/js/category.js b/client/js/category.js index b0d6216..251a4f2 100644 --- a/client/js/category.js +++ b/client/js/category.js @@ -1,3 +1,33 @@ +const urlParams = new URLSearchParams(window.location.search); + +if (urlParams.has('id')) { + const categoryId = urlParams.get('id'); + let status = 0; + + request(`/categories/${categoryId}`, 'GET') + .then(res => { + status = res.status; + return res.json(); + }) + .then(data => { + switch (status) { + case 200: + // const + let categoryname = document.getElementById('categoryname'); + let createcategorysubmit = document.getElementById('createcategorysubmit'); + categoryname.value = data.data.name; + return createcategorysubmit.value = 'Edit Category'; + break; + case 404: + alert(data.message); + break; + default: + alert('Error Fetching Category, Try again'); + return window.location = '/admin_category.html'; + } + }); +} + const viewCategories = () => { let status = 0; request('/categories/', 'GET') @@ -56,30 +86,56 @@ const deleteCategory = (id) => { document.getElementById('createcategorysubmit').addEventListener('click', (e) => { e.preventDefault(); let status = 0; + const createcategorysubmit = document.getElementById('createcategorysubmit').value; const categoryname = document.getElementById('categoryname').value; - request('/categories/', 'POST', { name: categoryname }) - .then(res => { - status = res.status; - return res.json(); - }) - .then(data => { - console.log(data) - switch (status) { - case 201: - alert(data.message); - window.location.reload(); - break; - case 400: - alert(data.data.name || data.message); - break; - case 409: - alert(data.message); - break; - default: - return alert('Error Deleting Category, Try again'); - } - }) + const categoryId = urlParams.get('id'); + if (createcategorysubmit === 'Edit Category') { + request(`/categories/${categoryId}`, 'PUT', { name: categoryname }) + .then(res => { + status = res.status; + return res.json(); + }) + .then(data => { + + switch (status) { + case 200: + alert(data.message); + window.location = '/admin_category.html'; + break; + case 400: + alert(data.message); + break; + default: + return alert('Error Updating Category, Try again'); + } + }); + }else{ + request('/categories/', 'POST', { name: categoryname }) + .then(res => { + status = res.status; + return res.json(); + }) + .then(data => { + console.log(data) + switch (status) { + case 201: + alert(data.message); + window.location = '/admin_category.html'; + break; + case 400: + alert(data.data.name || data.message); + break; + case 409: + alert(data.message); + break; + default: + return alert('Error Creating Category, Try again'); + } + }); + } + + }); // }; diff --git a/client/js/products.js b/client/js/products.js index a799d46..3b0adfa 100644 --- a/client/js/products.js +++ b/client/js/products.js @@ -194,11 +194,11 @@ const getProductsById = () => { image.src = response.product_image; image.style.display = 'block'; image.style.justifyContent = 'center'; - console.log(response.name) + productname.value = response.name; productsummary.value = response.description; productamount.value = `$${response.price}`; productquantity.value = response.quantity; - productimage.filename = response.product_image; + }) } \ No newline at end of file diff --git a/server/controllers/categories.js b/server/controllers/categories.js index 961a970..3c1a527 100644 --- a/server/controllers/categories.js +++ b/server/controllers/categories.js @@ -83,6 +83,32 @@ class productController { }); } + /** + * Product Route + * @param {object} req + * @param {object} res + * @returns {object} object + * @route GET api/v1/categories/ + * @description This function implements the logic for getting a categry detail by Id. + * @access Private + */ + static getCategoryById(req, res) { + const { id } = req.params; + + const text = queries.categoryExistWithId; + const categoryqueryvalue = [ + id, + ]; + db.query(text, categoryqueryvalue).then((dbresponse) => { + if (dbresponse.rowCount === 0) { + return res.status(400).json({ status: 'error', message: `Category with id ${id} not found.` }); + } + return res.json({ status: 'success', data: dbresponse.rows[0] }); + }).catch(() => { + return res.status(400).json({ status: 'error', message: 'Error Fetching Category Details, Please try again' }); + }); + } + /** * Delete A Category Route * @param {object} req diff --git a/server/routes/api/v1/categories.js b/server/routes/api/v1/categories.js index cfe68fb..dad3d93 100644 --- a/server/routes/api/v1/categories.js +++ b/server/routes/api/v1/categories.js @@ -4,7 +4,7 @@ import authenticate from '../../../middleware/authenticate'; import categoriesController from '../../../controllers/categories'; const { - createCategory, updateCategory, deleteCategory, getCategories, + createCategory, updateCategory, deleteCategory, getCategories, getCategoryById, } = categoriesController; const { isLoggedIn, isAdmin } = authenticate; @@ -33,4 +33,11 @@ router.delete('/:id', isLoggedIn, isAdmin, deleteCategory); // @access Private router.get('/', isLoggedIn, isAdmin, getCategories); + +// @route GET api/v1/categories/ +// @desc Get A Category Details +// @access Private +router.get('/:id', isLoggedIn, isAdmin, getCategoryById); + + module.exports = router; From bef1378b4c2f37c4ac2d2de5c9a4703abaac1efa Mon Sep 17 00:00:00 2001 From: Ekunola Ezekiel Date: Thu, 22 Nov 2018 16:14:20 +0100 Subject: [PATCH 6/6] working on edit product and edit category --- README.md | 1 + ...37981578a5-18a8-44a1-a70b-a7ceb2ea0e7f.jpg | Bin 0 -> 73492 bytes client/js/auth.js | 18 +++++++++ client/store_attendant_profile.html | 35 ++++-------------- server/controllers/auth.js | 24 ++++++++++-- server/models/queries.js | 1 + 6 files changed, 47 insertions(+), 32 deletions(-) create mode 100644 assets/uploads/users/1542899110237981578a5-18a8-44a1-a70b-a7ceb2ea0e7f.jpg diff --git a/README.md b/README.md index a387bd1..1d8ff50 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ You need Nodejs Installed to be able to run this project on your machine. | Register User | POST | /api/v1/auth/signup | PRIVATE | | Login User | POST | /api/v1/auth/login | PUBLIC | | Make Store Attendant an Admin | POST | /api/v1/auth/makeadmin | PRIVATE | +| Get Current User Details | GET | /api/v1/auth/current | PRIVATE | | Get All Store Attendants | GET | /api/v1/auth/attendants | PRIVATE | | Create New Product | POST | /api/v1/products | PRIVATE | | Get All Products | GET | /api/v1/products | PRIVATE | diff --git a/assets/uploads/users/1542899110237981578a5-18a8-44a1-a70b-a7ceb2ea0e7f.jpg b/assets/uploads/users/1542899110237981578a5-18a8-44a1-a70b-a7ceb2ea0e7f.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f133040259c8c25a9ee5ed81aa27781835d910f0 GIT binary patch literal 73492 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%0A7F{-xSh$>-41`UeuVzFnArkXaMYJ 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 { }) }; + +const getAttendantProfile = () => { + request('/auth/current', 'GET') + .then(res => res.json()) + .then(data =>{ + let role = 'Store Attendant'; + if (data.data.type === 2) { + role = 'Admin'; + } + + document.getElementById('profileimg').src = data.data.userImage; + document.getElementById('profilename').innerHTML = data.data.name; + document.getElementById('profileemail').innerHTML = data.data.email; + document.getElementById('profilerole').innerHTML = role; + document.getElementById('profilestatus').innerHTML = 'Active'; + + }) +} \ No newline at end of file diff --git a/client/store_attendant_profile.html b/client/store_attendant_profile.html index 00da10b..7e12ed5 100644 --- a/client/store_attendant_profile.html +++ b/client/store_attendant_profile.html @@ -13,7 +13,7 @@ - +