diff --git a/electron.js b/electron.js index c681af40..0f02b952 100644 --- a/electron.js +++ b/electron.js @@ -56,36 +56,60 @@ function createWindow() { minWidth: 700, minHeight: 640, icon: iconPath(), - title: "Qortal", + title: "Qortal UI", autoHideMenuBar: true, webPreferences: { nodeIntegration: false, partition: 'persist:webviewsession', enableRemoteModule: false, - nativeWindowOpen: false, + nativeWindowOpen: false, sandbox: true }, show: false }) - myWindow.maximize(); - myWindow.show(); + myWindow.maximize() + myWindow.show() myWindow.loadURL('http://localhost:12388/app/wallet') myWindow.on('closed', function () { myWindow = null }) + myWindow.on('minimize',function(event) { + event.preventDefault() + myWindow.hide() + }) } + + const createTray = () => { - let myTray = new Tray(path.join(__dirname, 'img', 'icons', 'png', '32x32.png')) - const contextMenu = Menu.buildFromTemplate([{ - label: "Quit", click() { - myTray.destroy(); - app.quit(); + let myTray = new Tray(__dirname + '/img/icons/png/tray/tray.png') + const contextMenu = Menu.buildFromTemplate([ + { + label: `Qortal UI v${app.getVersion()}`, + enabled: false, + }, + { + type: 'separator', }, - }]) + { + label: 'Show Qortal UI', + click: function () { + myWindow.maximize() + myWindow.show() + }, + }, + { + label: 'Quit', + click() { + myTray.destroy() + app.quit() + }, + }, + ]) myTray.setTitle("QORTAL UI") - myTray.setToolTip("QORTAL UI") + myTray.setToolTip(`Qortal UI v${app.getVersion()}`) myTray.setContextMenu(contextMenu) + myTray.on("double-click", () => myWindow.maximize() , myWindow.show()) } const isLock = app.requestSingleInstanceLock(); diff --git a/img/icons/png/tray/tray.png b/img/icons/png/tray/tray.png new file mode 100644 index 00000000..8804297b Binary files /dev/null and b/img/icons/png/tray/tray.png differ diff --git a/img/icons/png/tray/tray@1.5x.png b/img/icons/png/tray/tray@1.5x.png new file mode 100644 index 00000000..c24eb414 Binary files /dev/null and b/img/icons/png/tray/tray@1.5x.png differ diff --git a/img/icons/png/tray/tray@2x.png b/img/icons/png/tray/tray@2x.png new file mode 100644 index 00000000..f97882fd Binary files /dev/null and b/img/icons/png/tray/tray@2x.png differ diff --git a/img/icons/png/tray/tray@3x.png b/img/icons/png/tray/tray@3x.png new file mode 100644 index 00000000..16683daf Binary files /dev/null and b/img/icons/png/tray/tray@3x.png differ diff --git a/img/icons/png/tray/tray@4x.png b/img/icons/png/tray/tray@4x.png new file mode 100644 index 00000000..5bcfd37e Binary files /dev/null and b/img/icons/png/tray/tray@4x.png differ diff --git a/qortal-ui-plugins/plugins/core/minting/minting-info.src.js b/qortal-ui-plugins/plugins/core/minting/minting-info.src.js index c75517d9..c6ede253 100644 --- a/qortal-ui-plugins/plugins/core/minting/minting-info.src.js +++ b/qortal-ui-plugins/plugins/core/minting/minting-info.src.js @@ -30,10 +30,11 @@ class MintingInfo extends LitElement { static get styles() { return css` - * { - --mdc-theme-surface: var(--white); - --mdc-dialog-content-ink-color: var(--black); - } + * { + --mdc-theme-surface: var(--white); + --mdc-dialog-content-ink-color: var(--black); + } + @keyframes moveInBottom { 0% { opacity: 0; @@ -349,40 +350,40 @@ class MintingInfo extends LitElement { const getAdminInfo = () => { parentEpml.request("apiCall", { url: `/admin/info` }).then((res) => { - setTimeout(() => { this.adminInfo = res; }, 1); - }); - setTimeout(getAdminInfo, 30000); + setTimeout(() => { this.adminInfo = res; }, 1) + }) + setTimeout(getAdminInfo, 30000) }; const getNodeInfo = () => { parentEpml.request("apiCall", { url: `/admin/status` }).then((res) => { - this.nodeInfo = res; + this.nodeInfo = res // Now look up the sample block getSampleBlock() }); - setTimeout(getNodeInfo, 30000); + setTimeout(getNodeInfo, 30000) }; const getSampleBlock = () => { - let callBlock = parseFloat(this.nodeInfo.height) - 1440; + let callBlock = parseFloat(this.nodeInfo.height) - 1440 parentEpml.request("apiCall", { url: `/blocks/byheight/${callBlock}` }).then((res) => { - setTimeout(() => { this.sampleBlock = res; }, 1); - }); - }; + setTimeout(() => { this.sampleBlock = res }, 1) + }) + } const getAddressInfo = () => { parentEpml.request('apiCall', { url: `/addresses/${window.parent.reduxStore.getState().app.selectedAddress.address}` }).then((res) => { - setTimeout(() => { this.addressInfo = res; }, 1); + setTimeout(() => { this.addressInfo = res }, 1) }); - setTimeout(getAddressInfo, 30000); - }; + setTimeout(getAddressInfo, 30000) + } const getAddressLevel = () => { parentEpml.request('apiCall', { url: `/addresses/online/levels` }).then((res) => { - setTimeout(() => { this.addressLevel = res; }, 1); + setTimeout(() => { this.addressLevel = res }, 1) }); - setTimeout(getAddressLevel, 30000); - }; + setTimeout(getAddressLevel, 30000) + } window.addEventListener('storage', () => { const checkLanguage = localStorage.getItem('qortalLanguage') @@ -407,35 +408,34 @@ class MintingInfo extends LitElement { if (!selectedAddress || Object.entries(selectedAddress).length === 0) return this.selectedAddress = selectedAddress }) - }); + }) parentEpml.ready().then(() => { parentEpml.subscribe("config", async c => { if (!configLoaded) { - setTimeout(getAdminInfo, 1); - setTimeout(getNodeInfo, 1); - setTimeout(getAddressInfo, 1); - setTimeout(getAddressLevel, 1); - configLoaded = true; + setTimeout(getAdminInfo, 1) + setTimeout(getNodeInfo, 1) + setTimeout(getAddressInfo, 1) + setTimeout(getAddressLevel, 1) + configLoaded = true } - this.config = JSON.parse(c); + this.config = JSON.parse(c) }) parentEpml.subscribe('copy_menu_switch', async value => { - if (value === 'false' && window.getSelection().toString().length !== 0) this.clearSelection(); + if (value === 'false' && window.getSelection().toString().length !== 0) this.clearSelection() }) - }); - - parentEpml.imReady(); + }) + parentEpml.imReady() } changeTheme() { const checkTheme = localStorage.getItem('qortalTheme') if (checkTheme === 'dark') { - this.theme = 'dark'; + this.theme = 'dark' } else { - this.theme = 'light'; + this.theme = 'light' } - document.querySelector('html').setAttribute('theme', this.theme); + document.querySelector('html').setAttribute('theme', this.theme) } changeLanguage() { @@ -459,23 +459,23 @@ class MintingInfo extends LitElement { _averageBlockTime() { let avgBlockString = (this.adminInfo.currentTimestamp - this.sampleBlock.timestamp).toString(); - let averageTimeString = ((avgBlockString / 1000) / 1440).toFixed(2); - let averageBlockTimeString = (averageTimeString).toString(); - return "" + averageBlockTimeString; + let averageTimeString = ((avgBlockString / 1000) / 1440).toFixed(2) + let averageBlockTimeString = (averageTimeString).toString() + return "" + averageBlockTimeString } _timeCalc() { - let timeString = (this.adminInfo.currentTimestamp - this.sampleBlock.timestamp).toString(); - let averageString = ((timeString / 1000) / 1440).toFixed(2); - let averageBlockDay = (86400 / averageString).toFixed(2); - let averageBlockDayString = (averageBlockDay).toString(); - return "" + averageBlockDayString; + let timeString = (this.adminInfo.currentTimestamp - this.sampleBlock.timestamp).toString() + let averageString = ((timeString / 1000) / 1440).toFixed(2) + let averageBlockDay = (86400 / averageString).toFixed(2) + let averageBlockDayString = (averageBlockDay).toString() + return "" + averageBlockDayString } _dayReward() { - let rewardString = (this._timeCalc() * this._blockReward()).toFixed(2); - let rewardDayString = (rewardString).toString(); - return "" + rewardDayString; + let rewardString = (this._timeCalc() * this._blockReward()).toFixed(2) + let rewardDayString = (rewardString).toString() + return "" + rewardDayString } _mintingStatus() { @@ -498,21 +498,21 @@ class MintingInfo extends LitElement { renderMintingHelp() { if (this._mintingStatus() === "Not Minting") { - return html`${translate("mintingpage.mchange9")}
==>
${translate("mintingpage.mchange7")}
this.shadowRoot.querySelector("#becomeMinterDialog").show()}>help_outline ${translate("mintingpage.mchange31")}`; + return html`${translate("mintingpage.mchange9")}
==>
${translate("mintingpage.mchange7")}
this.shadowRoot.querySelector("#becomeMinterDialog").show()}>help_outline ${translate("mintingpage.mchange31")}` } else { return html`${translate("mintingpage.mchange6")}` } } _levelUpDays() { - let countDays = ((this._blocksNeed() - (this.addressInfo.blocksMinted + this.addressInfo.blocksMintedAdjustment)) / this._timeCalc()).toFixed(2); - let countString = (countDays).toString(); - return "" + countString; + let countDays = ((this._blocksNeed() - (this.addressInfo.blocksMinted + this.addressInfo.blocksMintedAdjustment)) / this._timeCalc()).toFixed(2) + let countString = (countDays).toString() + return "" + countString } _levelUpBlocks() { - let countBlocksString = (this._blocksNeed() - (this.addressInfo.blocksMinted + this.addressInfo.blocksMintedAdjustment)).toString(); - return "" + countBlocksString; + let countBlocksString = (this._blocksNeed() - (this.addressInfo.blocksMinted + this.addressInfo.blocksMintedAdjustment)).toString() + return "" + countBlocksString } _blocksNeed() { @@ -593,25 +593,25 @@ class MintingInfo extends LitElement { if (this.addressInfo.level === 0) { return "0" } else if (this.addressInfo.level === 1) { - return "5" + return "6" } else if (this.addressInfo.level === 2) { - return "5" + return "6" } else if (this.addressInfo.level === 3) { - return "10" + return "13" } else if (this.addressInfo.level === 4) { - return "10" + return "13" } else if (this.addressInfo.level === 5) { - return "15" + return "19" } else if (this.addressInfo.level === 6) { - return "15" + return "19" } else if (this.addressInfo.level === 7) { - return "20" + return "26" } else if (this.addressInfo.level === 8) { - return "20" + return "26" } else if (this.addressInfo.level === 9) { - return "25" + return "32" } else if (this.addressInfo.level === 10) { - return "25" + return "32" } } @@ -647,29 +647,38 @@ class MintingInfo extends LitElement { _countLevels() { if (this.addressInfo.level === 0) { - let countTier0 = (this.addressLevel[0].count).toString(); - return "" + countTier0; + let countTier0 = (this.addressLevel[0].count).toString() + return "" + countTier0 } else if (this.addressInfo.level === 1) { - let countTier10 = (this.addressLevel[1].count + this.addressLevel[2].count).toString(); - return "" + countTier10; + let countTier10 = (this.addressLevel[1].count + this.addressLevel[2].count).toString() + return "" + countTier10 } else if (this.addressInfo.level === 2) { - let countTier11 = (this.addressLevel[1].count + this.addressLevel[2].count).toString(); - return "" + countTier11; + let countTier11 = (this.addressLevel[1].count + this.addressLevel[2].count).toString() + return "" + countTier11 } else if (this.addressInfo.level === 3) { - let countTier20 = (this.addressLevel[3].count + this.addressLevel[4].count).toString(); - return "" + countTier20; + let countTier20 = (this.addressLevel[3].count + this.addressLevel[4].count).toString() + return "" + countTier20 } else if (this.addressInfo.level === 4) { - let countTier21 = (this.addressLevel[3].count + this.addressLevel[4].count).toString(); - return "" + countTier21; + let countTier21 = (this.addressLevel[3].count + this.addressLevel[4].count).toString() + return "" + countTier21 } else if (this.addressInfo.level === 5) { - let countTier30 = (this.addressLevel[5].count + this.addressLevel[6].count).toString(); - return "" + countTier30; + let countTier30 = (this.addressLevel[5].count + this.addressLevel[6].count).toString() + return "" + countTier30 } else if (this.addressInfo.level === 6) { - let countTier31 = (this.addressLevel[5].count + this.addressLevel[6].count).toString(); - return "" + countTier31; + let countTier31 = (this.addressLevel[5].count + this.addressLevel[6].count).toString() + return "" + countTier31 + } else if (this.addressInfo.level === 7) { + let countTier40 = (this.addressLevel[7].count + this.addressLevel[8].count).toString() + return "" + countTier40 + } else if (this.addressInfo.level === 8) { + let countTier41 = (this.addressLevel[7].count + this.addressLevel[8].count).toString() + return "" + countTier41 + } else if (this.addressInfo.level === 9) { + let countTier50 = (this.addressLevel[9].count + this.addressLevel[10].count).toString() + return "" + countTier50 } else if (this.addressInfo.level === 10) { - let countTier101 = (this.addressLevel[7].count).toString(); - return "" + countTier101; + let countTier51 = (this.addressLevel[9].count + this.addressLevel[10].count).toString() + return "" + countTier51 } } @@ -677,33 +686,45 @@ class MintingInfo extends LitElement { if (this.addressInfo.level === 0) { return "0" } else if (this.addressInfo.level === 1) { - let countReward10 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count)).toFixed(8); - let countReward11 = (countReward10).toString(); - return "" + countReward11; + let countReward10 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count)).toFixed(8) + let countReward11 = (countReward10).toString() + return "" + countReward11 } else if (this.addressInfo.level === 2) { - let countReward20 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count)).toFixed(8); - let countReward21 = (countReward20).toString(); - return "" + countReward21; + let countReward20 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count)).toFixed(8) + let countReward21 = (countReward20).toString() + return "" + countReward21 } else if (this.addressInfo.level === 3) { - let countReward30 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count)).toFixed(8); - let countReward31 = (countReward30).toString(); + let countReward30 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count)).toFixed(8) + let countReward31 = (countReward30).toString() return "" + countReward31; } else if (this.addressInfo.level === 4) { - let countReward40 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count)).toFixed(8); + let countReward40 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count)).toFixed(8) let countReward41 = (countReward40).toString(); return "" + countReward41; } else if (this.addressInfo.level === 5) { - let countReward50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count)).toFixed(8); + let countReward50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count)).toFixed(8) let countReward51 = (countReward50).toString(); return "" + countReward51; } else if (this.addressInfo.level === 6) { - let countReward60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count)).toFixed(8); - let countReward61 = (countReward60).toString(); - return "" + countReward61; + let countReward60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count)).toFixed(8) + let countReward61 = (countReward60).toString() + return "" + countReward61 + } else if (this.addressInfo.level === 7) { + let countReward70 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count)).toFixed(8) + let countReward71 = (countReward70).toString() + return "" + countReward71 + } else if (this.addressInfo.level === 8) { + let countReward80 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count)).toFixed(8) + let countReward81 = (countReward80).toString() + return "" + countReward81 + } else if (this.addressInfo.level === 9) { + let countReward90 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[9].count + this.addressLevel[10].count)).toFixed(8) + let countReward91 = (countReward90).toString() + return "" + countReward91 } else if (this.addressInfo.level === 10) { - let countReward100 = ((this._blockReward() / 100 * this._tierPercent()) / this.addressLevel[7].count).toFixed(8); - let countReward101 = (countReward100).toString(); - return "" + countReward101; + let countReward100 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[9].count + this.addressLevel[10].count)).toFixed(8) + let countReward101 = (countReward100).toString() + return "" + countReward101 } } @@ -711,33 +732,45 @@ class MintingInfo extends LitElement { if (this.addressInfo.level === 0) { return "0" } else if (this.addressInfo.level === 1) { - let countRewardDay10 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count) * this._timeCalc()).toFixed(8); - let countRewardDay11 = (countRewardDay10).toString(); - return "" + countRewardDay11; + let countRewardDay10 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count) * this._timeCalc()).toFixed(8) + let countRewardDay11 = (countRewardDay10).toString() + return "" + countRewardDay11 } else if (this.addressInfo.level === 2) { - let countRewardDay20 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count) * this._timeCalc()).toFixed(8); - let countRewardDay21 = (countRewardDay20).toString(); - return "" + countRewardDay21; + let countRewardDay20 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count) * this._timeCalc()).toFixed(8) + let countRewardDay21 = (countRewardDay20).toString() + return "" + countRewardDay21 } else if (this.addressInfo.level === 3) { - let countRewardDay30 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count) * this._timeCalc()).toFixed(8); - let countRewardDay31 = (countRewardDay30).toString(); - return "" + countRewardDay31; + let countRewardDay30 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count) * this._timeCalc()).toFixed(8) + let countRewardDay31 = (countRewardDay30).toString() + return "" + countRewardDay31 } else if (this.addressInfo.level === 4) { - let countRewardDay40 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count) * this._timeCalc()).toFixed(8); - let countRewardDay41 = (countRewardDay40).toString(); - return "" + countRewardDay41; + let countRewardDay40 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count) * this._timeCalc()).toFixed(8) + let countRewardDay41 = (countRewardDay40).toString() + return "" + countRewardDay41 } else if (this.addressInfo.level === 5) { - let countRewardDay50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count) * this._timeCalc()).toFixed(8); - let countRewardDay51 = (countRewardDay50).toString(); - return "" + countRewardDay51; + let countRewardDay50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count) * this._timeCalc()).toFixed(8) + let countRewardDay51 = (countRewardDay50).toString() + return "" + countRewardDay51 } else if (this.addressInfo.level === 6) { - let countRewardDay60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count) * this._timeCalc()).toFixed(8); - let countRewardDay61 = (countRewardDay60).toString(); - return "" + countRewardDay61; + let countRewardDay60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count) * this._timeCalc()).toFixed(8) + let countRewardDay61 = (countRewardDay60).toString() + return "" + countRewardDay61 + } else if (this.addressInfo.level === 7) { + let countRewardDay70 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count) * this._timeCalc()).toFixed(8) + let countRewardDay71 = (countRewardDay70).toString() + return "" + countRewardDay71 + } else if (this.addressInfo.level === 8) { + let countRewardDay80 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count) * this._timeCalc()).toFixed(8) + let countRewardDay81 = (countRewardDay80).toString() + return "" + countRewardDay81 + } else if (this.addressInfo.level === 9) { + let countRewardDay90 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[9].count + this.addressLevel[10].count) * this._timeCalc()).toFixed(8) + let countRewardDay91 = (countRewardDay90).toString() + return "" + countRewardDay91 } else if (this.addressInfo.level === 10) { - let countRewardDay100 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count) * this._timeCalc()).toFixed(8); - let countRewardDay101 = (countRewardDay100).toString(); - return "" + countRewardDay101; + let countRewardDay100 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[9].count + this.addressLevel[10].count) * this._timeCalc()).toFixed(8) + let countRewardDay101 = (countRewardDay100).toString() + return "" + countRewardDay101 } } @@ -747,8 +780,8 @@ class MintingInfo extends LitElement { } isEmptyArray(arr) { - if (!arr) return true; - return arr.length === 0; + if (!arr) return true + return arr.length === 0 } }