From 2996f7122dcafce2ab42e6f967f2cca783780749 Mon Sep 17 00:00:00 2001
From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com>
Date: Sun, 10 Dec 2023 11:18:17 +0100
Subject: [PATCH] Add trade information
---
.../core/components/TradeInfoView-css.js | 629 ++++++++++
.../plugins/core/components/TradeInfoView.js | 285 +++++
.../core/trade-portal/trade-portal.src.js | 1024 +++++++++--------
3 files changed, 1476 insertions(+), 462 deletions(-)
create mode 100644 plugins/plugins/core/components/TradeInfoView-css.js
create mode 100644 plugins/plugins/core/components/TradeInfoView.js
diff --git a/plugins/plugins/core/components/TradeInfoView-css.js b/plugins/plugins/core/components/TradeInfoView-css.js
new file mode 100644
index 00000000..a3b60d27
--- /dev/null
+++ b/plugins/plugins/core/components/TradeInfoView-css.js
@@ -0,0 +1,629 @@
+import {css} from 'lit'
+
+export const tradeInfoViewStyle = css`
+ * {
+ --mdc-theme-primary: rgb(3, 169, 244);
+ --mdc-theme-secondary: var(--mdc-theme-primary);
+ --mdc-theme-surface: var(--white);
+ --mdc-dialog-content-ink-color: var(--black);
+ box-sizing: border-box;
+ }
+
+ p {
+ margin-top: 0;
+ margin-bottom: 1rem;
+ color: var(--black);
+ }
+
+ p {
+ margin: 0;
+ padding: 0;
+ color: var(--black);
+ }
+
+ .card {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ min-width: 0;
+ height: calc(100% - 1rem);
+ word-wrap: break-word;
+ background-color: var(--white);
+ background-clip: border-box;
+ margin-bottom: 1rem;
+ }
+
+ .card-header {
+ padding: 0.5rem 1rem;
+ margin-bottom: 0;
+ background-color: rgba(0, 0, 0, 0.03);
+ border-bottom: 2px solid rgba(0, 0, 0, 0.125);
+ }
+
+ .card-header {
+ background: none;
+ border-width: 0;
+ padding: 10px;
+ padding-bottom: 0rem;
+ }
+
+ .card-title {
+ font-size: 1.2rem;
+ color: var(--black);
+ margin-bottom: 0.5rem;
+ }
+
+ .card-body {
+ flex: 1 1 auto;
+ padding: 1rem 1rem;
+ }
+
+ .card-body {
+ padding: 20px;
+ }
+
+ .d-sm-flex {
+ display: flex !important;
+ }
+
+ .align-items-center {
+ align-items: center !important;
+ }
+
+ .justify-content-between {
+ justify-content: space-between !important;
+ }
+
+ .d-flex {
+ display: flex !important;
+ }
+
+ .mb-3 {
+ margin-bottom: 1rem !important;
+ }
+
+ .cwh-64 {
+ width: 64px !important;
+ height: 64px !important;
+ }
+
+ .cwh-80 {
+ width: 80px !important;
+ height: 80px !important;
+ }
+
+ .rounded {
+ border-radius: 25% !important;
+ }
+
+ .ms-3 {
+ margin-left: 1rem !important;
+ }
+
+ .cfs-12 {
+ font-size: 12px !important;
+ }
+
+ .cfs-14 {
+ font-size: 14px !important;
+ }
+
+ .cfs-16 {
+ font-size: 16px !important;
+ }
+
+ .cfs-18 {
+ font-size: 18px !important;
+ }
+
+ .me-sm-3 {
+ margin-right: 1rem !important;
+ }
+
+ .ms-sm-0 {
+ margin-left: 0 !important;
+ }
+
+ .text-sm-end {
+ text-align: right !important;
+ }
+
+ .order-0 {
+ order: 0 !important;
+ }
+
+ .order-1 {
+ order: 1 !important;
+ }
+
+ .order-sm-0 {
+ order: 0 !important;
+ }
+
+ .order-sm-1 {
+ order: 1 !important;
+ }
+
+ .decline {
+ --mdc-theme-primary: var(--mdc-theme-error)
+ }
+
+ .warning {
+ --mdc-theme-primary: #f0ad4e;
+ }
+
+ .red {
+ color: #F44336;
+ }
+
+ .green {
+ color: #198754;
+ }
+
+ .buttons {
+ display: inline;
+ float: right;
+ margin-bottom: 5px;
+ }
+
+ .loadingContainer {
+ height: 100%;
+ width: 100%;
+ }
+
+ .loading,
+ .loading:after {
+ border-radius: 50%;
+ width: 5em;
+ height: 5em;
+ }
+
+ .loading {
+ margin: 10px auto;
+ border-width: .6em;
+ border-style: solid;
+ border-color: rgba(3, 169, 244, 0.2) rgba(3, 169, 244, 0.2) rgba(3, 169, 244, 0.2) rgb(3, 169, 244);
+ font-size: 10px;
+ position: relative;
+ text-indent: -9999em;
+ transform: translateZ(0px);
+ animation: 1.1s linear 0s infinite normal none running loadingAnimation;
+ }
+
+ @-webkit-keyframes loadingAnimation {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+
+ @keyframes loadingAnimation {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+
+ table {
+ caption-side: bottom;
+ border-collapse: collapse;
+ }
+
+ caption {
+ padding-top: 0.75rem;
+ padding-bottom: 0.75rem;
+ color: #6c757d;
+ text-align: left;
+ }
+
+ th {
+ text-align: inherit;
+ text-align: -webkit-match-parent;
+ }
+
+ thead,
+ tbody,
+ tfoot,
+ tr,
+ td,
+ th {
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ }
+
+ .table {
+ --bs-table-bg: transparent;
+ --bs-table-striped-color: #212529;
+ --bs-table-striped-bg: rgba(255, 255, 255, 0.2);
+ --bs-table-active-color: #212529;
+ --bs-table-active-bg: rgba(0, 0, 0, 0.1);
+ --bs-table-hover-color: #212529;
+ --bs-table-hover-bg: rgba(0, 0, 0, 0.075);
+ width: 100%;
+ margin-bottom: 1rem;
+ color: var(--black);
+ vertical-align: top;
+ border-color: #edeff4;
+ }
+
+ .table> :not(caption)>*>* {
+ padding: 0.75rem 0.75rem;
+ background-color: var(--bs-table-bg);
+ background-image: linear-gradient(var(--bs-table-accent-bg), var(--bs-table-accent-bg));
+ border-bottom-width: 2px;
+ }
+
+ .table>tbody {
+ vertical-align: inherit;
+ }
+
+ .table>thead {
+ vertical-align: bottom;
+ }
+
+ .table> :not(:last-child)> :last-child>* {
+ border-bottom-color: currentColor;
+ }
+
+ .caption-top {
+ caption-side: top;
+ }
+
+ .table-sm> :not(caption)>*>* {
+ padding: 0.5rem 0.5rem;
+ }
+
+ .table-bordered> :not(caption)>* {
+ border-width: 2px 0;
+ }
+
+ .table-bordered> :not(caption)>*>* {
+ border-width: 0 2px;
+ }
+
+ .table-borderless> :not(caption)>*>* {
+ border-bottom-width: 0;
+ }
+
+ .table-striped>tbody>tr:nth-of-type(odd) {
+ --bs-table-accent-bg: var(--bs-table-striped-bg);
+ color: var(--black);
+ }
+
+ .table-active {
+ --bs-table-accent-bg: var(--bs-table-active-bg);
+ color: var(--bs-table-active-color);
+ }
+
+ .table-hover>tbody>tr:hover {
+ --bs-table-accent-bg: var(--bs-table-hover-bg);
+ color: var(--bs-table-hover-color);
+ }
+
+ .table-primary {
+ --bs-table-bg: #cfe2ff;
+ --bs-table-striped-bg: #c5d7f2;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #bacbe6;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #bfd1ec;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #bacbe6;
+ }
+
+ .table-secondary {
+ --bs-table-bg: #e2e3e5;
+ --bs-table-striped-bg: #d7d8da;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #cbccce;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #d1d2d4;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #cbccce;
+ }
+
+ .table-success {
+ --bs-table-bg: #e1f5d4;
+ --bs-table-striped-bg: #d6e9c9;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #cbddbf;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #d0e3c4;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #cbddbf;
+ }
+
+ .table-info {
+ --bs-table-bg: #cff4fc;
+ --bs-table-striped-bg: #c5e8ef;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #badce3;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #bfe2e9;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #badce3;
+ }
+
+ .table-warning {
+ --bs-table-bg: #fff3cd;
+ --bs-table-striped-bg: #f2e7c3;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #e6dbb9;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #ece1be;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #e6dbb9;
+ }
+
+ .table-danger {
+ --bs-table-bg: #f8d7da;
+ --bs-table-striped-bg: #eccccf;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #dfc2c4;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #e5c7ca;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #dfc2c4;
+ }
+
+ .table-light {
+ --bs-table-bg: #f8f9fa;
+ --bs-table-striped-bg: #ecedee;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #dfe0e1;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #e5e6e7;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #dfe0e1;
+ }
+
+ .table-dark {
+ --bs-table-bg: #212529;
+ --bs-table-striped-bg: #2c3034;
+ --bs-table-striped-color: #fff;
+ --bs-table-active-bg: #373b3e;
+ --bs-table-active-color: #fff;
+ --bs-table-hover-bg: #323539;
+ --bs-table-hover-color: #fff;
+ color: #fff;
+ border-color: #373b3e;
+ }
+
+ .table-responsive {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+
+ @media (max-width: 359.98px) {
+ .table-responsive-xxs {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+ }
+
+ @media (max-width: 499.98px) {
+ .table-responsive-xsm {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+ }
+
+ @media (max-width: 575.98px) {
+ .table-responsive-sm {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+ }
+
+ @media (max-width: 767.98px) {
+ .table-responsive-md {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+ }
+
+ @media (max-width: 991.98px) {
+ .table-responsive-lg {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+ }
+
+ @media (max-width: 1199.98px) {
+ .table-responsive-xl {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+ }
+
+ @media (max-width: 1399.98px) {
+ .table-responsive-xxl {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+ }
+
+ th {
+ font-weight: 500;
+ }
+
+ tbody::-webkit-scrollbar,
+ tbody::-webkit-scrollbar-thumb,
+ tbody::-webkit-scrollbar-track {
+ opacity: 0;
+ width: 5px;
+ border-radius: 6px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ }
+
+ tbody:hover::-webkit-scrollbar,
+ tbody:hover::-webkit-scrollbar-thumb,
+ tbody:hover::-webkit-scrollbar-track {
+ opacity: 0.9;
+ width: 5px;
+ border-radius: 6px;
+ right: 2px;
+ position: absolute;
+ transition: background-color 0.2s linear, width 0.2s ease-in-out;
+ }
+
+ tbody:hover::-webkit-scrollbar-thumb {
+ background-color: #eee;
+ }
+
+ .mt-0 {
+ margin-top: 0 !important;
+ }
+
+ .mt-1 {
+ margin-top: 0.25rem !important;
+ }
+
+ .mt-2 {
+ margin-top: 0.5rem !important;
+ }
+
+ .mt-3 {
+ margin-top: 1rem !important;
+ }
+
+ .mt-4 {
+ margin-top: 1.5rem !important;
+ }
+
+ .mt-5 {
+ margin-top: 3rem !important;
+ }
+
+ .mt-auto {
+ margin-top: auto !important;
+ }
+
+ .w-25 {
+ width: 25% !important;
+ }
+
+ .w-50 {
+ width: 50% !important;
+ }
+
+ .w-75 {
+ width: 75% !important;
+ }
+
+ .w-100 {
+ width: 100% !important;
+ }
+
+ .w-auto {
+ width: auto !important;
+ }
+
+ .cmw-30 {
+ min-width: 30rem;
+ }
+
+ .fst-normal {
+ font-style: normal !important;
+ }
+
+ .fw-light {
+ font-weight: 300 !important;
+ }
+
+ .fw-lighter {
+ font-weight: lighter !important;
+ }
+
+ .fw-normal {
+ font-weight: 400 !important;
+ }
+
+ .fw-bold {
+ font-weight: 500 !important;
+ }
+
+ .fw-bolder {
+ font-weight: bolder !important;
+ }
+
+ .text-lowercase {
+ text-transform: lowercase !important;
+ }
+
+ .text-uppercase {
+ text-transform: uppercase !important;
+ }
+
+ .text-capitalize {
+ text-transform: capitalize !important;
+ }
+
+ .text-start {
+ text-align: left !important;
+ }
+
+ .text-end {
+ text-align: right !important;
+ }
+
+ .text-center {
+ text-align: center !important;
+ }
+
+ .text-primary {
+ color: #0e6eff !important;
+ }
+
+ .text-secondary {
+ color: #6c757d !important;
+ }
+
+ .text-success {
+ color: #68cf29 !important;
+ }
+
+ .text-info {
+ color: #03a9f4 !important;
+ }
+
+ .text-warning {
+ color: #ffc107 !important;
+ }
+
+ .text-danger {
+ color: #dc3545 !important;
+ }
+
+ .text-light {
+ color: #f8f9fa !important;
+ }
+
+ .text-dark {
+ color: #212529 !important;
+ }
+
+ .text-white {
+ color: #fff !important;
+ }
+`
\ No newline at end of file
diff --git a/plugins/plugins/core/components/TradeInfoView.js b/plugins/plugins/core/components/TradeInfoView.js
new file mode 100644
index 00000000..e4877bf6
--- /dev/null
+++ b/plugins/plugins/core/components/TradeInfoView.js
@@ -0,0 +1,285 @@
+import {css, html, LitElement} from 'lit'
+import {render} from 'lit/html.js'
+import {Epml} from '../../../epml.js'
+import {get, translate} from '../../../../core/translate/index.js'
+import {tradeInfoViewStyle} from './TradeInfoView-css.js'
+
+import '@polymer/paper-dialog/paper-dialog.js'
+import '@material/mwc-button'
+import '@material/mwc-icon'
+
+const parentEpml = new Epml({ type: 'WINDOW', source: window.parent })
+
+class TradeInfoView extends LitElement {
+ static get properties() {
+ return {
+ sellerAddress: { type: String },
+ buyerAddress: { type: String },
+ sellqortAmount: { type: Number },
+ buyforeignAmount: { type: Number },
+ tradeTime: { type: String },
+ coinCode: { type: String },
+ addressSellerResult: { type: Array },
+ addressBuyerResult: { type: Array },
+ sellerImage: { type: String },
+ infoSellerName: { type: String },
+ buyerImage: { type: String },
+ infoBuyerName: { type: String },
+ priceEach: { type: Number },
+ atAddress: { type: String },
+ isLoadingCompleteInfo: { type: Boolean },
+ theme: { type: String, reflect: true }
+ }
+ }
+
+ static styles = [tradeInfoViewStyle]
+
+ constructor() {
+ super()
+ this.sellerAddress = ''
+ this.buyerAddress = ''
+ this.sellqortAmount = 0
+ this.buyforeignAmount = 0
+ this.tradeTime = ''
+ this.coinCode = ''
+ this.addressSellerResult = []
+ this.addressBuyerResult = []
+ this.sellerImage = ''
+ this.infoSellerName = ''
+ this.buyerImage = ''
+ this.infoBuyerName = ''
+ this.priceEach = 0
+ this.atAddress = ''
+ this.isLoadingCompleteInfo = false
+ this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'
+ }
+
+ render() {
+ return html`
+ ${translate("tradepage.tchange13")} ${this.infoSellerName} ${this.sellerAddress} ${translate("explorerpage.exp6")}: ${this.founderSellerStatus()} ${translate("info.inf20")} ${this.infoBuyerName} ${this.buyerAddress} ${translate("explorerpage.exp6")}: ${this.founderBuyerStatus()}${translate("info.inf19")}
+
+
+
+
+
+ ${translate("tradepage.tchange8")} ( QORT )
+ ${this.sellqortAmount} QORT
+
+
+ ${translate("tradepage.tchange9")} ( ${this.coinCode} )
+ ${this.priceEach} ${this.coinCode}
+
+
+ ${translate("tradepage.tchange10")} ( ${this.coinCode} )
+ ${this.buyforeignAmount} ${this.coinCode}
+
+
+ AT ${translate("settings.address")}
+ ${this.atAddress}
+
+
+
+ ${translate("tradepage.tchange11")}
+ ${this.tradeTime}
+ `
+ }
+
+ avatarBuyerImage() {
+ return html`
`
+ }
+
+ founderSellerBadge() {
+ if (this.addressSellerResult.flags === 1) {
+ return html`${translate("explorerpage.exp6")}`
+ } else {
+ return html``
+ }
+ }
+
+ founderBuyerBadge() {
+ if (this.addressBuyerResult.flags === 1) {
+ return html`${translate("explorerpage.exp6")}`
+ } else {
+ return html``
+ }
+ }
+
+ founderSellerStatus() {
+ if (this.addressSellerResult.flags === 1) {
+ return html`${translate("general.yes")}`
+ } else {
+ return html`${translate("general.no")}`
+ }
+ }
+
+ founderBuyerStatus() {
+ if (this.addressBuyerResult.flags === 1) {
+ return html`${translate("general.yes")}`
+ } else {
+ return html`${translate("general.no")}`
+ }
+ }
+
+ getApiKey() {
+ const apiNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
+ let apiKey = apiNode.apiKey;
+ return apiKey;
+ }
+
+ isEmptyArray(arr) {
+ if (!arr) {
+ return true
+ }
+ return arr.length === 0
+ }
+
+ round(number) {
+ let result = (Math.round(parseFloat(number) * 1e8) / 1e8).toFixed(8)
+ return result
+ }
+}
+
+window.customElements.define('trade-info-view', TradeInfoView)
diff --git a/plugins/plugins/core/trade-portal/trade-portal.src.js b/plugins/plugins/core/trade-portal/trade-portal.src.js
index 3a05741a..41ba9d19 100644
--- a/plugins/plugins/core/trade-portal/trade-portal.src.js
+++ b/plugins/plugins/core/trade-portal/trade-portal.src.js
@@ -5,6 +5,7 @@ import isElectron from 'is-electron'
import {get, registerTranslateConfig, translate, use} from '../../../../core/translate/index.js'
import Base58 from '../../../../crypto/api/deps/Base58.js'
import {decryptData, encryptData} from '../../../../core/src/lockScreen.js'
+import {tradeStyles} from './trade-portal-css.js'
import '@material/mwc-button'
import '@material/mwc-textfield'
import '@material/mwc-icon'
@@ -29,6 +30,7 @@ import chartsdgb from './charts/dgb-charts.js'
import chartsrvn from './charts/rvn-charts.js'
import chartsarrr from './charts/arrr-charts.js'
import '../components/TraderInfoView.js'
+import '../components/TradeInfoView.js'
registerTranslateConfig({
loader: lang => fetch(`/language/${lang}.json`).then(res => res.json())
@@ -98,114 +100,133 @@ class TradePortal extends LitElement {
static get styles() {
return css`
- * {
- --mdc-theme-primary: rgb(3, 169, 244);
- --mdc-theme-secondary: var(--mdc-theme-primary);
- --mdc-theme-error: rgb(255, 89, 89);
- --mdc-text-field-outlined-idle-border-color: var(--txtfieldborder);
- --mdc-text-field-outlined-hover-border-color: var(--txtfieldhoverborder);
- --mdc-text-field-label-ink-color: var(--black);
- --mdc-text-field-ink-color: var(--black);
- --mdc-select-outlined-idle-border-color: var(--txtfieldborder);
- --mdc-select-outlined-hover-border-color: var(--txtfieldhoverborder);
- --mdc-select-label-ink-color: var(--black);
- --mdc-select-ink-color: var(--black);
- --mdc-theme-surface: var(--white);
- --mdc-dialog-content-ink-color: var(--black);
- --mdc-dialog-shape-radius: 25px;
- --paper-input-container-focus-color: var(--mdc-theme-primary);
- --lumo-primary-text-color: rgb(0, 167, 245);
- --lumo-primary-color-50pct: rgba(0, 167, 245, 0.5);
- --lumo-primary-color-10pct: rgba(0, 167, 245, 0.1);
- --lumo-primary-color: hsl(199, 100%, 48%);
- --lumo-base-color: var(--white);
- --lumo-body-text-color: var(--black);
- --lumo-secondary-text-color: var(--sectxt);
- --lumo-contrast-60pct: var(--vdicon);
- --_lumo-grid-border-color: var(--border);
- --_lumo-grid-secondary-border-color: var(--border2);
- }
+ * {
+ --mdc-theme-primary: rgb(3, 169, 244);
+ --mdc-theme-secondary: var(--mdc-theme-primary);
+ --mdc-theme-error: rgb(255, 89, 89);
+ --mdc-text-field-outlined-idle-border-color: var(--txtfieldborder);
+ --mdc-text-field-outlined-hover-border-color: var(--txtfieldhoverborder);
+ --mdc-text-field-label-ink-color: var(--black);
+ --mdc-text-field-ink-color: var(--black);
+ --mdc-select-outlined-idle-border-color: var(--txtfieldborder);
+ --mdc-select-outlined-hover-border-color: var(--txtfieldhoverborder);
+ --mdc-select-label-ink-color: var(--black);
+ --mdc-select-ink-color: var(--black);
+ --mdc-theme-surface: var(--white);
+ --mdc-dialog-content-ink-color: var(--black);
+ --mdc-dialog-shape-radius: 25px;
+ --paper-input-container-focus-color: var(--mdc-theme-primary);
+ --lumo-primary-text-color: rgb(0, 167, 245);
+ --lumo-primary-color-50pct: rgba(0, 167, 245, 0.5);
+ --lumo-primary-color-10pct: rgba(0, 167, 245, 0.1);
+ --lumo-primary-color: hsl(199, 100%, 48%);
+ --lumo-base-color: var(--white);
+ --lumo-body-text-color: var(--black);
+ --lumo-secondary-text-color: var(--sectxt);
+ --lumo-contrast-60pct: var(--vdicon);
+ --_lumo-grid-border-color: var(--border);
+ --_lumo-grid-secondary-border-color: var(--border2);
+ }
+
+ .myhover vaadin-grid-cell-content {
+ cursor: pointer;
+ }
+
+ .myhover vaadin-grid::part(selected-row) {
+ color: green;
+ cursor: pointer;
+ }
+
+ .myhover vaadin-grid::part(focused-selected-row) {
+ color: green;
+ cursor: pointer;
+ }
+
+ .myhover vaadin-grid::part(cell):hover {
+ cursor: pointer;
+ }
+
+ .myhover vaadin-grid::part(row):hover {
+ color: green;
+ cursor: pointer;
+ }
+
+ .myhover vaadin-grid::part(selected-row-cell) {
+ color: green;
+ cursor: pointer;
+ }
+
+ paper-spinner-lite {
+ height: 30px;
+ width: 30px;
+ --paper-spinner-color: var(--mdc-theme-primary);
+ --paper-spinner-stroke-width: 3px;
+ }
+
+ mwc-tab-bar {
+ --mdc-text-transform: none;
+ --mdc-tab-color-default: var(--black);
+ --mdc-tab-text-label-color-default: var(--black);
+ }
+
+ #tabs-1 {
+ --mdc-tab-height: 42px;
+ border-left: 1px solid var(--tradeborder);
+ border-top: 1px solid var(--tradeborder);
+ border-right: 1px solid var(--tradeborder);
+ color: var(--black);
+ }
+
+ #tab-buy[active] {
+ --mdc-theme-primary: rgba(55, 160, 51, 0.9);
+ }
+
+ #tabs-1-content {
+ height: 100%;
+ padding-bottom: 10px;
+ }
+
+ #tabs-1-content>div {
+ height: 100%;
+ border: 1px solid var(--tradeborder);
+ }
+
+ #tabs-1-content .card {
+ border: none;
+ }
+
+ #tabs-1-content .btn-clear {
+ --mdc-icon-button-size: 32px;
+ color: var(--black);
+ }
+
+ .btn-clear-bot {
+ --mdc-icon-button-size: 32px;
+ color: var(--black);
+ float: right;
+ }
+
+ .btn-info {
+ color: #03a9f4;
+ --mdc-icon-size: 16px;
+ padding-top: 3px;
+ }
+
+ #tab-sell[active] {
+ --mdc-theme-primary: rgb(255, 89, 89);
+ }
+
+ #trade-portal-page {
+ background: var(--white);
+ padding: 12px 24px;
+ }
+
+ .divCard {
+ border: 1px solid var(--black);
+ padding: 1em;
+ box-shadow: 0 0.3px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 1px -1px rgba(0, 0, 0, 0.12), 0 1px 2px 0 rgba(0, 0, 0, 0.2);
+ }
- .myhover vaadin-grid-cell-content {
- cursor: pointer;
- }
- .myhover vaadin-grid::part(selected-row) {
- color: green;
- cursor: pointer;
- }
- .myhover vaadin-grid::part(focused-selected-row) {
- color: green;
- cursor: pointer;
- }
- .myhover vaadin-grid::part(cell):hover {
- cursor: pointer;
- }
- .myhover vaadin-grid::part(row):hover {
- color: green;
- cursor: pointer;
- }
- .myhover vaadin-grid::part(selected-row-cell) {
- color: green;
- cursor: pointer;
- }
- paper-spinner-lite {
- height: 30px;
- width: 30px;
- --paper-spinner-color: var(--mdc-theme-primary);
- --paper-spinner-stroke-width: 3px;
- }
- mwc-tab-bar {
- --mdc-text-transform: none;
- --mdc-tab-color-default: var(--black);
- --mdc-tab-text-label-color-default: var(--black);
- }
- #tabs-1 {
- --mdc-tab-height: 42px;
- border-left: 1px solid var(--tradeborder);
- border-top: 1px solid var(--tradeborder);
- border-right: 1px solid var(--tradeborder);
- color: var(--black);
- }
- #tab-buy[active] {
- --mdc-theme-primary: rgba(55, 160, 51, 0.9);
- }
- #tabs-1-content {
- height: 100%;
- padding-bottom: 10px;
- }
- #tabs-1-content > div {
- height: 100%;
- border: 1px solid var(--tradeborder);
- }
- #tabs-1-content .card {
- border: none;
- }
- #tabs-1-content .btn-clear {
- --mdc-icon-button-size: 32px;
- color: var(--black);
- }
- .btn-clear-bot {
- --mdc-icon-button-size: 32px;
- color: var(--black);
- float: right;
- }
- .btn-info {
- color: #03a9f4;
- --mdc-icon-size: 16px;
- padding-top: 3px;
- }
- #tab-sell[active] {
- --mdc-theme-primary: rgb(255, 89, 89);
- }
- #trade-portal-page {
- background: var(--white);
- padding: 12px 24px;
- }
- .divCard {
- border: 1px solid var(--black);
- padding: 1em;
- box-shadow: 0 0.3px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 1px -1px rgba(0, 0, 0, 0.12), 0 1px 2px 0 rgba(0, 0, 0, 0.2);
- }
h2 {
margin: 10px 0;
}
@@ -302,288 +323,344 @@ class TradePortal extends LitElement {
padding: 7px;
}
- h2,
- h3,
- h4,
- h5 {
- color: var(--black);
- font-weight: 400;
- }
- header {
- display: flex;
- flex: 0 1 auto;
- align-items: center;
- justify-content: center;
- padding: 0px 10px;
- font-size: 16px;
- color: var(--white);
- background-color: var(--tradehead);
- border-left: 1px solid var(--tradeborder);
- border-top: 1px solid var(--tradeborder);
- border-right: 1px solid var(--tradeborder);
- min-height: 40px;
- }
- p {
- margin-bottom: 12px;
- }
- #trade-portal {
- max-width: 100vw;
- margin-left: auto;
- margin-right: auto;
- }
- .box {
- margin: 0;
- padding: 0;
- display: flex;
- flex-flow: column;
- height: 100%;
- }
- .box-bot {
- margin: 0;
- padding: 0;
- display: flex;
- flex-flow: column;
- height: 150px;
- }
- #first-trade-section {
- margin-bottom: 10px;
- }
- #first-trade-section > div {
- }
- #second-trade-section {
- margin-bottom: 10px;
- }
- #second-trade-section > div {
- }
- #third-trade-section {
- margin-bottom: 10px;
- }
- #third-trade-section > div {
- }
- .trade-chart {
- background-color: var(--white);
- border: 2px #ddd solid;
- text-align: center;
- }
- .open-trades {
- text-align: center;
- }
- .open-market-container {
- text-align: center;
- }
- .trade-bot-container {
- text-align: center;
- }
- .no-last-seen {
- background: rgb(255, 89, 89);
- padding: 9px 1.3px;
- border-radius: 50%;
- width: 1rem;
- margin: 0 auto;
- }
- .card {
- padding: 1em;
- border: 1px var(--tradeborder) solid;
- flex: 1 1 auto;
- display: flex;
- flex-flow: column;
- justify-content: space-evenly;
- min-height: inherit;
- }
- .card-bot {
- padding: 1em;
- flex: 1 1 auto;
- display: flex;
- flex-flow: column;
- justify-content: space-evenly;
- width: 350px;
- min-height: inherit;
- }
- .cancel {
- --mdc-theme-primary: rgb(255, 89, 89);
- }
- .border-wrapper {
- border: 1px var(--tradeborder) solid;
- overflow: hidden;
- }
- .amt-text {
- color: var(--tradehave);
- font-size: 15px;
- margin-top: 5px;
- margin-bottom: 12px;
- }
- .exchange {
- color: var(--black);
- font-size: 18px;
- font-weight: bold;
- margin-top: 5px;
- margin-bottom: 10px;
- }
- .clear-button {
- display: inline;
- float: right;
- margin-bottom: 5px;
- }
- .exhcnage-text {
- display: inline;
- float: left;
- margin-bottom: 5px;
- }
- .balance-text {
- display: inline;
- float: right;
- margin-bottom: 5px;
- }
- .fee-text {
- display: inline;
- float: left;
- margin-bottom: 5px;
- }
- .tab-text {
- color: var(--tradehave);
- font-size: 12px;
- text-align: left;
- margin-top: 2px;
- margin-bottom: -12px;
- }
- .historic-trades {
- text-align: center;
- }
- .my-open-orders {
- text-align: center;
- }
- .my-historic-trades {
- text-align: center;
- }
- .buttons {
- width: auto !important;
- }
- .buy-button {
- --mdc-theme-primary: rgba(55, 160, 51, 0.9);
- }
- .sell-button {
- --mdc-theme-primary: rgb(255, 89, 89);
- }
- .trade-bot-button {
- margin-top: 20px;
- margin-bottom: 20px;
- --mdc-theme-primary: rgba(55, 160, 51, 0.9);
- }
- .full-width {
- background-color: var(--white);
- border: 2px var(--black);
- height: 200px;
- text-align: center;
- }
- vaading-grid {
- font-size: .8em;
- }
- vaadin-grid-column {
- flex-grow: 1;
- }
- .loadingContainer {
- height: 100%;
- width: 100%;
- }
- .loading,
- .loading:after {
- border-radius: 50%;
- width: 5em;
- height: 5em;
- }
- .loading {
- margin: 10px auto;
- border-width: .6em;
- border-style: solid;
- border-color: rgba(3, 169, 244, 0.2) rgba(3, 169, 244, 0.2) rgba(3, 169, 244, 0.2) rgb(3, 169, 244);
- font-size: 10px;
- position: relative;
- text-indent: -9999em;
- transform: translateZ(0px);
- animation: 1.1s linear 0s infinite normal none running loadingAnimation;
- }
- mwc-select#coinSelectionMenu {
- font-size: 24px;
- width:220px;
- }
- mwc-select#coinSelectionMenu mwc-list-item {
- line-height: 30px;
- }
- .coinName::before {
- content: "";
- display: inline-block;
- height: 26px;
- width: 45px;
- position: absolute;
- background-repeat: no-repeat;
- background-size: cover;
- left: 10px;
- top: 10px;
- }
- .btc.coinName:before {
- background-image: url('/img/qortbtc.png');
- }
- .ltc.coinName:before {
- background-image: url('/img/qortltc.png');
- }
- .doge.coinName:before {
- background-image: url('/img/qortdoge.png');
- }
- .dgb.coinName:before {
- background-image: url('/img/qortdgb.png');
- }
- .rvn.coinName:before {
- background-image: url('/img/qortrvn.png');
- }
- .arrr.coinName:before {
- background-image: url('/img/qortarrr.png');
- }
- .coinName {
- display: inline-block;
- height: 26px;
- padding-left: 45px;
- }
- .warning-text {
- animation: blinker 1.5s linear infinite;
- display: inline;
- float: left;
- margin-bottom: 5px;
- color: rgb(255, 89, 89);
- }
- .warning-bot-text {
- animation: blinker 1.5s linear infinite;
- display: inline;
- text-align: center;
- color: rgb(255, 89, 89);
- }
- .red {
- --mdc-theme-primary: #F44336;
- }
- @-webkit-keyframes loadingAnimation {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- @keyframes loadingAnimation {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- @keyframes blinker {
- 50% {
- opacity: 0;
- }
- }
+ h2,
+ h3,
+ h4,
+ h5 {
+ color: var(--black);
+ font-weight: 400;
+ }
+
+ header {
+ display: flex;
+ flex: 0 1 auto;
+ align-items: center;
+ justify-content: center;
+ padding: 0px 10px;
+ font-size: 16px;
+ color: var(--white);
+ background-color: var(--tradehead);
+ border-left: 1px solid var(--tradeborder);
+ border-top: 1px solid var(--tradeborder);
+ border-right: 1px solid var(--tradeborder);
+ min-height: 40px;
+ }
+
+ p {
+ margin-bottom: 12px;
+ }
+
+ #trade-portal {
+ max-width: 100vw;
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ .box {
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-flow: column;
+ height: 100%;
+ }
+
+ .box-bot {
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-flow: column;
+ height: 150px;
+ }
+
+ #first-trade-section {
+ margin-bottom: 10px;
+ }
+
+ #first-trade-section>div {}
+
+ #second-trade-section {
+ margin-bottom: 10px;
+ }
+
+ #second-trade-section>div {}
+
+ #third-trade-section {
+ margin-bottom: 10px;
+ }
+
+ #third-trade-section>div {}
+
+ .trade-chart {
+ background-color: var(--white);
+ border: 2px #ddd solid;
+ text-align: center;
+ }
+
+ .open-trades {
+ text-align: center;
+ }
+
+ .open-market-container {
+ text-align: center;
+ }
+
+ .trade-bot-container {
+ text-align: center;
+ }
+
+ .no-last-seen {
+ background: rgb(255, 89, 89);
+ padding: 9px 1.3px;
+ border-radius: 50%;
+ width: 1rem;
+ margin: 0 auto;
+ }
+
+ .card {
+ padding: 1em;
+ border: 1px var(--tradeborder) solid;
+ flex: 1 1 auto;
+ display: flex;
+ flex-flow: column;
+ justify-content: space-evenly;
+ min-height: inherit;
+ }
+
+ .card-bot {
+ padding: 1em;
+ flex: 1 1 auto;
+ display: flex;
+ flex-flow: column;
+ justify-content: space-evenly;
+ width: 350px;
+ min-height: inherit;
+ }
+
+ .cancel {
+ --mdc-theme-primary: rgb(255, 89, 89);
+ }
+
+ .border-wrapper {
+ border: 1px var(--tradeborder) solid;
+ overflow: hidden;
+ }
+
+ .amt-text {
+ color: var(--tradehave);
+ font-size: 15px;
+ margin-top: 5px;
+ margin-bottom: 12px;
+ }
+
+ .exchange {
+ color: var(--black);
+ font-size: 18px;
+ font-weight: bold;
+ margin-top: 5px;
+ margin-bottom: 10px;
+ }
+
+ .clear-button {
+ display: inline;
+ float: right;
+ margin-bottom: 5px;
+ }
+
+ .exhcnage-text {
+ display: inline;
+ float: left;
+ margin-bottom: 5px;
+ }
+
+ .balance-text {
+ display: inline;
+ float: right;
+ margin-bottom: 5px;
+ }
+
+ .fee-text {
+ display: inline;
+ float: left;
+ margin-bottom: 5px;
+ }
+
+ .tab-text {
+ color: var(--tradehave);
+ font-size: 12px;
+ text-align: left;
+ margin-top: 2px;
+ margin-bottom: -12px;
+ }
+
+ .historic-trades {
+ text-align: center;
+ }
+
+ .my-open-orders {
+ text-align: center;
+ }
+
+ .my-historic-trades {
+ text-align: center;
+ }
+
+ .buttons {
+ width: auto !important;
+ }
+
+ .buy-button {
+ --mdc-theme-primary: rgba(55, 160, 51, 0.9);
+ }
+
+ .sell-button {
+ --mdc-theme-primary: rgb(255, 89, 89);
+ }
+
+ .trade-bot-button {
+ margin-top: 20px;
+ margin-bottom: 20px;
+ --mdc-theme-primary: rgba(55, 160, 51, 0.9);
+ }
+
+ .full-width {
+ background-color: var(--white);
+ border: 2px var(--black);
+ height: 200px;
+ text-align: center;
+ }
+
+ vaading-grid {
+ font-size: .8em;
+ }
+
+ vaadin-grid-column {
+ flex-grow: 1;
+ }
+
+ .loadingContainer {
+ height: 100%;
+ width: 100%;
+ }
+
+ .loading,
+ .loading:after {
+ border-radius: 50%;
+ width: 5em;
+ height: 5em;
+ }
+
+ .loading {
+ margin: 10px auto;
+ border-width: .6em;
+ border-style: solid;
+ border-color: rgba(3, 169, 244, 0.2) rgba(3, 169, 244, 0.2) rgba(3, 169, 244, 0.2) rgb(3, 169, 244);
+ font-size: 10px;
+ position: relative;
+ text-indent: -9999em;
+ transform: translateZ(0px);
+ animation: 1.1s linear 0s infinite normal none running loadingAnimation;
+ }
+
+ mwc-select#coinSelectionMenu {
+ font-size: 24px;
+ width: 220px;
+ }
+
+ mwc-select#coinSelectionMenu mwc-list-item {
+ line-height: 30px;
+ }
+
+ .coinName::before {
+ content: "";
+ display: inline-block;
+ height: 26px;
+ width: 45px;
+ position: absolute;
+ background-repeat: no-repeat;
+ background-size: cover;
+ left: 10px;
+ top: 10px;
+ }
+
+ .btc.coinName:before {
+ background-image: url('/img/qortbtc.png');
+ }
+
+ .ltc.coinName:before {
+ background-image: url('/img/qortltc.png');
+ }
+
+ .doge.coinName:before {
+ background-image: url('/img/qortdoge.png');
+ }
+
+ .dgb.coinName:before {
+ background-image: url('/img/qortdgb.png');
+ }
+
+ .rvn.coinName:before {
+ background-image: url('/img/qortrvn.png');
+ }
+
+ .arrr.coinName:before {
+ background-image: url('/img/qortarrr.png');
+ }
+
+ .coinName {
+ display: inline-block;
+ height: 26px;
+ padding-left: 45px;
+ }
+
+ .warning-text {
+ animation: blinker 1.5s linear infinite;
+ display: inline;
+ float: left;
+ margin-bottom: 5px;
+ color: rgb(255, 89, 89);
+ }
+
+ .warning-bot-text {
+ animation: blinker 1.5s linear infinite;
+ display: inline;
+ text-align: center;
+ color: rgb(255, 89, 89);
+ }
+
+ .red {
+ --mdc-theme-primary: #F44336;
+ }
+
+ @-webkit-keyframes loadingAnimation {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+
+ @keyframes loadingAnimation {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ }
+
+ @keyframes blinker {
+ 50% {
+ opacity: 0;
+ }
+ }
+
paper-dialog.info {
width: 100%;
max-width: 75vw;
@@ -596,15 +673,18 @@ class TradePortal extends LitElement {
line-height: 1.6;
overflow-y: auto;
}
+
.actions {
display: flex;
justify-content: space-between;
padding: 0 1em;
margin: 12px 0 -6px 0;
}
+
.close-icon {
font-size: 36px;
}
+
.close-icon:hover {
cursor: pointer;
opacity: .6;
@@ -620,34 +700,34 @@ class TradePortal extends LitElement {
border-radius: 15px;
padding: 10px 10px 0px;
box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.1);
- }
+ }
- .lock-wrapper {
- width: 100%;
- height: 100%;
- min-width: 600px;
- max-width: 600px;
- min-height: 400px;
- max-height: 400px;
- text-align: center;
- background: url("/img/qortal-lock.jpg");
- border: 1px solid var(--black);
- border-radius: 25px;
- padding: 10px 10px 0px;
- }
+ .lock-wrapper {
+ width: 100%;
+ height: 100%;
+ min-width: 600px;
+ max-width: 600px;
+ min-height: 400px;
+ max-height: 400px;
+ text-align: center;
+ background: url("/img/qortal-lock.jpg");
+ border: 1px solid var(--black);
+ border-radius: 25px;
+ padding: 10px 10px 0px;
+ }
- .text-wrapper {
- width: 100%;
- height: 100%;
- min-width: 280px;
- max-width: 280px;
- min-height: 64px;
- max-height: 64px;
- text-align: center;
- margin-left: 35px;
- margin-top: 125px;
- overflow: hidden;
- }
+ .text-wrapper {
+ width: 100%;
+ height: 100%;
+ min-width: 280px;
+ max-width: 280px;
+ min-height: 64px;
+ max-height: 64px;
+ text-align: center;
+ margin-left: 35px;
+ margin-top: 125px;
+ overflow: hidden;
+ }
.lock-title-white {
font-family: 'magistralbold';
@@ -666,12 +746,13 @@ class TradePortal extends LitElement {
}
@media (min-width: 701px) {
- * {
- }
+ * {}
+
#trade-portal {}
+
#first-trade-section {
display: grid;
- grid-template-columns:1fr 1fr 2fr;
+ grid-template-columns: 1fr 1fr 2fr;
grid-auto-rows: max(450px);
column-gap: 0.5em;
row-gap: 0.4em;
@@ -679,6 +760,7 @@ class TradePortal extends LitElement {
align-items: stretch;
margin-bottom: 10px;
}
+
#second-trade-section {
display: grid;
grid-template-columns: 2fr 1fr;
@@ -689,6 +771,7 @@ class TradePortal extends LitElement {
align-items: stretch;
margin-bottom: 10px;
}
+
#third-trade-section {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
@@ -914,20 +997,28 @@ class TradePortal extends LitElement {
historicTradesTemplate() {
return html`
-