0.0.46
This commit is contained in:
parent
398f14e85e
commit
70676538af
145
css/main.css
145
css/main.css
@ -39,6 +39,9 @@ body[data-theme=dark] {
|
||||
body[data-theme=dark] .balance:nth-of-type(3) {
|
||||
color: rgba(var(--text-color), 1);
|
||||
}
|
||||
body[data-theme=dark] .person .person-initials {
|
||||
color: rgba(var(--text-color), 0.9) !important;
|
||||
}
|
||||
|
||||
a {
|
||||
font-weight: 600;
|
||||
@ -195,6 +198,10 @@ button:disabled ~ .loader {
|
||||
transform: none !important;
|
||||
}
|
||||
|
||||
sm-button[variant=outlined] {
|
||||
--accent-color: rgba(var(--text-color), 1);
|
||||
}
|
||||
|
||||
.loader {
|
||||
fill: none;
|
||||
stroke-width: 10;
|
||||
@ -622,7 +629,7 @@ details p {
|
||||
box-shadow: 0 0 0 0.4rem rgba(var(--text-color), 0.1) inset;
|
||||
}
|
||||
.balance:nth-of-type(2) {
|
||||
background: url(bg-art1.svg), linear-gradient(135deg, #fd946a, #ff4857);
|
||||
background: url(bg-art1.svg) left bottom, linear-gradient(135deg, #fd946a, #ff4857);
|
||||
background-size: cover;
|
||||
}
|
||||
.balance:nth-of-type(2) .tooltip {
|
||||
@ -631,7 +638,7 @@ details p {
|
||||
.balance:nth-of-type(3) {
|
||||
grid-area: flo;
|
||||
color: rgba(var(--foreground-color), 1);
|
||||
background: url(bg-art3.svg) bottom no-repeat, linear-gradient(270deg, #2f69e6, #1b0980);
|
||||
background: url(bg-art3.svg) center no-repeat, linear-gradient(270deg, #2f69e6, #1b0980);
|
||||
background-size: cover;
|
||||
}
|
||||
.balance:nth-of-type(3) .tooltip {
|
||||
@ -689,7 +696,8 @@ details p {
|
||||
padding: 1.5rem;
|
||||
gap: 2rem 0.2rem;
|
||||
}
|
||||
.options-tab .option {
|
||||
|
||||
.option {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@ -702,7 +710,7 @@ details p {
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
cursor: pointer;
|
||||
}
|
||||
.options-tab .option .icon {
|
||||
.option .icon {
|
||||
height: 3rem;
|
||||
width: 3rem;
|
||||
background: rgba(var(--text-color), 0.06);
|
||||
@ -710,12 +718,12 @@ details p {
|
||||
padding: 0.8rem;
|
||||
margin-bottom: 0.6rem;
|
||||
}
|
||||
.options-tab .option h4 {
|
||||
.option h4 {
|
||||
font-size: 0.85rem;
|
||||
opacity: 0.8;
|
||||
font-weight: 500;
|
||||
}
|
||||
.options-tab .option:active {
|
||||
.option:active {
|
||||
transform: scale(0.95);
|
||||
}
|
||||
|
||||
@ -1102,6 +1110,10 @@ sm-panel {
|
||||
grid-template-areas: "icon type amount" "icon receiver time";
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
.activity:active {
|
||||
transform: scale(0.95);
|
||||
}
|
||||
.activity .icon {
|
||||
grid-area: icon;
|
||||
@ -1220,20 +1232,124 @@ sm-panel {
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
#transaction_page .grid:first-of-type {
|
||||
#transaction_page header {
|
||||
padding: 0.5rem 0;
|
||||
grid-template-columns: auto 1fr;
|
||||
grid-template-areas: "back ." "back .";
|
||||
}
|
||||
#transaction_page .grid:first-of-type .back-arrow {
|
||||
#transaction_page header .back-arrow {
|
||||
grid-area: back;
|
||||
}
|
||||
#transaction_page .grid:first-of-type h4 {
|
||||
#transaction_page header h4 {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
#transaction_page .grid:first-of-type h5 {
|
||||
#transaction_page h5 {
|
||||
font-weight: 400;
|
||||
font-family: "Roboto", sans-serif;
|
||||
opacity: 0.8;
|
||||
margin-bottom: 0.2rem;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
#transaction_page #transaction_details {
|
||||
position: relative;
|
||||
margin: 1.5rem 0;
|
||||
padding: 1.5rem;
|
||||
background-color: rgba(var(--text-color), 0.06);
|
||||
max-width: 50ch;
|
||||
border-radius: 0.5rem;
|
||||
}
|
||||
#transaction_page #transaction_details .icon {
|
||||
height: 4rem;
|
||||
width: 4rem;
|
||||
padding: 1.2rem;
|
||||
border-radius: 4rem;
|
||||
background: rgba(var(--text-color), 0.06);
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
#transaction_page #transaction_details .flex {
|
||||
margin-bottom: 1rem;
|
||||
align-items: baseline;
|
||||
}
|
||||
#transaction_page #transaction_details strong {
|
||||
font-weight: 500;
|
||||
}
|
||||
#transaction_page #transaction_details strong:not(:last-of-type) {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
#transaction_page .transaction-amount {
|
||||
font-size: 2rem;
|
||||
font-weight: 400;
|
||||
}
|
||||
#transaction_page #transaction_time {
|
||||
right: 0;
|
||||
position: absolute;
|
||||
margin: 1.5rem;
|
||||
}
|
||||
|
||||
#people_container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
padding: 1.5rem;
|
||||
gap: 2rem 0.2rem;
|
||||
}
|
||||
|
||||
#add_person_btn {
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
transition: transform 0.3s;
|
||||
font-size: 0.85rem;
|
||||
opacity: 0.8;
|
||||
font-weight: 500;
|
||||
}
|
||||
#add_person_btn:active {
|
||||
transform: scale(0.95);
|
||||
}
|
||||
#add_person_btn .icon {
|
||||
height: 3rem;
|
||||
width: 3rem;
|
||||
border-radius: 2rem;
|
||||
padding: 1rem;
|
||||
background: rgba(var(--text-color), 0.06);
|
||||
align-self: center;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
|
||||
.person {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
transition: transform 0.3s;
|
||||
width: 5rem;
|
||||
}
|
||||
.person:active {
|
||||
transform: scale(0.95);
|
||||
}
|
||||
.person .person-initials {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
height: 3rem;
|
||||
width: 3rem;
|
||||
font-size: 1.2rem !important;
|
||||
font-weight: 500;
|
||||
align-items: center;
|
||||
border-radius: 2rem;
|
||||
margin-bottom: 0.4rem !important;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.person .person-name {
|
||||
font-size: 0.85rem;
|
||||
opacity: 0.8;
|
||||
font-weight: 500;
|
||||
text-transform: capitalize;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#person_popup h3 {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
#person_popup .copy-row {
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
#activity_page .empty-state,
|
||||
@ -1278,6 +1394,9 @@ sm-panel {
|
||||
#transaction_page {
|
||||
padding-top: 0;
|
||||
}
|
||||
#transaction_page header {
|
||||
padding: 1.5rem 0;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 640px) {
|
||||
.hide-on-desktop {
|
||||
@ -1358,7 +1477,7 @@ sm-panel {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.options-tab {
|
||||
.options-tab, #people_container {
|
||||
grid-template-columns: repeat(auto-fill, minmax(5rem, 1fr));
|
||||
gap: 2rem 0.8rem;
|
||||
}
|
||||
|
||||
2
css/main.min.css
vendored
2
css/main.min.css
vendored
File diff suppressed because one or more lines are too long
193
css/main.scss
193
css/main.scss
@ -37,6 +37,11 @@ body[data-theme="dark"]{
|
||||
.balance:nth-of-type(3){
|
||||
color: rgba(var(--text-color), 1);
|
||||
}
|
||||
.person{
|
||||
.person-initials{
|
||||
color: rgba(var(--text-color), 0.9) !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
@ -194,6 +199,10 @@ button {
|
||||
transform: none !important;
|
||||
}
|
||||
|
||||
sm-button[variant="outlined"]{
|
||||
--accent-color: rgba(var(--text-color), 1);
|
||||
}
|
||||
|
||||
.loader {
|
||||
fill: none;
|
||||
stroke-width: 10;
|
||||
@ -643,7 +652,7 @@ details{
|
||||
}
|
||||
}
|
||||
&:nth-of-type(2){
|
||||
background: url(bg-art1.svg), linear-gradient(135deg, #fd946a, #ff4857);
|
||||
background: url(bg-art1.svg) left bottom, linear-gradient(135deg, #fd946a, #ff4857);
|
||||
background-size: cover;
|
||||
.tooltip{
|
||||
box-shadow: 0 0 0 0.4rem #ff4857 inset;
|
||||
@ -652,7 +661,7 @@ details{
|
||||
&:nth-of-type(3){
|
||||
grid-area: flo;
|
||||
color: rgba(var(--foreground-color), 1);
|
||||
background: url(bg-art3.svg) bottom no-repeat, linear-gradient(270deg, #2f69e6, #1b0980);
|
||||
background: url(bg-art3.svg) center no-repeat, linear-gradient(270deg, #2f69e6, #1b0980);
|
||||
background-size: cover;
|
||||
.tooltip{
|
||||
box-shadow: 0 0 0 0.4rem#1b0980 inset;
|
||||
@ -710,36 +719,36 @@ details{
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
padding: 1.5rem;
|
||||
gap: 2rem 0.2rem;
|
||||
.option {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
border-radius: 0.4rem;
|
||||
width: 5rem;
|
||||
text-transform: capitalize;
|
||||
transition: transform 0.3s;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
cursor: pointer;
|
||||
.icon {
|
||||
height: 3rem;
|
||||
width: 3rem;
|
||||
background: rgba(var(--text-color), 0.06);
|
||||
border-radius: 2rem;
|
||||
padding: 0.8rem;
|
||||
margin-bottom: 0.6rem;
|
||||
}
|
||||
}
|
||||
.option {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
border-radius: 0.4rem;
|
||||
width: 5rem;
|
||||
text-transform: capitalize;
|
||||
transition: transform 0.3s;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
cursor: pointer;
|
||||
.icon {
|
||||
height: 3rem;
|
||||
width: 3rem;
|
||||
background: rgba(var(--text-color), 0.06);
|
||||
border-radius: 2rem;
|
||||
padding: 0.8rem;
|
||||
margin-bottom: 0.6rem;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 0.85rem;
|
||||
opacity: 0.8;
|
||||
font-weight: 500;
|
||||
}
|
||||
h4 {
|
||||
font-size: 0.85rem;
|
||||
opacity: 0.8;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
&:active {
|
||||
transform: scale(0.95);
|
||||
}
|
||||
&:active {
|
||||
transform: scale(0.95);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1164,6 +1173,10 @@ sm-panel{
|
||||
grid-template-areas: 'icon type amount' 'icon receiver time';
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
transition: transform 0.3s;
|
||||
&:active{
|
||||
transform: scale(0.95);
|
||||
}
|
||||
.icon{
|
||||
grid-area: icon;
|
||||
height: 3rem;
|
||||
@ -1280,20 +1293,123 @@ sm-panel{
|
||||
}
|
||||
|
||||
#transaction_page{
|
||||
.grid:first-of-type{
|
||||
header{
|
||||
padding: 0.5rem 0;
|
||||
grid-template-columns: auto 1fr;
|
||||
grid-template-areas: 'back .' 'back .';
|
||||
.back-arrow{
|
||||
grid-area: back;
|
||||
}
|
||||
h4{
|
||||
text-transform: capitalize;
|
||||
}
|
||||
h5{
|
||||
font-weight: 400;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
}
|
||||
h5{
|
||||
font-weight: 400;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
opacity: 0.8;
|
||||
margin-bottom: 0.2rem;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
#transaction_details{
|
||||
position: relative;
|
||||
margin: 1.5rem 0;
|
||||
padding: 1.5rem;
|
||||
background-color: rgba(var(--text-color), 0.06);
|
||||
max-width: 50ch;
|
||||
border-radius: 0.5rem;
|
||||
.icon{
|
||||
height: 4rem;
|
||||
width: 4rem;
|
||||
padding: 1.2rem;
|
||||
border-radius: 4rem;
|
||||
background: rgba(var(--text-color), 0.06);
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
.flex{
|
||||
margin-bottom: 1rem;
|
||||
align-items: baseline;
|
||||
}
|
||||
strong{
|
||||
font-weight: 500;
|
||||
}
|
||||
strong:not(:last-of-type){
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
}
|
||||
.transaction-amount{
|
||||
font-size: 2rem;
|
||||
font-weight: 400;
|
||||
}
|
||||
#transaction_time{
|
||||
right: 0;
|
||||
position: absolute;
|
||||
margin: 1.5rem;
|
||||
}
|
||||
}
|
||||
#people_container{
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
padding: 1.5rem;
|
||||
gap: 2rem 0.2rem;
|
||||
}
|
||||
#add_person_btn{
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
transition: transform 0.3s;
|
||||
font-size: 0.85rem;
|
||||
opacity: 0.8;
|
||||
font-weight: 500;
|
||||
&:active{
|
||||
transform: scale(0.95);
|
||||
}
|
||||
.icon{
|
||||
height: 3rem;
|
||||
width: 3rem;
|
||||
border-radius: 2rem;
|
||||
padding: 1rem;
|
||||
background: rgba(var(--text-color), 0.06);
|
||||
align-self: center;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
}
|
||||
.person{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
transition: transform 0.3s;
|
||||
width: 5rem;
|
||||
&:active{
|
||||
transform: scale(0.95);
|
||||
}
|
||||
.person-initials{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
height: 3rem;
|
||||
width: 3rem;
|
||||
font-size: 1.2rem !important;
|
||||
font-weight: 500;
|
||||
align-items: center;
|
||||
border-radius: 2rem;
|
||||
margin-bottom: 0.4rem !important;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.person-name{
|
||||
font-size: 0.85rem;
|
||||
opacity: 0.8;
|
||||
font-weight: 500;
|
||||
text-transform: capitalize;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
#person_popup{
|
||||
h3{
|
||||
text-transform: capitalize;
|
||||
}
|
||||
.copy-row{
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1337,6 +1453,9 @@ sm-panel{
|
||||
}
|
||||
#transaction_page{
|
||||
padding-top: 0;
|
||||
header{
|
||||
padding: 1.5rem 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1414,7 +1533,7 @@ sm-panel{
|
||||
margin-top: 1rem;
|
||||
}
|
||||
}
|
||||
.options-tab{
|
||||
.options-tab, #people_container{
|
||||
grid-template-columns: repeat(auto-fill, minmax(5rem, 1fr));
|
||||
gap: 2rem 0.8rem;
|
||||
}
|
||||
|
||||
294
index.html
294
index.html
@ -328,6 +328,7 @@
|
||||
</div>
|
||||
<sm-button class="round" variant="outlined" onclick="this.closest('sm-popup').hide()">Done</sm-button>
|
||||
</sm-popup>
|
||||
<!-- Add upi popup-->
|
||||
<sm-popup id="add_upi_popup">
|
||||
<header class="popup-header" slot="header">
|
||||
<svg class="icon" onclick="this.closest('sm-popup').hide()" viewBox="0 0 64 64">
|
||||
@ -348,6 +349,67 @@
|
||||
<sm-input id="add_upi_input" placeholder="UPI address" pattern="^[a-zA-z0-9]+@[a-zA-z0-9]+"
|
||||
required animate></sm-input>
|
||||
</sm-popup>
|
||||
|
||||
<!-- Add contact popup -->
|
||||
<sm-popup id="add_person_popup">
|
||||
<header class="popup-header" slot="header">
|
||||
<svg class="icon" onclick="this.closest('sm-popup').hide()" viewBox="0 0 64 64">
|
||||
<title>close</title>
|
||||
<line x1="64" y1="0" x2="0" y2="64" />
|
||||
<line x1="64" y1="64" x2="0" y2="0" />
|
||||
</svg>
|
||||
<h4>Add a person</h4>
|
||||
<button class="expand action" type="submit" onclick="addPerson()" disabled>
|
||||
<h4 class="primary-btn expand">
|
||||
Add person
|
||||
</h4>
|
||||
<svg viewBox="0 0 73 73" class="loader">
|
||||
<path d="M72.5,36.5c0,19.88-16.12,36-36,36s-36-16.12-36-36s16.12-36,36-36S72.5,16.62,72.5,36.5" />
|
||||
</svg>
|
||||
</button>
|
||||
</header>
|
||||
<sm-input id="person_flo_id" placeholder="FLO address" floId animate required></sm-input>
|
||||
<sm-input id="person_name" placeholder="Name" required animate></sm-input>
|
||||
</sm-popup>
|
||||
|
||||
<!-- Contact popup -->
|
||||
<sm-popup id="person_popup">
|
||||
<header class="popup-header" slot="header">
|
||||
<svg class="icon" onclick="this.closest('sm-popup').hide()" viewBox="0 0 64 64">
|
||||
<title>close</title>
|
||||
<line x1="64" y1="0" x2="0" y2="64" />
|
||||
<line x1="64" y1="64" x2="0" y2="0" />
|
||||
</svg>
|
||||
</header>
|
||||
<h3 id="show_person_name"></h3>
|
||||
<h5>FLO ID</h5>
|
||||
<div class="copy-row grid">
|
||||
<h4 id="show_person_flo_id" class="copy"></h4>
|
||||
<svg class="icon" onclick="copyToClipboard(this.parentNode)" viewBox="0 0 64 64">
|
||||
<title>Copy</title>
|
||||
<rect x="16" y="16" width="48" height="48" rx="6" />
|
||||
<path d="M.5,47.52V6.5a6,6,0,0,1,6-6h41" />
|
||||
</svg>
|
||||
</div>
|
||||
<h5>Rupee actions</h5>
|
||||
<div class="flex">
|
||||
<div class="option" onclick="showPopup('cash_transfer')">
|
||||
<svg class="icon" viewBox="0 0 64 64">
|
||||
<path
|
||||
d="M47.28,16.8,29.6,34.64a3.3,3.3,0,0,1-3.59.71L2.5,25.42a3.28,3.28,0,0,1,.26-6.13L59.21.87A3.28,3.28,0,0,1,63.32,5l-18.93,56a3.26,3.26,0,0,1-6.12.18l-6.4-15.68" />
|
||||
</svg>
|
||||
<h4>Send</h4>
|
||||
</div>
|
||||
<div class="option" onclick="showPopup('request_rupee')">
|
||||
<svg class="icon request-icon" viewBox="0 0 64 64">
|
||||
<path
|
||||
d="M47.28,16.8,29.6,34.64a3.3,3.3,0,0,1-3.59.71L2.5,25.42a3.28,3.28,0,0,1,.26-6.13L59.21.87A3.28,3.28,0,0,1,63.32,5l-18.93,56a3.26,3.26,0,0,1-6.12.18l-6.4-15.68" />
|
||||
</svg>
|
||||
<h4>Request</h4>
|
||||
</div>
|
||||
</div>
|
||||
</sm-popup>
|
||||
|
||||
<!-- Report popup-->
|
||||
<sm-popup id="report_popup">
|
||||
<header class="popup-header" slot="header">
|
||||
@ -492,6 +554,15 @@
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
<header>
|
||||
<h4>People</h4>
|
||||
</header>
|
||||
<section id="people_container">
|
||||
<div class="person">
|
||||
<h3 class="person-initials">S</h3>
|
||||
<h4 class="person-name">Sairaj Mote</h4>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="user-panel">
|
||||
<div class="flex align-items space-between">
|
||||
@ -763,7 +834,7 @@
|
||||
<sm-tab>Sent</sm-tab>
|
||||
<sm-tab>Deposits</sm-tab>
|
||||
<sm-tab>Withdrawals</sm-tab>
|
||||
<sm-tab>Pay through cashier</sm-tab>
|
||||
<sm-tab>Paid through cashier</sm-tab>
|
||||
<sm-tab>System Notifications</sm-tab>
|
||||
</sm-tab-header>
|
||||
<sm-tab-panels id="user_activities">
|
||||
@ -842,15 +913,15 @@
|
||||
<sm-button variant="primary" onclick="signOut()">Sign out</sm-button>
|
||||
</section>
|
||||
<section id="transaction_page" class="page">
|
||||
<div class="grid align-center">
|
||||
<svg class="icon back-arrow" onclick="showPage('activity_page', 'activity_page_btn')" viewBox="0 0 64 64">
|
||||
<header class="flex align-center" onclick="showPage('activity_page', 'activity_page_btn')">
|
||||
<svg class="icon back-arrow" viewBox="0 0 64 64">
|
||||
<title>Go to activity page</title>
|
||||
<polyline points="48.01 0.35 16.35 32 48.01 63.65"/>
|
||||
</svg>
|
||||
<h4 id="transaction_type">Transaction</h4>
|
||||
<h5 id="transaction_time">1pm sep 29 2020</h5>
|
||||
</div>
|
||||
<sm-button id="report_btn" variant="outlined">Report</div>
|
||||
<h4 id="transaction_type"></h4>
|
||||
</header>
|
||||
<div id="transaction_details" class="grid direction-column"></div>
|
||||
<sm-button onclick="showPopup('report_popup')" variant="outlined">Report</div>
|
||||
</section>
|
||||
</main>
|
||||
<script src="components.js"></script>
|
||||
@ -896,6 +967,7 @@
|
||||
userFloIdContainers.forEach(container => container.textContent = myFloID)
|
||||
defaultUPI = localStorage.getItem(`defaultUPI${myFloID}`)
|
||||
renderUserUPI()
|
||||
renderAllContacts()
|
||||
hideLoader()
|
||||
await token_app.actions.doShreeGanesh();
|
||||
}).catch(error => console.error(error))
|
||||
@ -963,7 +1035,7 @@
|
||||
return card;
|
||||
},
|
||||
activityCard(obj){
|
||||
let {type, amount, timeStamp, receiver} = obj;
|
||||
let {type, amount, timeStamp, receiver, upi_txid, receiverUPI} = obj;
|
||||
let card = document.createElement('div'),
|
||||
composition = ``,
|
||||
icon,
|
||||
@ -971,7 +1043,14 @@
|
||||
transaction,
|
||||
className
|
||||
card.classList.add('activity')
|
||||
setAttributes(card, {'data-type': type, 'data-vector-clock': timeStamp})
|
||||
setAttributes(card, {
|
||||
'data-type': type,
|
||||
'data-vector-clock': timeStamp,
|
||||
'data-receiver': receiver,
|
||||
'data-amount': amount,
|
||||
'data-upi-txid': upi_txid,
|
||||
'data-receiver-upi': receiverUPI
|
||||
})
|
||||
switch(type){
|
||||
case 'sent':
|
||||
icon = `
|
||||
@ -1329,6 +1408,18 @@
|
||||
<h4 class="demo-btn"></h4>
|
||||
</div>`
|
||||
return card;
|
||||
},
|
||||
contact(floId, name){
|
||||
console.log(floId, name)
|
||||
let card = document.createElement('div')
|
||||
card.classList.add('person')
|
||||
setAttributes(card, {'data-flo-id': floId, 'data-name': name})
|
||||
let color = randomHsl()
|
||||
card.innerHTML = `
|
||||
<h3 class="person-initials" style="background-color: ${color.light}; color: ${color.primary}">${name.charAt(0)}</h3>
|
||||
<h4 class="person-name">${name}</h4>
|
||||
`
|
||||
return card
|
||||
}
|
||||
}
|
||||
|
||||
@ -1494,6 +1585,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
function randomHsl(saturation = 90, lightness = 50) {
|
||||
let hue = Math.random() * 360
|
||||
let color = {
|
||||
primary: `hsla( ${hue}, ${saturation}%, ${lightness}%, 1)`,
|
||||
light : `hsla( ${hue}, ${saturation}%, 90%, 0.6)`
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
function clearAllInputs(parent) {
|
||||
if (parent.querySelectorAll("textarea"))
|
||||
parent.querySelectorAll("textarea").forEach((field) => {
|
||||
@ -1661,6 +1761,23 @@
|
||||
}
|
||||
})
|
||||
|
||||
//Function for handling contact click event
|
||||
|
||||
const showPersonName = document.getElementById('show_person_name'),
|
||||
showPersonFloId = document.getElementById('show_person_flo_id')
|
||||
peopleContainer.addEventListener('click', e => {
|
||||
if(e.target.closest('.person')){
|
||||
let person = e.target.closest('.person')
|
||||
showPersonName.textContent = person.dataset.name
|
||||
showPersonFloId.textContent = person.dataset.floId
|
||||
showPopup('person_popup')
|
||||
}
|
||||
if(e.target.closest('#add_person_btn')){
|
||||
showPopup('add_person_popup')
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
// Function for confirming deposit requests
|
||||
document.getElementById('pending_deposits_container').addEventListener('click', async (e) => {
|
||||
if (e.target.closest('.confirm-deposit-btn'))
|
||||
@ -1707,7 +1824,14 @@
|
||||
document.getElementById('activity_page').addEventListener('click', (e) => {
|
||||
if (e.target.closest('.activity')) {
|
||||
currentRequest = e.target.closest('.activity')
|
||||
showTransactionDetails({type: currentRequest.dataset.type, timeStamp: currentRequest.dataset.vectorClock})
|
||||
showTransactionDetails({
|
||||
type: currentRequest.dataset.type,
|
||||
timeStamp: currentRequest.dataset.vectorClock,
|
||||
amount: currentRequest.dataset.amount,
|
||||
receiver: currentRequest.dataset.receiver,
|
||||
upiTxId: currentRequest.dataset.upiTxid,
|
||||
receiverUPI: currentRequest.dataset.receiverUpi
|
||||
})
|
||||
}
|
||||
})
|
||||
// Function for reporting complain
|
||||
@ -1818,14 +1942,95 @@
|
||||
|
||||
const transactionPage = document.getElementById('transaction_page'),
|
||||
transactionType = document.getElementById('transaction_type'),
|
||||
transactionTime = document.getElementById('transaction_time')
|
||||
transactionDetails = document.getElementById('transaction_details')
|
||||
|
||||
function showTransactionDetails(obj){
|
||||
let {type, timeStamp, } = obj;
|
||||
if(type === 'payCashier')
|
||||
type = 'Paid through cashier'
|
||||
let {type, timeStamp, amount, receiver, upiTxId, receiverUPI} = obj;
|
||||
let composition = ``,
|
||||
icon,
|
||||
transaction,
|
||||
className
|
||||
|
||||
switch(type){
|
||||
case 'sent':
|
||||
icon = `
|
||||
<svg class="icon" viewBox="0 0 64 64">
|
||||
<path
|
||||
d="M47.28,16.8,29.6,34.64a3.3,3.3,0,0,1-3.59.71L2.5,25.42a3.28,3.28,0,0,1,.26-6.13L59.21.87A3.28,3.28,0,0,1,63.32,5l-18.93,56a3.26,3.26,0,0,1-6.12.18l-6.4-15.68" />
|
||||
</svg>
|
||||
`
|
||||
transaction = 'Sent to'
|
||||
break;
|
||||
case 'deposit':
|
||||
icon = `
|
||||
<svg class="icon" viewBox="0 0 64 64">
|
||||
<title>deposit</title>
|
||||
<path d="M29.58,35.76V60.47H5.13A4.63,4.63,0,0,1,.5,55.83V9.63" />
|
||||
<path d="M59.5,47v8.85a4.63,4.63,0,0,1-4.63,4.64H42.16" />
|
||||
<path
|
||||
d="M49.44,3.53H6.09A5.59,5.59,0,0,0,.5,9.12h0a5.59,5.59,0,0,0,5.59,5.59H38.91l14.38,0a6,6,0,0,1,6.21,6V32" />
|
||||
<path
|
||||
d="M54.39,32h6.08a3,3,0,0,1,3,3V44a3,3,0,0,1-3,3H54.39a7.49,7.49,0,0,1-7.49-7.49v0A7.49,7.49,0,0,1,54.39,32Z" />
|
||||
<polyline points="38.61 44.12 29.54 35.05 20.39 44.2" />
|
||||
</svg>
|
||||
`
|
||||
type = 'deposited'
|
||||
transaction = 'Deposited to'
|
||||
break;
|
||||
case 'withdraw':
|
||||
icon = `
|
||||
<svg class="icon" viewBox="0 0 64 64">
|
||||
<title>withdraw</title>
|
||||
<path d="M15.18,60.47h-10A4.63,4.63,0,0,1,.5,55.83V9.63" />
|
||||
<line x1="29.42" y1="59.04" x2="29.42" y2="34.34" />
|
||||
<path d="M59.5,47v8.85a4.63,4.63,0,0,1-4.63,4.64H43.62" />
|
||||
<path
|
||||
d="M49.44,3.53H6.09A5.59,5.59,0,0,0,.5,9.12h0a5.59,5.59,0,0,0,5.59,5.59H38.91l14.38,0a6,6,0,0,1,6.21,6V32" />
|
||||
<path
|
||||
d="M54.39,32h6.08a3,3,0,0,1,3,3V44a3,3,0,0,1-3,3H54.39a7.49,7.49,0,0,1-7.49-7.49v0A7.49,7.49,0,0,1,54.39,32Z" />
|
||||
<polyline points="20.39 50.69 29.45 59.76 38.61 50.6" />
|
||||
</svg>
|
||||
`
|
||||
type = 'withdrawn'
|
||||
transaction = 'withdrawn to'
|
||||
break;
|
||||
case 'payCashier':
|
||||
icon = `
|
||||
<svg class="icon" viewBox="0 0 64 64">
|
||||
<path d="M32,37.75A10.19,10.19,0,1,0,21.81,27.44V46.62" />
|
||||
<rect height="64" width="64" rx="8"></rect>
|
||||
</svg>
|
||||
`
|
||||
className = 'withdrawn'
|
||||
transaction = 'Paid to'
|
||||
type = 'Paid through cashier'
|
||||
break;
|
||||
}
|
||||
|
||||
composition = `${icon}
|
||||
<h5>${type}</h5>
|
||||
<div class="flex">
|
||||
₹ <span class="transaction-amount"> ${amount}</span>
|
||||
</div>`
|
||||
|
||||
if(receiver !== 'undefined')
|
||||
composition +=`
|
||||
<h5>${transaction}</h5> <strong>${receiver}</strong>`
|
||||
|
||||
if(upiTxId !== 'undefined')
|
||||
composition += `
|
||||
<h5>UPI transaction ID</h5>
|
||||
<strong>${upiTxId}</strong>
|
||||
`
|
||||
|
||||
if(receiverUPI !== 'undefined')
|
||||
composition += `
|
||||
<h5>Sent to UPI ID</h5>
|
||||
<strong>${receiverUPI}</strong>
|
||||
`
|
||||
composition += `<h5 id="transaction_time">${formatedTime(timeStamp)}</h5>`
|
||||
transactionDetails.innerHTML = composition
|
||||
transactionType.textContent = type
|
||||
transactionTime.textContent = formatedTime(timeStamp)
|
||||
showPage('transaction_page')
|
||||
}
|
||||
|
||||
@ -1926,6 +2131,41 @@
|
||||
|
||||
}
|
||||
|
||||
const contactFlo = document.getElementById('person_flo_id'),
|
||||
contactName = document.getElementById('person_name')
|
||||
async function addPerson(){
|
||||
compactIDB.addData('contacts', {name: contactName.value}, contactFlo.value)
|
||||
.then(success => {
|
||||
notify('Contact added', 'success')
|
||||
renderAllContacts()
|
||||
hidePopup()
|
||||
})
|
||||
.catch(error => {
|
||||
notify('Contact already added', 'error')
|
||||
})
|
||||
}
|
||||
|
||||
const peopleContainer = document.getElementById('people_container')
|
||||
async function renderAllContacts(){
|
||||
const allContacts = await compactIDB.readAllData('contacts')
|
||||
peopleContainer.innerHTML = ``
|
||||
for(contact in allContacts){
|
||||
frag.append(render.contact(contact, allContacts[contact].name))
|
||||
}
|
||||
peopleContainer.append(frag)
|
||||
let addPersonButton = document.createElement('div')
|
||||
addPersonButton.id="add_person_btn"
|
||||
addPersonButton.innerHTML = `
|
||||
<svg class="icon" viewBox="0 0 64 64">
|
||||
<title>add Contact</title>
|
||||
<line x1="32" x2="32" y2="64"/>
|
||||
<line x1="64" y1="32" y2="32"/>
|
||||
</svg>
|
||||
Add
|
||||
`
|
||||
peopleContainer.prepend(addPersonButton)
|
||||
}
|
||||
|
||||
function signIn() {
|
||||
return new Promise((resolve, reject) => {
|
||||
hideLoader()
|
||||
@ -1943,10 +2183,10 @@
|
||||
document.querySelector('main').classList.add('hide-completely')
|
||||
document.getElementById('navbar').classList.add('hide-completely')
|
||||
document.getElementById('main_header').classList.add('hide-completely')
|
||||
localStorage.removeItem(`defaultUPI${myFloID}`)
|
||||
floDapps.clearCredentials()
|
||||
compactIDB.deleteDB().then((message) => {
|
||||
delete token_app.master_configurations;
|
||||
localStorage.removeItem(`defaultUPI${myFloID}`)
|
||||
onLoadStartUp()
|
||||
notifications.clearAll()
|
||||
notify('Logged out')
|
||||
@ -9821,7 +10061,7 @@
|
||||
}
|
||||
});
|
||||
},
|
||||
addContact: function (id, floID, KB = this.supernodeKBucket) {
|
||||
addPerson: function (id, floID, KB = this.supernodeKBucket) {
|
||||
const contact = {
|
||||
id: id,
|
||||
floID: floID
|
||||
@ -9835,7 +10075,7 @@
|
||||
} catch (e) {
|
||||
decodedId = address;
|
||||
}
|
||||
this.addContact(decodedId, address, KB);
|
||||
this.addPerson(decodedId, address, KB);
|
||||
},
|
||||
isNodePresent: function (flo_id, KB = this.supernodeKBucket) {
|
||||
let kArray = KB.toArray();
|
||||
@ -10847,7 +11087,9 @@
|
||||
cash_sent_details: {},
|
||||
pay_thru_cashier: {},
|
||||
//user UPIs
|
||||
userUPIs: {}
|
||||
userUPIs: {},
|
||||
//contacts
|
||||
contacts: {}
|
||||
}
|
||||
//add other given objectStores
|
||||
for (o in this.appObs)
|
||||
@ -12337,7 +12579,8 @@
|
||||
let request_object = {
|
||||
user_flo_id: myFloID,
|
||||
upi_txid: upi_txid,
|
||||
deposit_amount: token_amount_to_buy.value
|
||||
deposit_amount: token_amount_to_buy.value,
|
||||
cashier_upi
|
||||
}
|
||||
if (typeof upi_txid === "string" && upi_txid.length > 1) {
|
||||
floCloudAPI.sendGeneralData(request_object, token_app.master_configurations
|
||||
@ -12347,7 +12590,7 @@
|
||||
hidePopup()
|
||||
showTransactionStatus('success', 'Deposit request sent.', 'It may take upto 48 hours for deposited amount to be reflected in your account.')
|
||||
btnLoading('request_tokens_btn', 'stop')
|
||||
depositActivityContainer.prepend(render.activityCard({type: 'deposit', amount: request_object.deposit_amount, timeStamp: `${Date.now()}_${myFloID}}`, upi_txid}))
|
||||
depositActivityContainer.prepend(render.activityCard({type: 'deposit', amount: request_object.deposit_amount, timeStamp: `${Date.now()}_${myFloID}}`, upi_txid, receiver: cashier_upi}))
|
||||
})
|
||||
return true;
|
||||
}
|
||||
@ -12469,7 +12712,7 @@
|
||||
showTransactionStatus('success', 'Pay through cashier Request sent.', `Sent to: <b class="breakable">${recvr_id}</b><br>
|
||||
through cashier UPI: <b>${cashier_upi}</b>.<br><br>
|
||||
Once the cashier receives your payment, they will transfer it to intended receiver.`);
|
||||
payCashierActivityContainer.prepend(render.activityCard({type: 'payCashier', amount: amount_to_pay, timeStamp: `${Date.now()}_${myFloID}`, receiver: recvr_id, upi_txid: req_object.upi_txid}))
|
||||
payCashierActivityContainer.prepend(render.activityCard({type: 'payCashier', amount: amount_to_pay, timeStamp: `${Date.now()}_${myFloID}`, receiver: recvr_id, receiverUPI: req_object.upi_txid}))
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
@ -12500,9 +12743,10 @@
|
||||
for (usr_deposits of deposit_msg) {
|
||||
let {
|
||||
upi_txid,
|
||||
deposit_amount
|
||||
deposit_amount,
|
||||
cashier_upi
|
||||
} = usr_deposits.message;
|
||||
frag.append(render.activityCard({type: 'deposit', amount: deposit_amount, timeStamp: usr_deposits.vectorClock, upi_txid}))
|
||||
frag.append(render.activityCard({type: 'deposit', amount: deposit_amount, timeStamp: usr_deposits.vectorClock, upi_txid, receiver: cashier_upi}))
|
||||
}
|
||||
|
||||
depositActivityContainer.innerHTML = ``;
|
||||
@ -12525,7 +12769,7 @@
|
||||
upi_txid,
|
||||
amount
|
||||
} = cashier_message.message;
|
||||
frag.append(render.activityCard({type: 'payCashier', amount, timeStamp: cashier_message.vectorClock, receiver: receiver_flo_id, upi_txid}))
|
||||
frag.append(render.activityCard({type: 'payCashier', amount, timeStamp: cashier_message.vectorClock, receiver: receiver_flo_id, receiverUPI: upi_txid}))
|
||||
}
|
||||
|
||||
payCashierActivityContainer.innerHTML = ``;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user