Auto buy (First Stage) , Inside address explorer (First Stage), update deps

This commit is contained in:
AlphaX-Projects 2022-11-15 14:37:52 +01:00
parent aa5842b940
commit 4682ee891c
38 changed files with 7909 additions and 240 deletions

BIN
img/notfound.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -1,48 +1,48 @@
{ {
"name": "qortal-ui", "name": "qortal-ui",
"version": "2.1.1", "version": "2.1.1",
"description": "Qortal Project - decentralize the world - Data storage, communications, web hosting, decentralized trading, complete infrastructure for the future blockchain-based Internet", "description": "Qortal Project - decentralize the world - Data storage, communications, web hosting, decentralized trading, complete infrastructure for the future blockchain-based Internet",
"keywords": [ "keywords": [
"QORT", "QORT",
"QORTAL", "QORTAL",
"DECENTRALIZED" "DECENTRALIZED"
], ],
"main": "electron.js", "main": "electron.js",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git+https://github.com/Qortal/qortal-ui.git" "url": "git+https://github.com/Qortal/qortal-ui.git"
}, },
"homepage": "https://qortal.org", "homepage": "https://qortal.org",
"author": "QORTAL <admin@qortal.org>", "author": "QORTAL <admin@qortal.org>",
"license": "GPL-3.0", "license": "GPL-3.0",
"scripts": { "scripts": {
"install_link:all": "(cd qortal-ui-core && yarn install && yarn link) && (cd qortal-ui-plugins && yarn install && yarn link) && (cd qortal-ui-crypto && yarn install && yarn link) && (yarn link qortal-ui-core && yarn link qortal-ui-plugins && yarn link qortal-ui-crypto)", "install_link:all": "(cd qortal-ui-core && yarn install && yarn link) && (cd qortal-ui-plugins && yarn install && yarn link) && (cd qortal-ui-crypto && yarn install && yarn link) && (yarn link qortal-ui-core && yarn link qortal-ui-plugins && yarn link qortal-ui-crypto)",
"dev": "node server.js", "dev": "node server.js",
"prebuild": "node -p \"'export const UI_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > qortal-ui-core/src/redux/app/version.js", "prebuild": "node -p \"'export const UI_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > qortal-ui-core/src/redux/app/version.js",
"build-dev": "node build.js", "build-dev": "node build.js",
"build": "NODE_ENV=production node build.js", "build": "NODE_ENV=production node build.js",
"server": "NODE_ENV=production node server.js", "server": "NODE_ENV=production node server.js",
"watch": "node watch.js", "watch": "node watch.js",
"watch-inline": "node watch-inline.js", "watch-inline": "node watch-inline.js",
"start-electron": "NODE_ENV=production electron .", "start-electron": "NODE_ENV=production electron .",
"build-electron": "electron-builder build --publish never", "build-electron": "electron-builder build --publish never",
"deploy-electron": "electron-builder build --win --publish never", "deploy-electron": "electron-builder build --win --publish never",
"release": "NODE_ENV=production electron-builder build --publish never", "release": "NODE_ENV=production electron-builder build --publish never",
"update-package-json": "node update-package-json.js", "update-package-json": "node update-package-json.js",
"publish": "electron-builder -p always" "publish": "electron-builder -p always"
}, },
"dependencies": { "dependencies": {
"electron-log": "4.4.8", "electron-log": "4.4.8",
"electron-updater": "5.2.1" "electron-updater": "5.3.0"
}, },
"devDependencies": { "devDependencies": {
"electron": "21.1.1", "electron": "21.2.3",
"electron-builder": "23.3.3", "electron-builder": "23.6.0",
"electron-notarize": "1.2.1", "electron-packager": "17.1.1",
"electron-packager": "16.0.0", "@electron/notarize": "1.2.3",
"shelljs": "0.8.5" "shelljs": "^0.8.5"
}, },
"engines": { "engines": {
"node": ">=16.15.0" "node": ">=16.15.0"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"Guthaben konnte nicht abgerufen werden. Versuchen Sie es nochmal!", "tchange30":"Guthaben konnte nicht abgerufen werden. Versuchen Sie es nochmal!",
"tchange31":"VERKAUFT", "tchange31":"VERKAUFT",
"tchange32":"GEKAUFT", "tchange32":"GEKAUFT",
"tchange33":"Tauschrate" "tchange33":"Durchschnitt",
"tchange34":"Betrag darf nicht 0 sein",
"tchange35":"Der Preis darf nicht 0 sein",
"tchange36":"AUSSTEHENDER AUTOKAUF",
"tchange37":"Keine automatische Kaufbestellung gefunden!",
"tchange38":"HINZUFÜGEN",
"tchange39":"AUTO KAUFAUFTRAG",
"tchange40":"Preis",
"tchange41":"Automatischer Kaufauftrag erfolgreich entfernt!",
"tchange42":"MARKET OFFENE VERKAUFSAUFTRÄGE",
"tchange43":"MEINE KAUFGESCHICHTE",
"tchange44":"Automatischer Kaufauftrag erfolgreich hinzugefügt!",
"tchange45":"AUTO KAUFEN MIT",
"tchange46":"AUTOKAUF"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"Belohnungsanteile", "rchange1":"Belohnungsanteile",
@ -674,5 +687,14 @@
"schange19":"Sponsoring-Schlüssel kopieren", "schange19":"Sponsoring-Schlüssel kopieren",
"schange20":"Beziehung schaffen", "schange20":"Beziehung schaffen",
"schange21":"Sponsoring-Schlüssel entfernen" "schange21":"Sponsoring-Schlüssel entfernen"
},
"explorerpage":{
"exp1":"Adresse oder Name zum Suchen",
"exp2":"Kontostand",
"exp3":"Mehr Info",
"exp4":"Adresse oder Name nicht gefunden !",
"exp5":"Beachten Sie, dass bei registrierten Namen zwischen Groß- und Kleinschreibung unterschieden wird.",
"exp6":"Gründer",
"exp7":"Info"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"Fallo en la obtención del saldo. Inténtelo de nuevo!", "tchange30":"Fallo en la obtención del saldo. Inténtelo de nuevo!",
"tchange31":"VENDIDO", "tchange31":"VENDIDO",
"tchange32":"COMPRADO", "tchange32":"COMPRADO",
"tchange33":"Tipo de cambio" "tchange33":"Promedio",
"tchange34":"La cantidad no puede ser 0",
"tchange35":"El precio no puede ser 0",
"tchange36":"AUTO COMPRA PENDIENTE",
"tchange37":"No se ha encontrado ninguna orden de compra automática!",
"tchange38":"AGREGAR",
"tchange39":"AUTO ORDEN DE COMPRA",
"tchange40":"Precio",
"tchange41":"Orden de compra automática eliminada con éxito!",
"tchange42":"MERCADO ABIERTO ÓRDENES DE VENTA",
"tchange43":"MI HISTORIAL DE COMPRAS",
"tchange44":"Orden de compra automática agregada con éxito!",
"tchange45":"AUTO COMPRAR CON",
"tchange46":"COMPRA AUTOMÁTICA"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"Rewardshares", "rchange1":"Rewardshares",
@ -674,5 +687,14 @@
"schange19":"Copiar clave de patrocinio", "schange19":"Copiar clave de patrocinio",
"schange20":"Creando relación", "schange20":"Creando relación",
"schange21":"Eliminar clave de patrocinio" "schange21":"Eliminar clave de patrocinio"
},
"explorerpage":{
"exp1":"Dirección o nombre a buscar",
"exp2":"Saldo de la cuenta",
"exp3":"Más información",
"exp4":"No se encontró la dirección o el nombre!",
"exp5":"Tenga en cuenta que los nombres registrados distinguen entre mayúsculas y minúsculas.",
"exp6":"Fundador",
"exp7":"Información"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"Échec de la récupération du solde. Réessayez!", "tchange30":"Échec de la récupération du solde. Réessayez!",
"tchange31":"VENDU", "tchange31":"VENDU",
"tchange32":"ACHETE", "tchange32":"ACHETE",
"tchange33":"Taux de change" "tchange33":"Moyen",
"tchange34":"Le montant ne peut pas être 0",
"tchange35":"Le prix ne peut pas être 0",
"tchange36":"ACHAT AUTOMATIQUE EN ATTENTE",
"tchange37":"Aucune commande d'achat automatique trouvée !",
"tchange38":"AJOUTER",
"tchange39":"COMMANDE D'ACHAT AUTOMATIQUE",
"tchange40":"Prix",
"tchange41":"Commande d'achat automatique supprimée avec succès !",
"tchange42":"ORDRES DE VENTE À L'OUVERTURE DU MARCHÉ",
"tchange43":"MON HISTORIQUE D'ACHAT",
"tchange44":"Commande d'achat automatique ajoutée avec succès !",
"tchange45":"ACHAT AUTO AVEC",
"tchange46":"ACHAT AUTOMATIQUE"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"Récompenses", "rchange1":"Récompenses",
@ -674,5 +687,14 @@
"schange19":"Copier la clé de parrainage", "schange19":"Copier la clé de parrainage",
"schange20":"Créer une relation", "schange20":"Créer une relation",
"schange21":"Supprimer la clé de parrainage" "schange21":"Supprimer la clé de parrainage"
},
"explorerpage":{
"exp1":"Adresse ou nom à rechercher",
"exp2":"Solde du compte",
"exp3":"Plus d'informations",
"exp4":"Adresse ou nom introuvable !",
"exp5":"Notez que les noms enregistrés sont sensibles à la casse.",
"exp6":"Fondateur",
"exp7":"Info"
} }
} }

View File

@ -309,7 +309,20 @@
"tchange30":"शेष को लाने में विफल फिर से प्रयास करें!", "tchange30":"शेष को लाने में विफल फिर से प्रयास करें!",
"tchange31":"बेचा", "tchange31":"बेचा",
"tchange32":"खरीद लिया", "tchange32":"खरीद लिया",
"tchange33":"विनिमय दर" "tchange33":"औसत",
"tchange34":"राशि 0 नहीं हो सकती",
"tchange35":"मूल्य 0 नहीं हो सकता",
"tchange36":"लंबित ऑटो खरीद",
"tchange37":"कोई ऑटो खरीद आदेश नहीं मिला!",
"tchange38":"जोड़ें",
"tchange39":"ऑटो खरीद आदेश",
"tchange40":"कीमत",
"tchange41":"स्वचालित खरीद आदेश सफलतापूर्वक निकाला गया!",
"tchange42":"मार्केट ओपन सेल ऑर्डर",
"tchange43":"मेरा इतिहास खरीदें",
"tchange44":"स्वतः खरीद आदेश सफलतापूर्वक जोड़ा गया!",
"tchange45":"ऑटो के साथ खरीदें",
"tchange46":"ऑटो खरीदें"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"रिवॉर्डशेयर", "rchange1":"रिवॉर्डशेयर",
@ -675,5 +688,14 @@
"schange19":"कॉपी प्रायोजन कुंजी", "schange19":"कॉपी प्रायोजन कुंजी",
"schange20":"संबंध बनाना", "schange20":"संबंध बनाना",
"schange21":"प्रायोजन कुंजी हटाएं" "schange21":"प्रायोजन कुंजी हटाएं"
},
"explorerpage":{
"exp1":"खोजने के लिए पता या नाम",
"exp2":"खाते में शेष",
"exp3":"और जानकारी",
"exp4":"पता या नाम नहीं मिला !",
"exp5":"ध्यान दें कि पंजीकृत नाम केस-संवेदी होते हैं।",
"exp6":"संस्थापक",
"exp7":"जानकारी"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"Neuspješno dohvatiti stanje. Pokušajte ponovno!", "tchange30":"Neuspješno dohvatiti stanje. Pokušajte ponovno!",
"tchange31":"PRODANO", "tchange31":"PRODANO",
"tchange32":"KUPLJENO", "tchange32":"KUPLJENO",
"tchange33":"Tečaj" "tchange33":"Prosjek",
"tchange34":"Iznos ne može biti 0",
"tchange35":"Cijena ne može biti 0",
"tchange36":"ČEKA SE AUTO KUPNJA",
"tchange37":"Nije pronađena automatska narudžba za kupnju!",
"tchange38":"DODATI",
"tchange39":"AUTOMATSKA NARUDŽBA",
"tchange40":"Cijena",
"tchange41":"Uspješno uklonjena automatska narudžba za kupnju!",
"tchange42":"TRŽIŠNI OTVORENI PRODAJNI NALOGI",
"tchange43":"MOJA POVIJEST KUPNJE",
"tchange44":"Uspješno dodana automatska narudžba za kupnju!",
"tchange45":"AUTO KUPITE SA",
"tchange46":"AUTO OTKUP"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"Nagradni udio (Rewardshares)", "rchange1":"Nagradni udio (Rewardshares)",
@ -674,5 +687,14 @@
"schange19":"Kopiraj ključ sponzorstva", "schange19":"Kopiraj ključ sponzorstva",
"schange20":"Stvaranje odnosa", "schange20":"Stvaranje odnosa",
"schange21":"Ukloni sponzorski ključ" "schange21":"Ukloni sponzorski ključ"
},
"explorerpage":{
"exp1":"Adresa ili ime za pretraživanje",
"exp2":"Stanje na računu",
"exp3":"Više informacija",
"exp4":"Adresa ili ime nisu pronađeni!",
"exp5":"Imajte na umu da su registrirana imena osjetljiva na velika i mala slova.",
"exp6":"Osnivač",
"exp7":"Info"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"Nem sikerült lekérni az egyenleget. Próbáld újra!", "tchange30":"Nem sikerült lekérni az egyenleget. Próbáld újra!",
"tchange31":"ELADOTT", "tchange31":"ELADOTT",
"tchange32":"VÁSÁROLT", "tchange32":"VÁSÁROLT",
"tchange33":"Árfolyam" "tchange33":"Átlagos",
"tchange34":"Az összeg nem lehet 0",
"tchange35":"Az ár nem lehet 0",
"tchange36":"FÜGGŐBEN AUTOMATIKUS VÁSÁRLÁS",
"tchange37":"Nem található automatikus vásárlási rendelés!",
"tchange38":"HOZZÁAD",
"tchange39":"AUTOMATIKUS VÁSÁRLÁSI MEGRENDELÉS",
"tchange40":"Ár",
"tchange41":"Az automatikus vásárlási rendelés sikeresen eltávolítva!",
"tchange42":"NYÍLT PIACI ELADÁSI MEGRENDELÉSEK",
"tchange43":"VÁSÁRLÁSI TÖRTÉNETEM",
"tchange44":"Az automatikus vásárlási rendelés sikeresen hozzáadva!",
"tchange45":"AUTOMATIKUS VÁSÁRLÁS",
"tchange46":"AUTOMATIKUS VÁSÁRLÁS"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"Jutalommegosztások", "rchange1":"Jutalommegosztások",
@ -674,5 +687,14 @@
"schange19":"Szponzori kulcs másolása", "schange19":"Szponzori kulcs másolása",
"schange20":"Kapcsolatteremtés", "schange20":"Kapcsolatteremtés",
"schange21":"Szponzori kulcs távolítsa" "schange21":"Szponzori kulcs távolítsa"
},
"explorerpage":{
"exp1":"Keresendő cím vagy név",
"exp2":"Számlaegyenleg",
"exp3":"Több információ",
"exp4":"Cím vagy név nem található!",
"exp5":"Vegye figyelembe, hogy a regisztrált nevek megkülönböztetik a kis- és nagybetűket.",
"exp6":"Alapító",
"exp7":"Info"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"Impossibile recuperare il saldo. Riprova!", "tchange30":"Impossibile recuperare il saldo. Riprova!",
"tchange31":"VENDUTO", "tchange31":"VENDUTO",
"tchange32":"ACQUISTATO", "tchange32":"ACQUISTATO",
"tchange33":"Tasso di cambio" "tchange33":"Media",
"tchange34":"L'importo non può essere 0",
"tchange35":"Il prezzo non può essere 0",
"tchange36":"ACQUISTO AUTO IN ATTESA",
"tchange37":"Nessun ordine di acquisto automatico trovato!",
"tchange38":"INSERISCI",
"tchange39":"ORDINE DI ACQUISTO AUTOMATICO",
"tchange40":"Prezzo",
"tchange41":"Ordine di acquisto automatico rimosso con successo!",
"tchange42":"MERCATO APERTO ORDINI DI VENDITA",
"tchange43":"LA MIA STORIA DI ACQUISTO",
"tchange44":"Ordine di acquisto automatico aggiunto con successo!",
"tchange45":"ACQUISTA AUTO CON",
"tchange46":"ACQUISTO AUTO"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"Quote di ricompensa", "rchange1":"Quote di ricompensa",
@ -674,5 +687,14 @@
"schange19":"Copia la chiave di sponsorizzazione", "schange19":"Copia la chiave di sponsorizzazione",
"schange20":"Creare relazione", "schange20":"Creare relazione",
"schange21":"Rimuovi la chiave di sponsorizzazione" "schange21":"Rimuovi la chiave di sponsorizzazione"
},
"explorerpage":{
"exp1":"Indirizzo o nome da cercare",
"exp2":"Saldo del conto",
"exp3":"Ulteriori informazioni",
"exp4":"Indirizzo o nome non trovato!",
"exp5":"Si noti che i nomi registrati fanno distinzione tra maiuscole e minuscole.",
"exp6":"Fondatore",
"exp7":"Informazioni"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"밸런스를 가져오지 못했습니다. 다시 시도하십시오.!", "tchange30":"밸런스를 가져오지 못했습니다. 다시 시도하십시오.!",
"tchange31":"판매된", "tchange31":"판매된",
"tchange32":"구매된", "tchange32":"구매된",
"tchange33":"환율" "tchange33":"평균",
"tchange34":"금액은 0일 수 없습니다.",
"tchange35":"가격은 0일 수 없습니다.",
"tchange36":"대기 중인 자동 구매",
"tchange37":"자동 구매 주문이 없습니다!",
"tchange38":"추가하다",
"tchange39":"자동 구매 주문",
"tchange40":"가격",
"tchange41":"자동 구매 주문을 성공적으로 제거했습니다!",
"tchange42":"시장 오픈 매도 주문",
"tchange43":"내 구매 내역",
"tchange44":"자동 구매 주문을 성공적으로 추가했습니다!",
"tchange45":"자동 구매",
"tchange46":"자동 구매"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"보상 공유", "rchange1":"보상 공유",
@ -674,5 +687,14 @@
"schange19":"후원 키 복사", "schange19":"후원 키 복사",
"schange20":"관계 만들기", "schange20":"관계 만들기",
"schange21":"후원 키 제거" "schange21":"후원 키 제거"
},
"explorerpage":{
"exp1":"검색할 주소 또는 이름",
"exp2":"계정 잔액",
"exp3":"더 많은 정보",
"exp4":"주소 또는 이름을 찾을 수 없습니다!",
"exp5":"등록된 이름은 대소문자를 구분합니다.",
"exp6":"설립자",
"exp7":"정보"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"Kunne ikke hente saldoen. Prøv igjen!", "tchange30":"Kunne ikke hente saldoen. Prøv igjen!",
"tchange31":"SOLGT", "tchange31":"SOLGT",
"tchange32":"KJØPT", "tchange32":"KJØPT",
"tchange33":"Vekslingskurs" "tchange33":"Gjennomsnitt",
"tchange34":"Beløpet kan ikke være 0",
"tchange35":"Prisen kan ikke være 0",
"tchange36":"VENTENDE AUTOKJØP",
"tchange37":"Ingen autokjøpsordre funnet!",
"tchange38":"LEGGE TIL",
"tchange39":"AUTO KJØP ORDRE",
"tchange40":"Pris",
"tchange41":"Fjernet automatisk kjøpsordre!",
"tchange42":"MARKED ÅPNE SALGSORDRE",
"tchange43":"MIN KJØPSHISTORIE",
"tchange44":"Autokjøpsordre er lagt til!",
"tchange45":"AUTOKJØP MED",
"tchange46":"AUTOKJØP"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"Belønningsdel", "rchange1":"Belønningsdel",
@ -674,5 +687,14 @@
"schange19":"Kopier sponsornøkkel", "schange19":"Kopier sponsornøkkel",
"schange20":"Skaper forhold", "schange20":"Skaper forhold",
"schange21":"Fjern sponsornøkkel" "schange21":"Fjern sponsornøkkel"
},
"explorerpage":{
"exp1":"Adresse eller navn for å søke",
"exp2":"Saldo",
"exp3":"Mer informasjon",
"exp4":"Finner ikke adresse eller navn!",
"exp5":"Merk at registrerte navn skiller mellom store og små bokstaver.",
"exp6":"Grunnlegger",
"exp7":"Info"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"Nie udało się pobrać salda. Spróbuj ponownie!", "tchange30":"Nie udało się pobrać salda. Spróbuj ponownie!",
"tchange31":"SPRZEDANY", "tchange31":"SPRZEDANY",
"tchange32":"KUPIONY", "tchange32":"KUPIONY",
"tchange33":"Kurs wymiany" "tchange33":"Przeciętny",
"tchange34":"Kwota nie może wynosić 0",
"tchange35":"Cena nie może wynosić 0",
"tchange36":"OCZEKUJĄCY NA AUTOMATYCZNY KUP",
"tchange37":"Nie znaleziono automatycznego zamówienia zakupu!",
"tchange38":"DODAJ",
"tchange39":"AUTOMATYCZNE ZAMÓWIENIE",
"tchange40":"Cena £",
"tchange41":"Pomyślnie usunięto automatyczne zamówienie zakupu!",
"tchange42":"RYNEK OTWARTYCH ZLECEŃ SPRZEDAŻY",
"tchange43":"MOJA HISTORIA ZAKUPÓW",
"tchange44":"Pomyślnie dodano automatyczne zamówienie zakupu!",
"tchange45":"AUTO KUP Z",
"tchange46":"AUTO KUP"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"Podział nagród", "rchange1":"Podział nagród",
@ -674,5 +687,14 @@
"schange19":"Kopiuj klucz sponsorski", "schange19":"Kopiuj klucz sponsorski",
"schange20":"Tworzenie relacji", "schange20":"Tworzenie relacji",
"schange21":"Usuń klucz sponsorsk" "schange21":"Usuń klucz sponsorsk"
},
"explorerpage":{
"exp1":"Adres lub nazwa do wyszukania",
"exp2":"Bilans konta",
"exp3":"Więcej informacji",
"exp4":"Nie znaleziono adresu lub nazwy!",
"exp5":"Należy pamiętać, że w zarejestrowanych nazwach rozróżniana jest wielkość liter.",
"exp6":"Założyciel",
"exp7":"Informacje"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"Falha buscando Saldo. Tente novamente!", "tchange30":"Falha buscando Saldo. Tente novamente!",
"tchange31":"VENDIDO", "tchange31":"VENDIDO",
"tchange32":"COMPRADO", "tchange32":"COMPRADO",
"tchange33":"Taxa de câmbio" "tchange33":"Média",
"tchange34":"O valor nao pode ser 0",
"tchange35":"O preço nao pode ser 0",
"tchange36":"COMPRA AUTOMÁTICA PENDENTE",
"tchange37":"Nenhuma ordem de compra automática encontrada!",
"tchange38":"ADICIONAR",
"tchange39":"ORDEM DE COMPRA AUTOMÁTICA",
"tchange40":"Preço",
"tchange41":"Pedido de compra automática removido com sucesso!",
"tchange42":"ORDENS DE VENDA ABERTA AO MERCADO",
"tchange43":"MEU HISTÓRICO DE COMPRAS",
"tchange44":"Pedido de compra automática adicionado com sucesso!",
"tchange45":"COMPRA AUTOMÁTICA COM",
"tchange46":"COMPRA AUTOMÁTICA"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"Ações de recompensa", "rchange1":"Ações de recompensa",
@ -674,5 +687,14 @@
"schange19":"Copiar chave de patrocínio", "schange19":"Copiar chave de patrocínio",
"schange20":"Criando relacionamento", "schange20":"Criando relacionamento",
"schange21":"Remover chave de patrocínio" "schange21":"Remover chave de patrocínio"
},
"explorerpage":{
"exp1":"Endereço ou nome para pesquisar",
"exp2":"Saldo da conta",
"exp3":"Mais informações",
"exp4":"Endereço ou nome não encontrado!",
"exp5":"Observe que os nomes registrados diferenciam maiúsculas de minúsculas.",
"exp6":"Fundador",
"exp7":"Informações"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"Nu s-a reusit actualizarea soldului. Mai incearca odata!", "tchange30":"Nu s-a reusit actualizarea soldului. Mai incearca odata!",
"tchange31":"VANDUT", "tchange31":"VANDUT",
"tchange32":"CUMPARAT", "tchange32":"CUMPARAT",
"tchange33":"Rata de schimb" "tchange33":"In medie",
"tchange34":"Suma nu poate fi 0",
"tchange35":"Pretul nu poate fi 0",
"tchange36":"CUMPARARE AUTOMATĂ in așteptare",
"tchange37":"Nu a fost gasită nicio comandă de cumparare automata!",
"tchange38":"ADAUGA",
"tchange39":"COMANDA DE CUMPARARE AUTOMATA",
"tchange40":"Pret",
"tchange41":"Comanda de cumparare automata a fost eliminata cu succes!",
"tchange42":"PIATA DESCHISA COMENZI DE VANZARE",
"tchange43":"ISTORICUL MEU DE CUMPARARI",
"tchange44":"Comanda de cumparare automata a fost adaugata cu succes!",
"tchange45":"CUMPARA AUTOMATA CU",
"tchange46":"CUMPARARE AUTOMATA"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"Cote de recompensa", "rchange1":"Cote de recompensa",
@ -674,5 +687,14 @@
"schange19":"Copiati cheia de sponsorizare", "schange19":"Copiati cheia de sponsorizare",
"schange20":"Crearea unei relatii", "schange20":"Crearea unei relatii",
"schange21":"Eliminati cheia de sponsorizare" "schange21":"Eliminati cheia de sponsorizare"
},
"explorerpage":{
"exp1":"Adresa sau numele de căutat",
"exp2":"Soldul contului",
"exp3":"Mai multe informatii",
"exp4":"Adresa sau Numele nu a fost găsit!",
"exp5":"Retineti că numele înregistrate sunt sensibile la majuscule.",
"exp6":"Fondator",
"exp7":"Info"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"Neuspešna provera salda. Pokušajte ponovo!", "tchange30":"Neuspešna provera salda. Pokušajte ponovo!",
"tchange31":"PRODATO", "tchange31":"PRODATO",
"tchange32":"KUPLJENO", "tchange32":"KUPLJENO",
"tchange33":"Kurs" "tchange33":"Prosek",
"tchange34":"Iznos ne može biti 0",
"tchange35":"Cena ne može biti 0",
"tchange36":"NA ČEKANJU AUTOMATSKA KUPOVINA",
"tchange37":"Nije pronađena narudžbina za automatsku kupovinu!",
"tchange38":"DODATI",
"tchange39":"AUTO KUPOVINA",
"tchange40":"Cena",
"tchange41":"Narudžbina za automatsku kupovinu je uspešno uklonjena!",
"tchange42":"TRŽIŠTE OTVORENI NALOG ZA PRODAJU",
"tchange43":"MOJA ISTORIJA KUPOVINE",
"tchange44":"Narudžbina za automatsku kupovinu je uspešno dodata!",
"tchange45":"AUTO KUPI SA",
"tchange46":"AUTO BUI"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"Udeo nagrade", "rchange1":"Udeo nagrade",
@ -674,5 +687,14 @@
"schange19":"Kopiraj sponzorski ključ", "schange19":"Kopiraj sponzorski ključ",
"schange20":"Stvaranje odnosa", "schange20":"Stvaranje odnosa",
"schange21":"Uklonite sponzorski ključ" "schange21":"Uklonite sponzorski ključ"
},
"explorerpage":{
"exp1":"Adresa ili ime za pretragu",
"exp2":"Stanje na računu",
"exp3":"Više informacija",
"exp4":"Adresa ili ime nisu pronađeni!",
"exp5":"Imajte na umu da registrovana imena razlikuju velika i mala slova.",
"exp6":"Osnivač",
"exp7":"Info"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"Не удалось получить баланс. Повторите попытку!", "tchange30":"Не удалось получить баланс. Повторите попытку!",
"tchange31":"ПРОДАНО", "tchange31":"ПРОДАНО",
"tchange32":"КУПИЛ", "tchange32":"КУПИЛ",
"tchange33":"Обменный курс" "tchange33":"Средний",
"tchange34":"Сумма не может быть 0",
"tchange35":"Цена не может быть 0",
"tchange36":"ОЖИДАНИЕ ПОКУПКИ АВТО",
"tchange37":"Заказ на автоматическую покупку не найден!",
"tchange38":"ДОБАВЛЯТЬ",
"tchange39":"АВТО КУПИТЬ ЗАКАЗ",
"tchange40":"Цена",
"tchange41":"Заказ на автоматическую покупку успешно удален!",
"tchange42":"РЫНОК ОТКРЫТЫЕ ЗАКАЗЫ НА ПРОДАЖУ",
"tchange43":"МОЯ ИСТОРИЯ ПОКУПОК",
"tchange44":"Заказ на автоматическую покупку успешно добавлен!",
"tchange45":"АВТО КУПИТЬ С",
"tchange46":"АВТО КУПИТЬ"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"Вознаграждения", "rchange1":"Вознаграждения",
@ -674,5 +687,14 @@
"schange19":"Копировать спонсорский ключ", "schange19":"Копировать спонсорский ключ",
"schange20":"Создание отношений", "schange20":"Создание отношений",
"schange21":"Удалить спонсорский ключ" "schange21":"Удалить спонсорский ключ"
},
"explorerpage":{
"exp1":"Адрес или имя для поиска",
"exp2":"Баланс",
"exp3":"Больше информации",
"exp4":"Адрес или имя не найдено!",
"exp5":"Обратите внимание, что зарегистрированные имена вводятся с учетом регистра.",
"exp6":"Основатель",
"exp7":"Информация"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"Failed to Fetch Balance. Try again!", "tchange30":"Failed to Fetch Balance. Try again!",
"tchange31":"SOLD", "tchange31":"SOLD",
"tchange32":"BOUGHT", "tchange32":"BOUGHT",
"tchange33":"Exchange Rate" "tchange33":"Average",
"tchange34":"Amount can not be 0",
"tchange35":"Price can not be 0",
"tchange36":"PENDING AUTO BUY",
"tchange37":"No auto buy order found !",
"tchange38":"ADD",
"tchange39":"AUTO BUY ORDER",
"tchange40":"Price",
"tchange41":"Successfully removed auto buy order!",
"tchange42":"MARKET OPEN SELL ORDERS",
"tchange43":"MY BUY HISTORY",
"tchange44":"Successfully added auto buy order!",
"tchange45":"AUTO BUY WITH",
"tchange46":"AUTO BUY"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"Rewardshares", "rchange1":"Rewardshares",
@ -674,5 +687,14 @@
"schange19":"Copy Sponsorship Key", "schange19":"Copy Sponsorship Key",
"schange20":"Creating relationship", "schange20":"Creating relationship",
"schange21":"Remove Sponsorship Key" "schange21":"Remove Sponsorship Key"
},
"explorerpage":{
"exp1":"Address or name to search",
"exp2":"Account Balance",
"exp3":"More Info",
"exp4":"Address or Name not found !",
"exp5":"Note that registered names are case-sensitive.",
"exp6":"Founder",
"exp7":"Info"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"加载余额失败。请重新尝试!", "tchange30":"加载余额失败。请重新尝试!",
"tchange31":"已卖出", "tchange31":"已卖出",
"tchange32":"已买入", "tchange32":"已买入",
"tchange33":"汇率" "tchange33":"平均",
"tchange34":"金额不能为0",
"tchange35":"价格不能为0",
"tchange36":"待定汽车购买",
"tchange37":"未找到自动购买订单!",
"tchange38":"添加",
"tchange39":"自动购买订单",
"tchange40":"价格",
"tchange41":"成功删除自动购买订单!",
"tchange42":"开市卖单",
"tchange43":"我的购买历史",
"tchange44":"成功添加自动买单!",
"tchange45":"自动购买",
"tchange46":"自动购买"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"铸币密钥", "rchange1":"铸币密钥",
@ -674,5 +687,14 @@
"schange19":"复制赞助密钥", "schange19":"复制赞助密钥",
"schange20":"建立关系", "schange20":"建立关系",
"schange21":"删除赞助密钥" "schange21":"删除赞助密钥"
},
"explorerpage":{
"exp1":"要搜索的地址或名称",
"exp2":"账户余额",
"exp3":"更多信息",
"exp4":"找不到地址或姓名!",
"exp5":"请注意,注册名称区分大小写。",
"exp6":"创始人",
"exp7":"信息"
} }
} }

View File

@ -308,7 +308,20 @@
"tchange30":"加載餘額失敗。請重新嘗試!", "tchange30":"加載餘額失敗。請重新嘗試!",
"tchange31":"已賣出", "tchange31":"已賣出",
"tchange32":"已買入", "tchange32":"已買入",
"tchange33":"匯率" "tchange33":"平均",
"tchange34":"金額不能為0",
"tchange35":"價格不能為0",
"tchange36":"待定汽車購買",
"tchange37":"未找到自動購買訂單!",
"tchange38":"添加",
"tchange39":"自動購買訂單",
"tchange40":"價格",
"tchange41":"成功刪除自動購買訂單!",
"tchange42":"開市賣單",
"tchange43":"我的購買歷史",
"tchange44":"成功添加自動買單!",
"tchange45":"自動購買",
"tchange46":"自動購買"
}, },
"rewardsharepage":{ "rewardsharepage":{
"rchange1":"鑄幣密鑰", "rchange1":"鑄幣密鑰",
@ -674,5 +687,14 @@
"schange19":"複製贊助密鑰", "schange19":"複製贊助密鑰",
"schange20":"建立關係", "schange20":"建立關係",
"schange21":"刪除贊助密鑰" "schange21":"刪除贊助密鑰"
},
"explorerpage":{
"exp1":"要搜索的地址或名稱",
"exp2":"賬戶餘額",
"exp3":"更多信息",
"exp4":"找不到地址或姓名!",
"exp5":"請注意,註冊名稱區分大小寫。",
"exp6":"創始人",
"exp7":"信息"
} }
} }

View File

@ -1,6 +1,6 @@
{ {
"name": "qortal-ui-core", "name": "qortal-ui-core",
"version": "2.2.3", "version": "2.2.4",
"description": "QORTAL-UI Core", "description": "QORTAL-UI Core",
"keywords": [ "keywords": [
"QORT", "QORT",
@ -17,12 +17,12 @@
"author": "QORTAL <admin@qortal.org>", "author": "QORTAL <admin@qortal.org>",
"license": "GPL-3.0", "license": "GPL-3.0",
"dependencies": { "dependencies": {
"@hapi/hapi": "20.2.2", "@hapi/hapi": "21.0.0",
"@hapi/inert": "7.0.0", "@hapi/inert": "7.0.0",
"sass": "1.55.0" "sass": "1.56.1"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "7.19.3", "@babel/core": "7.20.2",
"@material/mwc-button": "0.27.0", "@material/mwc-button": "0.27.0",
"@material/mwc-checkbox": "0.27.0", "@material/mwc-checkbox": "0.27.0",
"@material/mwc-dialog": "0.27.0", "@material/mwc-dialog": "0.27.0",
@ -53,25 +53,25 @@
"@polymer/paper-spinner": "3.0.2", "@polymer/paper-spinner": "3.0.2",
"@polymer/paper-toast": "3.0.1", "@polymer/paper-toast": "3.0.1",
"@polymer/paper-tooltip": "3.0.1", "@polymer/paper-tooltip": "3.0.1",
"@rollup/plugin-alias": "4.0.0", "@rollup/plugin-alias": "4.0.2",
"@rollup/plugin-babel": "6.0.0", "@rollup/plugin-babel": "6.0.2",
"@rollup/plugin-commonjs": "23.0.0", "@rollup/plugin-commonjs": "23.0.2",
"@rollup/plugin-node-resolve": "15.0.0", "@rollup/plugin-node-resolve": "15.0.1",
"@rollup/plugin-replace": "5.0.0", "@rollup/plugin-replace": "5.0.1",
"@vaadin/grid": "23.2.5", "@vaadin/grid": "23.2.8",
"@vaadin/icons": "23.2.5", "@vaadin/icons": "23.2.8",
"@vaadin/password-field": "23.2.5", "@vaadin/password-field": "23.2.8",
"asmcrypto.js": "2.3.2", "asmcrypto.js": "2.3.2",
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
"epml": "0.3.3", "epml": "0.3.3",
"file-saver": "2.0.5", "file-saver": "2.0.5",
"lit": "2.4.0", "lit": "2.4.1",
"lit-translate": "2.0.1", "lit-translate": "2.0.1",
"postcss": "8.4.18", "postcss": "8.4.18",
"pwa-helpers": "0.9.1", "pwa-helpers": "0.9.1",
"random-sentence-generator": "0.0.8", "random-sentence-generator": "0.0.8",
"redux": "4.2.0", "redux": "4.2.0",
"redux-thunk": "2.4.1", "redux-thunk": "2.4.2",
"rollup": "2.79.1", "rollup": "2.79.1",
"rollup-plugin-node-globals": "1.4.0", "rollup-plugin-node-globals": "1.4.0",
"rollup-plugin-postcss": "4.0.2", "rollup-plugin-postcss": "4.0.2",

View File

@ -114,7 +114,7 @@ class AppInfo extends connect(store)(LitElement) {
setInterval(() => { setInterval(() => {
this.getNodeInfo() this.getNodeInfo()
this.getCoreInfo() this.getCoreInfo()
}, 60000) }, 30000)
} }
async getNodeInfo() { async getNodeInfo() {

View File

@ -7,6 +7,9 @@ import '@polymer/paper-icon-button/paper-icon-button.js'
import '@polymer/iron-icons/iron-icons.js' import '@polymer/iron-icons/iron-icons.js'
import '@polymer/app-layout/app-layout.js' import '@polymer/app-layout/app-layout.js'
import '@polymer/paper-ripple' import '@polymer/paper-ripple'
import '@vaadin/icon'
import '@vaadin/icons'
import '@vaadin/text-field'
import './wallet-profile.js' import './wallet-profile.js'
import './app-info.js' import './app-info.js'
@ -16,12 +19,14 @@ import './qort-theme-toggle.js'
import './language-selector.js' import './language-selector.js'
import './settings-view/user-settings.js' import './settings-view/user-settings.js'
import './logout-view/logout-view.js' import './logout-view/logout-view.js'
import './user-info-view/user-info-view.js'
class AppView extends connect(store)(LitElement) { class AppView extends connect(store)(LitElement) {
static get properties() { static get properties() {
return { return {
config: { type: Object }, config: { type: Object },
theme: { type: String, reflect: true } theme: { type: String, reflect: true },
searchContentString: { type: String }
} }
} }
@ -29,9 +34,17 @@ class AppView extends connect(store)(LitElement) {
return [ return [
css` css`
* { * {
--mdc-theme-primary: rgb(3, 169, 244); --mdc-theme-primary: rgb(3, 169, 244);
--mdc-theme-secondary: var(--mdc-theme-primary); --mdc-theme-secondary: var(--mdc-theme-primary);
--mdc-theme-error: rgb(255, 89, 89); --mdc-theme-error: rgb(255, 89, 89);
--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);
} }
:host { :host {
@ -57,6 +70,12 @@ class AppView extends connect(store)(LitElement) {
border-top: var(--border); border-top: var(--border);
} }
.search {
display: inline;
width: 50%;
align-items: center;
}
#sideBar { #sideBar {
height: 100vh; height: 100vh;
display: flex; display: flex;
@ -89,6 +108,7 @@ class AppView extends connect(store)(LitElement) {
constructor() { constructor() {
super() super()
this.searchContentString = ''
this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light' this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'
} }
@ -115,6 +135,19 @@ class AppView extends connect(store)(LitElement) {
<img src="${this.config.coin.logo}" style="height:32px; padding-left:12px;"> <img src="${this.config.coin.logo}" style="height:32px; padding-left:12px;">
</span> </span>
</div> </div>
<div class="search">
<vaadin-text-field
style="width: 375px"
theme="medium"
id="searchContent"
placeholder="${translate("explorerpage.exp1")}"
value="${this.searchContentString}"
@keydown="${this.searchKeyListener}"
clear-button-visible
>
</vaadin-text-field>
<paper-icon-button icon="icons:search" @click="${() => this.openUserInfo()}"></paper-icon-button>
</div>
<div style="display: inline;"> <div style="display: inline;">
<span> <span>
<img src="/img/${translate("selectmenu.languageflag")}-flag-round-icon-32.png" style="width: 32px; height: 32px; padding-top: 4px;"> <img src="/img/${translate("selectmenu.languageflag")}-flag-round-icon-32.png" style="width: 32px; height: 32px; padding-top: 4px;">
@ -138,19 +171,36 @@ class AppView extends connect(store)(LitElement) {
<show-plugin></show-plugin> <show-plugin></show-plugin>
</app-header-layout> </app-header-layout>
</app-drawer-layout> </app-drawer-layout>
<user-info-view></user-info-view>
<user-settings></user-settings> <user-settings></user-settings>
<logout-view></logout-view> <logout-view></logout-view>
` `
} }
firstUpdated() { firstUpdated() {
// ...
} }
stateChanged(state) { stateChanged(state) {
this.config = state.config this.config = state.config
} }
searchKeyListener(e) {
if (e.key === 'Enter') {
this.openUserInfo()
}
}
clearSearchField() {
this.shadowRoot.getElementById('searchContent').value = this.searchContentString
}
openUserInfo() {
let sendInfoAddress = this.shadowRoot.getElementById('searchContent').value
const infoDialog = document.getElementById('main-app').shadowRoot.querySelector('app-view').shadowRoot.querySelector('user-info-view')
infoDialog.openUserInfo(sendInfoAddress)
this.clearSearchField()
}
openSettings() { openSettings() {
const settingsDialog = document.getElementById('main-app').shadowRoot.querySelector('app-view').shadowRoot.querySelector('user-settings') const settingsDialog = document.getElementById('main-app').shadowRoot.querySelector('app-view').shadowRoot.querySelector('user-settings')
settingsDialog.openSettings() settingsDialog.openSettings()

View File

@ -168,6 +168,18 @@ class SidenavMenu extends connect(store)(LitElement) {
> >
<vaadin-icon icon="vaadin:bullets" slot="icon"></vaadin-icon> <vaadin-icon icon="vaadin:bullets" slot="icon"></vaadin-icon>
</side-menu-item> </side-menu-item>
<side-menu-item label="${translate('tradepage.tchange46')}" expanded>
<vaadin-icon icon="vaadin:calc-book" slot="icon"></vaadin-icon>
<side-menu-item label="${translate('tradepage.tchange45')} BTC" href="/app/trade-bot-btc">
<vaadin-icon icon="vaadin:start-cog" slot="icon"></vaadin-icon>
</side-menu-item>
<side-menu-item label="${translate('tradepage.tchange45')} LTC" href="/app/trade-bot-ltc">
<vaadin-icon icon="vaadin:start-cog" slot="icon"></vaadin-icon>
</side-menu-item>
<side-menu-item label="${translate('tradepage.tchange45')} DOGE" href="/app/trade-bot-doge">
<vaadin-icon icon="vaadin:start-cog" slot="icon"></vaadin-icon>
</side-menu-item>
</side-menu-item>
<side-menu-item <side-menu-item
label="${translate('sidemenu.rewardshare')}" label="${translate('sidemenu.rewardshare')}"
href="/app/reward-share" href="/app/reward-share"

View File

@ -187,7 +187,6 @@ class StartMinting extends connect(store)(LitElement) {
firstUpdated() { firstUpdated() {
this.getMintingAcccounts(); this.getMintingAcccounts();
this.shadowRoot.querySelector('mdc-dialog--open').setAttribute('style', 'width: 100vw')
} }
renderErrorMsg1() { renderErrorMsg1() {
@ -229,9 +228,6 @@ class StartMinting extends connect(store)(LitElement) {
// Check to see if a sponsorship key on a newly-level 1 minter exists. If it does, remove it. // Check to see if a sponsorship key on a newly-level 1 minter exists. If it does, remove it.
const findMintingAccountFromOtherUser = this.mintingAccountData.find((ma) => ma.recipientAccount === address && ma.mintingAccount !== address); const findMintingAccountFromOtherUser = this.mintingAccountData.find((ma) => ma.recipientAccount === address && ma.mintingAccount !== address);
const removeMintingAccount = async (publicKey) => { const removeMintingAccount = async (publicKey) => {
const url = `${nodeUrl}/admin/mintingaccounts?apiKey=${myNode.apiKey}`; const url = `${nodeUrl}/admin/mintingaccounts?apiKey=${myNode.apiKey}`;
return await fetch(url, { return await fetch(url, {
@ -495,8 +491,6 @@ class StartMinting extends connect(store)(LitElement) {
` : '' } ` : '' }
</div> </div>
</div> </div>
<!-- </mwc-dialog> -->
</div> </div>
` : ""} ` : ""}

View File

@ -0,0 +1,320 @@
import { LitElement, html, css } from 'lit'
import { connect } from 'pwa-helpers'
import { store } from '../../store.js'
import { doLogout } from '../../redux/app/app-actions.js'
import { translate, translateUnsafeHTML } from 'lit-translate'
import '@polymer/paper-dialog/paper-dialog.js'
import '@material/mwc-button'
class UserInfoView extends connect(store)(LitElement) {
static get properties() {
return {
theme: { type: String, reflect: true },
infoAccountName: { type: String },
imageUrl: { type: String },
addressResult: { type: Array },
nameAddressResult: { type: Array },
displayAddress: { type: String },
displayLevel: { type: String },
displayBalance: { type: String }
}
}
static get styles() {
return 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;
}
h2 {
margin: 10px 0;
}
h4 {
margin: 5px 0;
}
p {
font-size: 14px;
line-height: 21px;
}
.card-body {
background-color: var(--white);
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
min-height: 100vh;
margin: 0;
}
.card-container {
background-color: var(--white);
border-radius: 5px;
color: var(--black);
padding-top: 30px;
position: relative;
width: 350px;
max-width: 100%;
text-align: center;
}
.card-container .level {
color: #ffffff;
background-color: #03a9f4;
border-radius: 3px;
font-size: 14px;
font-weight: bold;
padding: 3px 7px;
position: absolute;
top: 30px;
left: 30px;
}
.card-container .founder {
color: #ffffff;
background-color: #03a9f4;
border-radius: 3px;
font-size: 14px;
font-weight: bold;
padding: 3px 7px;
position: absolute;
top: 30px;
right: 30px;
}
.card-container .round {
width: 96px;
height: 96px;
border: 1px solid #03a9f4;
border-radius: 50%;
padding: 2px;
}
.card-container .badge {
width: 200px;
height: 135px;
border: 1px solid transparent;
border-radius: 10%;
padding: 2px;
}
.userdata {
background-color: #1F1A36;
text-align: left;
padding: 15px;
margin-top: 30px;
}
.userdata ul {
list-style-type: none;
margin: 0;
padding: 0;
}
.userdata ul li {
border: 1px solid #2D2747;
border-radius: 2px;
display: inline-block;
font-size: 12px;
margin: 0 7px 7px 0;
padding: 7px;
}
.decline {
--mdc-theme-primary: var(--mdc-theme-error)
}
.buttons {
text-align:right;
}
`
}
constructor() {
super()
this.infoAccountName = ''
this.imageUrl = ''
this.addressResult = []
this.nameAddressResult = []
this.displayAddress = ''
this.displayLevel = ''
this.displayBalance = ''
this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'
}
render() {
return html`
<paper-dialog style="background: var(--white); border: 1px solid var(--black); border-radius: 5px;" id="userInfoDialog" modal>
<div class="card-container">
<span class="level">${translate("mintingpage.mchange27")} ${this.displayLevel}</span>
${this.founderBadge()}
${this.avatarImage()}
<h2>${this.infoAccountName}</h2>
<h4>${this.displayAddress}</h4>
<p>${translate("explorerpage.exp2")}: ${this.displayBalance} QORT</p>
</div>
<div class="buttons">
<mwc-button @click=${() => this.openMoreInfoDialog()}>${translate("explorerpage.exp3")}</mwc-button>
<mwc-button class='decline' @click=${() => this.closeInfoDialog()} dialog-dismiss>${translate("general.close")}</mwc-button>
</div>
</paper-dialog>
<paper-dialog style="background: var(--white); border: 1px solid var(--black); border-radius: 5px;" id="userErrorDialog" modal>
<div class="card-container">
<img class="badge" src="/img/notfound.png" />
<h2>${translate("explorerpage.exp4")}</h2>
<h4>${translate("explorerpage.exp5")}</h4>
</div>
<div class="buttons">
<mwc-button class='decline' @click=${() => this.closeErrorDialog()} dialog-dismiss>${translate("general.close")}</mwc-button>
</div>
</paper-dialog>
`
}
openUserInfo(userData) {
if (userData.startsWith('Q') && userData.length == 34) {
this.getAddressUserResult(userData)
} else {
this.getNameUserResult(userData)
}
}
async getAddressUserResult(resultAddress) {
const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
const addressUrl = `${nodeUrl}/addresses/${resultAddress}`
await fetch(addressUrl).then(res => {
if (res.status === 400) {
this.shadowRoot.getElementById('userErrorDialog').open()
} else {
this.getAllWithAddress(resultAddress)
}
})
}
async getNameUserResult(resultName) {
const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
const nameUrl = `${nodeUrl}/names/${resultName}`
await fetch(nameUrl).then(res => {
if (res.status === 404) {
this.shadowRoot.getElementById('userErrorDialog').open()
} else {
this.getAddressFromName(resultName)
}
})
}
async getAddressFromName(fromName) {
const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
const fromNameUrl = `${nodeUrl}/names/${fromName}`
const qortalNameInfo = await fetch(fromNameUrl).then(response => {
return response.json()
})
this.nameAddressResult = qortalNameInfo
const nameAddress = this.nameAddressResult.owner
this.getAllWithAddress(nameAddress)
}
async getAllWithAddress(myAddress) {
await this.getAddressUserInfo(myAddress)
await this.getAddressUserAvatar(myAddress)
await this.getAddressUserBalance(myAddress)
this.displayAddress = this.addressResult.address
this.displayLevel = this.addressResult.level
this.shadowRoot.getElementById('userInfoDialog').open()
}
async getAddressUserInfo(infoAddress) {
const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
const infoAddressUrl = `${nodeUrl}/addresses/${infoAddress}`
const qortalAddressInfo = await fetch(infoAddressUrl).then(response => {
return response.json()
})
this.addressResult = qortalAddressInfo
}
async getAddressUserAvatar(avatarAddress) {
const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
const nameUrl = `${nodeUrl}/names/address/${avatarAddress}?limit=0&reverse=true`
await fetch(nameUrl).then(res => {
return res.json()
}).then(jsonRes => {
if(jsonRes.length) {
jsonRes.map (item => {
this.infoAccountName = item.name
this.imageName = item.name
})
} else {
this.infoAccountName = "No registered name"
this.imageName = avatarAddress
}
})
const myImageUrl = `${nodeUrl}/arbitrary/THUMBNAIL/${this.imageName}/qortal_avatar?async=true&apiKey=${this.getApiKey()}`
this.imageUrl = myImageUrl
}
async getAddressUserBalance(balanceAddress) {
const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
const balanceAddressUrl = `${nodeUrl}/addresses/balance/${balanceAddress}`
const qortalBalanceInfo = await fetch(balanceAddressUrl).then(res => {
return res.json()
})
this.displayBalance = qortalBalanceInfo
}
avatarImage() {
return html`<img class="round" src="${this.imageUrl}" onerror="this.src='/img/incognito.png';" />`
}
founderBadge() {
if (this.addressResult.flags === 1) {
return html`<span class="founder">${translate("explorerpage.exp6")}</span>`
} else {
return html``
}
}
openMoreInfoDialog() {
this.shadowRoot.getElementById('userErrorDialog').open()
}
closeInfoDialog() {
this.shadowRoot.getElementById('userInfoDialog').close()
}
closeErrorDialog() {
this.shadowRoot.getElementById('userErrorDialog').close()
}
getApiKey() {
const apiNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node];
let apiKey = apiNode.apiKey;
return apiKey;
}
}
window.customElements.define('user-info-view', UserInfoView)

View File

@ -1,6 +1,6 @@
{ {
"name": "qortal-ui-crypto", "name": "qortal-ui-crypto",
"version": "2.2.3", "version": "2.2.4",
"description": "QORTAL-UI Crypto", "description": "QORTAL-UI Crypto",
"keywords": [ "keywords": [
"QORT", "QORT",

View File

@ -69,6 +69,18 @@ const generateForPlugins = () => {
in: 'plugins/core/trade-portal/trade-portal.src.js', in: 'plugins/core/trade-portal/trade-portal.src.js',
out: 'plugins/core/trade-portal/trade-portal.js', out: 'plugins/core/trade-portal/trade-portal.js',
}, },
{
in: 'plugins/core/trade-bot/trade-bot-btc/trade-bot-btc.src.js',
out: 'plugins/core/trade-bot/trade-bot-btc/trade-bot-btc.js',
},
{
in: 'plugins/core/trade-bot/trade-bot-ltc/trade-bot-ltc.src.js',
out: 'plugins/core/trade-bot/trade-bot-ltc/trade-bot-ltc.js',
},
{
in: 'plugins/core/trade-bot/trade-bot-doge/trade-bot-doge.src.js',
out: 'plugins/core/trade-bot/trade-bot-doge/trade-bot-doge.js',
},
{ {
in: 'plugins/core/wallet/wallet-app.src.js', in: 'plugins/core/wallet/wallet-app.src.js',
out: 'plugins/core/wallet/wallet-app.js', out: 'plugins/core/wallet/wallet-app.js',

View File

@ -1,6 +1,6 @@
{ {
"name": "qortal-ui-plugins", "name": "qortal-ui-plugins",
"version": "2.2.3", "version": "2.2.4",
"description": "QORTAL-UI Plugins", "description": "QORTAL-UI Plugins",
"keywords": [ "keywords": [
"QORT", "QORT",
@ -22,7 +22,7 @@
"emoji-picker-js": "https://github.com/Qortal/emoji-picker-js" "emoji-picker-js": "https://github.com/Qortal/emoji-picker-js"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "7.19.3", "@babel/core": "7.20.2",
"@github/time-elements": "3.1.2", "@github/time-elements": "3.1.2",
"@material/mwc-button": "0.27.0", "@material/mwc-button": "0.27.0",
"@material/mwc-checkbox": "0.27.0", "@material/mwc-checkbox": "0.27.0",
@ -41,18 +41,18 @@
"@polymer/paper-slider": "3.0.1", "@polymer/paper-slider": "3.0.1",
"@polymer/paper-spinner": "3.0.2", "@polymer/paper-spinner": "3.0.2",
"@polymer/paper-tooltip": "3.0.1", "@polymer/paper-tooltip": "3.0.1",
"@rollup/plugin-alias": "4.0.0", "@rollup/plugin-alias": "4.0.2",
"@rollup/plugin-babel": "6.0.0", "@rollup/plugin-babel": "6.0.2",
"@rollup/plugin-commonjs": "23.0.0", "@rollup/plugin-commonjs": "23.0.2",
"@rollup/plugin-node-resolve": "15.0.0", "@rollup/plugin-node-resolve": "15.0.1",
"@rollup/plugin-replace": "5.0.0", "@rollup/plugin-replace": "5.0.1",
"@vaadin/button": "23.2.5", "@vaadin/button": "23.2.8",
"@vaadin/grid": "23.2.5", "@vaadin/grid": "23.2.8",
"@vaadin/icons": "23.2.5", "@vaadin/icons": "23.2.8",
"epml": "0.3.3", "epml": "0.3.3",
"file-saver": "2.0.5", "file-saver": "2.0.5",
"html-escaper": "3.0.3", "html-escaper": "3.0.3",
"lit": "2.4.0", "lit": "2.4.1",
"lit-translate": "2.0.1", "lit-translate": "2.0.1",
"rollup": "2.79.1", "rollup": "2.79.1",
"rollup-plugin-node-globals": "1.4.0", "rollup-plugin-node-globals": "1.4.0",

View File

@ -1,4 +1,5 @@
import { LitElement, html, css } from 'lit' import { LitElement, html, css } from 'lit'
import { render } from 'lit/html.js'
import { Epml } from '../../../epml.js' import { Epml } from '../../../epml.js'
import '@material/mwc-icon' import '@material/mwc-icon'

View File

@ -52,6 +52,33 @@ parentEpml.ready().then(() => {
menus: [], menus: [],
parent: false, parent: false,
}, },
{
url: 'trade-bot-btc',
domain: 'core',
page: 'trade-bot/trade-bot-btc/index.html',
title: 'Auto Buy With BTC',
icon: 'vaadin:automation',
menus: [],
parent: false,
},
{
url: 'trade-bot-ltc',
domain: 'core',
page: 'trade-bot/trade-bot-ltc/index.html',
title: 'Auto Buy With LTC',
icon: 'vaadin:automation',
menus: [],
parent: false,
},
{
url: 'trade-bot-doge',
domain: 'core',
page: 'trade-bot/trade-bot-doge/index.html',
title: 'Auto Buy With DOGE',
icon: 'vaadin:automation',
menus: [],
parent: false,
},
{ {
url: 'reward-share', url: 'reward-share',
domain: 'core', domain: 'core',

View File

@ -0,0 +1,55 @@
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/font/material-icons.css">
<link rel="stylesheet" href="/font/switch-theme.css">
<script>
const checkBack = localStorage.getItem('qortalTheme')
if (checkBack === 'dark') {
newtheme = 'dark';
} else {
newtheme = 'light';
}
document.querySelector('html').setAttribute('theme', newtheme);
</script>
<style>
html {
--scrollbarBG: #a1a1a1;
--thumbBG: #6a6c75;
}
*::-webkit-scrollbar {
width: 11px;
}
* {
scrollbar-width: thin;
scrollbar-color: var(--thumbBG) var(--scrollbarBG);
}
*::-webkit-scrollbar-track {
background: var(--scrollbarBG);
}
*::-webkit-scrollbar-thumb {
background-color: var(--thumbBG);
border-radius: 6px;
border: 3px solid var(--scrollbarBG);
}
html,
body {
margin: 0;
font-family: "Roboto", sans-serif;
background: var(--plugback);
}
</style>
</head>
<body>
<trade-bot-btc></trade-bot-btc>
<script src="trade-bot-btc.js"></script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,55 @@
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/font/material-icons.css">
<link rel="stylesheet" href="/font/switch-theme.css">
<script>
const checkBack = localStorage.getItem('qortalTheme')
if (checkBack === 'dark') {
newtheme = 'dark';
} else {
newtheme = 'light';
}
document.querySelector('html').setAttribute('theme', newtheme);
</script>
<style>
html {
--scrollbarBG: #a1a1a1;
--thumbBG: #6a6c75;
}
*::-webkit-scrollbar {
width: 11px;
}
* {
scrollbar-width: thin;
scrollbar-color: var(--thumbBG) var(--scrollbarBG);
}
*::-webkit-scrollbar-track {
background: var(--scrollbarBG);
}
*::-webkit-scrollbar-thumb {
background-color: var(--thumbBG);
border-radius: 6px;
border: 3px solid var(--scrollbarBG);
}
html,
body {
margin: 0;
font-family: "Roboto", sans-serif;
background: var(--plugback);
}
</style>
</head>
<body>
<trade-bot-doge></trade-bot-doge>
<script src="trade-bot-doge.js"></script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,55 @@
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/font/material-icons.css">
<link rel="stylesheet" href="/font/switch-theme.css">
<script>
const checkBack = localStorage.getItem('qortalTheme')
if (checkBack === 'dark') {
newtheme = 'dark';
} else {
newtheme = 'light';
}
document.querySelector('html').setAttribute('theme', newtheme);
</script>
<style>
html {
--scrollbarBG: #a1a1a1;
--thumbBG: #6a6c75;
}
*::-webkit-scrollbar {
width: 11px;
}
* {
scrollbar-width: thin;
scrollbar-color: var(--thumbBG) var(--scrollbarBG);
}
*::-webkit-scrollbar-track {
background: var(--scrollbarBG);
}
*::-webkit-scrollbar-thumb {
background-color: var(--thumbBG);
border-radius: 6px;
border: 3px solid var(--scrollbarBG);
}
html,
body {
margin: 0;
font-family: "Roboto", sans-serif;
background: var(--plugback);
}
</style>
</head>
<body>
<trade-bot-ltc></trade-bot-ltc>
<script src="trade-bot-ltc.js"></script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
require('dotenv').config(); require('dotenv').config();
const { notarize } = require('electron-notarize'); const { notarize } = require('@electron/notarize');
exports.default = async function notarizing(context) { exports.default = async function notarizing(context) {
const { electronPlatformName, appOutDir } = context; const { electronPlatformName, appOutDir } = context;