Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
Tia-dev
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
0
Merge Requests
0
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
Dida Adams Arizona
Tia-dev
Commits
78b799fb
Commit
78b799fb
authored
Aug 16, 2020
by
Deni Rinaldi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
otorisasi profile
parent
33b53923
Changes
23
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
547 additions
and
198 deletions
+547
-198
index.js
src/api/index.js
+6
-1
Images.js
src/assets/Images.js
+4
-0
approvalmatrix.svg
src/assets/approvalmatrix.svg
+1
-1
docmanagement.svg
src/assets/docmanagement.svg
+1
-1
failed-copy.svg
src/assets/failed-copy.svg
+12
-0
home.svg
src/assets/home.svg
+1
-1
laporan.svg
src/assets/laporan.svg
+3
-3
laporanbulanan.svg
src/assets/laporanbulanan.svg
+1
-1
masterbudget.svg
src/assets/masterbudget.svg
+4
-4
masterdata.svg
src/assets/masterdata.svg
+1
-1
operatingindicator.svg
src/assets/operatingindicator.svg
+11
-0
otorisasi.svg
src/assets/otorisasi.svg
+1
-1
outlookperformance.svg
src/assets/outlookperformance.svg
+10
-0
rolling.svg
src/assets/rolling.svg
+9
-0
app.css
src/assets/sass/app.css
+16
-0
Home.js
src/container/Home.js
+5
-3
DashboardCAT.js
src/container/Laporan/DashboardCAT.js
+1
-1
UnitBisnis.js
src/container/MasterData/UnitBisnis.js
+18
-25
User.js
src/container/Otorisasi/User.js
+302
-145
Profile.js
src/container/Profile.js
+94
-7
Array.js
src/library/Array.js
+9
-3
PopUpFailedSave.js
src/library/PopUpFailedSave.js
+33
-0
homeRoutes.js
src/router/homeRoutes.js
+4
-0
No files found.
src/api/index.js
View file @
78b799fb
...
@@ -109,6 +109,9 @@ const create = (baseURL = 'https://tia.eksad.com/tia-reporting-dev/public/') =>
...
@@ -109,6 +109,9 @@ const create = (baseURL = 'https://tia.eksad.com/tia-reporting-dev/public/') =>
const
updateUser
=
(
body
)
=>
api
.
post
(
'user/update_user'
,
body
)
const
updateUser
=
(
body
)
=>
api
.
post
(
'user/update_user'
,
body
)
const
deleteUser
=
(
userId
)
=>
api
.
get
(
`user/delete_user/
${
userId
}
`
)
const
deleteUser
=
(
userId
)
=>
api
.
get
(
`user/delete_user/
${
userId
}
`
)
const
changePassword
=
(
body
)
=>
api
.
post
(
'/user/change_password'
,
body
)
const
changePassword
=
(
body
)
=>
api
.
post
(
'/user/change_password'
,
body
)
const
checkUploadUser
=
(
body
)
=>
api
.
post
(
'/user/check_import'
,
body
)
const
uploadUser
=
(
body
)
=>
api
.
post
(
'/user/import_user'
,
body
)
//Template
//Template
const
downloadTemplate
=
(
fileName
,
fileType
)
=>
api
.
get
(
`attachment/download_file?fileName=
${
fileName
}
&&fileType=
${
fileType
}
`
)
const
downloadTemplate
=
(
fileName
,
fileType
)
=>
api
.
get
(
`attachment/download_file?fileName=
${
fileName
}
&&fileType=
${
fileType
}
`
)
...
@@ -162,7 +165,9 @@ const create = (baseURL = 'https://tia.eksad.com/tia-reporting-dev/public/') =>
...
@@ -162,7 +165,9 @@ const create = (baseURL = 'https://tia.eksad.com/tia-reporting-dev/public/') =>
checkUploadUnitBisnis
,
checkUploadUnitBisnis
,
uploadUnitBisnis
,
uploadUnitBisnis
,
changePassword
,
changePassword
,
getPerusahaanHierarki
getPerusahaanHierarki
,
checkUploadUser
,
uploadUser
}
}
}
}
...
...
src/assets/Images.js
View file @
78b799fb
...
@@ -8,6 +8,9 @@ const Images = {
...
@@ -8,6 +8,9 @@ const Images = {
budgetTahunan
:
require
(
'./masterbudget.svg'
),
budgetTahunan
:
require
(
'./masterbudget.svg'
),
manajemenDokumen
:
require
(
'./docmanagement.svg'
),
manajemenDokumen
:
require
(
'./docmanagement.svg'
),
laporanBulanan
:
require
(
'./laporanbulanan.svg'
),
laporanBulanan
:
require
(
'./laporanbulanan.svg'
),
rolling
:
require
(
'./rolling.svg'
),
operatingindicator
:
require
(
'./operatingindicator.svg'
),
outlookperformance
:
require
(
'./outlookperformance.svg'
),
laporan
:
require
(
'./laporan.svg'
),
laporan
:
require
(
'./laporan.svg'
),
masterdata
:
require
(
'./masterdata.svg'
),
masterdata
:
require
(
'./masterdata.svg'
),
otorisasi
:
require
(
'./otorisasi.svg'
),
otorisasi
:
require
(
'./otorisasi.svg'
),
...
@@ -39,6 +42,7 @@ const Images = {
...
@@ -39,6 +42,7 @@ const Images = {
search
:
require
(
'./search.png'
),
search
:
require
(
'./search.png'
),
logout
:
require
(
'./setting.png'
),
logout
:
require
(
'./setting.png'
),
setting
:
require
(
'./logout.png'
),
setting
:
require
(
'./logout.png'
),
failedCopy
:
require
(
'./failed-copy.svg'
),
}
}
...
...
src/assets/approvalmatrix.svg
View file @
78b799fb
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"17"
height=
"16"
viewBox=
"0 0 17 16"
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"17"
height=
"16"
viewBox=
"0 0 17 16"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-3 -4)"
/>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-3 -4)"
/>
<g
stroke=
"#
FFF
"
stroke-linecap=
"round"
stroke-linejoin=
"round"
stroke-width=
"1.2"
>
<g
stroke=
"#
0D2846
"
stroke-linecap=
"round"
stroke-linejoin=
"round"
stroke-width=
"1.2"
>
<path
d=
"M13.538 5.28v7.028c0 .68-.55 1.23-1.23 1.23H1.23c-.68 0-1.231-.55-1.231-1.23V1.23C0 .55.551 0 1.23 0h10.373"
transform=
"translate(-3 -4) translate(4 5)"
/>
<path
d=
"M13.538 5.28v7.028c0 .68-.55 1.23-1.23 1.23H1.23c-.68 0-1.231-.55-1.231-1.23V1.23C0 .55.551 0 1.23 0h10.373"
transform=
"translate(-3 -4) translate(4 5)"
/>
<path
d=
"M2.552 6.154L6.217 9.95 14.923 0"
transform=
"translate(-3 -4) translate(4 5)"
/>
<path
d=
"M2.552 6.154L6.217 9.95 14.923 0"
transform=
"translate(-3 -4) translate(4 5)"
/>
</g>
</g>
...
...
src/assets/docmanagement.svg
View file @
78b799fb
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"14"
height=
"17"
viewBox=
"0 0 14 17"
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"14"
height=
"17"
viewBox=
"0 0 14 17"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-5 -4)"
/>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-5 -4)"
/>
<g
stroke=
"#
FFF
"
stroke-width=
"1.2"
transform=
"translate(-5 -4) translate(6 5)"
>
<g
stroke=
"#
0D2846
"
stroke-width=
"1.2"
transform=
"translate(-5 -4) translate(6 5)"
>
<rect
width=
"12"
height=
"15"
rx=
"2"
/>
<rect
width=
"12"
height=
"15"
rx=
"2"
/>
<path
stroke-linecap=
"round"
d=
"M2 3.025L10.02 3.025M2 6L10.02 6M2 9L10.02 9M2 12L6.01 12"
/>
<path
stroke-linecap=
"round"
d=
"M2 3.025L10.02 3.025M2 6L10.02 6M2 9L10.02 9M2 12L6.01 12"
/>
</g>
</g>
...
...
src/assets/failed-copy.svg
0 → 100644
View file @
78b799fb
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"72"
height=
"72"
viewBox=
"0 0 72 72"
>
<g
fill=
"none"
fill-rule=
"evenodd"
>
<circle
cx=
"36"
cy=
"36"
r=
"36"
fill=
"#ED8080"
/>
<path
fill=
"#FF3939"
d=
"M36 72c19.882 0 36-16.118 36-36S55.882 0 36 0"
/>
<circle
cx=
"35.95"
cy=
"35.95"
r=
"31.95"
fill=
"#FBE776"
fill-rule=
"nonzero"
/>
<path
fill=
"#F5DB44"
fill-rule=
"nonzero"
d=
"M35.95 67.9c17.645 0 31.95-14.305 31.95-31.95C67.9 18.304 53.594 4 35.95 4"
/>
<g
fill=
"#FF3939"
transform=
"translate(31 17)"
>
<rect
width=
"11"
height=
"24"
rx=
"3"
/>
<circle
cx=
"5.5"
cy=
"32.5"
r=
"5.5"
/>
</g>
</g>
</svg>
src/assets/home.svg
View file @
78b799fb
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"18"
height=
"18"
viewBox=
"0 0 18 18"
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"18"
height=
"18"
viewBox=
"0 0 18 18"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-3 -3)"
/>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-3 -3)"
/>
<path
stroke=
"#
FFF
"
stroke-linejoin=
"round"
stroke-width=
"1.2"
d=
"M4.46 8.838l7.019-4.492c.329-.21.75-.21 1.08.001l6.982 4.49c.286.185.459.502.459.842V19c0 .552-.448 1-1 1h-4.98 0v-6.924H9.991V20H5c-.552 0-1-.448-1-1V9.68c0-.34.174-.658.46-.842z"
transform=
"translate(-3 -3)"
/>
<path
stroke=
"#
0D2846
"
stroke-linejoin=
"round"
stroke-width=
"1.2"
d=
"M4.46 8.838l7.019-4.492c.329-.21.75-.21 1.08.001l6.982 4.49c.286.185.459.502.459.842V19c0 .552-.448 1-1 1h-4.98 0v-6.924H9.991V20H5c-.552 0-1-.448-1-1V9.68c0-.34.174-.658.46-.842z"
transform=
"translate(-3 -3)"
/>
</g>
</g>
</svg>
</svg>
src/assets/laporan.svg
View file @
78b799fb
...
@@ -2,9 +2,9 @@
...
@@ -2,9 +2,9 @@
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-5 -4)"
/>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-5 -4)"
/>
<g
transform=
"translate(-5 -4) translate(6 4)"
>
<g
transform=
"translate(-5 -4) translate(6 4)"
>
<rect
width=
"12"
height=
"14"
y=
"2"
stroke=
"#
FFF
"
stroke-width=
"1.2"
rx=
"2"
/>
<rect
width=
"12"
height=
"14"
y=
"2"
stroke=
"#
0D2846
"
stroke-width=
"1.2"
rx=
"2"
/>
<rect
width=
"8"
height=
"3"
x=
"2"
fill=
"#
FFF
"
rx=
"1"
/>
<rect
width=
"8"
height=
"3"
x=
"2"
fill=
"#
0D2846
"
rx=
"1"
/>
<path
stroke=
"#
FFF
"
stroke-linecap=
"round"
stroke-width=
"1.2"
d=
"M2 12.5L6 12.5M2 6.5L10 6.5M2 9.5L10 9.5"
/>
<path
stroke=
"#
0D2846
"
stroke-linecap=
"round"
stroke-width=
"1.2"
d=
"M2 12.5L6 12.5M2 6.5L10 6.5M2 9.5L10 9.5"
/>
</g>
</g>
</g>
</g>
</svg>
</svg>
src/assets/laporanbulanan.svg
View file @
78b799fb
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"16"
height=
"19"
viewBox=
"0 0 16 19"
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"16"
height=
"19"
viewBox=
"0 0 16 19"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-4 -2)"
/>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-4 -2)"
/>
<g
stroke=
"#
FFF
"
stroke-width=
"1.2"
transform=
"translate(-4 -2) translate(5 3)"
>
<g
stroke=
"#
0D2846
"
stroke-width=
"1.2"
transform=
"translate(-4 -2) translate(5 3)"
>
<rect
width=
"12"
height=
"15"
y=
"2"
rx=
"2"
/>
<rect
width=
"12"
height=
"15"
y=
"2"
rx=
"2"
/>
<path
d=
"M2 2.06h0V2c0-1.105.895-2 2-2h8c1.105 0 2 .895 2 2v11c0 1.105-.895 2-2 2h0"
/>
<path
d=
"M2 2.06h0V2c0-1.105.895-2 2-2h8c1.105 0 2 .895 2 2v11c0 1.105-.895 2-2 2h0"
/>
<path
stroke-linecap=
"round"
d=
"M2 5.025L10.02 5.025M2 8L10.02 8M2 11L10.02 11M2 14L6.01 14"
/>
<path
stroke-linecap=
"round"
d=
"M2 5.025L10.02 5.025M2 8L10.02 8M2 11L10.02 11M2 14L6.01 14"
/>
...
...
src/assets/masterbudget.svg
View file @
78b799fb
...
@@ -2,12 +2,12 @@
...
@@ -2,12 +2,12 @@
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-3 -3)"
/>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-3 -3)"
/>
<g
transform=
"translate(-3 -3) translate(4 4)"
>
<g
transform=
"translate(-3 -3) translate(4 4)"
>
<path
stroke=
"#
FFF
"
stroke-width=
"1.2"
d=
"M13.704 16.008c.197 0 1.207.025 1.223-.002C15.606 14.834 16 13.459 16 12c0-4.418-3.582-8-8-8s-8 3.582-8 8c0 1.46.391 2.83 1.075 4.008.008.013.436.013 1.286 0h11.343z"
/>
<path
stroke=
"#
0D2846
"
stroke-width=
"1.2"
d=
"M13.704 16.008c.197 0 1.207.025 1.223-.002C15.606 14.834 16 13.459 16 12c0-4.418-3.582-8-8-8s-8 3.582-8 8c0 1.46.391 2.83 1.075 4.008.008.013.436.013 1.286 0h11.343z"
/>
<text
fill=
"#
FFF
"
font-family=
"Nunito-Bold, Nunito"
font-size=
"8"
font-weight=
"bold"
>
<text
fill=
"#
0D2846
"
font-family=
"Nunito-Bold, Nunito"
font-size=
"8"
font-weight=
"bold"
>
<tspan
x=
"3"
y=
"13"
>
Rp
</tspan>
<tspan
x=
"3"
y=
"13"
>
Rp
</tspan>
</text>
</text>
<path
stroke=
"#
FFF
"
stroke-width=
"1.2"
d=
"M10.139.004c.074 0 .452-.009.458 0 .255.39.403.848.403 1.333C11 2.807 9.657 4 8 4S5 2.808 5 1.337c0-.486.147-.941.403-1.333.003-.005.164-.005.482 0h4.254z"
/>
<path
stroke=
"#
0D2846
"
stroke-width=
"1.2"
d=
"M10.139.004c.074 0 .452-.009.458 0 .255.39.403.848.403 1.333C11 2.807 9.657 4 8 4S5 2.808 5 1.337c0-.486.147-.941.403-1.333.003-.005.164-.005.482 0h4.254z"
/>
<rect
width=
"8"
height=
"1"
x=
"4"
y=
"3"
fill=
"#
FFF
"
rx=
".5"
/>
<rect
width=
"8"
height=
"1"
x=
"4"
y=
"3"
fill=
"#
0D2846
"
rx=
".5"
/>
</g>
</g>
</g>
</g>
</svg>
</svg>
src/assets/masterdata.svg
View file @
78b799fb
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"18"
height=
"13"
viewBox=
"0 0 18 13"
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"18"
height=
"13"
viewBox=
"0 0 18 13"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-3 -5)"
/>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-3 -5)"
/>
<g
stroke=
"#
FFF
"
stroke-width=
"1.2"
transform=
"translate(-3 -5) translate(4 6)"
>
<g
stroke=
"#
0D2846
"
stroke-width=
"1.2"
transform=
"translate(-3 -5) translate(4 6)"
>
<path
d=
"M.137 8.279l1.51-6.721C1.853.647 2.663 0 3.597 0h8.808c.933 0 1.742.645 1.95 1.555l1.509 6.724"
/>
<path
d=
"M.137 8.279l1.51-6.721C1.853.647 2.663 0 3.597 0h8.808c.933 0 1.742.645 1.95 1.555l1.509 6.724"
/>
<rect
width=
"16"
height=
"4"
y=
"7"
rx=
"2"
/>
<rect
width=
"16"
height=
"4"
y=
"7"
rx=
"2"
/>
</g>
</g>
...
...
src/assets/operatingindicator.svg
0 → 100644
View file @
78b799fb
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"18"
height=
"18"
viewBox=
"0 0 18 18"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-3 -3)"
/>
<g
transform=
"translate(-3 -3) translate(4 4)"
>
<circle
cx=
"8"
cy=
"8"
r=
"8"
stroke=
"#0D2846"
stroke-width=
"1.2"
/>
<path
fill=
"#0D2846"
d=
"M16 8c0 4.418-3.582 8-8 8s-8-3.582-8-8h6c0 1.105.895 2 2 2s2-.895 2-2z"
/>
<circle
cx=
"8"
cy=
"8"
r=
"1"
fill=
"#0D2846"
/>
<path
fill=
"#0D2846"
d=
"M7 8L8 2.046 9 8z"
/>
</g>
</g>
</svg>
src/assets/otorisasi.svg
View file @
78b799fb
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"18"
height=
"13"
viewBox=
"0 0 18 13"
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"18"
height=
"13"
viewBox=
"0 0 18 13"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-3 -6)"
/>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-3 -6)"
/>
<g
stroke=
"#
FFF
"
stroke-width=
"1.2"
transform=
"translate(-3 -6) translate(4 7)"
>
<g
stroke=
"#
0D2846
"
stroke-width=
"1.2"
transform=
"translate(-3 -6) translate(4 7)"
>
<rect
width=
"16"
height=
"11"
stroke-linejoin=
"round"
rx=
"1"
/>
<rect
width=
"16"
height=
"11"
stroke-linejoin=
"round"
rx=
"1"
/>
<path
stroke-linejoin=
"round"
d=
"M1 0h14c.552 0 1 .448 1 1v2h0H0V1c0-.552.448-1 1-1z"
/>
<path
stroke-linejoin=
"round"
d=
"M1 0h14c.552 0 1 .448 1 1v2h0H0V1c0-.552.448-1 1-1z"
/>
<path
d=
"M3 0L3 11M10 0L10 11"
/>
<path
d=
"M3 0L3 11M10 0L10 11"
/>
...
...
src/assets/outlookperformance.svg
0 → 100644
View file @
78b799fb
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"15"
height=
"18"
viewBox=
"0 0 15 18"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-4 -3)"
/>
<g
stroke=
"#0D2846"
stroke-width=
"1.2"
transform=
"translate(-4 -3) translate(5 4)"
>
<rect
width=
"13"
height=
"16"
rx=
"2"
/>
<path
stroke-linecap=
"round"
stroke-linejoin=
"round"
d=
"M2 4.065L2.983 5.012 5.002 3M2 8.065L2.983 9.012 5.002 7M2 12.065L2.983 13.012 5.002 11"
/>
<path
stroke-linecap=
"round"
d=
"M7 4.006L11.002 4.006M7 8.006L11.002 8.006M7 12.006L11.002 12.006"
/>
</g>
</g>
</svg>
src/assets/rolling.svg
0 → 100644
View file @
78b799fb
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"17"
height=
"18"
viewBox=
"0 0 17 18"
>
<g
fill=
"none"
fill-rule=
"evenodd"
opacity=
".9"
>
<path
d=
"M0 0H24V24H0z"
transform=
"translate(-3 -3)"
/>
<g
stroke=
"#0D2846"
stroke-linejoin=
"round"
stroke-width=
"1.2"
>
<path
d=
"M0 2L9 0 9 16 0 14z"
transform=
"translate(-3 -3) translate(4 4)"
/>
<path
fill=
"#0D2846"
d=
"M9 3H15V13H9z"
transform=
"translate(-3 -3) translate(4 4)"
/>
</g>
</g>
</svg>
src/assets/sass/app.css
View file @
78b799fb
...
@@ -6,6 +6,19 @@
...
@@ -6,6 +6,19 @@
background-color: #f0f1f3 !important;
background-color: #f0f1f3 !important;
}
}
.blue-color{
color: #1a2d3e !important;
}
.btn-save{
width: 102px;
height: 30px;
object-fit: contain;
border-radius: 4px;
background-color: #354960;
outline: none;
}
.gradient-purple {
.gradient-purple {
background: linear-gradient(to top, #9b59b6 10%, #e74c3c 100%);
background: linear-gradient(to top, #9b59b6 10%, #e74c3c 100%);
color: #fff; }
color: #fff; }
...
@@ -145,6 +158,9 @@
...
@@ -145,6 +158,9 @@
border-top-right-radius: 20px;
border-top-right-radius: 20px;
border-bottom-right-radius: 20px;
border-bottom-right-radius: 20px;
}
}
.btn-no-outline{
outline: 'none'
}
.color-white {
.color-white {
src/container/Home.js
View file @
78b799fb
...
@@ -76,6 +76,7 @@ const useStyles = makeStyles((theme) => ({
...
@@ -76,6 +76,7 @@ const useStyles = makeStyles((theme) => ({
},
},
drawerOpen
:
{
drawerOpen
:
{
width
:
drawerWidth
,
width
:
drawerWidth
,
borderRight
:
0
,
transition
:
theme
.
transitions
.
create
(
'width'
,
{
transition
:
theme
.
transitions
.
create
(
'width'
,
{
easing
:
theme
.
transitions
.
easing
.
sharp
,
easing
:
theme
.
transitions
.
easing
.
sharp
,
duration
:
theme
.
transitions
.
duration
.
enteringScreen
,
duration
:
theme
.
transitions
.
duration
.
enteringScreen
,
...
@@ -83,6 +84,7 @@ const useStyles = makeStyles((theme) => ({
...
@@ -83,6 +84,7 @@ const useStyles = makeStyles((theme) => ({
backgroundColor
:
'#f6f7f9'
backgroundColor
:
'#f6f7f9'
},
},
drawerClose
:
{
drawerClose
:
{
borderRight
:
0
,
transition
:
theme
.
transitions
.
create
(
'width'
,
{
transition
:
theme
.
transitions
.
create
(
'width'
,
{
easing
:
theme
.
transitions
.
easing
.
sharp
,
easing
:
theme
.
transitions
.
easing
.
sharp
,
duration
:
theme
.
transitions
.
duration
.
leavingScreen
,
duration
:
theme
.
transitions
.
duration
.
leavingScreen
,
...
@@ -251,7 +253,7 @@ export default function MiniDrawer() {
...
@@ -251,7 +253,7 @@ export default function MiniDrawer() {
{
ArraySide
.
map
((
item
,
index
)
=>
(
{
ArraySide
.
map
((
item
,
index
)
=>
(
<
div
style
=
{{
marginTop
:
index
===
0
?
null
:
5
}}
>
<
div
style
=
{{
marginTop
:
index
===
0
?
null
:
5
}}
>
{
item
.
subItem
!=
null
?
{
item
.
subItem
!=
null
?
<
div
style
=
{{
justifyContent
:
'space-between'
,
flexDirection
:
'row'
,
display
:
'flex'
,
paddingLeft
:
10
,
paddingRight
:
10
}}
onClick
=
{()
=>
selectedIndexs
==
null
?
setSelectedIndexs
(
item
.
label
)
:
setSelectedIndexs
(
null
)}
>
<
div
style
=
{{
justifyContent
:
'space-between'
,
flexDirection
:
'row'
,
display
:
'flex'
,
paddingLeft
:
5
,
paddingRight
:
10
}}
onClick
=
{()
=>
selectedIndexs
==
null
?
setSelectedIndexs
(
item
.
label
)
:
setSelectedIndexs
(
null
)}
>
<
ListItem
key
=
{
item
.
label
}
>
<
ListItem
key
=
{
item
.
label
}
>
<
ListItemIcon
style
=
{{
minWidth
:
open
?
40
:
56
}}
><
img
src
=
{
item
.
img
}
/></
ListItemIcon
>
<
ListItemIcon
style
=
{{
minWidth
:
open
?
40
:
56
}}
><
img
src
=
{
item
.
img
}
/></
ListItemIcon
>
<
Typography
style
=
{{
fontFamily
:
'nunito'
,
color
:
'#525355'
,
fontSize
:
14
}}
>
{
item
.
label
}
<
/Typography
>
<
Typography
style
=
{{
fontFamily
:
'nunito'
,
color
:
'#525355'
,
fontSize
:
14
}}
>
{
item
.
label
}
<
/Typography
>
...
@@ -268,7 +270,7 @@ export default function MiniDrawer() {
...
@@ -268,7 +270,7 @@ export default function MiniDrawer() {
<
/Link> : nul
l
<
/Link> : nul
l
:
:
<
Link
to
=
{
`
${
url
}
/
${
item
.
path
}
`
}
>
<
Link
to
=
{
`
${
url
}
/
${
item
.
path
}
`
}
>
<
div
style
=
{{
paddingLeft
:
10
}}
className
=
{
selectedIndex
===
item
.
label
?
"active"
:
""
}
>
<
div
style
=
{{
paddingLeft
:
5
}}
className
=
{
selectedIndex
===
item
.
label
?
"active"
:
""
}
>
<
ListItem
button
key
=
{
item
.
label
}
onClick
=
{()
=>
selectIndex
(
item
.
label
)}
>
<
ListItem
button
key
=
{
item
.
label
}
onClick
=
{()
=>
selectIndex
(
item
.
label
)}
>
<
ListItemIcon
style
=
{{
minWidth
:
open
?
40
:
56
}}
><
img
src
=
{
item
.
img
}
style
=
{{
fill
:
'#525355'
}}
/></
ListItemIcon
>
<
ListItemIcon
style
=
{{
minWidth
:
open
?
40
:
56
}}
><
img
src
=
{
item
.
img
}
style
=
{{
fill
:
'#525355'
}}
/></
ListItemIcon
>
<
Typography
style
=
{{
fontFamily
:
'nunito'
,
color
:
'#525355'
,
fontSize
:
14
}}
>
{
item
.
label
}
<
/Typography
>
<
Typography
style
=
{{
fontFamily
:
'nunito'
,
color
:
'#525355'
,
fontSize
:
14
}}
>
{
item
.
label
}
<
/Typography
>
...
@@ -283,7 +285,7 @@ export default function MiniDrawer() {
...
@@ -283,7 +285,7 @@ export default function MiniDrawer() {
{
item
.
subItem
.
map
((
sub
,
indexs
)
=>
{
{
item
.
subItem
.
map
((
sub
,
indexs
)
=>
{
return
(
return
(
<
Link
to
=
{
`
${
url
}
/
${
sub
.
path
}
`
}
>
<
Link
to
=
{
`
${
url
}
/
${
sub
.
path
}
`
}
>
<
div
style
=
{{
paddingLeft
:
10
,
}}
className
=
{
selectedSubIndex
===
sub
.
label
?
"active"
:
""
}
onClick
=
{()
=>
selectSub
(
sub
.
label
)}
>
<
div
style
=
{{
paddingLeft
:
5
,
}}
className
=
{
selectedSubIndex
===
sub
.
label
?
"active"
:
""
}
onClick
=
{()
=>
selectSub
(
sub
.
label
)}
>
<
ListItem
button
style
=
{{
paddingLeft
:
61
}}
>
<
ListItem
button
style
=
{{
paddingLeft
:
61
}}
>
<
Typography
style
=
{{
fontFamily
:
'nunito'
,
color
:
'#525355'
,
fontSize
:
14
}}
>
{
sub
.
label
}
<
/Typography
>
<
Typography
style
=
{{
fontFamily
:
'nunito'
,
color
:
'#525355'
,
fontSize
:
14
}}
>
{
sub
.
label
}
<
/Typography
>
<
/ListItem
>
<
/ListItem
>
...
...
src/container/Laporan/DashboardCAT.js
View file @
78b799fb
...
@@ -33,7 +33,7 @@ export default class DashboardCAT extends Component {
...
@@ -33,7 +33,7 @@ export default class DashboardCAT extends Component {
]
]
return
(
return
(
<
div
className
=
'a-s-p-mid no-header'
>
<
div
className
=
'a-s-p-mid no-header'
>
<
div
className
=
{
"main-color"
}
style
=
{{
padding
:
2
8
}}
>
<
div
className
=
{
"main-color"
}
style
=
{{
padding
:
2
7
}}
>
<
Typography
style
=
{{
fontSize
:
'16px'
,
color
:
'white'
}}
>
ON
CHANGE
CAT
<
/Typography
>
<
Typography
style
=
{{
fontSize
:
'16px'
,
color
:
'white'
}}
>
ON
CHANGE
CAT
<
/Typography
>
<
/div
>
<
/div
>
<
div
className
=
"padding-20px"
>
<
div
className
=
"padding-20px"
>
...
...
src/container/MasterData/UnitBisnis.js
View file @
78b799fb
...
@@ -11,6 +11,7 @@ import { TextField, InputBase } from "@material-ui/core";
...
@@ -11,6 +11,7 @@ import { TextField, InputBase } from "@material-ui/core";
import
{
ExcelRenderer
}
from
'react-excel-renderer'
;
import
{
ExcelRenderer
}
from
'react-excel-renderer'
;
import
api
from
"../../api"
;
import
api
from
"../../api"
;
import
{
isThisSecond
}
from
"date-fns"
;
import
{
isThisSecond
}
from
"date-fns"
;
import
PopUpFailedSave
from
"../../library/PopUpFailedSave"
;
var
ct
=
require
(
"../../library/CustomTable"
);
var
ct
=
require
(
"../../library/CustomTable"
);
const
getMuiTheme
=
()
=>
createMuiTheme
(
ct
.
customTable
());
const
getMuiTheme
=
()
=>
createMuiTheme
(
ct
.
customTable
());
...
@@ -30,7 +31,8 @@ export default class UnitBisnis extends Component {
...
@@ -30,7 +31,8 @@ export default class UnitBisnis extends Component {
visibleUnitBisnis
:
true
,
visibleUnitBisnis
:
true
,
cols
:
null
,
cols
:
null
,
rows
:
null
,
rows
:
null
,
dataLoaded
:
false
dataLoaded
:
false
,
popupError
:
false
}
}
this
.
fileHandler
=
this
.
fileHandler
.
bind
(
this
);
this
.
fileHandler
=
this
.
fileHandler
.
bind
(
this
);
}
}
...
@@ -352,7 +354,7 @@ export default class UnitBisnis extends Component {
...
@@ -352,7 +354,7 @@ export default class UnitBisnis extends Component {
return
(
return
(
<
div
style
=
{{
height
:
this
.
props
.
height
}}
>
<
div
style
=
{{
height
:
this
.
props
.
height
}}
>
{
/* <Row> */
}
{
/* <Row> */
}
<
div
style
=
{{
height
:
199
,
width
:
'100%'
}}
className
=
{
"main-color"
}
/
>
<
div
style
=
{{
height
:
199
,
width
:
'100%'
}}
className
=
{
"main-color"
}
/
>
{
this
.
state
.
visibleUnitBisnis
===
true
?
{
this
.
state
.
visibleUnitBisnis
===
true
?
<
div
>
<
div
>
<
div
style
=
{{
display
:
'flex'
,
flexDirection
:
'row'
,
justifyContent
:
'space-between'
,
paddingRight
:
25
,
paddingLeft
:
25
,
marginTop
:
-
150
}}
>
<
div
style
=
{{
display
:
'flex'
,
flexDirection
:
'row'
,
justifyContent
:
'space-between'
,
paddingRight
:
25
,
paddingLeft
:
25
,
marginTop
:
-
150
}}
>
...
@@ -454,28 +456,15 @@ export default class UnitBisnis extends Component {
...
@@ -454,28 +456,15 @@ export default class UnitBisnis extends Component {
<
span
style
=
{{
color
:
'#354960'
,
fontSize
:
11
}}
>
Batal
<
/span
>
<
span
style
=
{{
color
:
'#354960'
,
fontSize
:
11
}}
>
Batal
<
/span
>
<
/div
>
<
/div
>
<
/button
>
<
/button
>
{
this
.
state
.
buttonError
===
true
?
<
a
data
-
tip
=
{
'Terdapat Error saat import data'
}
data
-
for
=
"button"
>
<
button
<
button
type
=
"button"
type
=
"button"
onClick
=
{()
=>
null
}
onClick
=
{()
=>
this
.
state
.
buttonError
?
this
.
setState
({
popupError
:
true
})
:
this
.
uploadUnitBisnis
()
}
style
=
{{}}
style
=
{{}}
>
>
<
div
style
=
{{
width
:
102
,
height
:
30
,
backgroundColor
:
'#354960'
,
borderRadius
:
5
,
alignItems
:
'center'
,
display
:
'flex'
,
justifyContent
:
'center'
}}
>
<
div
style
=
{{
width
:
102
,
height
:
30
,
backgroundColor
:
'#354960'
,
borderRadius
:
5
,
alignItems
:
'center'
,
display
:
'flex'
,
justifyContent
:
'center'
}}
>
<
span
style
=
{{
color
:
'#fff'
,
fontSize
:
11
}}
>
Simpan
<
/span
>
<
span
style
=
{{
color
:
'#fff'
,
fontSize
:
11
}}
>
Simpan
<
/span
>
<
/div
>
<
/div
>
<
/button
>
<
/button
>
<
/a>
:
<
button
type
=
"button"
onClick
=
{()
=>
this
.
uploadUnitBisnis
()}
style
=
{{}}
>
<
div
style
=
{{
width
:
102
,
height
:
30
,
backgroundColor
:
'#354960'
,
borderRadius
:
5
,
alignItems
:
'center'
,
display
:
'flex'
,
justifyContent
:
'center'
}}
>
<
span
style
=
{{
color
:
'#fff'
,
fontSize
:
11
}}
>
Simpan
<
/span
>
<
/div
>
<
/button>
}
<
ReactTooltip
border
=
{
true
}
id
=
"button"
place
=
"top"
type
=
"light"
effect
=
"solid"
/>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
}
}
...
@@ -496,6 +485,10 @@ export default class UnitBisnis extends Component {
...
@@ -496,6 +485,10 @@ export default class UnitBisnis extends Component {
updateUnitBisnis
=
{
this
.
updateUnitBisnis
.
bind
(
this
)}
updateUnitBisnis
=
{
this
.
updateUnitBisnis
.
bind
(
this
)}
/
>
/
>
)}
)}
{
this
.
state
.
popupError
&&
(
<
PopUpFailedSave
onClickClose
=
{()
=>
this
.
setState
({
popupError
:
false
})}
/
>
)}
{
this
.
state
.
visibleUpload
&&
(
{
this
.
state
.
visibleUpload
&&
(
<
div
className
=
"test app-popup-show"
>
<
div
className
=
"test app-popup-show"
>
<
div
className
=
"popup-content background-white border-radius"
style
=
{{
borderRadius
:
8
}}
>
<
div
className
=
"popup-content background-white border-radius"
style
=
{{
borderRadius
:
8
}}
>
...
...
src/container/Otorisasi/User.js
View file @
78b799fb
...
@@ -11,6 +11,8 @@ import { titleCase } from "../../library/Utils";
...
@@ -11,6 +11,8 @@ import { titleCase } from "../../library/Utils";
import
{
InputAdornment
,
TextField
}
from
"@material-ui/core"
;
import
{
InputAdornment
,
TextField
}
from
"@material-ui/core"
;
import
UploadFile
from
"../../library/Upload"
;
import
UploadFile
from
"../../library/Upload"
;
import
{
ExcelRenderer
}
from
'react-excel-renderer'
;
import
{
ExcelRenderer
}
from
'react-excel-renderer'
;
import
ReactTooltip
from
"react-tooltip"
;
import
PopUpFailedSave
from
"../../library/PopUpFailedSave"
;
var
ct
=
require
(
"../../library/CustomTable"
);
var
ct
=
require
(
"../../library/CustomTable"
);
const
getMuiTheme
=
()
=>
createMuiTheme
(
ct
.
customTable
());
const
getMuiTheme
=
()
=>
createMuiTheme
(
ct
.
customTable
());
...
@@ -76,7 +78,7 @@ const tesss = [{
...
@@ -76,7 +78,7 @@ const tesss = [{
options
:
{
options
:
{
customBodyRender
:
(
val
,
tableMeta
)
=>
{
customBodyRender
:
(
val
,
tableMeta
)
=>
{
return
(
return
(
<
div
style
=
{{
display
:
'flex'
}}
>
<
div
style
=
{{
display
:
'flex'
}}
>
{
val
}
{
val
}
<
/div
>
<
/div
>
);
);
...
@@ -101,11 +103,11 @@ export default class UserRole extends Component {
...
@@ -101,11 +103,11 @@ export default class UserRole extends Component {
}
}
closeEdit
()
{
closeEdit
()
{
this
.
setState
({
edit
:
false
})
this
.
setState
({
edit
:
false
})
}
}
closeAdd
()
{
closeAdd
()
{
this
.
setState
({
add
:
false
})
this
.
setState
({
add
:
false
})
}
}
getUser
()
{
getUser
()
{
...
@@ -114,11 +116,11 @@ export default class UserRole extends Component {
...
@@ -114,11 +116,11 @@ export default class UserRole extends Component {
if
(
response
.
data
.
status
==
'success'
)
{
if
(
response
.
data
.
status
==
'success'
)
{
// console.log(response.data.data)
// console.log(response.data.data)
let
data
=
response
.
data
.
data
let
data
=
response
.
data
.
data
let
listData
=
data
.
map
((
item
,
index
)
=>
{
let
listData
=
data
.
map
((
item
,
index
)
=>
{
return
[
index
,
item
.
user_id
,
item
.
fullname
,
item
.
email
,
item
.
role_name
,
item
.
company
,
item
.
status
]
return
[
index
,
item
.
user_id
,
item
.
fullname
,
item
.
email
,
item
.
role_name
,
item
.
company
,
item
.
status
]
})
})
// console.log(listData)
// console.log(listData)
this
.
setState
({
listUser
:
listData
})
this
.
setState
({
listUser
:
listData
})
// this.setState({listUser: response.data.data}, () => {
// this.setState({listUser: response.data.data}, () => {
// console.log(this.state.listUser)
// console.log(this.state.listUser)
// })
// })
...
@@ -136,10 +138,10 @@ export default class UserRole extends Component {
...
@@ -136,10 +138,10 @@ export default class UserRole extends Component {
api
.
create
().
searchUser
(
payload
).
then
((
response
)
=>
{
api
.
create
().
searchUser
(
payload
).
then
((
response
)
=>
{
if
(
response
.
data
.
status
==
'success'
)
{
if
(
response
.
data
.
status
==
'success'
)
{
let
data
=
response
.
data
.
data
let
data
=
response
.
data
.
data
let
listData
=
data
.
map
((
item
,
index
)
=>
{
let
listData
=
data
.
map
((
item
,
index
)
=>
{
return
[
index
,
item
.
user_id
,
item
.
fullname
,
item
.
email
,
item
.
role_name
,
item
.
company
,
item
.
status
]
return
[
index
,
item
.
user_id
,
item
.
fullname
,
item
.
email
,
item
.
role_name
,
item
.
company
,
item
.
status
]
})
})
this
.
setState
({
listUser
:
listData
})
this
.
setState
({
listUser
:
listData
})
}
else
{
}
else
{
alert
(
response
.
data
.
message
)
alert
(
response
.
data
.
message
)
}
}
...
@@ -154,19 +156,157 @@ export default class UserRole extends Component {
...
@@ -154,19 +156,157 @@ export default class UserRole extends Component {
}
}
else
{
else
{
let
judul
=
resp
.
rows
[
0
]
let
judul
=
resp
.
rows
[
0
]
let
isi
=
resp
.
rows
.
slice
(
1
)
let
isi
=
resp
.
rows
.
slice
(
3
)
// let body = isi.map((item) => {
let
payload
=
[]
// return {
isi
.
map
((
item
,
index
)
=>
{
// item
payload
.
push
({
// ]
id
:
item
.
id
,
// })
fullname
:
item
[
0
],
console
.
log
(
JSON
.
stringify
(
isi
));
email
:
item
[
1
],
role
:
item
[
2
],
start_date
:
item
[
3
],
end_date
:
item
[
4
],
})
})
let
body
=
{
user
:
payload
}
this
.
setState
({
payload
:
body
})
api
.
create
().
checkUploadUser
(
body
).
then
(
response
=>
{
console
.
log
(
response
);
if
(
response
.
data
.
status
===
"success"
)
{
let
dataRow
=
response
.
data
.
data
.
map
((
item
,
index
)
=>
{
return
[
index
+
1
,
item
.
fullname
,
item
.
email
,
item
.
role
,
item
.
start_date
,
item
.
end_date
,
item
.
error
]
})
let
columns
=
[
"Data Ke-"
,
"Nama Lengkap"
,
{
name
:
"Email"
,
options
:
{
customBodyRender
:
(
val
,
tableMeta
)
=>
{
console
.
log
(
tableMeta
)
let
check
=
null
if
(
tableMeta
.
rowData
[
6
]
!=
null
)
{
check
=
tableMeta
.
rowData
[
6
].
findIndex
((
val
)
=>
val
.
field
.
includes
(
'email'
))
if
(
check
>
-
1
)
{
this
.
setState
({
buttonError
:
true
})
}
}
return
(
<
div
style
=
{{
display
:
'flex'
}}
>
{
tableMeta
.
rowData
[
6
]
!=
null
&&
check
>
-
1
?
<
a
data
-
tip
=
{
tableMeta
.
rowData
[
6
][
check
].
message
}
data
-
for
=
"email"
>
<
span
style
=
{{
color
:
check
!=
null
&&
check
>
-
1
?
"red"
:
'black'
}}
>
{
val
}
<
/span
>
<
/a>
:
<
span
style
=
{{
color
:
check
!=
null
&&
check
>
-
1
?
"red"
:
'black'
}}
>
{
val
}
<
/span
>
}
<
ReactTooltip
border
=
{
true
}
id
=
"email"
place
=
"bottom"
type
=
"light"
effect
=
"solid"
/>
<
/div
>
);
}
}
},
{
name
:
"Role"
,
options
:
{
customBodyRender
:
(
val
,
tableMeta
)
=>
{
let
check
=
null
if
(
tableMeta
.
rowData
[
6
]
!=
null
)
{
check
=
tableMeta
.
rowData
[
6
].
findIndex
((
val
)
=>
val
.
field
.
includes
(
'role'
))
if
(
check
>
-
1
)
{
this
.
setState
({
buttonError
:
true
})
}
}
return
(
<
div
style
=
{{
display
:
'flex'
}}
>
{
tableMeta
.
rowData
[
6
]
!=
null
&&
check
>
-
1
?
<
a
data
-
tip
=
{
tableMeta
.
rowData
[
6
][
check
].
message
}
data
-
for
=
"role"
>
<
span
style
=
{{
color
:
check
!=
null
&&
check
>
-
1
?
"red"
:
'black'
}}
>
{
val
}
<
/span
>
<
/a>
:
<
span
style
=
{{
color
:
check
!=
null
&&
check
>
-
1
?
"red"
:
'black'
}}
>
{
val
}
<
/span
>
}
<
ReactTooltip
border
=
{
true
}
id
=
"role"
place
=
"bottom"
type
=
"light"
effect
=
"solid"
/>
<
/div
>
);
}
}
},
{
name
:
"Berlaku Mulai"
,
options
:
{
customBodyRender
:
(
val
,
tableMeta
)
=>
{
let
check
=
null
if
(
tableMeta
.
rowData
[
6
]
!=
null
)
{
check
=
tableMeta
.
rowData
[
6
].
findIndex
((
val
)
=>
val
.
field
.
includes
(
'start_date'
))
if
(
check
>
-
1
)
{
this
.
setState
({
buttonError
:
true
})
}
}
return
(
<
div
style
=
{{
display
:
'flex'
}}
>
{
tableMeta
.
rowData
[
6
]
!=
null
&&
check
>
-
1
?
<
a
data
-
tip
=
{
tableMeta
.
rowData
[
6
][
check
].
message
}
data
-
for
=
"startdate"
>
<
span
style
=
{{
color
:
check
!=
null
&&
check
>
-
1
?
"red"
:
'black'
}}
>
{
val
}
<
/span
>
<
/a>
:
<
span
style
=
{{
color
:
check
!=
null
&&
check
>
-
1
?
"red"
:
'black'
}}
>
{
val
}
<
/span
>
}
<
ReactTooltip
border
=
{
true
}
id
=
"startdate"
place
=
"bottom"
type
=
"light"
effect
=
"solid"
/>
<
/div
>
);
}
}
},
{
name
:
"Berakhir Hingga"
,
options
:
{
customBodyRender
:
(
val
,
tableMeta
)
=>
{
let
check
=
null
if
(
tableMeta
.
rowData
[
6
]
!=
null
)
{
check
=
tableMeta
.
rowData
[
6
].
findIndex
((
val
)
=>
val
.
field
.
includes
(
'end_date'
))
if
(
check
>
-
1
)
{
this
.
setState
({
buttonError
:
true
})
}
}
return
(
<
div
style
=
{{
display
:
'flex'
}}
>
{
tableMeta
.
rowData
[
6
]
!=
null
&&
check
>
-
1
?
<
a
data
-
tip
=
{
tableMeta
.
rowData
[
6
][
check
].
message
}
data
-
for
=
"enddate"
>
<
span
style
=
{{
color
:
check
!=
null
&&
check
>
-
1
?
"red"
:
'black'
}}
>
{
val
}
<
/span
>
<
/a>
:
<
span
style
=
{{
color
:
check
!=
null
&&
check
>
-
1
?
"red"
:
'black'
}}
>
{
val
}
<
/span
>
}
<
ReactTooltip
border
=
{
true
}
id
=
"enddate"
place
=
"bottom"
type
=
"light"
effect
=
"solid"
/>
<
/div
>
);
}
}
},
{
name
:
""
,
options
:
{
display
:
false
}
}
]
this
.
setState
({
this
.
setState
({
dataLoaded
:
true
,
dataLoaded
:
true
,
cols
:
tess
s
,
cols
:
column
s
,
rows
:
isi
rows
:
dataRow
});
});
}
}
})
}
});
});
}
}
...
@@ -186,7 +326,7 @@ export default class UserRole extends Component {
...
@@ -186,7 +326,7 @@ export default class UserRole extends Component {
}
}
downloadDataTables
=
async
()
=>
{
downloadDataTables
=
async
()
=>
{
let
res
=
await
fetch
(
"https://tia.eksad.com/tia-reporting-dev/public/user/export_user"
)
let
res
=
await
fetch
(
"https://tia.eksad.com/tia-reporting-dev/public/user/export_user"
)
res
=
await
res
.
blob
()
res
=
await
res
.
blob
()
console
.
log
(
res
)
console
.
log
(
res
)
if
(
res
.
size
>
0
)
{
if
(
res
.
size
>
0
)
{
...
@@ -208,6 +348,14 @@ export default class UserRole extends Component {
...
@@ -208,6 +348,14 @@ export default class UserRole extends Component {
}
}
}
}
uploadUser
()
{
api
.
create
().
uploadUser
(
this
.
state
.
payload
).
then
(
response
=>
{
console
.
log
(
response
)
this
.
getUser
()
this
.
setState
({
visibleUser
:
true
})
})
}
render
()
{
render
()
{
const
columns
=
[{
const
columns
=
[{
name
:
"Action"
,
name
:
"Action"
,
...
@@ -222,7 +370,7 @@ export default class UserRole extends Component {
...
@@ -222,7 +370,7 @@ export default class UserRole extends Component {
borderColor
:
'transparent'
,
borderColor
:
'transparent'
,
}}
}}
// onClick={() => console.log(tableMeta.rowData[1])}
// onClick={() => console.log(tableMeta.rowData[1])}
onClick
=
{()
=>
this
.
setState
({
edit
:
true
,
indexData
:
tableMeta
.
rowData
[
1
]
})}
onClick
=
{()
=>
this
.
setState
({
edit
:
true
,
indexData
:
tableMeta
.
rowData
[
1
]
})}
>
>
<
img
src
=
{
Images
.
editCopy
}
/
>
<
img
src
=
{
Images
.
editCopy
}
/
>
<
/button
>
<
/button
>
...
@@ -279,7 +427,7 @@ export default class UserRole extends Component {
...
@@ -279,7 +427,7 @@ export default class UserRole extends Component {
options
:
{
options
:
{
customBodyRender
:
(
val
,
tableMeta
)
=>
{
customBodyRender
:
(
val
,
tableMeta
)
=>
{
return
(
return
(
<
div
style
=
{{
display
:
'flex'
}}
>
<
div
style
=
{{
display
:
'flex'
}}
>
{
val
}
{
val
}
<
/div
>
<
/div
>
);
);
...
@@ -292,9 +440,9 @@ export default class UserRole extends Component {
...
@@ -292,9 +440,9 @@ export default class UserRole extends Component {
<
div
style
=
{{
height
:
199
,
backgroundColor
:
'#354960'
,
width
:
'100%'
}}
/
>
<
div
style
=
{{
height
:
199
,
backgroundColor
:
'#354960'
,
width
:
'100%'
}}
/
>
{
this
.
state
.
visibleUser
?
<
div
>
{
this
.
state
.
visibleUser
?
<
div
>
<
div
style
=
{{
display
:
'flex'
,
flexDirection
:
'row'
,
justifyContent
:
'space-between'
,
paddingRight
:
25
,
paddingLeft
:
25
,
marginTop
:
-
150
}}
>
<
div
style
=
{{
display
:
'flex'
,
flexDirection
:
'row'
,
justifyContent
:
'space-between'
,
paddingRight
:
25
,
paddingLeft
:
25
,
marginTop
:
-
150
}}
>
<
label
style
=
{{
fontFamily
:
'nunito'
,
color
:
'white'
,
width
:
'20%'
,
alignSelf
:
'center'
,
fontSize
:
18
}}
>
Master
Data
-
User
<
/label
>
<
label
style
=
{{
fontFamily
:
'nunito'
,
color
:
'white'
,
width
:
'20%'
,
alignSelf
:
'center'
,
fontSize
:
18
}}
>
Master
Data
-
User
<
/label
>
<
div
style
=
{{
width
:
'60%'
,
justifyContent
:
'center'
,
display
:
'flex'
,
borderWidth
:
2
,
alignItems
:
'center'
}}
>
<
div
style
=
{{
width
:
'60%'
,
justifyContent
:
'center'
,
display
:
'flex'
,
borderWidth
:
2
,
alignItems
:
'center'
}}
>
<
div
style
=
{{
width
:
'50%'
,
backgroundColor
:
'white'
,
padding
:
10
,
borderRadius
:
7.5
}}
>
<
div
style
=
{{
width
:
'50%'
,
backgroundColor
:
'white'
,
padding
:
10
,
borderRadius
:
7.5
}}
>
<
TextField
<
TextField
id
=
"input-with-icon-textfield"
id
=
"input-with-icon-textfield"
name
=
"search"
name
=
"search"
...
@@ -310,9 +458,9 @@ export default class UserRole extends Component {
...
@@ -310,9 +458,9 @@ export default class UserRole extends Component {
});
});
}}
}}
onKeyDown
=
{(
e
)
=>
this
.
_handleKeyDown
(
e
)}
onKeyDown
=
{(
e
)
=>
this
.
_handleKeyDown
(
e
)}
style
=
{{
width
:
'100%'
,
borderBottomWidth
:
0
,
borderBottomColor
:
'red'
}}
style
=
{{
width
:
'100%'
,
borderBottomWidth
:
0
,
borderBottomColor
:
'red'
}}
InputProps
=
{{
InputProps
=
{{
style
:
{
fontFamily
:
'nunito'
,
borderBottomColor
:
'white'
},
style
:
{
fontFamily
:
'nunito'
,
borderBottomColor
:
'white'
},
startAdornment
:
(
startAdornment
:
(
<
InputAdornment
position
=
"start"
>
<
InputAdornment
position
=
"start"
>
<
SearchIcon
/>
<
SearchIcon
/>
...
@@ -333,7 +481,7 @@ export default class UserRole extends Component {
...
@@ -333,7 +481,7 @@ export default class UserRole extends Component {
}}
}}
onClick
=
{()
=>
this
.
downloadFile
()}
onClick
=
{()
=>
this
.
downloadFile
()}
>
>
<
img
src
=
{
Images
.
template
}
/
>
<
img
src
=
{
Images
.
template
}
/
>
<
/button
>
<
/button
>
<
button
<
button
style
=
{{
style
=
{{
...
@@ -347,7 +495,7 @@ export default class UserRole extends Component {
...
@@ -347,7 +495,7 @@ export default class UserRole extends Component {
}}
}}
onClick
=
{()
=>
this
.
setState
({
visibleUpload
:
true
})}
onClick
=
{()
=>
this
.
setState
({
visibleUpload
:
true
})}
>
>
<
img
src
=
{
Images
.
upload
}
/
>
<
img
src
=
{
Images
.
upload
}
/
>
<
/button
>
<
/button
>
<
button
<
button
style
=
{{
style
=
{{
...
@@ -361,7 +509,7 @@ export default class UserRole extends Component {
...
@@ -361,7 +509,7 @@ export default class UserRole extends Component {
}}
}}
onClick
=
{()
=>
this
.
downloadDataTables
()}
onClick
=
{()
=>
this
.
downloadDataTables
()}
>
>
<
img
src
=
{
Images
.
download
}
/
>
<
img
src
=
{
Images
.
download
}
/
>
<
/button
>
<
/button
>
<
button
<
button
style
=
{{
style
=
{{
...
@@ -373,9 +521,9 @@ export default class UserRole extends Component {
...
@@ -373,9 +521,9 @@ export default class UserRole extends Component {
marginRight
:
5
,
marginRight
:
5
,
marginLeft
:
20
marginLeft
:
20
}}
}}
onClick
=
{()
=>
this
.
setState
({
add
:
true
})}
onClick
=
{()
=>
this
.
setState
({
add
:
true
})}
>
>
<
img
src
=
{
Images
.
add
}
/
>
<
img
src
=
{
Images
.
add
}
/
>
<
/button
>
<
/button
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -415,9 +563,15 @@ export default class UserRole extends Component {
...
@@ -415,9 +563,15 @@ export default class UserRole extends Component {
<
span
style
=
{{
color
:
'#354960'
,
fontSize
:
11
}}
>
Batal
<
/span
>
<
span
style
=
{{
color
:
'#354960'
,
fontSize
:
11
}}
>
Batal
<
/span
>
<
/div
>
<
/div
>
<
/button
>
<
/button
>
<
button
type
=
"button"
onClick
=
{()
=>
this
.
state
.
buttonError
?
this
.
setState
({
popupError
:
true
})
:
null
}
style
=
{{}}
>
<
div
style
=
{{
width
:
102
,
height
:
30
,
backgroundColor
:
'#354960'
,
borderRadius
:
5
,
alignItems
:
'center'
,
display
:
'flex'
,
justifyContent
:
'center'
}}
>
<
div
style
=
{{
width
:
102
,
height
:
30
,
backgroundColor
:
'#354960'
,
borderRadius
:
5
,
alignItems
:
'center'
,
display
:
'flex'
,
justifyContent
:
'center'
}}
>
<
span
style
=
{{
color
:
'#fff'
,
fontSize
:
11
}}
>
Simpan
<
/span
>
<
span
style
=
{{
color
:
'#fff'
,
fontSize
:
11
}}
>
Simpan
<
/span
>
<
/div
>
<
/div
>
<
/button
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
}
}
...
@@ -435,6 +589,9 @@ export default class UserRole extends Component {
...
@@ -435,6 +589,9 @@ export default class UserRole extends Component {
data
=
{
this
.
state
.
indexData
}
data
=
{
this
.
state
.
indexData
}
/
>
/
>
)}
)}
{
this
.
state
.
popupError
&&
(
<
PopUpFailedSave
onClickClose
=
{()
=>
this
.
setState
({
popupError
:
false
})}
/
>
)}
{
this
.
state
.
visibleUpload
&&
(
{
this
.
state
.
visibleUpload
&&
(
<
div
className
=
"test app-popup-show"
>
<
div
className
=
"test app-popup-show"
>
<
div
className
=
"popup-content background-white border-radius"
style
=
{{
borderRadius
:
8
}}
>
<
div
className
=
"popup-content background-white border-radius"
style
=
{{
borderRadius
:
8
}}
>
...
...
src/container/Profile.js
View file @
78b799fb
import
React
,
{
Component
}
from
'react'
;
import
React
,
{
Component
}
from
'react'
;
import
{
Typography
,
AppBar
,
Tabs
,
Tab
,
TextField
}
from
'@material-ui/core'
;
import
{
Typography
,
AppBar
,
Tabs
,
Tab
,
TextField
,
Collapse
,
withStyles
,
Checkbox
}
from
'@material-ui/core'
;
import
HomePage
from
'./HomePage'
;
import
HomePage
from
'./HomePage'
;
import
Images
from
'../assets/Images'
;
import
Images
from
'../assets/Images'
;
import
api
from
'../api'
;
import
api
from
'../api'
;
import
Constant
from
'../library/Constant'
;
import
RemoveIcon
from
'@material-ui/icons/Remove'
;
import
AddIcon
from
'@material-ui/icons/Add'
;
import
{
titleCase
}
from
'../library/Utils'
;
const
CustomCheckbox
=
withStyles
({
root
:
{
color
:
'#51c6ea'
,
'&$checked'
:
{
color
:
'#51c6ea'
,
},
},
checked
:
{},
})((
props
)
=>
<
Checkbox
color
=
"default"
{...
props
}
/>
)
;
export
default
class
Profile
extends
Component
{
export
default
class
Profile
extends
Component
{
constructor
(
props
)
{
constructor
(
props
)
{
...
@@ -18,11 +32,21 @@ export default class Profile extends Component {
...
@@ -18,11 +32,21 @@ export default class Profile extends Component {
msgOldPassword
:
'Terdiri 8 karakter dengan kombinasi angka.'
,
msgOldPassword
:
'Terdiri 8 karakter dengan kombinasi angka.'
,
msgPassword
:
'Terdiri 8 karakter dengan kombinasi angka.'
,
msgPassword
:
'Terdiri 8 karakter dengan kombinasi angka.'
,
msgConfirmPassword
:
'Terdiri 8 karakter dengan kombinasi angka.'
,
msgConfirmPassword
:
'Terdiri 8 karakter dengan kombinasi angka.'
,
company
:
[],
listCompany
:
[],
selectedIndex
:
0
}
}
}
componentDidMount
()
{
this
.
getPerusahaan
()
this
.
getUser
()
}
}
selectTab
=
(
event
,
newEvent
)
=>
{
selectTab
=
(
event
,
newEvent
)
=>
{
this
.
setState
({
tab
:
newEvent
})
this
.
setState
({
tab
:
newEvent
})
}
}
handleChange
(
e
)
{
handleChange
(
e
)
{
let
data
=
this
.
state
let
data
=
this
.
state
this
.
setState
({
...
data
,
[
e
.
target
.
name
]:
e
.
target
.
value
})
this
.
setState
({
...
data
,
[
e
.
target
.
name
]:
e
.
target
.
value
})
...
@@ -68,7 +92,7 @@ export default class Profile extends Component {
...
@@ -68,7 +92,7 @@ export default class Profile extends Component {
}
}
}
}
confirmPassword
(){
confirmPassword
()
{
let
body
=
{
let
body
=
{
"old_password"
:
this
.
state
.
oldPassword
,
"old_password"
:
this
.
state
.
oldPassword
,
"new_password"
:
this
.
state
.
password
,
"new_password"
:
this
.
state
.
password
,
...
@@ -77,7 +101,7 @@ export default class Profile extends Component {
...
@@ -77,7 +101,7 @@ export default class Profile extends Component {
api
.
create
().
changePassword
(
body
).
then
(
response
=>
{
api
.
create
().
changePassword
(
body
).
then
(
response
=>
{
console
.
log
(
response
);
console
.
log
(
response
);
if
(
response
.
data
.
status
===
"success"
)
{
if
(
response
.
data
.
status
===
"success"
)
{
this
.
setState
({
oldPassword
:
""
,
password
:
""
,
confirmPassword
:
""
})
this
.
setState
({
oldPassword
:
""
,
password
:
""
,
confirmPassword
:
""
})
alert
(
response
.
data
.
message
)
alert
(
response
.
data
.
message
)
}
else
{
}
else
{
alert
(
response
.
data
.
message
)
alert
(
response
.
data
.
message
)
...
@@ -96,10 +120,35 @@ export default class Profile extends Component {
...
@@ -96,10 +120,35 @@ export default class Profile extends Component {
return
re
.
test
(
String
(
email
).
toLowerCase
());
return
re
.
test
(
String
(
email
).
toLowerCase
());
}
}
getUser
()
{
let
userId
=
localStorage
.
getItem
(
Constant
.
USER
)
api
.
create
().
getDetailUser
(
userId
).
then
((
response
)
=>
{
if
(
response
.
data
.
status
==
'success'
)
{
this
.
setState
({
company
:
response
.
data
.
data
.
company
})
console
.
log
(
response
)
}
})
}
getPerusahaan
()
{
api
.
create
().
getPerusahaanHierarki
().
then
((
response
)
=>
{
if
(
response
.
data
.
status
==
'success'
)
{
this
.
setState
({
listCompany
:
response
.
data
.
data
})
console
.
log
(
response
.
data
.
data
)
}
})
}
handleItemChecked
(
item
)
{
let
indexID
=
this
.
state
.
company
.
findIndex
((
val
)
=>
val
==
item
.
company_id
)
return
indexID
==
-
1
?
false
:
true
}
render
()
{
render
()
{
return
(
return
(
<
div
style
=
{{
height
:
this
.
props
.
height
,
backgroundColor
:
'#f8f8f8'
,
marginBottom
:
100
,
minHeight
:
1000
}}
>
<
div
style
=
{{
height
:
this
.
props
.
height
,
backgroundColor
:
'#f8f8f8'
,
marginBottom
:
100
,
minHeight
:
1000
}}
>
<
div
style
=
{{
height
:
203
,
backgroundColor
:
'#354960'
,
flex
:
1
,
display
:
'flex'
,
alignItems
:
'flex-end'
,
padding
:
20
}}
>
<
div
className
=
{
"main-color"
}
style
=
{{
height
:
203
,
flex
:
1
,
display
:
'flex'
,
alignItems
:
'flex-end'
,
padding
:
20
}}
>
<
div
style
=
{{
display
:
'flex'
,
alignItems
:
'center'
}}
>
<
div
style
=
{{
display
:
'flex'
,
alignItems
:
'center'
}}
>
<
div
style
=
{{
height
:
72
,
width
:
72
,
backgroundColor
:
'white'
,
borderRadius
:
40
,
marginRight
:
20
}}
/
>
<
div
style
=
{{
height
:
72
,
width
:
72
,
backgroundColor
:
'white'
,
borderRadius
:
40
,
marginRight
:
20
}}
/
>
<
Typography
style
=
{{
fontSize
:
'24px'
,
color
:
'white'
,
fontWeight
:
'bold'
}}
>
John
Doe
<
/Typography
>
<
Typography
style
=
{{
fontSize
:
'24px'
,
color
:
'white'
,
fontWeight
:
'bold'
}}
>
John
Doe
<
/Typography
>
...
@@ -180,8 +229,8 @@ export default class Profile extends Component {
...
@@ -180,8 +229,8 @@ export default class Profile extends Component {
<
div
style
=
{{
width
:
'100%'
,
height
:
64
,
backgroundColor
:
'#354960'
,
display
:
'flex'
,
paddingLeft
:
20
,
borderTopLeftRadius
:
6
,
borderTopRightRadius
:
6
,
alignItems
:
'center'
}}
>
<
div
style
=
{{
width
:
'100%'
,
height
:
64
,
backgroundColor
:
'#354960'
,
display
:
'flex'
,
paddingLeft
:
20
,
borderTopLeftRadius
:
6
,
borderTopRightRadius
:
6
,
alignItems
:
'center'
}}
>
<
Typography
style
=
{{
fontSize
:
'13px'
,
color
:
'white'
,
fontWeight
:
'bold'
}}
>
Otorisasi
Perusahaan
<
/Typography
>
<
Typography
style
=
{{
fontSize
:
'13px'
,
color
:
'white'
,
fontWeight
:
'bold'
}}
>
Otorisasi
Perusahaan
<
/Typography
>
<
/div
>
<
/div
>
<
div
style
=
{{
padding
:
20
}}
>
<
div
style
=
{{
padding
:
20
,
overflow
:
'scroll'
,
height
:
'40vh'
}}
>
<
div
style
=
{{
display
:
'flex'
}}
>
{
/*
<div style={{ display: 'flex' }}>
<img src={Images.check} style={{ marginRight: 10 }} />
<img src={Images.check} style={{ marginRight: 10 }} />
<Typography style={{ fontSize: 14, opacity: .5, color: '#4b4b4b' }}>Agro PersadaTriputra </Typography>
<Typography style={{ fontSize: 14, opacity: .5, color: '#4b4b4b' }}>Agro PersadaTriputra </Typography>
</div>
</div>
...
@@ -196,7 +245,45 @@ export default class Profile extends Component {
...
@@ -196,7 +245,45 @@ export default class Profile extends Component {
<div style={{ display: 'flex', marginTop: 20, paddingLeft: 20 }}>
<div style={{ display: 'flex', marginTop: 20, paddingLeft: 20 }}>
<img src={Images.check} style={{ marginRight: 10 }} />
<img src={Images.check} style={{ marginRight: 10 }} />
<Typography style={{ fontSize: 14, opacity: .5, color: '#4b4b4b' }}>Dharma Poliplast</Typography>
<Typography style={{ fontSize: 14, opacity: .5, color: '#4b4b4b' }}>Dharma Poliplast</Typography>
</div> */
}
{
this
.
state
.
listCompany
.
map
((
item
,
index
)
=>
{
return
(
<
div
>
<
div
style
=
{{
display
:
'flex'
,
flexDirection
:
'row'
,
alignItems
:
'center'
,
justifyContent
:
'flex-start'
}}
>
<
span
>
<
CustomCheckbox
disabled
=
{
true
}
disabled
=
{
true
}
checked
=
{
this
.
handleItemChecked
(
item
)}
// onChange={() => this.handleItemClick(item)}
/
>
<
/span
>
<
Typography
style
=
{{
fontSize
:
12
}}
>
{
titleCase
(
item
.
company_name
)}
<
/Typography
>
<
/div
>
{
item
.
childCompany
.
length
>
0
&&
item
.
childCompany
.
map
((
items
,
indexs
)
=>
{
return
(
<
Collapse
in
=
{
index
==
this
.
state
.
selectedIndex
}
timeout
=
"auto"
unmountOnExit
>
<
div
style
=
{{
paddingLeft
:
30
,
display
:
'flex'
,
flexDirection
:
'row'
,
alignItems
:
'center'
,
justifyContent
:
'flex-start'
}}
>
{
/* {item.sub_menu.length > 0 && <span onClick={() => this.setState({ selectedIndex: index == this.state.selectedIndex ? 0 : index })} style={{ marginLeft: 7, marginRight: 2 }}>
{index == this.state.selectedIndex ? <RemoveIcon color={'action'} fontSize={'small'} /> : <AddIcon color={'action'} fontSize={'small'} />}
</span>} */
}
{
/* <RemoveIcon color={'action'} fontSize={'small'} /> */
}
<
span
>
<
CustomCheckbox
disabled
=
{
true
}
checked
=
{
this
.
handleItemChecked
(
items
)}
// onChange={() => this.handleItemClick(items)}
/
>
<
/span
>
<
Typography
style
=
{{
fontSize
:
12
}}
>
{
titleCase
(
items
.
company_name
)}
<
/Typography
>
<
/div
>
<
/Collapse
>
)
})}
<
/div
>
<
/div
>
)
})}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
...
src/library/Array.js
View file @
78b799fb
...
@@ -20,19 +20,19 @@ const arraySide = [
...
@@ -20,19 +20,19 @@ const arraySide = [
subItem
:
null
subItem
:
null
},
},
{
{
img
:
Images
.
manajemenDokumen
,
img
:
Images
.
rolling
,
label
:
'Rolling Outlook & CAT Revision'
,
label
:
'Rolling Outlook & CAT Revision'
,
path
:
'beranda'
,
path
:
'beranda'
,
subItem
:
null
subItem
:
null
},
},
{
{
img
:
Images
.
manajemenDokumen
,
img
:
Images
.
outlookperformance
,
label
:
'Outlook Performance Appraisal'
,
label
:
'Outlook Performance Appraisal'
,
path
:
'beranda'
,
path
:
'beranda'
,
subItem
:
null
subItem
:
null
},
},
{
{
img
:
Images
.
manajemenDokumen
,
img
:
Images
.
operatingindicator
,
label
:
'Operating Indicator'
,
label
:
'Operating Indicator'
,
path
:
'beranda'
,
path
:
'beranda'
,
subItem
:
null
subItem
:
null
...
@@ -71,6 +71,12 @@ const arraySide = [
...
@@ -71,6 +71,12 @@ const arraySide = [
path
:
'beranda'
,
path
:
'beranda'
,
subItem
:
null
subItem
:
null
},
},
{
img
:
''
,
label
:
'Profile'
,
path
:
'profile'
,
subItem
:
null
},
{
{
img
:
Images
.
masterdata
,
img
:
Images
.
masterdata
,
label
:
'Master Data'
,
label
:
'Master Data'
,
...
...
src/library/PopUpFailedSave.js
0 → 100644
View file @
78b799fb
import
React
,
{
Component
}
from
'react'
;
import
Images
from
'../assets/Images'
;
import
{
Typography
}
from
'@material-ui/core'
;
export
default
class
PopUpFailedSave
extends
Component
{
render
()
{
return
(
<
div
className
=
"test app-popup-show"
>
<
div
className
=
"popup-content background-white border-radius"
style
=
{{
borderRadius
:
8
,
padding
:
50
}}
>
<
div
style
=
{{
display
:
'flex'
,
justifyContent
:
'center'
}}
>
<
img
src
=
{
Images
.
failedCopy
}
/
>
<
/div
>
<
div
style
=
{{
display
:
'grid'
,
justifyContent
:
'center'
,
marginTop
:
20
}}
>
<
span
style
=
{{
textAlign
:
'center'
,
fontSize
:
14
,
fontWeight
:
'bold'
}}
>
{
`Maaf, penyimpanan data gagal.`
}
<
/span
>
<
span
style
=
{{
textAlign
:
'center'
,
fontSize
:
14
,
fontWeight
:
'bold'
}}
>
{
`Mohon ulangi beberapa saat lagi.`
}
<
/span
>
<
/div
>
<
div
style
=
{{
display
:
'grid'
,
justifyContent
:
'center'
,
marginTop
:
24
}}
>
<
button
className
=
{
"btn-save"
}
onClick
=
{()
=>
this
.
props
.
onClickClose
()}
>
<
span
style
=
{{
color
:
'white'
}}
>
OK
<
/span
>
<
/button
>
<
/div
>
<
/div
>
<
/div
>
);
}
}
src/router/homeRoutes.js
View file @
78b799fb
...
@@ -58,6 +58,10 @@ const routes = [
...
@@ -58,6 +58,10 @@ const routes = [
path
:
"/home/dashboard-cat"
,
path
:
"/home/dashboard-cat"
,
main
:
DashboardCAT
main
:
DashboardCAT
},
},
{
path
:
"/home/profile"
,
main
:
Profile
},
{
{
path
:
"*"
,
path
:
"*"
,
main
:
screen404
main
:
screen404
...
...
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