Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
warehouse-management
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ascend
warehouse-management
Commits
0e805252
Commit
0e805252
authored
May 07, 2021
by
Darrick Yong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
style order details, add collapse/expand
parent
995edcbc
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
164 additions
and
67 deletions
+164
-67
filter.css
frontend/public/stylesheets/filter.css
+26
-15
order.css
frontend/public/stylesheets/order.css
+21
-5
App.jsx
frontend/src/App.jsx
+27
-7
order_actions.js
frontend/src/actions/order_actions.js
+0
-1
FilterSearch.jsx
frontend/src/components/filter/FilterSearch.jsx
+1
-1
Header.jsx
frontend/src/components/header/Header.jsx
+3
-4
ItemDetails.jsx
frontend/src/components/order/ItemDetails.jsx
+3
-7
OrderDetails.jsx
frontend/src/components/order/OrderDetails.jsx
+29
-3
OrderIndex.jsx
frontend/src/components/order/OrderIndex.jsx
+14
-1
OrderIndexItem.jsx
frontend/src/components/order/OrderIndexItem.jsx
+39
-21
orders_api_util.jsx
frontend/src/util/orders_api_util.jsx
+0
-1
WarehouseOrderService.java
...inalproject/warehouse/services/WarehouseOrderService.java
+1
-1
No files found.
frontend/public/stylesheets/filter.css
View file @
0e805252
.filter-search
{
.filter-search
{
/* width: 50%; */
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
padding
:
20px
;
padding
:
20px
;
...
@@ -29,9 +28,13 @@
...
@@ -29,9 +28,13 @@
align-items
:
center
;
align-items
:
center
;
}
}
.filter-btns
>
*
{
.filter-btns
>
*,
.search-btn
,
.collapse-btn
,
.expand-btn
{
cursor
:
pointer
;
cursor
:
pointer
;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
padding
:
10px
20px
;
padding
:
10px
20px
;
border-radius
:
5px
;
border-radius
:
5px
;
border
:
1px
solid
black
;
border
:
1px
solid
black
;
...
@@ -87,28 +90,36 @@
...
@@ -87,28 +90,36 @@
cursor
:
pointer
;
cursor
:
pointer
;
border
:
none
;
border
:
none
;
font-size
:
16px
;
font-size
:
16px
;
font-family
:
'Times New Roman'
,
Times
,
serif
;
font-family
:
"Times New Roman"
,
Times
,
serif
;
}
}
.search
>
input
{
.search
>
input
{
padding
:
10px
;
padding
:
10px
;
font-size
:
16px
;
font-size
:
16px
;
font-family
:
'Times New Roman'
,
Times
,
serif
;
font-family
:
"Times New Roman"
,
Times
,
serif
;
}
}
.search-btn
{
.search-btn
:hover
,
cursor
:
pointer
;
.collapse-btn
:hover
,
display
:
flex
;
.expand-btn
:hover
{
padding
:
10px
20px
;
color
:
white
;
border-radius
:
5px
;
border
:
1px
solid
black
;
}
.search-btn
:hover
{
color
:
white
;
background
:
gray
;
background
:
gray
;
}
}
.error
{
.error
{
color
:
red
;
color
:
red
;
}
}
\ No newline at end of file
.fs-collapse
{
display
:
flex
;
justify-content
:
space-between
;
}
.collapse-expand
{
display
:
flex
;
padding
:
20px
;
}
.collapse-expand
>
*
~
*
{
margin-left
:
10px
;
}
frontend/public/stylesheets/order.css
View file @
0e805252
...
@@ -129,7 +129,6 @@
...
@@ -129,7 +129,6 @@
padding
:
20px
50px
;
padding
:
20px
50px
;
box-sizing
:
border-box
;
box-sizing
:
border-box
;
overflow
:
scroll
;
overflow
:
scroll
;
/* background: white; */
}
}
.animate
{
.animate
{
...
@@ -142,6 +141,27 @@
...
@@ -142,6 +141,27 @@
font-size
:
20px
;
font-size
:
20px
;
font-weight
:
700
;
font-weight
:
700
;
border-bottom
:
2px
solid
black
;
border-bottom
:
2px
solid
black
;
display
:
flex
;
justify-content
:
space-between
;
}
.order-details-name
{
display
:
flex
;
align-items
:
center
;
}
.order-details-dates
{
display
:
flex
;
flex-direction
:
column
;
font-weight
:
400
;
font-size
:
16px
;
font-style
:
italic
;
width
:
280px
;
}
.order-details-dates
>
div
{
display
:
flex
;
justify-content
:
space-between
;
}
}
.order-detail-table
{
.order-detail-table
{
...
@@ -157,10 +177,6 @@
...
@@ -157,10 +177,6 @@
padding
:
5px
20px
;
padding
:
5px
20px
;
}
}
.item-detail
~
.item-detail
{
/* border-top: 1px solid red; */
}
.item-sku
,
.item-qty
{
.item-sku
,
.item-qty
{
text-align
:
center
;
text-align
:
center
;
}
}
...
...
frontend/src/App.jsx
View file @
0e805252
import
{
useEffect
,
useState
}
from
"react"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
{
connect
}
from
"react-redux"
;
import
{
connect
}
from
"react-redux"
;
import
Header
from
"./components/header/Header"
;
import
Header
from
"./components/header/Header"
;
import
OrderIndex
from
"./components/order/OrderIndex"
import
OrderIndex
from
"./components/order/OrderIndex"
;
import
NoOrders
from
"./components/order/NoOrders"
;
import
NoOrders
from
"./components/order/NoOrders"
;
import
{
fetchOrders
}
from
"./actions/order_actions"
;
import
{
fetchOrders
}
from
"./actions/order_actions"
;
import
FilterSearch
from
"./components/filter/FilterSearch"
;
import
FilterSearch
from
"./components/filter/FilterSearch"
;
import
Button
from
"./components/atoms/Button"
;
const
App
=
({
orders
,
fetchOrders
})
=>
{
const
App
=
({
orders
,
fetchOrders
})
=>
{
const
[
ordersToShow
,
setOrdersToShow
]
=
useState
(
orders
);
const
[
ordersToShow
,
setOrdersToShow
]
=
useState
(
orders
);
const
[
fetchAttempted
,
setFetchAttempted
]
=
useState
(
false
);
const
[
fetchAttempted
,
setFetchAttempted
]
=
useState
(
false
);
const
[
collapseAll
,
setCollapseAll
]
=
useState
(
false
);
// debugger
const
[
expandAll
,
setExpandAll
]
=
useState
(
false
);
useEffect
(()
=>
{
useEffect
(()
=>
{
if
(
!
fetchAttempted
)
{
if
(
!
fetchAttempted
)
{
...
@@ -24,15 +24,35 @@ const App = ({ orders, fetchOrders }) => {
...
@@ -24,15 +24,35 @@ const App = ({ orders, fetchOrders }) => {
return
(
return
(
<
div
className=
"app"
>
<
div
className=
"app"
>
<
Header
/>
<
Header
/>
<
FilterSearch
setOrdersToShow=
{
setOrdersToShow
}
/>
<
div
className=
"fs-collapse"
>
<
FilterSearch
setOrdersToShow=
{
setOrdersToShow
}
/>
<
div
className=
"collapse-expand"
>
<
Button
className=
"collapse-btn"
onClick=
{
()
=>
setCollapseAll
(
true
)
}
text=
{
`Collapse All`
}
/>
<
Button
className=
"expand-btn"
onClick=
{
()
=>
setExpandAll
(
true
)
}
text=
{
`Expand All`
}
/>
</
div
>
</
div
>
{
ordersToShow
.
allIds
.
length
?
(
{
ordersToShow
.
allIds
.
length
?
(
<
OrderIndex
orders=
{
ordersToShow
}
/>
<
OrderIndex
orders=
{
ordersToShow
}
collapseAll=
{
collapseAll
}
expandAll=
{
expandAll
}
setCollapseAll=
{
setCollapseAll
}
setExpandAll=
{
setExpandAll
}
/>
)
:
(
)
:
(
<
NoOrders
/>
<
NoOrders
/>
)
}
)
}
</
div
>
</
div
>
);
);
}
}
;
const
mapStateToProps
=
(
state
)
=>
({
const
mapStateToProps
=
(
state
)
=>
({
orders
:
state
.
entities
.
orders
,
orders
:
state
.
entities
.
orders
,
...
...
frontend/src/actions/order_actions.js
View file @
0e805252
...
@@ -23,7 +23,6 @@ export const fetchOrders = () => (dispatch) => {
...
@@ -23,7 +23,6 @@ export const fetchOrders = () => (dispatch) => {
export
const
editOrder
=
(
order
)
=>
(
dispatch
)
=>
{
export
const
editOrder
=
(
order
)
=>
(
dispatch
)
=>
{
OrderAPIUtil
.
editOrder
(
order
)
OrderAPIUtil
.
editOrder
(
order
)
.
then
(
res
=>
{
.
then
(
res
=>
{
debugger
dispatch
(
updateOrder
(
res
.
data
))
dispatch
(
updateOrder
(
res
.
data
))
});
});
}
}
\ No newline at end of file
frontend/src/components/filter/FilterSearch.jsx
View file @
0e805252
import
{
use
Effect
,
use
State
}
from
"react"
;
import
{
useState
}
from
"react"
;
import
Filter
from
"./Filter"
;
import
Filter
from
"./Filter"
;
import
Search
from
"./Search"
;
import
Search
from
"./Search"
;
...
...
frontend/src/components/header/Header.jsx
View file @
0e805252
import
React
from
'react'
;
import
React
from
"react"
;
import
Login
from
"../session/Login"
;
import
Logout
from
"../session/Logout"
;
import
Logout
from
"../session/Logout"
;
const
Header
=
()
=>
{
const
Header
=
()
=>
{
...
@@ -9,6 +8,6 @@ const Header = () => {
...
@@ -9,6 +8,6 @@ const Header = () => {
<
Logout
/>
<
Logout
/>
</
div
>
</
div
>
);
);
}
}
;
export
default
Header
;
export
default
Header
;
\ No newline at end of file
frontend/src/components/order/ItemDetails.jsx
View file @
0e805252
const
ItemDetails
=
({
item
})
=>
{
const
ItemDetails
=
({
item
})
=>
{
const
{
itemName
,
itemQuantity
,
itemPrice
,
itemSku
}
=
item
;
const
{
itemId
,
itemName
,
itemQuantity
,
itemPrice
,
itemSku
}
=
item
;
return
(
return
(
<
tr
className=
"item-detail"
>
<
tr
className=
"item-detail"
>
...
@@ -9,10 +8,7 @@ const ItemDetails = ({ item }) => {
...
@@ -9,10 +8,7 @@ const ItemDetails = ({ item }) => {
<
td
className=
"item-qty"
>
{
itemQuantity
}
</
td
>
<
td
className=
"item-qty"
>
{
itemQuantity
}
</
td
>
<
td
className=
"item-price"
>
{
`$${itemPrice.toFixed(2)}`
}
</
td
>
<
td
className=
"item-price"
>
{
`$${itemPrice.toFixed(2)}`
}
</
td
>
</
tr
>
</
tr
>
// <li className="item-detail">
// {`${itemName} -- x ${itemQuantity} bought at ${itemPrice}/ea.`}
// </li>
);
);
}
}
;
export
default
ItemDetails
;
export
default
ItemDetails
;
\ No newline at end of file
frontend/src/components/order/OrderDetails.jsx
View file @
0e805252
import
ItemDetails
from
"./ItemDetails"
;
import
ItemDetails
from
"./ItemDetails"
;
const
OrderDetails
=
({
order
,
showDetails
})
=>
{
const
OrderDetails
=
({
order
,
showDetails
})
=>
{
const
createdDate
=
new
Date
(
order
.
createdAt
);
const
modifiedDate
=
new
Date
(
order
.
modifiedAt
);
const
status
=
order
.
status
[
0
].
toUpperCase
()
+
order
.
status
.
substr
(
1
).
toLowerCase
();
const
dateToString
=
(
date
)
=>
{
const
month
=
date
.
toLocaleString
(
"default"
,
{
month
:
"short"
});
const
day
=
date
.
getDate
();
const
year
=
date
.
getFullYear
();
const
time
=
date
.
toLocaleTimeString
(
"en-US"
);
return
`
${
month
}
${
day
>
9
?
day
:
`0
${
day
}
`
}
,
${
year
}
at
${
time
}
`
;
};
return
(
return
(
<
div
className=
{
`order-details ${showDetails ? "animate" : ""}`
}
>
<
div
className=
{
`order-details ${showDetails ? "animate" : ""}`
}
>
<
div
className=
"order-details-container"
>
<
div
className=
"order-details-container"
>
<
div
className=
"order-details-header"
>
Order Details:
</
div
>
<
div
className=
"order-details-header"
>
<
div
className=
"order-details-name"
>
Order Details:
</
div
>
<
div
className=
"order-details-dates"
>
<
div
>
<
div
>
Created on:
</
div
>
<
div
>
{
dateToString
(
createdDate
)
}
</
div
>
</
div
>
{
order
.
modifiedAt
?
(
<
div
>
<
div
>
{
`${status} on:`
}
</
div
>
<
div
>
{
dateToString
(
modifiedDate
)
}
</
div
>
</
div
>
)
:
null
}
</
div
>
</
div
>
<
table
className=
"order-detail-table"
>
<
table
className=
"order-detail-table"
>
<
thead
>
<
thead
>
<
tr
>
<
tr
>
...
@@ -25,6 +51,6 @@ const OrderDetails = ({ order, showDetails }) => {
...
@@ -25,6 +51,6 @@ const OrderDetails = ({ order, showDetails }) => {
</
div
>
</
div
>
</
div
>
</
div
>
);
);
}
}
;
export
default
OrderDetails
;
export
default
OrderDetails
;
\ No newline at end of file
frontend/src/components/order/OrderIndex.jsx
View file @
0e805252
...
@@ -2,13 +2,26 @@ import OrderIndexItem from './OrderIndexItem';
...
@@ -2,13 +2,26 @@ import OrderIndexItem from './OrderIndexItem';
const
OrderIndex
=
({
const
OrderIndex
=
({
orders
,
orders
,
collapseAll
,
expandAll
,
setCollapseAll
,
setExpandAll
,
})
=>
{
})
=>
{
return
(
return
(
<
div
className=
"order-index"
>
<
div
className=
"order-index"
>
<
h1
>
Order Index
</
h1
>
<
h1
>
Order Index
</
h1
>
{
orders
.
allIds
.
map
((
orderId
)
=>
{
{
orders
.
allIds
.
map
((
orderId
)
=>
{
const
order
=
orders
.
byId
[
orderId
];
const
order
=
orders
.
byId
[
orderId
];
return
<
OrderIndexItem
key=
{
order
.
id
}
order=
{
order
}
/>;
return
(
<
OrderIndexItem
key=
{
order
.
id
}
order=
{
order
}
collapseAll=
{
collapseAll
}
expandAll=
{
expandAll
}
setCollapseAll=
{
setCollapseAll
}
setExpandAll=
{
setExpandAll
}
/>
);
})
}
})
}
</
div
>
</
div
>
);
);
...
...
frontend/src/components/order/OrderIndexItem.jsx
View file @
0e805252
import
React
,
{
useState
}
from
'react'
;
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
OrderButtons
from
'./OrderButtons'
;
import
OrderButtons
from
"./OrderButtons"
;
import
{
FiChevronRight
}
from
'react-icons/fi'
;
import
{
FiChevronRight
}
from
"react-icons/fi"
;
import
OrderDetails
from
'./OrderDetails'
;
import
OrderDetails
from
"./OrderDetails"
;
const
OrderIndexItem
=
({
order
})
=>
{
const
OrderIndexItem
=
({
order
,
const
{
collapseAll
,
id
,
expandAll
,
orderId
,
setCollapseAll
,
status
,
setExpandAll
,
orderItems
,
})
=>
{
createdAt
,
const
{
orderId
,
status
}
=
order
;
modifiedAt
}
=
order
;
const
[
showDetails
,
setShowDetails
]
=
useState
(
false
);
const
[
showDetails
,
setShowDetails
]
=
useState
(
false
);
const
actions
=
(
status
===
"FULFILLED"
||
status
===
"CANCELLED"
?
useEffect
(()
=>
{
<
div
className=
{
`oii-status ${status.toLowerCase()}`
}
>
{
status
}
</
div
>
:
if
(
collapseAll
)
{
<
OrderButtons
order=
{
order
}
/>
setShowDetails
(
false
);
);
}
if
(
expandAll
)
{
setShowDetails
(
true
);
}
setCollapseAll
(
false
);
setExpandAll
(
false
);
},
[
showDetails
,
collapseAll
,
expandAll
]);
const
handleDropDown
=
()
=>
{
setShowDetails
(
!
showDetails
);
};
const
actions
=
status
===
"FULFILLED"
||
status
===
"CANCELLED"
?
(
<
div
className=
{
`oii-status ${status.toLowerCase()}`
}
>
{
status
}
</
div
>
)
:
(
<
OrderButtons
order=
{
order
}
/>
);
return
(
return
(
<
div
className=
"oii"
>
<
div
className=
"oii"
>
<
div
className=
"oii-container"
>
<
div
className=
"oii-container"
>
<
div
className=
"oii-left"
>
<
div
className=
"oii-left"
>
<
FiChevronRight
className=
{
`oii-drop ${showDetails ? "rotate" : ""}`
}
onClick=
{
()
=>
setShowDetails
(
!
showDetails
)
}
/>
<
FiChevronRight
className=
{
`oii-drop ${showDetails ? "rotate" : ""}`
}
onClick=
{
handleDropDown
}
/>
<
div
className=
"oii-num"
>
{
`Order #: ${orderId}`
}
</
div
>
<
div
className=
"oii-num"
>
{
`Order #: ${orderId}`
}
</
div
>
</
div
>
</
div
>
{
actions
}
{
actions
}
...
@@ -33,7 +51,7 @@ const OrderIndexItem = ({ order }) => {
...
@@ -33,7 +51,7 @@ const OrderIndexItem = ({ order }) => {
<
OrderDetails
showDetails=
{
showDetails
}
order=
{
order
}
/>
<
OrderDetails
showDetails=
{
showDetails
}
order=
{
order
}
/>
</
div
>
</
div
>
)
)
;
};
};
export
default
OrderIndexItem
;
export
default
OrderIndexItem
;
frontend/src/util/orders_api_util.jsx
View file @
0e805252
...
@@ -5,6 +5,5 @@ export const getOrders =() => {
...
@@ -5,6 +5,5 @@ export const getOrders =() => {
}
}
export
const
editOrder
=
(
order
)
=>
{
export
const
editOrder
=
(
order
)
=>
{
debugger
;
return
axios
.
put
(
`http://localhost:8080/api/orders/
${
order
.
id
}
`
,
order
)
return
axios
.
put
(
`http://localhost:8080/api/orders/
${
order
.
id
}
`
,
order
)
}
}
src/main/java/com/ascendfinalproject/warehouse/services/WarehouseOrderService.java
View file @
0e805252
...
@@ -32,7 +32,7 @@ public class WarehouseOrderService {
...
@@ -32,7 +32,7 @@ public class WarehouseOrderService {
public
Mono
<
WarehouseOrder
>
createOrder
(
WarehouseOrder
order
)
{
public
Mono
<
WarehouseOrder
>
createOrder
(
WarehouseOrder
order
)
{
order
.
setStatus
(
"RECEIVED"
);
order
.
setStatus
(
"RECEIVED"
);
order
.
setCreatedAt
(
new
Date
(
System
.
currentTimeMillis
()));
order
.
setCreatedAt
(
new
Date
(
System
.
currentTimeMillis
()));
order
.
setModifiedAt
(
new
Date
(
System
.
currentTimeMillis
()));
//
order.setModifiedAt(new Date(System.currentTimeMillis()));
List
<
Item
>
itemList
=
Arrays
.
asList
(
List
<
Item
>
itemList
=
Arrays
.
asList
(
new
Item
(
"3"
,
"Hamburger"
,
3
,
3
,
33
),
new
Item
(
"3"
,
"Hamburger"
,
3
,
3
,
33
),
new
Item
(
"4"
,
"Sausage"
,
4
,
5
,
66
),
new
Item
(
"4"
,
"Sausage"
,
4
,
5
,
66
),
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment