rebranding upgrade and various fixes
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 3.3 MiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 16 MiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 68 KiB |
@@ -1,12 +1,12 @@
|
||||
.btn-etho {
|
||||
color: #ffffff;
|
||||
background-color: #840032;
|
||||
background-color: #25D4DC;
|
||||
border-color: #103024;
|
||||
}
|
||||
|
||||
.btn-etho:hover {
|
||||
background: #fff;
|
||||
box-shadow: 0px 2px 10px 5px #840032;
|
||||
box-shadow: 0px 2px 10px 5px #25D4DC;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
@@ -41,12 +41,12 @@ fieldset[disabled] .btn-etho:active,
|
||||
.btn-etho.disabled.active,
|
||||
.btn-etho[disabled].active,
|
||||
fieldset[disabled] .btn-etho.active {
|
||||
background-color: #840032;
|
||||
background-color: #25D4DC;
|
||||
border-color: #450118;
|
||||
}
|
||||
|
||||
.btn-etho .badge {
|
||||
color: #840032;
|
||||
color: #25D4DC;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ fieldset[disabled] .btn-etho.active {
|
||||
font-size: 12px;
|
||||
letter-spacing: 2px;
|
||||
position: relative;
|
||||
background-color: #840032;
|
||||
background-color: #25D4DC;
|
||||
border: none;
|
||||
color: #fff;
|
||||
padding: 2px;
|
||||
@@ -71,13 +71,13 @@ fieldset[disabled] .btn-etho.active {
|
||||
|
||||
.button2:hover {
|
||||
background: #fff;
|
||||
box-shadow: 0px 2px 10px 5px #840032;
|
||||
box-shadow: 0px 2px 10px 5px #25D4DC;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.button2:after {
|
||||
content: "";
|
||||
background: #840032;
|
||||
background: #25D4DC;
|
||||
display: block;
|
||||
position: absolute;
|
||||
padding-top: 300%;
|
||||
@@ -106,7 +106,7 @@ fieldset[disabled] .btn-etho.active {
|
||||
font-size: 10px;
|
||||
letter-spacing: 1px;
|
||||
position: relative;
|
||||
background-color: #840032;
|
||||
background-color: #25D4DC;
|
||||
border: none;
|
||||
color: #fff;
|
||||
width: 110px;
|
||||
@@ -119,13 +119,13 @@ fieldset[disabled] .btn-etho.active {
|
||||
|
||||
.button3:hover {
|
||||
background: #fff;
|
||||
box-shadow: 0px 2px 10px 5px #840032;
|
||||
box-shadow: 0px 2px 10px 5px #25D4DC;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.button3:after {
|
||||
content: "";
|
||||
background: #840032;
|
||||
background: #25D4DC;
|
||||
display: block;
|
||||
position: absolute;
|
||||
padding-top: 300%;
|
||||
@@ -154,7 +154,7 @@ fieldset[disabled] .btn-etho.active {
|
||||
font-size: 12px;
|
||||
letter-spacing: 2px;
|
||||
position: relative;
|
||||
background-color: #840032;
|
||||
background-color: #25D4DC;
|
||||
border: none;
|
||||
color: #fff;
|
||||
padding: 8px;
|
||||
@@ -167,13 +167,13 @@ fieldset[disabled] .btn-etho.active {
|
||||
|
||||
.button4:hover {
|
||||
background: #fff;
|
||||
box-shadow: 0px 2px 10px 5px #840032;
|
||||
box-shadow: 0px 2px 10px 5px #25D4DC;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.button4:after {
|
||||
content: "";
|
||||
background: #840032;
|
||||
background: #25D4DC;
|
||||
display: block;
|
||||
position: absolute;
|
||||
padding-top: 300%;
|
||||
@@ -194,3 +194,4 @@ fieldset[disabled] .btn-etho.active {
|
||||
.button4:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
}
|
||||
|
||||
.dropdown-content li>a, .dropdown-content li>span {
|
||||
color: rgb(36, 13, 21);
|
||||
color: rgb(13, 36, 33);
|
||||
}
|
||||
|
||||
#sendFeeRange {
|
||||
@@ -27,7 +27,7 @@
|
||||
}
|
||||
|
||||
#tableTransactionsForAll .fa-sign-out-alt {
|
||||
color: red;
|
||||
color: rgb(0, 238, 255);
|
||||
}
|
||||
|
||||
#tableTransactionsForAll .fa-arrow-left {
|
||||
@@ -45,3 +45,4 @@
|
||||
#tableTransactionsForAll .fa-check {
|
||||
color: #228B22;
|
||||
}
|
||||
|
||||
|
||||
108
assets/styles/materialize.min.css
vendored
@@ -796,11 +796,11 @@
|
||||
}
|
||||
|
||||
.teal.lighten-1 {
|
||||
background-color: #840032 !important
|
||||
background-color: #24F9DD !important
|
||||
}
|
||||
|
||||
.teal-text.text-lighten-1 {
|
||||
color: #840032 !important
|
||||
color: #24F9DD !important
|
||||
}
|
||||
|
||||
.teal.darken-1 {
|
||||
@@ -2446,7 +2446,7 @@ td, th {
|
||||
}
|
||||
|
||||
.collection .collection-item.active {
|
||||
background-color: #840032;
|
||||
background-color: #24F9DD;
|
||||
color: #eafaf9
|
||||
}
|
||||
|
||||
@@ -2458,7 +2458,7 @@ td, th {
|
||||
display: block;
|
||||
-webkit-transition: .25s;
|
||||
transition: .25s;
|
||||
color: #840032
|
||||
color: #24F9DD
|
||||
}
|
||||
|
||||
.collection a.collection-item:not(.active):hover {
|
||||
@@ -2481,7 +2481,7 @@ td, th {
|
||||
|
||||
.secondary-content {
|
||||
float: right;
|
||||
color: #840032
|
||||
color: #24F9DD
|
||||
}
|
||||
|
||||
.collapsible .collection {
|
||||
@@ -2520,13 +2520,13 @@ td, th {
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
background-color: #840032;
|
||||
background-color: #24F9DD;
|
||||
-webkit-transition: width .3s linear;
|
||||
transition: width .3s linear
|
||||
}
|
||||
|
||||
.progress .indeterminate {
|
||||
background-color: #840032
|
||||
background-color: #24F9DD
|
||||
}
|
||||
|
||||
.progress .indeterminate:before {
|
||||
@@ -2693,7 +2693,7 @@ span.badge.new {
|
||||
font-weight: 300;
|
||||
font-size: 0.8rem;
|
||||
color: #fff;
|
||||
background-color: #840032;
|
||||
background-color: #24F9DD;
|
||||
border-radius: 2px
|
||||
}
|
||||
|
||||
@@ -4207,7 +4207,7 @@ small {
|
||||
}
|
||||
|
||||
.card .card-title {
|
||||
font-size: 24px;
|
||||
font-size: 19px;
|
||||
font-weight: 300
|
||||
}
|
||||
|
||||
@@ -4355,6 +4355,11 @@ small {
|
||||
line-height: 32px
|
||||
}
|
||||
|
||||
.cardValue {
|
||||
font-size:33px;
|
||||
margin-bottom:8px;
|
||||
}
|
||||
|
||||
.card .card-action {
|
||||
background-color: inherit;
|
||||
border-top: 1px solid rgba(160, 160, 160, 0.2);
|
||||
@@ -4657,7 +4662,7 @@ small {
|
||||
.btn, .btn-large, .btn-small {
|
||||
text-decoration: none;
|
||||
color: #fff;
|
||||
background-color: #840032;
|
||||
background-color: #24F9DD;
|
||||
text-align: center;
|
||||
letter-spacing: .5px;
|
||||
-webkit-transition: background-color .2s ease-out;
|
||||
@@ -4679,7 +4684,7 @@ small {
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
padding: 0;
|
||||
background-color: #840032;
|
||||
background-color: #24F9DD;
|
||||
border-radius: 50%;
|
||||
-webkit-transition: background-color .3s;
|
||||
transition: background-color .3s;
|
||||
@@ -4688,7 +4693,7 @@ small {
|
||||
}
|
||||
|
||||
.btn-floating:hover {
|
||||
background-color: #840032
|
||||
background-color: #24F9DD
|
||||
}
|
||||
|
||||
.btn-floating:before {
|
||||
@@ -4890,7 +4895,7 @@ button.btn-floating {
|
||||
z-index: -1;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
background-color: #840032;
|
||||
background-color: #24F9DD;
|
||||
border-radius: 50%;
|
||||
-webkit-transform: scale(0);
|
||||
transform: scale(0)
|
||||
@@ -4990,7 +4995,7 @@ button.btn-floating {
|
||||
|
||||
.dropdown-content li>a, .dropdown-content li>span {
|
||||
font-size: 16px;
|
||||
color: #840032;
|
||||
color: #24F9DD;
|
||||
display: block;
|
||||
line-height: 22px;
|
||||
padding: 14px 16px
|
||||
@@ -5357,7 +5362,7 @@ body.keyboard-focused .dropdown-content li:focus {
|
||||
|
||||
.chip:focus {
|
||||
outline: none;
|
||||
background-color: #840032;
|
||||
background-color: #24F9DD;
|
||||
color: #fff
|
||||
}
|
||||
|
||||
@@ -5390,9 +5395,9 @@ body.keyboard-focused .dropdown-content li:focus {
|
||||
}
|
||||
|
||||
.chips.focus {
|
||||
border-bottom: 1px solid #840032;
|
||||
-webkit-box-shadow: 0 1px 0 0 #840032;
|
||||
box-shadow: 0 1px 0 0 #840032
|
||||
border-bottom: 1px solid #24F9DD;
|
||||
-webkit-box-shadow: 0 1px 0 0 #24F9DD;
|
||||
box-shadow: 0 1px 0 0 #24F9DD
|
||||
}
|
||||
|
||||
.chips:hover {
|
||||
@@ -5547,9 +5552,9 @@ input:not([type]):disabled+label, input:not([type])[readonly="readonly"]+label,
|
||||
}
|
||||
|
||||
input:not([type]):focus:not([readonly]), input[type=text]:not(.browser-default):focus:not([readonly]), input[type=password]:not(.browser-default):focus:not([readonly]), input[type=email]:not(.browser-default):focus:not([readonly]), input[type=url]:not(.browser-default):focus:not([readonly]), input[type=time]:not(.browser-default):focus:not([readonly]), input[type=date]:not(.browser-default):focus:not([readonly]), input[type=datetime]:not(.browser-default):focus:not([readonly]), input[type=datetime-local]:not(.browser-default):focus:not([readonly]), input[type=tel]:not(.browser-default):focus:not([readonly]), input[type=number]:not(.browser-default):focus:not([readonly]), input[type=search]:not(.browser-default):focus:not([readonly]), textarea.materialize-textarea:focus:not([readonly]) {
|
||||
border-bottom: 1px solid #840032;
|
||||
-webkit-box-shadow: 0 1px 0 0 #840032;
|
||||
box-shadow: 0 1px 0 0 #840032
|
||||
border-bottom: 1px solid #24F9DD;
|
||||
-webkit-box-shadow: 0 1px 0 0 #24F9DD;
|
||||
box-shadow: 0 1px 0 0 #24F9DD
|
||||
}
|
||||
|
||||
input:not([type]):focus:not([readonly])+label, input[type=text]:not(.browser-default):focus:not([readonly])+label, input[type=password]:not(.browser-default):focus:not([readonly])+label, input[type=email]:not(.browser-default):focus:not([readonly])+label, input[type=url]:not(.browser-default):focus:not([readonly])+label, input[type=time]:not(.browser-default):focus:not([readonly])+label, input[type=date]:not(.browser-default):focus:not([readonly])+label, input[type=datetime]:not(.browser-default):focus:not([readonly])+label, input[type=datetime-local]:not(.browser-default):focus:not([readonly])+label, input[type=tel]:not(.browser-default):focus:not([readonly])+label, input[type=number]:not(.browser-default):focus:not([readonly])+label, input[type=search]:not(.browser-default):focus:not([readonly])+label, textarea.materialize-textarea:focus:not([readonly])+label {
|
||||
@@ -5691,7 +5696,7 @@ input:not([type])+label:after, input[type=text]:not(.browser-default)+label:afte
|
||||
}
|
||||
|
||||
.input-field .prefix.active {
|
||||
color: #840032
|
||||
color: #24F9DD
|
||||
}
|
||||
|
||||
.input-field .prefix~input, .input-field .prefix~textarea, .input-field .prefix~label, .input-field .prefix~.validate~label, .input-field .prefix~.helper-text, .input-field .prefix~.autocomplete-content {
|
||||
@@ -5857,11 +5862,11 @@ textarea.materialize-textarea {
|
||||
}
|
||||
|
||||
[type="radio"]:checked+span:after, [type="radio"].with-gap:checked+span:before, [type="radio"].with-gap:checked+span:after {
|
||||
border: 2px solid #840032
|
||||
border: 2px solid #24F9DD
|
||||
}
|
||||
|
||||
[type="radio"]:checked+span:after, [type="radio"].with-gap:checked+span:after {
|
||||
background-color: #840032
|
||||
background-color: #24F9DD
|
||||
}
|
||||
|
||||
[type="radio"]:checked+span:after {
|
||||
@@ -5969,8 +5974,8 @@ textarea.materialize-textarea {
|
||||
height: 22px;
|
||||
border-top: 2px solid transparent;
|
||||
border-left: 2px solid transparent;
|
||||
border-right: 2px solid #840032;
|
||||
border-bottom: 2px solid #840032;
|
||||
border-right: 2px solid #24F9DD;
|
||||
border-bottom: 2px solid #24F9DD;
|
||||
-webkit-transform: rotate(40deg);
|
||||
transform: rotate(40deg);
|
||||
-webkit-backface-visibility: hidden;
|
||||
@@ -5991,7 +5996,7 @@ textarea.materialize-textarea {
|
||||
height: 22px;
|
||||
border-top: none;
|
||||
border-left: none;
|
||||
border-right: 2px solid #840032;
|
||||
border-right: 2px solid #24F9DD;
|
||||
border-bottom: none;
|
||||
-webkit-transform: rotate(90deg);
|
||||
transform: rotate(90deg);
|
||||
@@ -6059,8 +6064,8 @@ textarea.materialize-textarea {
|
||||
top: 0;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border: 2px solid #840032;
|
||||
background-color: #840032;
|
||||
border: 2px solid #24F9DD;
|
||||
background-color: #24F9DD;
|
||||
z-index: 0
|
||||
}
|
||||
|
||||
@@ -6072,8 +6077,8 @@ textarea.materialize-textarea {
|
||||
|
||||
[type="checkbox"].filled-in.tabbed:checked:focus+span:not(.lever):after {
|
||||
border-radius: 2px;
|
||||
background-color: #840032;
|
||||
border-color: #840032
|
||||
background-color: #24F9DD;
|
||||
border-color: #24F9DD
|
||||
}
|
||||
|
||||
[type="checkbox"].filled-in:disabled:not(:checked)+span:not(.lever):before {
|
||||
@@ -6122,7 +6127,7 @@ textarea.materialize-textarea {
|
||||
}
|
||||
|
||||
.switch label input[type=checkbox]:checked+.lever:after {
|
||||
background-color: #840032
|
||||
background-color: #24F9DD
|
||||
}
|
||||
|
||||
.switch label .lever {
|
||||
@@ -6194,7 +6199,7 @@ select {
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
width: 100%;
|
||||
border: 3px solid #840032;
|
||||
border: 2px ridge #6dbb9b;
|
||||
height: 30px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
@@ -6234,7 +6239,7 @@ select {
|
||||
}
|
||||
|
||||
.select-wrapper input.select-dropdown:focus {
|
||||
border-bottom: 1px solid #840032
|
||||
border-bottom: 1px solid #24F9DD
|
||||
}
|
||||
|
||||
.select-wrapper .caret {
|
||||
@@ -6402,7 +6407,7 @@ input[type=range]+.thumb {
|
||||
height: 0;
|
||||
width: 0;
|
||||
border-radius: 50%;
|
||||
background-color: #840032;
|
||||
background-color: #24F9DD;
|
||||
margin-left: 7px;
|
||||
-webkit-transform-origin: 50% 50%;
|
||||
transform-origin: 50% 50%;
|
||||
@@ -6414,7 +6419,7 @@ input[type=range]+.thumb .value {
|
||||
display: block;
|
||||
width: 30px;
|
||||
text-align: center;
|
||||
color: #840032;
|
||||
color: #24F9DD;
|
||||
font-size: 0;
|
||||
-webkit-transform: rotate(45deg);
|
||||
transform: rotate(45deg)
|
||||
@@ -6446,13 +6451,13 @@ input[type=range]::-webkit-slider-thumb {
|
||||
height: 14px;
|
||||
width: 14px;
|
||||
border-radius: 50%;
|
||||
background: #840032;
|
||||
background: #24F9DD;
|
||||
-webkit-transition: -webkit-box-shadow .3s;
|
||||
transition: -webkit-box-shadow .3s;
|
||||
transition: box-shadow .3s;
|
||||
transition: box-shadow .3s, -webkit-box-shadow .3s;
|
||||
-webkit-appearance: none;
|
||||
background-color: #840032;
|
||||
background-color: #24F9DD;
|
||||
-webkit-transform-origin: 50% 50%;
|
||||
transform-origin: 50% 50%;
|
||||
margin: -5px 0 0 0
|
||||
@@ -6482,7 +6487,7 @@ input[type=range]::-moz-range-thumb {
|
||||
height: 14px;
|
||||
width: 14px;
|
||||
border-radius: 50%;
|
||||
background: #840032;
|
||||
background: #24F9DD;
|
||||
-webkit-transition: -webkit-box-shadow .3s;
|
||||
transition: -webkit-box-shadow .3s;
|
||||
transition: box-shadow .3s;
|
||||
@@ -6520,7 +6525,7 @@ input[type=range]::-ms-thumb {
|
||||
height: 14px;
|
||||
width: 14px;
|
||||
border-radius: 50%;
|
||||
background: #840032;
|
||||
background: #24F9DD;
|
||||
-webkit-transition: -webkit-box-shadow .3s;
|
||||
transition: -webkit-box-shadow .3s;
|
||||
transition: box-shadow .3s;
|
||||
@@ -6637,7 +6642,7 @@ input[type=range]::-ms-thumb {
|
||||
}
|
||||
|
||||
.sidenav li>a.btn-floating:hover {
|
||||
background-color: #840032
|
||||
background-color: #24F9DD
|
||||
}
|
||||
|
||||
.sidenav li>a>i, .sidenav li>a>[class^="mdi-"], .sidenav li>a li>a>[class*="mdi-"], .sidenav li>a>i.material-icons {
|
||||
@@ -6823,7 +6828,7 @@ input[type=range]::-ms-thumb {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
border-color: #840032
|
||||
border-color: #24F9DD
|
||||
}
|
||||
|
||||
.spinner-blue, .spinner-blue-only {
|
||||
@@ -7736,7 +7741,7 @@ input[type=range]::-ms-thumb {
|
||||
-webkit-flex: 1 auto;
|
||||
-ms-flex: 1 auto;
|
||||
flex: 1 auto;
|
||||
background-color: #840032;
|
||||
background-color: #24F9DD;
|
||||
color: #fff;
|
||||
padding: 20px 22px;
|
||||
font-weight: 500
|
||||
@@ -7793,11 +7798,11 @@ input[type=range]::-ms-thumb {
|
||||
}
|
||||
|
||||
.datepicker-table td.is-today {
|
||||
color: #840032
|
||||
color: #24F9DD
|
||||
}
|
||||
|
||||
.datepicker-table td.is-selected {
|
||||
background-color: #840032;
|
||||
background-color: #24F9DD;
|
||||
color: #fff
|
||||
}
|
||||
|
||||
@@ -7837,7 +7842,7 @@ input[type=range]::-ms-thumb {
|
||||
}
|
||||
|
||||
.datepicker-cancel, .datepicker-clear, .datepicker-today, .datepicker-done {
|
||||
color: #840032;
|
||||
color: #24F9DD;
|
||||
padding: 0 1rem
|
||||
}
|
||||
|
||||
@@ -7901,7 +7906,7 @@ input[type=range]::-ms-thumb {
|
||||
-webkit-flex: 1 auto;
|
||||
-ms-flex: 1 auto;
|
||||
flex: 1 auto;
|
||||
background-color: #840032;
|
||||
background-color: #24F9DD;
|
||||
padding: 10px;
|
||||
font-weight: 300
|
||||
}
|
||||
@@ -8017,7 +8022,7 @@ input[type=range]::-ms-thumb {
|
||||
}
|
||||
|
||||
.timepicker-canvas line {
|
||||
stroke: #840032;
|
||||
stroke: #24F9DD;
|
||||
stroke-width: 4;
|
||||
stroke-linecap: round
|
||||
}
|
||||
@@ -8028,12 +8033,12 @@ input[type=range]::-ms-thumb {
|
||||
|
||||
.timepicker-canvas-bearing {
|
||||
stroke: none;
|
||||
fill: #840032
|
||||
fill: #24F9DD
|
||||
}
|
||||
|
||||
.timepicker-canvas-bg {
|
||||
stroke: none;
|
||||
fill: #840032
|
||||
fill: #24F9DD
|
||||
}
|
||||
|
||||
.timepicker-footer {
|
||||
@@ -8054,7 +8059,7 @@ input[type=range]::-ms-thumb {
|
||||
}
|
||||
|
||||
.timepicker-close {
|
||||
color: #840032
|
||||
color: #24F9DD
|
||||
}
|
||||
|
||||
.timepicker-clear, .timepicker-close {
|
||||
@@ -8086,3 +8091,4 @@ input[type=range]::-ms-thumb {
|
||||
margin-top: 1.2rem
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
html {
|
||||
color: #fff;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-family: 'Fira Mono', monospace;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ body.pg-loaded>.inner {
|
||||
/* Style the sidebar - fixed full height */
|
||||
.sidebar {
|
||||
height: 100%;
|
||||
width: 160px;
|
||||
width: 200px;
|
||||
position: fixed;
|
||||
z-index: 1;
|
||||
top: 0;
|
||||
@@ -34,8 +34,8 @@ body.pg-loaded>.inner {
|
||||
/* Style sidebar links */
|
||||
.sidebar a {
|
||||
text-decoration: none;
|
||||
font-size: 20px;
|
||||
color: #840032;
|
||||
font-size: 18px;
|
||||
color: #25D4DC;
|
||||
display: block;
|
||||
}
|
||||
|
||||
@@ -67,11 +67,11 @@ body.pg-loaded>.inner {
|
||||
#mainContent {
|
||||
position: fixed;
|
||||
z-index: 1;
|
||||
left: 160px;
|
||||
left: 184px;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 20px;
|
||||
background-color: #212529;
|
||||
background-color: #293838;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
@@ -188,12 +188,12 @@ body.pg-loaded>.inner {
|
||||
|
||||
.modalDialog {
|
||||
display: none;
|
||||
border-bottom: 3px solid #7A1336 !important;
|
||||
border-bottom: 3px solid #28709F !important;
|
||||
border-radius: 0px !important;
|
||||
}
|
||||
|
||||
.iziModal-header {
|
||||
background: #7A1336 !important;
|
||||
background: #28709F !important;
|
||||
}
|
||||
|
||||
#walletsToolbar {
|
||||
@@ -223,7 +223,7 @@ div.loadingText {
|
||||
}
|
||||
|
||||
div.sidebar svg {
|
||||
color: #7A1336;
|
||||
color: #28709F;
|
||||
}
|
||||
|
||||
#tableTransactionsForAll_filter {
|
||||
@@ -252,7 +252,7 @@ div.sidebar svg {
|
||||
}
|
||||
|
||||
.dataTables_scrollBody .transactionsBlockNum {
|
||||
color: #f92472;
|
||||
color: #24f9dd;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@@ -286,11 +286,12 @@ div.sidebar svg {
|
||||
|
||||
.sendTXInfo {
|
||||
height: 30px;
|
||||
color:#b1aa58;
|
||||
}
|
||||
|
||||
.sendTXInfo label {
|
||||
line-height: 30px;
|
||||
font-size: 1.1em;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.txInfo label {
|
||||
@@ -300,7 +301,7 @@ div.sidebar svg {
|
||||
}
|
||||
|
||||
.txInfo label+label {
|
||||
color: #7A1336;
|
||||
color: #28709F;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
@@ -313,13 +314,13 @@ div.sidebar svg {
|
||||
#toAddressInfo,
|
||||
#valueToSendInfo,
|
||||
#feeToPayInfo {
|
||||
color: #ee6e73;
|
||||
color: #24f9dd;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.accountName {
|
||||
color: #7A1336;
|
||||
color: #28709F;
|
||||
}
|
||||
|
||||
.accountAddr {
|
||||
@@ -430,7 +431,7 @@ div.noAddressWrapper {
|
||||
}
|
||||
|
||||
.etho-red {
|
||||
background-color: #7A1336 !important;
|
||||
background-color: #28709F !important;
|
||||
}
|
||||
|
||||
#chartMarketPrice {
|
||||
@@ -440,3 +441,4 @@ div.noAddressWrapper {
|
||||
#addrQRCode {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
.dt-button {
|
||||
margin-left: 10px !important;
|
||||
color: #ffffff !important;
|
||||
background-color: #7A1336 !important;
|
||||
border: 1px solid #450118 !important;
|
||||
background-color: #13737a !important;
|
||||
border: 1px solid #012c45 !important;
|
||||
background-image: none !important;
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
.dt-button.active,
|
||||
.open .dropdown-toggle.dt-button {
|
||||
color: #ffffff !important;
|
||||
background-color: #B01549 !important;
|
||||
border: 1px solid #450118 !important;
|
||||
background-color: #1594b0 !important;
|
||||
border: 1px solid #012445 !important;
|
||||
background-image: none !important;
|
||||
}
|
||||
|
||||
@@ -40,12 +40,12 @@ fieldset[disabled] .dt-button:active,
|
||||
.dt-button.disabled.active,
|
||||
.dt-button[disabled].active,
|
||||
fieldset[disabled] .dt-button.active {
|
||||
background-color: #7A1336 !important;
|
||||
border-color: #450118 !important;
|
||||
background-color: #28709F !important;
|
||||
border-color: #013045 !important;
|
||||
}
|
||||
|
||||
.dt-button .badge {
|
||||
color: #7A1336 !important;
|
||||
color: #28709F !important;
|
||||
background-color: #ffffff !important;
|
||||
}
|
||||
|
||||
@@ -410,3 +410,4 @@ table.dataTable td {
|
||||
text-align: center; }
|
||||
.dataTables_wrapper .dataTables_filter {
|
||||
margin-top: 0.5em; } }
|
||||
|
||||
|
||||
@@ -28,31 +28,105 @@
|
||||
<br>
|
||||
|
||||
<center>
|
||||
<h2 style="color:white; margin-top: 12px">Buy ETHO</h2>
|
||||
<h2 style="color:white; margin-top: 12px">Markets</h2>
|
||||
</center>
|
||||
|
||||
<br>
|
||||
<div class="ui grid container">
|
||||
<div class="four column row">
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui violet inverted button" type="button" onclick="require('electron').shell.openExternal('https://www.probit.com/r/41540915')">ProBit</button>
|
||||
<button class="aboutbutton ui violet inverted button" type="button" onclick="require('electron').shell.openExternal('https://www.probit.com/r/26069458')">
|
||||
<img src="https://s2.coinmarketcap.com/static/img/exchanges/64x64/477.png" alt="ProBit Logo" style="width: 24px; height: 24px; vertical-align: middle;">
|
||||
<span style="vertical-align: middle;">ProBit</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui violet inverted button" type="button" onclick="require('electron').shell.openExternal('https://www.kucoin.com/ucenter/signup?rcode=rJUCF6W')">KuCoin</button>
|
||||
<button class="aboutbutton ui violet inverted button" type="button" onclick="require('electron').shell.openExternal('https://xeggex.com?ref=662d0099f852ffbc4da4f8bf')">
|
||||
<img src="https://s2.coinmarketcap.com/static/img/exchanges/64x64/7500.png" alt="Xeggex Logo" style="width: 24px; height: 24px; vertical-align: middle;">
|
||||
<span style="vertical-align: middle;">Xeggex</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui violet inverted button" type="button" onclick="require('electron').shell.openExternal('https://mercatox.com/?referrer=467736')">Mercatox</button>
|
||||
<button class="aboutbutton ui violet inverted button" type="button" onclick="require('electron').shell.openExternal('https://mercatox.com/?referrer=765491')">
|
||||
<img src="https://s2.coinmarketcap.com/static/img/exchanges/64x64/213.png" alt="Mercatox Logo" style="width: 24px; height: 24px; vertical-align: middle;">
|
||||
<span style="vertical-align: middle;">Mercatox</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui violet inverted button" type="button" onclick="require('electron').shell.openExternal('https://graviex.net')">Graviex</button>
|
||||
<button class="aboutbutton ui violet inverted button" type="button" onclick="require('electron').shell.openExternal('https://graviex.net')">
|
||||
<img src="https://s2.coinmarketcap.com/static/img/exchanges/64x64/419.png" alt="Graviex Logo" style="width: 24px; height: 24px; vertical-align: middle;">
|
||||
<span style="vertical-align: middle;">Graviex</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="ui grid container">
|
||||
<div class="one column row">
|
||||
<div class="four column row">
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui violet inverted button" type="button" onclick="require('electron').shell.openExternal('https://app.stex.com?ref=26491159')">Stex</button>
|
||||
<button class="aboutbutton ui violet inverted button" type="button" onclick="require('electron').shell.openExternal('https://www.dextools.io/app/en/bnb/pair-explorer/0xb77cf2bd2571c3e58c79107cbc155a7f9ca28b75')">
|
||||
<img src="https://s2.coinmarketcap.com/static/img/exchanges/64x64/6706.png" alt="Pancake Logo" style="width: 24px; height: 24px; display: inline-block; vertical-align: middle;">
|
||||
<span style="vertical-align: middle;">PancakeSwap v2 ETHO / USDT</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui violet inverted button" type="button" onclick="require('electron').shell.openExternal('https://www.dextools.io/app/en/bnb/pair-explorer/0xef2b9739de830bdc651ae2aa146762c499cbf7c1')">
|
||||
<img src="https://s2.coinmarketcap.com/static/img/exchanges/64x64/6706.png" alt="Pancake Logo" style="width: 24px; height: 24px; display: inline-block; vertical-align: middle;">
|
||||
<span style="vertical-align: middle;">PancakeSwap v3 ETHO / USDT</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui violet inverted button" type="button" onclick="require('electron').shell.openExternal('https://www.dextools.io/app/en/ether/pair-explorer/0xa6dc0957e7c1935e80f5ec746be85eb4f0753dae')">
|
||||
<img src="https://s2.coinmarketcap.com/static/img/exchanges/64x64/1348.png" alt="Uniswap Logo" style="width: 24px; height: 24px; display: inline-block; vertical-align: middle;">
|
||||
<span style="vertical-align: middle;">Uniswap ETHO / WETH</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui violet inverted button" type="button" onclick="require('electron').shell.openExternal('https://www.dextools.io/app/en/ether/pair-explorer/0xb77cf2bd2571c3e58c79107cbc155a7f9ca28b75')">
|
||||
<img src="https://s2.coinmarketcap.com/static/img/exchanges/64x64/1348.png" alt="Uniswap Logo" style="width: 24px; height: 24px; display: inline-block; vertical-align: middle;">
|
||||
<span style="vertical-align: middle;">Uniswap ETHO / USDT</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
<center>
|
||||
<h2 style="color:white; margin-top: 15px">Links 🌐</h2>
|
||||
</center>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<div class="ui grid container">
|
||||
<div class="four column row">
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui inverted green button" type="button" onclick="require('electron').shell.openExternal('https://ethoprotocol.com')">
|
||||
<i class="fas fa-globe"></i> Etho Website
|
||||
</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui inverted green button" type="button" onclick="require('electron').shell.openExternal('https://uploads.ethoprotocol.com')">
|
||||
<i class="fas fa-server"></i> Etho Hosting
|
||||
</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui inverted green button" type="button" onclick="require('electron').shell.openExternal('https://github.com/Ether1Project')">
|
||||
<i class="fab fa-github"></i> Etho Github
|
||||
</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui inverted green button" type="button" onclick="require('electron').shell.openExternal('https://github.com/Ether1Project/Ethoprotocol')">
|
||||
<i class="fab fa-github"></i> Etho Geth
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -60,32 +134,7 @@
|
||||
<br>
|
||||
|
||||
<center>
|
||||
<h2 style="color:white; margin-top: 15px">Etho Protocol Links</h2>
|
||||
</center>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="ui grid container">
|
||||
<div class="four column row">
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui inverted green button" type="button" onclick="require('electron').shell.openExternal('https://ethoprotocol.com')">Etho Protocol Website</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui inverted green button" type="button" onclick="require('electron').shell.openExternal('https://uploads.ethoprotocol.com/')">ethoFS Website</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui inverted green button" type="button" onclick="require('electron').shell.openExternal('https://github.com/Ether1Project')">Etho Protocol Github</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui inverted green button" type="button" onclick="require('electron').shell.openExternal('https://github.com/Ether1Project/Ether1')">Etho Protocol Geth</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<center>
|
||||
<h2 style="color:white; margin-top: 15px">Etho Protocol Social Media</h2>
|
||||
<h2 style="color:white; margin-top: 15px">Social Media 📱</h2>
|
||||
</center>
|
||||
|
||||
<br>
|
||||
@@ -94,26 +143,39 @@
|
||||
<div class="doubling six column row">
|
||||
<div class="column">
|
||||
<!-- Etho Protocol -->
|
||||
<button class="aboutbutton ui inverted blue button" type="button" onclick="require('electron').shell.openExternal('https://discord.gg/Ap5FmXc')">Discord</button>
|
||||
<button class="aboutbutton ui inverted blue button" type="button" onclick="require('electron').shell.openExternal('https://discord.com/invite/VanQ23KMZv')">
|
||||
<i class="fab fa-discord"></i> Discord
|
||||
</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui inverted blue button" type="button" onclick="require('electron').shell.openExternal('https://twitter.com/EthoProtocol/')">Twitter</button>
|
||||
<button class="aboutbutton ui inverted blue button" type="button" onclick="require('electron').shell.openExternal('https://twitter.com/EthoProtocol/')">
|
||||
<i class="fab fa-twitter"></i> Twitter
|
||||
</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui inverted blue button" type="button" onclick="require('electron').shell.openExternal('https://ethoprotocol.medium.com')">Medium</button>
|
||||
<button class="aboutbutton ui inverted blue button" type="button" onclick="require('electron').shell.openExternal('https://ethoprotocol.medium.com')">
|
||||
<i class="fab fa-medium"></i> Medium
|
||||
</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui inverted blue button" type="button" onclick="require('electron').shell.openExternal('https://t.me/Ether_1')">Telegram</button>
|
||||
<button class="aboutbutton ui inverted blue button" type="button" onclick="require('electron').shell.openExternal('https://t.me/Ether_1')">
|
||||
<i class="fab fa-telegram"></i> Telegram
|
||||
</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui inverted blue button" type="button" onclick="require('electron').shell.openExternal('https://ethoprotocol.com/blog/')">News Blog</button>
|
||||
<button class="aboutbutton ui inverted blue button" type="button" onclick="require('electron').shell.openExternal('https://ethoprotocol.com/blog/')">
|
||||
<i class="far fa-newspaper"></i> Blog
|
||||
</button>
|
||||
</div>
|
||||
<div class="column">
|
||||
<button class="aboutbutton ui inverted blue button" type="button" onclick="require('electron').shell.openExternal('mailto:admin@ethoprotocol.com')">Email</button>
|
||||
<button class="aboutbutton ui inverted blue button" type="button" onclick="require('electron').shell.openExternal('mailto:admin@ethoprotocol.com')">
|
||||
<i class="far fa-envelope"></i> Email
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
$('.message .close')
|
||||
.on('click', function() {
|
||||
@@ -122,3 +184,4 @@
|
||||
.transition('fade');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -3,44 +3,44 @@
|
||||
<div class="col s12 m3">
|
||||
<div class="card etho-red">
|
||||
<div class="card-content white-text">
|
||||
<span class="card-title">ETHO to USD</span>
|
||||
<span class="card-title">ETHO to USD 💵</span>
|
||||
<p id="ETHOToUSD">N/A</p>
|
||||
</div>
|
||||
<div class="card-action">
|
||||
<p id="changeUSD">This is a link</p>
|
||||
7 days change: <p id="changeUSD" class="cardValue">N/A 🔗</p>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- col-3 -->
|
||||
<div class="col s12 m3">
|
||||
<div class="card etho-red">
|
||||
<div class="card-content white-text">
|
||||
<span class="card-title">ETHO to BTC</span>
|
||||
<span class="card-title">ETHO to BTC ₿</span>
|
||||
<p id="ETHOToBTC">N/A</p>
|
||||
</div>
|
||||
<div class="card-action">
|
||||
<p id="changeBTC">This is a link</p>
|
||||
7 days change:<p id="changeBTC" class="cardValue">N/A 🔗</p>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- col-3 -->
|
||||
<div class="col s12 m3">
|
||||
<div class="card etho-red">
|
||||
<div class="card-content white-text">
|
||||
<span class="card-title">Marketcap</span>
|
||||
<span class="card-title">Marketcap 💰</span>
|
||||
<p id="marketcap">N/A</p>
|
||||
</div>
|
||||
<div class="card-action">
|
||||
<p id="changeMarketcap">This is a link</p>
|
||||
high 24h: <p id="changeMarketcap" class="cardValue">N/A 🔗</p>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- col-3 -->
|
||||
<div class="col s12 m3">
|
||||
<div class="card etho-red">
|
||||
<div class="card-content white-text">
|
||||
<span class="card-title">Daily Volume</span>
|
||||
<span class="card-title">Daily Volume 📊</span>
|
||||
<p id="dailyVolume">N/A</p>
|
||||
</div>
|
||||
<div class="card-action">
|
||||
<p id="changeVolume">This is a link</p>
|
||||
all time high:<p id="changeVolume" class="cardValue">N/A 🔗</p>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- col-3 -->
|
||||
@@ -51,3 +51,4 @@
|
||||
<a class="chart-style"></a>
|
||||
</div>
|
||||
<span id="nodestorage" style="display:none;">Loading</span>
|
||||
|
||||
|
||||
@@ -3,15 +3,16 @@
|
||||
<form class="col s12">
|
||||
<div class="row">
|
||||
<div class="input-field col s6">
|
||||
<label for="sendToAddress" class="active">Sender:</label>
|
||||
<select id="sendFromAddress">
|
||||
{{#addressData}}
|
||||
<option value="{{address}}">{{name}} - {{address}}</option>
|
||||
<option value="{{address}}">{{balance}} | {{name}} | {{address}}</option>
|
||||
{{/addressData}}
|
||||
</select>
|
||||
<small id="sendFromAddressName" class="form-text text-muted"></small>
|
||||
|
||||
</div>
|
||||
<div class="input-field col s6">
|
||||
<label for="sendToAddress" class="active">To address:</label>
|
||||
<label for="sendToAddress" class="active">Recipient:</label>
|
||||
<div class="addressInputWrapper">
|
||||
<input id="sendToAddress" placeholder="recipient address" type="text">
|
||||
<button type="button" class="btn button3 btnSendToolButton" id="btnAddToAddressBook">
|
||||
@@ -26,12 +27,16 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="input-field col s6">
|
||||
<label for="sendAmmount" style="display:flex">
|
||||
<img height="22px" width="22px" style="margin: 11px 6px 0 2px;" src="https://raw.githubusercontent.com/Ether1Project/ETHO-Protocol-Branding/master/NewLogo2024/newethologo_32.png" alt="ETHO" />
|
||||
<input id="sendAmmount" placeholder="0" type="number">
|
||||
</label>
|
||||
|
||||
<label for="sendAmmount" class="active">Amount:</label>
|
||||
</div>
|
||||
<div class="input-field col s6">
|
||||
<div class="input-field col s12">
|
||||
<span id="sendMaxAmmount">0</span><span>ETHO</span>
|
||||
<span id="sendMaxAmmount">0</span><img height="22px" width="22px" style="margin-bottom: -6px;" src="https://raw.githubusercontent.com/Ether1Project/ETHO-Protocol-Branding/master/NewLogo2024/newethologo_32.png" alt="ETHO" />Total
|
||||
<button type="button" class="button4" id="btnSendAll">ALL</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -16,8 +16,10 @@
|
||||
</button>
|
||||
<div id="sumBalance">
|
||||
<span class="sumBalance" id="labelSumBalance">{{sumBalance}}</span>
|
||||
<span class="sumCurrency" id="labelSumCurrency">ETHO</span>
|
||||
<span class="sumDollars" id="labelSumDollars">/ 0.00 $ / 0.00 $ per ETHO</span></div>
|
||||
<span class="sumCurrency" id="labelSumCurrency"><img height="22px" width="22px" style="margin-bottom: -6px;margin-left:-7px;margin-right:-2px;" src="https://raw.githubusercontent.com/Ether1Project/ETHO-Protocol-Branding/master/NewLogo2024/newethologo_32.png" alt="ETHO" />
|
||||
</span>
|
||||
<span class="sumDollars" id="labelSumDollars">= 0.00 💵 | 0.00 💵 per
|
||||
</span><img height="22px" width="22px" style="margin-bottom: -6px;margin-left:8px;margin-right:2px;" src="https://raw.githubusercontent.com/Ether1Project/ETHO-Protocol-Branding/master/NewLogo2024/newethologo_32.png" alt="ETHO" />ETHO</div>
|
||||
</div>
|
||||
<div id="addressList" class="{{#if addressData.length}}walletsWrapper{{else}}noWalletsWrapper{{/if}}">
|
||||
{{#if addressData.length}}
|
||||
@@ -51,7 +53,7 @@
|
||||
<i class="fas fa-times"></i>
|
||||
</button>
|
||||
</td>
|
||||
<td>{{balance}}</td>
|
||||
<td>{{balance}} <img height="22px" width="22px" style="margin-bottom: -6px;margin-left:-5px;" src="https://raw.githubusercontent.com/Ether1Project/ETHO-Protocol-Branding/master/NewLogo2024/newethologo_32.png" alt="ETHO" /></td>
|
||||
</tr>
|
||||
{{/addressData}}
|
||||
</tbody>
|
||||
|
||||
BIN
build/icon.icns
BIN
build/icon.png
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 21 KiB |
37
index.html
@@ -4,7 +4,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>$ETHO Desktop Wallet</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Fira+Mono:wght@400;500;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="./assets/styles/materialize.min.css">
|
||||
<link rel="stylesheet" href="./assets/styles/datatables.min.css">
|
||||
<link rel="stylesheet" href="./assets/styles/iziModal.min.css">
|
||||
@@ -65,24 +65,43 @@
|
||||
|
||||
<body>
|
||||
|
||||
<script>
|
||||
<script>
|
||||
var loadingHtml = "<div class='spinner'><div class='bounce bounce1'></div><div class='bounce bounce2'></div><div class='bounce bounce3'></div></div><div class='loadingText' id='startextEL'>Loading Resources...</div>";
|
||||
var loading_screen = pleaseWait({
|
||||
logo: "assets/images/logo-glitch.gif",
|
||||
backgroundColor: '#000000',
|
||||
loadingHtml: "<div class='spinner'><div class='bounce bounce1'></div><div class='bounce bounce2'></div><div class='bounce bounce3'></div></div><div class='loadingText'>Starting the node and loading app, please wait...</div>"
|
||||
loadingHtml: loadingHtml
|
||||
});
|
||||
|
||||
$(document).on("onGethReady", function() {
|
||||
var timeouts = [
|
||||
{ text: "Starting Node...", delay: 1250 },
|
||||
{ text: "Connecting to Network...", delay: 6400 },
|
||||
{ text: "Updating...", delay: 7320 },
|
||||
{ text: "Launching...", delay: 7400 }
|
||||
];
|
||||
|
||||
timeouts.forEach((item, index) => {
|
||||
setTimeout(() => {
|
||||
document.getElementById('startextEL').innerHTML = item.text;
|
||||
}, item.delay + Math.random() * 50 * index);
|
||||
});
|
||||
|
||||
$(document).on("onGethReady", function () {
|
||||
setTimeout(() => {
|
||||
loading_screen.finish();
|
||||
}, 4000);
|
||||
|
||||
}, 5500);
|
||||
});
|
||||
|
||||
$(window).on("beforeunload", function() {
|
||||
$(window).on("beforeunload", function () {
|
||||
EthoBlockchain.closeConnection();
|
||||
})
|
||||
</script>
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="inner">
|
||||
<!-- The sidebar -->
|
||||
<div class="ui left demo vertical inverted sidebar labeled icon menu">
|
||||
|
||||
1
main.js
@@ -74,6 +74,7 @@ locker.lock().then(function() {
|
||||
// code. You can also put them in separate files and require them here.
|
||||
// listen for request to get template
|
||||
|
||||
|
||||
// get the template content from file
|
||||
ipcMain.on("getTemplateContent", (event, arg) => {
|
||||
event.returnValue = fs.readFileSync(path.join(app.getAppPath(), "assets/templates/") + arg, "utf8");
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const {app, dialog, ipcMain} = require("electron");
|
||||
const { app, dialog, ipcMain } = require("electron");
|
||||
const admZip = require("adm-zip");
|
||||
const path = require("path");
|
||||
const fs = require("fs-extra");
|
||||
@@ -8,24 +8,49 @@ class Accounts {
|
||||
constructor() {}
|
||||
|
||||
getKeyStoreLocation() {
|
||||
switch (os.type()) {
|
||||
const platform = os.type();
|
||||
let keystorePath;
|
||||
|
||||
switch (platform) {
|
||||
case "Darwin":
|
||||
return path.join(os.homedir(), "Library", "Ether1", "keystore");
|
||||
keystorePath = path.join(os.homedir(), "Library", "Ether1", "keystore");
|
||||
break;
|
||||
case "Windows_NT":
|
||||
if (process.env.APPDATA) {
|
||||
keystorePath = path.join(process.env.APPDATA.replace('Roaming', 'Local'), "Ether1", "keystore");
|
||||
} else {
|
||||
keystorePath = path.join(app.getPath("userData"), "Ether1", "keystore");
|
||||
}
|
||||
break;
|
||||
case "Linux":
|
||||
keystorePath = path.join(app.getPath("home"), ".ether1", "keystore");
|
||||
break;
|
||||
default:
|
||||
return path.join(process.env.APPDATA.replace('Roaming', 'Local'), "Ether1", "keystore");
|
||||
keystorePath = path.join(app.getPath("userData"), "Ether1", "keystore");
|
||||
break;
|
||||
}
|
||||
|
||||
return Promise.resolve(keystorePath);
|
||||
}
|
||||
|
||||
|
||||
|
||||
exportAccounts() {
|
||||
var savePath = dialog.showSaveDialog({
|
||||
dialog.showSaveDialog({
|
||||
defaultPath: path.join(app.getPath("documents"), "accounts.zip")
|
||||
});
|
||||
|
||||
if (savePath) {
|
||||
const accPath = EthoAccounts.getKeyStoreLocation();
|
||||
}).then(result => {
|
||||
if (!result.canceled) {
|
||||
const savePath = result.filePath;
|
||||
const accPathPromise = this.getKeyStoreLocation();
|
||||
|
||||
accPathPromise.then(accPath => {
|
||||
fs.readdir(accPath, function (err, files) {
|
||||
if (err) {
|
||||
console.error("Error reading directory:", err);
|
||||
// Handle the error, e.g., show an error dialog to the user
|
||||
return;
|
||||
}
|
||||
|
||||
var zip = new admZip();
|
||||
|
||||
for (let filePath of files) {
|
||||
@@ -35,95 +60,130 @@ class Accounts {
|
||||
// store zip to path
|
||||
zip.writeZip(savePath);
|
||||
});
|
||||
}).catch(err => {
|
||||
console.error("Error getting keystore location:", err);
|
||||
// Handle the error, e.g., show an error dialog to the user
|
||||
});
|
||||
}
|
||||
}).catch(err => {
|
||||
console.error("Error showing save dialog:", err);
|
||||
// Handle the error, e.g., show an error dialog to the user
|
||||
});
|
||||
}
|
||||
|
||||
importAccounts(accountsFile) {
|
||||
var extName = path.extname(accountsFile).toUpperCase();
|
||||
const accPath = EthoAccounts.getKeyStoreLocation();
|
||||
|
||||
if (extName == ".ZIP") {
|
||||
var zip = new admZip(accountsFile);
|
||||
zip.extractAllTo(accPath, true);
|
||||
return {success: true, text: "Accounts ware successfully imported."};
|
||||
} else {
|
||||
async importAccounts() {
|
||||
try {
|
||||
fs.copySync(accountsFile, path.join(accPath, path.basename(accountsFile)));
|
||||
return {success: true, text: "Account was successfully imported."};
|
||||
} catch (err) {
|
||||
return {success: false, text: err};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
saveAccount(account) {
|
||||
fs.writeFile(path.join(tEthoAccountshis.getKeyStoreLocation(), "0x" + account.address), JSON.stringify(account), "utf8", function () {
|
||||
// file was written
|
||||
});
|
||||
}
|
||||
|
||||
deteteAccount(address) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const accPath = EthoAccounts.getKeyStoreLocation();
|
||||
|
||||
fs.readdir(accPath, function (err, files) {
|
||||
let deleteFilePath = null;
|
||||
if (err) reject(err);
|
||||
else {
|
||||
const searchStr = String(address).substring(2, String(address).length).toLowerCase();
|
||||
for (let filePath of files) {
|
||||
if (String(filePath).toLowerCase().indexOf(searchStr) > -1) {
|
||||
deleteFilePath = filePath;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (deleteFilePath) {
|
||||
fs.unlink(path.join(accPath, deleteFilePath), function(error) {
|
||||
if (error) reject(error);
|
||||
else resolve(true);
|
||||
});
|
||||
} else resolve(true)
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
ipcMain.on("exportAccounts", (event, arg) => {
|
||||
EthoAccounts.exportAccounts();
|
||||
});
|
||||
|
||||
ipcMain.on("importAccounts", (event, arg) => {
|
||||
var openPath = dialog.showOpenDialog({
|
||||
const openPath = await dialog.showOpenDialog({
|
||||
defaultPath: app.getPath("documents"),
|
||||
filters: [
|
||||
{
|
||||
name: "archive",
|
||||
extensions: ["zip"]
|
||||
}, {
|
||||
},
|
||||
{
|
||||
name: "json",
|
||||
extensions: ["json"]
|
||||
}, {
|
||||
},
|
||||
{
|
||||
name: "All",
|
||||
extensions: ["*"]
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
if (openPath) {
|
||||
event.returnValue = EthoAccounts.importAccounts(openPath[0]);
|
||||
if (!openPath.canceled && openPath.filePaths.length > 0) {
|
||||
const accPath = await this.getKeyStoreLocation();
|
||||
const extName = path.extname(openPath.filePaths[0]).toUpperCase();
|
||||
|
||||
if (extName === ".ZIP") {
|
||||
const zip = new admZip(openPath.filePaths[0]);
|
||||
zip.extractAllTo(accPath, true);
|
||||
return { success: true, text: "Accounts were successfully imported." };
|
||||
} else {
|
||||
event.returnValue = {};
|
||||
await fs.copy(openPath.filePaths[0], path.join(accPath, path.basename(openPath.filePaths[0])));
|
||||
return { success: true, text: "Account was successfully imported." };
|
||||
}
|
||||
} else {
|
||||
return { success: false, text: "No file selected for import." };
|
||||
}
|
||||
} catch (error) {
|
||||
return { success: false, text: error.message };
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
saveAccount(account) {
|
||||
fs.writeFile(path.join(this.getKeyStoreLocation(), "0x" + account.address), JSON.stringify(account), "utf8", function () {
|
||||
// file was written
|
||||
});
|
||||
}
|
||||
|
||||
deteteAccount(address) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const accPathPromise = this.getKeyStoreLocation();
|
||||
|
||||
accPathPromise.then(accPath => {
|
||||
fs.readdir(accPath, function (err, files) {
|
||||
if (err) {
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
|
||||
let deleteFilePath = null;
|
||||
const searchStr = String(address).substring(2, String(address).length).toLowerCase();
|
||||
|
||||
for (let filePath of files) {
|
||||
if (String(filePath).toLowerCase().indexOf(searchStr) > -1) {
|
||||
deleteFilePath = filePath;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (deleteFilePath) {
|
||||
fs.unlink(path.join(accPath, deleteFilePath), function (error) {
|
||||
if (error) reject(error);
|
||||
else resolve(true);
|
||||
});
|
||||
} else {
|
||||
resolve(true);
|
||||
}
|
||||
});
|
||||
}).catch(err => {
|
||||
reject(err);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ipcMain.on("exportAccounts", (event, arg) => {
|
||||
const ethoAccounts = new Accounts();
|
||||
ethoAccounts.exportAccounts();
|
||||
});
|
||||
|
||||
|
||||
ipcMain.on("importAccounts", async (event, arg) => {
|
||||
const ethoAccounts = new Accounts();
|
||||
try {
|
||||
const importResult = await ethoAccounts.importAccounts();
|
||||
event.reply("importAccountsReply", importResult);
|
||||
} catch (error) {
|
||||
event.reply("importAccountsReply", { success: false, text: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
ipcMain.on("saveAccount", (event, arg) => {
|
||||
EthoAccounts.saveAccount(arg);
|
||||
const ethoAccounts = new Accounts();
|
||||
ethoAccounts.saveAccount(arg);
|
||||
event.returnValue = true;
|
||||
});
|
||||
|
||||
ipcMain.on("deteteAccount", (event, arg) => {
|
||||
EthoAccounts.deteteAccount(arg)
|
||||
const ethoAccounts = new Accounts();
|
||||
ethoAccounts.deteteAccount(arg)
|
||||
.then((res) => {
|
||||
event.returnValue = res;
|
||||
})
|
||||
@@ -132,4 +192,3 @@ ipcMain.on("deteteAccount", (event, arg) => {
|
||||
});
|
||||
});
|
||||
|
||||
EthoAccounts = new Accounts();
|
||||
|
||||
@@ -44,6 +44,8 @@ class Geth {
|
||||
if (this.logGethEvents) {
|
||||
this.logStream.write(text);
|
||||
}
|
||||
// Print log messages to the console
|
||||
//console.log("geth..."+text);
|
||||
}
|
||||
|
||||
startGeth() {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "EthoWallet",
|
||||
"version": "2.4.7",
|
||||
"version": "3.0.0",
|
||||
"description": "Desktop wallet for Etho Protocol ($ETHO)",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
|
||||
@@ -13,10 +13,10 @@ class Markets {
|
||||
$("#marketcap").html(data.market_data.market_cap.usd.toFixed(0) + " $ (" + data.market_cap_rank + ")");
|
||||
$("#dailyVolume").html(data.market_data.total_volume.usd.toFixed(0) + " $");
|
||||
|
||||
$("#changeUSD").html("7 days change: " + data.market_data.price_change_percentage_7d_in_currency.usd.toFixed(2) + "%");
|
||||
$("#changeBTC").html("7 days change: " + data.market_data.price_change_percentage_7d_in_currency.btc.toFixed(2) + "%");
|
||||
$("#changeMarketcap").html("high 24h: " + data.market_data.high_24h.usd.toFixed(5) + " $");
|
||||
$("#changeVolume").html("all time high: " + data.market_data.ath.usd.toFixed(5) + " $");
|
||||
$("#changeUSD").html(data.market_data.price_change_percentage_7d_in_currency.usd.toFixed(2) + "%");
|
||||
$("#changeBTC").html(data.market_data.price_change_percentage_7d_in_currency.btc.toFixed(2) + "%");
|
||||
$("#changeMarketcap").html(data.market_data.high_24h.usd.toFixed(5) + "$");
|
||||
$("#changeVolume").html(data.market_data.ath.usd.toFixed(5) + "$");
|
||||
|
||||
new Chart(document.getElementById("chartMarketPriceCanvas"), {
|
||||
type: "line",
|
||||
@@ -29,7 +29,7 @@ class Markets {
|
||||
fill: true,
|
||||
borderWidth: 3,
|
||||
pointRadius: 0,
|
||||
borderColor: "#7A1336"
|
||||
borderColor: "#25D4DC"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -55,7 +55,7 @@ class Markets {
|
||||
}
|
||||
},
|
||||
gridLines: {
|
||||
color: "rgba(255,255,255,.08)"
|
||||
color: "rgba(255,255,255,.35)"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -57,17 +57,29 @@ class SendTransaction {
|
||||
|
||||
$(document).on("render_send", function () {
|
||||
//$("select").formSelect({classes: "fromAddressSelect"});
|
||||
setTimeout(() => {
|
||||
var optionText = $("#sendFromAddress").find("option:selected").text();
|
||||
var selectedAddressBalance = optionText.substr(0, optionText.indexOf("|"));
|
||||
|
||||
console.log("selectedAddressBalance", selectedAddressBalance);
|
||||
$("#sendMaxAmmount").html(parseFloat(selectedAddressBalance));
|
||||
//$("#sendAmmount").val(selectedAddressBalance);
|
||||
}, 500);
|
||||
|
||||
|
||||
|
||||
$("#sendFromAddress").on("change", function () {
|
||||
var optionText = $(this).find("option:selected").text();
|
||||
var addrName = optionText.substr(0, optionText.indexOf("-"));
|
||||
var addrValue = optionText.substr(optionText.indexOf("-") + 1);
|
||||
$(".fromAddressSelect input").val(addrValue.trim());
|
||||
$("#sendFromAddressName").html(addrName.trim());
|
||||
|
||||
web3Local.eth.getBalance(this.value, function (error, balance) {
|
||||
$("#sendMaxAmmount").html(parseFloat(web3Local.utils.fromWei(balance, "ether")));
|
||||
});
|
||||
var addrBalance = optionText.substr(0, optionText.indexOf("|"));
|
||||
var addrName = optionText.substr(optionText.indexOf("|")+1);
|
||||
var addrValue = addrName.substr(addrName.indexOf("|")+1);
|
||||
|
||||
|
||||
$(".fromAddressSelect input").val(addrValue.trim());
|
||||
|
||||
$("#sendMaxAmmount").html(parseFloat(addrBalance));
|
||||
|
||||
});
|
||||
|
||||
$("#btnSendAll").off("click").on("click", function () {
|
||||
@@ -98,10 +110,28 @@ $(document).on("render_send", function () {
|
||||
var adddressObject = {};
|
||||
adddressObject.address = key;
|
||||
adddressObject.name = addressBook[key];
|
||||
adddressObject.balance = 0;
|
||||
|
||||
addressList.addressData.push(adddressObject);
|
||||
|
||||
web3Local.eth.getBalance(key, function (error, balance) {
|
||||
if (error) {
|
||||
console.error("Error fetching balance:", error);
|
||||
return;
|
||||
}
|
||||
|
||||
// Update the balance display
|
||||
var etherBalance = web3Local.utils.fromWei(balance, "ether");
|
||||
//$("#sendFromAddressBalance").text("Balance: " + etherBalance + " ETHO");
|
||||
adddressObject.balance = parseFloat(etherBalance)
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$("#dlgAddressList").iziModal({width: "800px"});
|
||||
EthoMainGUI.renderTemplate("addresslist.html", addressList, $("#dlgAddressListBody"));
|
||||
$("#dlgAddressList").iziModal("open");
|
||||
|
||||
@@ -9,7 +9,7 @@ SyncProgress = new ProgressBar.Line("#syncProgress", {
|
||||
strokeWidth: 6,
|
||||
easing: "easeInOut",
|
||||
duration: 1400,
|
||||
color: "#7A1336",
|
||||
color: "#25D4DC",
|
||||
trailColor: "#eee",
|
||||
trailWidth: 1,
|
||||
text: {
|
||||
|
||||
@@ -114,7 +114,7 @@ class Wallets {
|
||||
$(document).trigger("render_wallets");
|
||||
EthoWallets.enableButtonTooltips();
|
||||
|
||||
$("#labelSumDollars").html(vsprintf("/ %.2f $ / %.4f $ per ETHO", [
|
||||
$("#labelSumDollars").html(vsprintf("= %.2f 💵 | %.4f 💵 per", [
|
||||
data.sumBalance * EthoWallets._getPrice(),
|
||||
EthoWallets._getPrice()
|
||||
]));
|
||||
@@ -231,15 +231,23 @@ $(document).on("render_wallets", function () {
|
||||
ipcRenderer.send("exportAccounts", {});
|
||||
});
|
||||
|
||||
$("#btnImportAccounts").off("click").on("click", function () {
|
||||
var ImportResult = ipcRenderer.sendSync("importAccounts", {});
|
||||
$("#btnImportAccounts").off("click").on("click", function () {
|
||||
ipcRenderer.send("importAccounts");
|
||||
|
||||
if (ImportResult.success) {
|
||||
iziToast.success({title: "Imported", message: ImportResult.text, position: "topRight", timeout: 2000});
|
||||
} else if (ImportResult.success == false) {
|
||||
EthoMainGUI.showGeneralError(ImportResult.text);
|
||||
ipcRenderer.once("importAccountsReply", (event, importResult) => {
|
||||
if (importResult.success) {
|
||||
iziToast.success({ title: "Imported", message: importResult.text, position: "topRight", timeout: 2000 });
|
||||
// Reload wallets after successful import
|
||||
setTimeout(() => {
|
||||
EthoWallets.renderWalletsState();
|
||||
}, 500);
|
||||
} else {
|
||||
EthoMainGUI.showGeneralError(importResult.text);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
$("#btnImportFromPrivateKey").off("click").on("click", function () {
|
||||
$("#dlgImportFromPrivateKey").iziModal();
|
||||
|
||||