From 61cbc80e80390e1b0030eca05e78ce6db714594f Mon Sep 17 00:00:00 2001 From: Stx69 <32230998+Stx69@users.noreply.github.com> Date: Sat, 2 Oct 2021 14:26:45 +0200 Subject: [PATCH 01/13] Create plugin.js Dear all, sharing my trial of Planets Overview plugin. In this times where time is against us... --- content/utilities/PlanetOverview/plugin.js | 283 +++++++++++++++++++++ 1 file changed, 283 insertions(+) create mode 100644 content/utilities/PlanetOverview/plugin.js diff --git a/content/utilities/PlanetOverview/plugin.js b/content/utilities/PlanetOverview/plugin.js new file mode 100644 index 00000000..6e97a1bd --- /dev/null +++ b/content/utilities/PlanetOverview/plugin.js @@ -0,0 +1,283 @@ +// Overview of Planets by STX +// Start sort from homeplanet if is not pre-selected planet +// remixed from Palnet score plugin -> THX to Phated + +// Import game utils +import { + getSilver, +} from 'https://plugins.zkga.me/utils/utils.js'; + +// Import Skypack constants types +import { + PlanetType, + PlanetTypeNames, + PlanetLevel, + PlanetLevelNames, +} from "https://cdn.skypack.dev/@darkforest_eth/types"; + +// Constanst definitíon +const planetType = []; +const minLevel = []; +const middle = []; +const { getPlanetName, getOwnerColor } = df.getProcgenUtils(); + +// Default refresh 30 seconds +let REFRESH_INTERVAL = 1000 * 30; + +// Plugin Overview Default +class Overview { + constructor() { + this.container = null; + this.loopId = null; + // PlanetType Default value + this.planetType = PlanetType.SILVER_MINE; + // PlanetLevel Default value + this.minLevel = PlanetLevel.TWO; + // Slider Default value + this.topX = 10; + // checkbox MyPlanets + this.table = document.createElement('table'); + this.table.style.width = '100%'; + this.table.style.borderCollapse = 'separate'; + this.table.style.borderSpacing = '10px 0'; + // default static text header of table + this.thead = document.createElement('thead'); + this.thead.innerHTML = `NameLevelSilverSilverTimeEnergyEnergyTime`; + this.table.appendChild(this.thead); + // default dynamic table body + this.tbody = document.createElement('tbody'); + this.table.appendChild(this.tbody); + } + // Function to renderPlanets with sorting from home planet of preselected planet + renderPlanets(minLevel,planetType,middle,MyPlanets) { + + // clean table body + this.tbody.innerHTML = null; + const selectedPlanetCoords = ui.selectedPlanet?.location?.coords; + const knownPlanets = []; + for (const planet of df.getAllPlanets()) { + if (planet.planetType != this.planetType) continue; + if (planet.planetLevel < this.minLevel ) continue; + if (!planet?.location?.coords) continue; + if (myPlanets.checked && planet.owner != df.account) continue; + + if (!selectedPlanetCoords) { + middle = df.getHomeCoords(); + } + else { + middle = selectedPlanetCoords; + } + + knownPlanets.push({ + locationId: planet.locationId, + distance: Math.floor(df.getDistCoords(planet.location.coords, middle )) + }); + } + + const sortedPlanets = knownPlanets + .sort((a, b) => a.distance - b.distance) + .slice(0, this.topX); + for (const [idx, p] of sortedPlanets.entries()) { + const planet = df.getPlanetWithId(p.locationId); + if (!planet) { + console.log(`Where is planet: ${p.locationId}`); + continue; + } + const row = document.createElement('tr'); + row.style.color = getOwnerColor(planet); + row.onclick = () => { + ui.centerLocationId(planet.locationId); + } + // Create a Row per one planet + const silverPercent = Math.round(100/(planet.silverCap/Math.round(getSilver(planet)))); + const fullSilverDate = new Date(df.getSilverCurveAtPercent(planet,99) * 1000).toString() ; + const fullSilverTime = [fullSilverDate.substr(4,6),fullSilverDate.substr(16,8)]; + + const energyPercent = Math.round(100/(planet.energyCap/Math.round(planet.energy))); + const fullEnergyDate = new Date(df.getEnergyCurveAtPercent(planet,99) * 1000).toString(); + const fullEnergyTime = [fullEnergyDate.substr(4,6),fullEnergyDate.substr(16,8)]; + + row.innerHTML = `${idx + 1}.${getPlanetName(planet)}${planet.planetLevel}${getSilver(planet)}/${planet.silverCap}=${silverPercent}%${fullSilverTime}${Math.round(planet.energy)}/${planet.energyCap}=${energyPercent}%${fullEnergyTime}` + this.tbody.appendChild(row); + } + } + // Render function + // async ? + render(container) { + // Setup size for main plugin window + container.style.width = '800px'; + + // Select from list PLanetType , with text loaded from client + const planetType = document.createElement('select'); + planetType.style.background = 'rgb(8,8,8)'; + planetType.style.width = '22%'; + planetType.style.marginTop = '10px'; + planetType.style.marginBottom = '10px'; + planetType.style.marginRight = "10px"; + Object.entries(PlanetType).forEach(([name, key]) => { + let opt = document.createElement('option'); + opt.value = `${key}`; + opt.innerText = `${PlanetTypeNames[key]}`; + planetType.appendChild(opt); + }); + planetType.value = `${this.planetType}`; + planetType.onchange = (evt) => { + try { + this.planetType = parseInt(evt.target.value, 10); + } catch (e) { + console.error('could not parse planet level', e); + } + try { + dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; + this.renderPlanets(); + } catch (err) { + console.error('could not parse planet planet type', err); + } + } + + // Select from list planeLevel , with text loaded from client + const minPlanetLevel = document.createElement('select'); + minPlanetLevel.style.background = 'rgb(8,8,8)'; + minPlanetLevel.style.width = '15%'; + minPlanetLevel.style.marginTop = '10px'; + minPlanetLevel.style.marginBottom = '10px'; + minPlanetLevel.style.marginRight = "10px"; + Object.entries(PlanetLevel).forEach(([name, lvl]) => { + let opt = document.createElement('option'); + opt.value = `${lvl}`; + opt.innerText = `${PlanetLevelNames[lvl]}`; + minPlanetLevel.appendChild(opt); + }); + minPlanetLevel.value = `${this.minLevel}`; + minPlanetLevel.onchange = (evt) => { + try { + this.minLevel = parseInt(evt.target.value, 10); + } catch (e) { + console.error('could not parse planet level', e); + } + try { + dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; + this.renderPlanets(); + } catch (err) { + console.error('Unable to parse number', err); + } + } + + // Button "Update" for label info status of the transactions + const updateButton = document.createElement('button'); + updateButton.innerText = 'Update'; + updateButton.style.marginRight = "10px"; + updateButton.addEventListener('click', () => { + try { + dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; + this.renderPlanets(); + } catch (err) { + console.error('Unable to update', err); + } + }); + + + // Button "Un.Trans" + const unconfirmedButton = document.createElement('button'); + unconfirmedButton.innerText = 'Un.Trans'; + unconfirmedButton.style.marginRight = "10px"; + unconfirmedButton.addEventListener('click', () => { + updateTxStatus(); + unconfirmed(); + updateTx(); + this.renderPlanets(); + }); + + // Slider for count of total list lines + const topSlider = document.createElement('input'); + topSlider.style.marginTop = '13px'; + topSlider.style.width = '37%'; + topSlider.type = 'range'; + topSlider.value = `${this.topX}`; + topSlider.min = 1 + topSlider.max = 100; + topSlider.onchange = (evt) => { + try { + this.topX = parseInt(evt.target.value, 10); + dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; + this.renderPlanets(); + } catch (err) { + console.error('Unable to parse number', err); + } + } + + // label for dynamic information + const dynamicLabel = document.createElement('label'); + dynamicLabel.style.width = '50%'; + dynamicLabel.style.padding = '5px 0'; + dynamicLabel.style.marginRight = "170px"; + dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; + + // label for my planets + const myPLanetsLabel = document.createElement('label'); + myPLanetsLabel.innerText = `only my planets?`; + myPLanetsLabel.style.marginRight = "20px"; + + // Checkbox for my planets ? + let MyPlanets = document.createElement('input'); + MyPlanets.type = "Checkbox"; + MyPlanets.checked = true; + MyPlanets.id = "myPlanets"; + this.MyPlanets = MyPlanets; + MyPlanets.onchange = (evt) => { + try { + dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; + this.renderPlanets(); + } + catch (err) { + console.error('Unable to change checkbox', err); + } + } + + + // This is the fuction for button upgrade that show current unconfirmed tx + function updateTx(){ + dynamicLabel.innerText = 'Moves : ' + df.getUnconfirmedMoves().length + ' Upgrades : ' + df.getUnconfirmedUpgrades().length + ' Wormhole : ' + df.getUnconfirmedWormholeActivations().length; + } + + // This is the fuction that updates the transactions - change client response + function updateTxStatus(){ + df.contractsAPI.contractCaller.queue.invocationIntervalMs=100; + } + + // This is the function that shows the transactions in the console + function unconfirmed(){ + console.log('Moves : ' , df.getUnconfirmedMoves()) + console.log('Upgrades : ' , df.getUnconfirmedUpgrades()) + console.log('Wormhole : ' , df.getUnconfirmedWormholeActivations().length) + } + + + + // Grafic append + container.appendChild(planetType); + container.appendChild(minPlanetLevel); + container.appendChild(updateButton); + container.appendChild(unconfirmedButton); + container.appendChild(topSlider); + container.appendChild(dynamicLabel); + container.appendChild(myPLanetsLabel); + container.appendChild(MyPlanets); + container.appendChild(this.table); + + // Run main function + this.renderPlanets(); + + // Refresh for rendered container (table function renderPlanets) + this.loopId = setInterval(this.renderPlanets.bind(this), REFRESH_INTERVAL); + + } + + destroy() { + if (this.loopId) { + clearInterval(this.loopId)} + } + +} + +export default Overview; From eb6ce57e739a7af7647722232f264efb64c67a3d Mon Sep 17 00:00:00 2001 From: Stx69 <32230998+Stx69@users.noreply.github.com> Date: Sat, 2 Oct 2021 14:33:31 +0200 Subject: [PATCH 02/13] Add files via upload --- content/utilities/PlanetOverview/screenshot.png | Bin 0 -> 25486 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 content/utilities/PlanetOverview/screenshot.png diff --git a/content/utilities/PlanetOverview/screenshot.png b/content/utilities/PlanetOverview/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..f17ae663c6f5c938675cbf1aca18aa40e06b783f GIT binary patch literal 25486 zcmbUIWmFtt7bc1ZcY?dSyK8WV;O-u@f#4F{-7O?&2rhxf-5Usy;I1K9u*TsO-#2s5 zUH6_@Yv%ljbVF5ly|wpa`>ojb>IxXBB&cuRyunaXl+}9k1~vfr|2#4*@Hd0X+!F8) zjHi}@^qbl#vP0knyuFl~)SEXA$!L$32*7I;cSS?bH*YWpUjM+1xP7w$-o){eGw{-O zv-9$?^ss%S;9+a)>gnL-Wu}V^9Ab^2BrB!kYj)D*=dPpw`D{u2soh+(ynI}j|9wml zQuw>$cz8vsP^@sU@63tc(@)<;zCV3u z`Ch@YdY0^`$;~~7d&%I>u%DcleBmQ3vFgeDkvCIWYxWG6IL=e!bHJ%#@WIVfVSZ(2 z$Zus$JULC0bOD!Tuao5;3MB7%9TFC*hn;iIq{CQhi<#nP!KJaQsC>gtdbEO&?vyWa zRZMZkd>o(Q%P`EENO~;SZ7GWX=X=kkz+0(6+0sY&0kG`+@DlPrl_f`%oTL|+$lG~6mq=Surrd}bN{z$t;6SF5CT#4^Lc)}b9PaBKd{tf zzw}N;;_7hDe)_Zcui;p9;_IHPS(WvG8Y2vH5wFQS{{OB3-}!%5K-YXArDa&lgbyb& z-3vHEc=zo7`bbmCquuMU@#B%62LXo((?#sn>1rFUE<<8Dg|LULt8Bb9r(vUPT;Fga zY4lr4j>Fm6+22+ADkO@@`kIO3`OruD9P4lUwDZ^a(SQ)JcXu-cYA?ibgWSCM34@sZ51fqG8QVk!?}v- zpdf~aD1?0{Nyvh%5g!hHQC`DGvoFp!Pyw0 z&QNba)!JEg658Qm`YX}&&sUk~MVs_73i6K!(hj!j>PZ>!XFP9Fp2>V}|7{&h(02tt z`G2q}iaWiBf}`4De04yUV`=oxv%)hRl-9|tSX4hxf%c;5GRb@2A0YGk9rA$h@KqC^ z@Q2mS*nSG%>_BYGPm)eM@%E9m?x2pk`pTuX9c3lVHu#Q%zkmOZr86q1`@eqXogQeZ z-*vHG%Jl_@Hpfj)tx)7gdAZ$8v7ARtlElm7W!mXtLrF$*!Y6ak(sLuJJb%{?a?3WX zi>(5yW9mB4*t7~sKSS>>4~oS6W&@vI!N#!|_%bl9Zmb-l($D}#^@1Gn0D&`-ubJ@Q zW4HftgkTGg!Q&Kz3x4>Vtpk;)`8E9weRv;9U}q*$e5|6_H1fSx2%N+wxMP=~cU&XqUWPj_F>8`H^}R~DEG z4}m#O$}!s7+K}E-?5?8VGEjBx=gs}HIaM0P;{{;CDKm2%54_l zcP7y_LS_-`48Mb458xg656or#7hxek4|Y)h`-7d?arOj!E(bpDIPOqK8O^?^^*)C&F2$%;#1|NHSu2qF9$uRq8bR=9cn z(6}_z|JSGb&zJi@JHhO>ko#tD(aYmOkC>jro5_D9c#&QX_KN*p3YvJjCS|svT&o>E zZU9rPpIe6^{!AcZ$z(V|SL#~R#6!>lWo99CH1MTzzb*t^^p&H%qLmLL-3BS&Q3zyX zEIuN;jA;`2^)%<%J&!{wWiZ?%>3YE7GRp~r&y(9BcU8YbxH&O(eKPHaTjL&Xlu35f z(!y_Awl^_S!dYB*Qr+`4^^BcPvg2xJ3luqrT;|FraW%xY$PGFH2*+hm{fF6qzMHP` zyon_F4>OF3iAl)o&rhH=9OE$Q=AcX{?PzFCF&C%&;^EQt%pPv>E0|24`pu10QJow(Ec?-a*Q8?#~?k?>L z^)z!my%yhdE2WW7Jd-jYVoLcjQAHdbB4g0Q&Dkq`4Me{!5&{*QIVo|kzY)IGu>|PL z^I$6T>gQJ(fF0=%i3asdSWKE7QhnZ2Zs7}tdZPj)N#h|B06jK#>yonqm};@*#;h^6 z2E0Q+N!firm+<@LKKyq`i}}mk-;m47>a&l~^q1=ppeE0+7tBL$x1y_srrpz(b%uhr zA_=j$&ZtlmxAx#-zk>1c@y}gDTqruWISlH*yh;QqcuYo(&&T9qgZXqwXD1_H!5dGf zKIi)Y-7-#^R}Z;r?9B9HUsm=vVbc}j4gFxP&i)tYq)(c?jmno}7l4!~?>scQa`9H9 z_IV@l1Ihl6!|;$7Nj&<<$MfWnPS8%2Jy?m}03>YE>beH7z-)=a+c8T)PcGPiJVNup z^H|2u2HkbF5&U?Y z$M5tx@IomLgF?*rY`u$+(~R$)k@1zS1?oV|watm+T{|(_)XZlFf19s;i5iloKK9 zB<(zO-2jND^{#-|D;-d%Hlw#zz3m8j3HFYl5|t+C?+$vXH&|lODwm1IL}!?np4y+x z7q+qBCUqtn<>S8S^t%+oCZdT`D*yRzXzwfzpY_`vB$t<-p8mp>N@A!C(XJrrr@A_& zfOF0Yd0g8yFNp^MJu_vuXiC%lXANbU?)k2YxT?~;oArQc-qli^YB1YqnM$^vo}PLx zkDSM`sog@YDZSKGv0OYI#;t^`5ngk3wKKp*bnZ(4v@@}>(Iw6YABb)c^V*@un@iN0 zg59^89p@C0t1U}HrX^n8-uVD z5=jM>9~{M8RkonV7(0J}{cah71*32X?A-u(n@818eGneG}JC)aa zNR3a}(4g?+{L2pvvIefWfV+!5sc^(pZ5^G#&6IDowG1S*Qh#Ek5{O!Bpm*FLG#^6Jlw(?V?-*P-o1)@0uG=*=gRZ(s-NKKfWd0}l59@-p=X&K>_| zwav3R(Mw()aT4t~$+%|?ognFI0?QcmF}aElU#n}RP}GNmB5*W?df(bekBXE^+DI7B zV0f-V;|BBj`3$6ioKtF;$fk({b`}7)?8r|f&e`wLdZZz$V?ULMI};jgr6n)KmxE_c zSyoVG#edn|JJiCqY!^QX$tum&lZ$#QwrloH5~IX2P+;X2zv*lZ#}lkyu9U*#OXY^!DEHN^p(> zB|=hCuKXQw@sxrjho0y1XhHT%6}QMG;9q0igHH1$=Jk#E3#UnSmWgqxDGu8(>vY1t zZb;0o7InEM_mQg-pN%FfZPR!dL&wCC6s05vxQE~LL2w@am_I}Np_9TYuzkmP!TEKZZ*=o}OlX1JQg3kgEM0a!4a2z{3yXgB-^6J*#8wiNk zZbvLihk6}cwOjfgvk>Q35s=;MkKO&$%7vr<2n8R+B`e0^|m zkYDwa!ie6H+HwdXLpQ`z*%1oQRJ-)_1{1c+d7*X=%mir6W;RSRA$OoQMmX&FKH2>wI$NYxTP9BP?`zREyAgUJQ!+YJN2(8lw&ZozIjg zOcw~x=>+2``E{1Y_LX)M*BG}3AC_e&QA!4H560@72kBBY5fKJuuRR^{Z%7C%b_Rpb zH$rlB_wlvzkT+OP0TETMUdVEIe0+Se(yAgtJ~}p5Sy|aREQcfl3 zJe^S^iBxcELN`w+(Vh#GI%xMQz-}Pcl;MaNK!2uP0d^Y5ALz*`^j$^Iz6Ycd)$gm+ zrOe9S>VZJ3@K(k4-#E?8E+|F$P?`XB!F7nws+UvWI|7KGHD^2@fLMWuf>u*UN4A+d zSHjG93t@S#O1}SF2WsWnCcnf09lIShTsL3@yF7B_) z{{|bT5B7e18DlNw!v>6s342_;{m2Ng7;ZPGYc`m~JiChx*1Ju=bGR&}vpG!b>jAnG zj&v!Da2^^O!n3Aq33+)2OmWJ<22j~4;T~=)E$pEI%!tdEf2-=!EH(zB+y!XOTWNzBeNn~L0Q1w+VMX7%|};f58B zi;gnQ(Ddn!jIX6a5kLvgeQwF$E=M7Oi}+#fMT605Z=wvRi-rjyZe*Vk%h|WTauSli?$2x z=oVl&g;JXw5XoV_;~+^T5mU;>S1nFDSd2LKTv`46BE^?U#Pr^mh_W=b&oT@Z6}2=K z0CpZVueiVuRFi>QxMfOL@yjjFOa0UmG=hTqM(Xw;_dzneURx|v5C?zGU6~zD*h$+z zAwW)Lj%TwQ3pmZQjcK5Zs81#^nht10Zg{gYBcfP_*{mCyG_L++aSn%vhU4cNy+wgeJW@4If;MopURF!HbE;t94|-ixAeLTZqAkZj@UaD_A( z)IVfNz2jFC)HJ^k&L*LY7GZX7cMjkv=4(S8%}`n{TTcq-i>0u1>$YQcjEp_$6+$YO zx$~NHu-Sc5Ku0t%!O6A!*r?!@sy$e&>VlV*lKl>sHZ@H`2*EMK>)4K}nAZ;Sh5Of- z7R|^)u;HPEhBWL(j6UCQ>E^xZwuqYH?BU4K8f5msd(O|Rz?#WD#>LwLxgoqKUiOIj z*-1147YPrufGF%8*paU3bXX1ElT}My(&v<{O4O_wMb77I8usp#W&LAb~=%{7Pd) zM3sf9R&3ppvXSL9=5X&|DpouV_JGBkE!nSz3&t(ZvE}j}an(ZFq>V~ERNO$E_*TvA{a!UR19iK_H-0cpxF@Jb4KBj6_^?B~)xn}i3 zYskgp7GHnXif@!9WKuaroC76HN_KQrz2OGTaU2ajT{C|Fev^FU?ZjrH;5ydtuP`&{ z3j~PjQeO>Gju$5Nl7|jgzLOk#BFs0qd?NYO3Y z2V>$1Ig?s65QOD+=V}u_p(_mT6)W*qj7kt0kQBUvsBm+>l#YFEl6|jA%D*2Qtt0%m z{`PbK_T0Gc^`=CBA7hVDL&NsK`HXF)d#v{*ze$2d{0L>o<0Akt`QfdXkZKsnhI zv5UWcUtpDhy&eGrn2>PSiAqFf2tk&44PO)5`G+^?yvhDCUkB?GJJfsw!petTG=?*2!1@x)*Ri61w7;du(^sqe2%FqEYc;0hPVvY z&{1(b=qZowh=$703`k%&99y5NW$&`+y^a?(@6ifqYL#MI9+{Kf zGQ2t;-FJFcSe$z9IfJHONfTHH6hK+-nXXa_w_I%P0YTzqR6@`8d4+0jKQmr*X~WMM9|LgT{rq+KfM{i6LB->yD3&V5~#8Yqrw4DHVhd&LtmQ2-hNypYAf1Y z*vLbnS{opHADl@*zt;YI@ATors3n*wDuPnPD@G!1`ZqIf_YNQkJABUpv4h*SL*>Ad z%A;S(4T;P?qAK!9>)ng3h=H2g@(#UI@|TrI2EI${)o zK~Ne+GuseCm|EETZ4+~>?@Y=pmNH``e3Xij(Lo>7)G!W~Uk;CesZ%NSq~U+l(V+kB zRP=u(I2~f+R)A;&h;>K9WtUrA@{5Wjofoz*DS2|pM?hymAsb@lWFCX2yfFc9T+@&gKD`R8MlY1G2eNwXs`cuIb{N+JlG z#!*&QwtB>|*K#mwS-`;u@2teUbtx0l!y z&@SqQB12sMZIzJ%WMaPmrV2$>nL_ld4XDkMnY;b3S)yqKWTMb>`JLv0VHRNimT^{T zqPjl(W11!NYpMSr?Fx1Hq^5 zq9cm6dNu7^LLVuHEf_D`Hw!^tapD&whdaEh+AFcLvv0QHA|;n6ktGK_(wH zmmk+~_YMT&xfl$l1lqMEe9+H>3C{MxICKE;Zd{liOeN8C!>&L+<`6ZZ(BDE>L!2l( zv9^O#G~UE62Lfry-a8{>?c@u(ZFdX0t^ygO_;&eQiQ7;8@IW%C3&AihTftW3t67-| zjXOHR-uYB9Y_4Jx*TZ0HXh^(xK2i&|wY5FA#WtEx+pP}IxK!;;Ma?fcD_Vd+-38e+2c~)&TrXAkE&FH>o&fSM+ z;h-J1i#PkpDdG!^T0KlkP|3vMKc$Wg*Bf5|sM%#dO|c*8ZoVHwW-K;Kpbt7c14fTF z?V+xX4N?-o^hb^1ISYe36^Wkvtw%i;v5bG>l7(g|F|K@+r(wTa=Q-ko(YPnOYW$xF zFRPa5;EqWL9iwmCJQ$awy2mg1VhLU~JQVi2OSH5Q9P!Un3tc+HS zPgC1-t-uiPZ~94lDFy`ss4b&r2W-UYZpw-%og9pB;%vV3d~hStDT?CKM0L>{bnevl zK-#NAgZ7i3U0B>D71RMBoh!*@@4xqI!zrhuH*{Di{>r5kc31Trc>3#k!2A(TTJ}{6 zv8CUmp`lgA1u_@xe*urO2U!}t=O;<#u0Q3H_NOBVGrZskZ45+B>KQs}#F4|BF{(t} zkph7X0cxcCVrdYgNwkt}9-KQfAnRhS(hKEsn-5z-7w$@RXp4Ken$yt8<%t|UI$i5f zrG^cBy8oz?728KLRU~=F!f~hi0-$w{uLrV4?#HG&Kw(XjhiV1|B_)&&jCPrJvmpeiJy<{*OEr=@GxZ7s z%@PCi2pAZ3`)TwZX`*C1c{s&^&^oIiisSb*$~JQEXV96Dhkh=HB9$#3pgh&LJ{}6G=JCaH#BXmGb@9>``C-p<@tk$t zP{1;;ECDbX6{&2{meZP{stU>_X(jgXr=9V@C!DZwUut>29g#Ha^5@qciomw!@r=j{ z4KR^zd5y?4j)~k+2d&h$c^QFp6`<4pt2GKx%o!Cy>L{O415h16`~djQY8y=xf5s%{ zgzcz9+Tovg_}N0_=@fhpSdML7hI)GPB;j@Xpd~lU1Ni5Hp>-N}1ENG5W)A+djh+qu z8a~F-Z3$pf0Cda+5CFNtt`rHU|U9J%^IvCR}w~-66NCcOlBhrAl&ir zYF(fm#B;ok^?;jG1Qw3Du{_JD-Eh=rpsiCP>3)|>8c+x*kf~)a-PE^QU=hKzD)gp- zfsq2h-b3(fR%K;nZ0sKfu58h@kMSH90VV5*&IOX~8lfg0Z-d&SU_5ytmc)R5A2MYY2^J@Q&Tn}#3qdjJ%S?aT(VVenrwb39@2`oq6l zB*F#ljpOf!ZApJ34vYc;yq5D#sEPqbEpv*8?Ok)<`&&Fhw6XE=egT6fuiPF0N4HFi zwi{WN_OwZDiT(n^$cgM3-*|dR{pfp@twHCvnIH41@da?$H9^F4Km>A^CgMaIo|1^2 ze)ZZZd3?;kyr4eIYXJ-ae<}UB8I-L{ey4MqO3yVJ}HJr|er;J%?_uO=yfN zjl{}x;7|+)u=}F)J21KDPDmcooJD}OB+I?KVK0w`Dh}i*=zS@ad7$5q^nV!jw_9&Y zzsjesj8NY)Az(Ms(b1uk82wzAHhP95n=f@7@onRnqW1?@RL0lzJPaO_{TC51{5Jb_ ze1j$4sZL3N|Jbcg_3U{2j)C6?l$B`uR2qCkX^6=M< z1LM|F;=~;dYWV^+W?gxcdL7;;i+pva9a)oP4_tNcC&If4@$tDaBdE|3NW_3iII!Ca zK&}nv$b5qTm7@ONmgJKPAi=~X^V!x@7-prdAN{R}-ma@70?f)p4A+&up5xK2tlj^J zZ8`)1szC|1_-<5JT*~+ruk~ZqJa6OYJFj6kLJZR_+o9>b?YFhrPk0-klHi`*_PalYaYb9_ zU8^=+%}!8K?Ngqqbx@TaV_a>V8AG|p-T^k$D={kbVCrh>o4V$dprEz1kSW6U?B}(a7V$Vb&q`P*x+X8@Ue!u zT^gCjjUOv(>2^I`!Hab0pTA*^5qY7z-@6Kh&rgOkZu9M$qDm>#9R))ZcsuNq+-h zRIQ5oOrx4c+KukdvzvOhIPbbv7Q~anA^Cf6V{X@3?#>4#_I7jbHfu_7Ik?M9{o-MD zKH6<#R7#R`ug@4kid%Nq3oCmvhQig3CneQ%`4%Ir2ZJJ1n$xiwjaS+kZQD--op6+S zSxZh-W(k_q(-35AIuW@*-3A}lzM1k=MA-TiJ;z<}eF}mTUWA{lA6v0qCdg5{i-p@rOqG{K#b z^5ZAuY~coVrx2!F|LB8a>Du)UnT>D+!f!?Ux$em-oAowVWx?xdEBvkxY8boKL~Tp< ze2$oj_ShjsDOh~^Zv zfePN>BUZM>3a*N3=3z#lQT$TFV;eK9kjf|FT9|R*O?3z!!jSNm*i`pSZgJFI)6$9c`40G&`A;XQxGu@8?(K(|Tnu2J2$}DRp(iV9 z{)hFyRkag5*Y4MrR6qSAftHUBv<| zo=%+^dUx8Y*y=^a4BUgYics(0Rd?~ zKAMQ>m-`?V3Z$d0S=fwE>O<4DS;1_&O1~V7q#yRu_j{oe(X7>>lh&BNhH5bPip|vF z1+uWw$f^<{2k0hjtra%8=gVmU?k-c9WVt~iAB=qRw`Mr==^CEj9slR5(tAg7*Ee4` z{rt#nuB*2w>i>d0WYs{QJEt`2Lj73T+|t(1#szB&B%9WYIj!*Xc7v;JJNWC+G=mT- z@6cBSRid*C=pKHLkAMGI+GoN_!riWv;L-VS(!Z4kN>5}d;7C`hn?{V$F-aFgB$T}r z3#v5^*?e6K9g|{5O~WsY&a6te3^M<0mnpd{R2k#f%RfPojGuXN-C`66ufJB-`FJ~3 zF13!}_n(18?Y*eOjJZ87o1Z;9tDB<{+H}w+Q|v}$k_ZrZt*nuDktM!W_=0GImcKMWyuEbrchb;7u!7PXa5^8pHgSY zs5nQ(@wDW`g_J;PWIg*CvMt>jTSN981ZFx|;_@v|kNMQ|e*f-@sz00yC-Zeh?8%+P zNSV3Ek&t^b>*<0hGR-pAtj@AyixM|icJJgmQ-FKbBQN5?)Gtm-ohNmg1c$}+Fs9X_ zXAS3I#kuT*s7_$M7!Jpb-2p?i;Z8OglNtVe`les(;s#k{FD<9H zOC|8nbRHAFm9D?AUSChSvh(kNE3;fquN#XlX!@w#5Q6oE>z}Os@yOV~o8+b9Y~PD? zo}1vk;D=)6JZAv->0nIqYu!H3SCJehveDsw0wfrbJ&jtwC3EhIr&zSjDVZ_tP=e=q zYW01|R=(8@fItKSr#Z5)0Vc;;h87~<-ai`_5Te9((??rDeKOl38q7!uVjd+qRAP~} znnUk}QxUC;j{Ot0t$X5$72AoqTI{zt?O&<_S@W|sC?NhCi_kRV5I!yEfLlHYN=g4j z?#syJkuZ!;9BWGF1Esx2Ik6K1TP121VVdyiSxZ(mRsHC`b57a!~fOK7);sF z?KVA+JgYFVHgJ{+zR?A?Ak$`S(?k%)pP4YX{SRddnNW)XD&$i9^7P;BLbMmLRI%|2 z1?UOW3ee~Zj3$3c{Vtl49pe53h-s_ebn*+Y(3|G+huHp6c;F8h%G@BU0|dLrInsHQ z6n8zP4D=2nIa=3M#MI70O~^S$9cLA>x3K7_wEIhswj;4y?;a(0*jvVh+phs%Y(KgM46(7kX(}pSq!Qm0fog+_yj%GS>suVrlBRyE^!% zU)F7}#y?m;U&;COmi0*-!i&>m4_WC@Em9L#pak%kk+#UCoa zN|hEtN9d*vG(nVJdcsTfSUV~5jLbNFi94Q56?sD~Ocg~Ic?6_J_lYlB7;xcJ3e+isd^6cuxQ4hST>}j&+)cVvl zbb7(0^@%I^`Lh5c%0yw_b9t9Badk1XTLyB+zda)^4}a*w2zam)SRDV}M4BAQpWu)V zSe!~c;g^gLl9RlM2p9DCE^F3wrC}&lZ$w_mgWxp0ju@*M#=E)h1a@+BD6g1nof@EX z_grEf^?je!I!U`MuDCP}O%~acjMrU)iS$*B@D^IgO2CK#Sr`%(ZVT_80hvp0ep(jU zoS4#bFn`uUxiJbYG{q1}HL$SX37`=-HfWQ}Sn!0M4~rjIXKC8sQNKwL^>e$g^GoG? zmHT#G|sgqK*nXBJL$#+}ZWIxB7v2%pphH7|3 zEeENIw~#;bM~jS&!>Q_1nHZC%w^1kLK=;@C8MpG%&|#wK3lC_^1%w3$UIG%d8RJgv z?B$gV0)XK=N&Of9UHOujj8^+83hiz3=l1IkjnWG4hl}Z-o7!><$f?C@2DtrVtzvCC zsh0At`hlUz?^rkpHu~7pnCHgR7P!NjH$G6QE7qC#GMHUP65>JXQ%bEhG$TT=@xNsm1DMCbm+CUB_wzE z{o6!K-A!WQj3@+k18qw{BztQrkDCfGofmS z#A@%;AKMbS+2S6!E)}sme`b~Muo>(6qy?r9<^t^H_j-*(2DFp^X#gySFZhw4t-dv% zXq`Va+z_jgsNP>>bhM63S}%xrzLwECWnn=PGH1hx`-%aR#X0X0N7IXL~unk z$zp{9pGQG(oC0g*ch)LzoN=8CJb@?Zh>^GcDZ}{|k0S za#1R?fI%>PuT^6MOV0T29FykOPCL*exGwg1=)@C+d{Nt7 z%+LldX*X$sM6Ma{(wWVs#Zg>tSin%y+^>))sp1tlMg1rsNkGd@FEMJ&t zr3nkktLo7c6=~jWIvUSnIWKV=)+y)9AmO1PnWyBOXmCuf|1%E$*a0K@Ke6Vq?iz#QVO*xFaWCM{~X7k6XyyL8yI>yiZG;W{$`Me4qi5C#6H&^?a7qy8 zkl3?2C$Ci$kEShRMV^uG(TEPtj+adN0?`k-T;D-O$4mbW$cZx{VlLMU&A7L`*MN7R z^2p99{5q_EabJ4jboUO%ctgm}d<~_>Xv=UlnIc^)WVB;E6vOj~kvg~@e5Uig*luNi z0N8hbLKWU)2?ZC>2y*3^J5rBMsm@NKua5Rp|4z#SSqQqJkA2pLquq&55lZznoegba zWFu}t)xe(>SheDI)=0UBTj2~{tFIMChO{ZQl3et4o_U&>x0ubC~ubz>X3XYT6|8GF+UD51;y_7y70zizmJ>vQozzK zZ?Hu!8L^b<7WNyB-f-P+y4z~kj##vuw{ttrXOZ``bQg|3(cY4k!Mut#Dh?{l@jeQ8 z*w*M_E?}J0elU_jLYKjGAOwVObUI&ze=Col#bQn{jOGEQ!A742*b zo(s`Ad}ZQ@3i4UjKNqO3>@CenRJeDV@2C&^yK!FiE2Q+dFmxvfm6oVW>}RGGRCI zBxo~!h$jYX? zkem^1pG45|lz{6OSTgGV!{LbR-nInStHsDMq%kZhyx{D&q4}l-5dw_+JS9d^Y&#G~ z#8c9x_EPApJ~3v#s76{9)edPvo@;rszodG!W5~08T2>|< z#&H}1Eb$1H+D#rqeX#iQdrxCdf8qrGV1pr=E7|-X#-q=BlW&nf96shOUpp>MqMq#p zOIL~G_6wkcI^p&-e?dty?VJN%ZNshOtHm(zaC2i)Cdz9)`S0V6{|ApH{{MTA@)*ED zeQ6Uw%!=|Tuvq++^;GSJpF9xoifGX~`R2>29IrVg zV|G5gOh-be9+a8a^~LLh7SVrg0I|y%ShosSPQMPQBQmp#^aa(va_)z{R(sEYq--l9 zihYHBKsR)6ke&U0u6(+)mkTB-2_|g~1`Ou&cDJ?@s*{F7@TXv}_P8HQQxGs{^>E zObKvK?{`SJ{^Je@} zmU>>&0>~2^ZwSrg24G?@jPEdzJSjHV@UBDC&S zl7St+Adqmv52XKbW$Vxsdp`>j82BG|!GAV}eP6NaI-TT+me53Oz8_Gc+F zPY?wlkpL23i^1KWe#MHzM?h=)hM-XFDKR_uBkS&BlcA@GsYSjSL?`Gli%Yfs%(Z8= zf~tE$W^7GyB8$n+Xk}}abEYqU_O-=$uZWYlMR`5Vv|~^z!#)seq+k&z3K7&tDqlAi#_F3?M~!ogcfiXZMPHHN{S*6G@+3KoA65yfqXtT4kLfW zrcAgPj1p7Z2d%h(s3EG!R|9lLR~1Y+UIBpyPLI%kPDwO1n?^A}84g5+^(G`0&q zEqGLLE$`Q@ySkD!X&6yp=z~y@-4}*St#{@%&TOcNvPJyB-Ru@E#!xtMhcDbpV%yK_zBIZSZ*$N~?w(9t% z6NjJe7gSfACkzAv6UDkQVvI}V;F8JPV@(;Hl35qc;0CCg+s&Zb`)gt#RXteGcFU{v z*ZfC>*MII|+IIE-JFu4=*6usGha=ser(`xhaKicj3F<#$@85wT%;i(JHjm%fIX$?X z6U1E9W-Rasad1s9oh^nFVRBb1r2p>(TEoHO$)Wbq zFRIWQev5!z*%c6KfonTl0?H}*2HdUbnpNE zEHBB%f6KQ(PG~o}YA^7)(6ss(O<0biaDvHgLX>7mc0kpaBR4`A-iz+%sNZ~bww+$y z+xEbDYwIJLY-@s**29!F@oaeEx%=tVd^ux}w_28^8TRvZ%gs|?{A80BTO%4gV6DNMKT(ub=1s!m>$0000sba4?+-sR%wQUccdN1_YDb!@j zds*OE5b^^yc5U(k@*Nln#lk2IoMO^9n2FH;R%XD`{l7{(%c!W@zuzmR+;k&Ich^V= zLk=*sl!V04jg)kVppw#!pa>{RgE*9QmtYV>C=8)=H=Jv@@B9Be&spciIqSTgHEUj6 zdtZBh>wYuzL}|mmC4T%_~Nb*!{8{))9wXS z@Q*0lY8DW`HVGQc+_$bPXVlF!E!>nXp$MUht@2(INz)H5M%cHPlfno7PW5HiYVIlQ z<>0u-;)!)W@FwYt5MDn{R}sAx*A3!I!kg=b>{(Wn<33u%U#Z*q>lD0Fn4^!1M-V&5 z(hfhZ>!BPS!?95g|0Meqosg^v4Y>7r_yjH%#-E2Lu{UArkAFq{Q-zLit3QmEe8_j| z@h%KZbA|yu(H<*U(|R-2ZkRdV%4U{)E{Du}`Gt``O5?wNCn%$=zWMC2qo@k+8|tujs9Nrsb=J@&iJ@X2LgTc2>g@dIIj(yW4Grk6H* z?e+^coDI)ojj&#kYTJa8LBCpP`3T(_)SYmx=3UQCv1b|va0ok1b&ok+pL=WYo$NYS{#ji{j8cu(@@0 zu~_ib>j1PIm%0^LF^(au*dKL0xDnkAL^Xuut#w9A8NDi{SeG2)q&ug%vMvyIj7ZKl|F8 zrSLC5;@=$3mLFl+6_9w*@NG5rTW5<>za-)$QZ_CQS|90nJGl?3CbD1_ z{P#je1Qk38^F1`17Kz3=Ku!qMwEEn8J)!eTc@i^{0MXO_)b@Ds(o;mnTGo^4+ekFz z2+@Y?+uYqdxoM4;tj&i-MRTz}cTquGApJjbf7`ZX_Jb<}S)Y!Qh??=4=wD zsk5!Ha@3OSb|*>8CAN^N?ij_trzrPWO1=5u_vQWfnuv@Rsl|>DMNBzN z%c)#W(^)5rPuhgw+8w{g>T-^iwUpHy(0*wTje>ujmZ1MFD*P#T`98-K6jE*TY&7-m zhBZYU%x~&S82#Eh|MTg!zREIi z8~gDxqIdBeTV!HCg^{igz};B zFVkV#Zg;9tD=tO(iS^J;W9d~MCV7Ix<$T~LN zbo;Ir!wj2T_>BbQ2=RL$<`RZHqKlDBYIu;iJC1U8MI2j$KkYC^$o@EjZ9ypJGHc>( z?rr-&D6Z?ZPN07qOiMl`ObQr#{9q9ApE9C9dN3Ae@9#FEmwX@4E^DQ?g%@2BC zp%D%7ku6cA&h3Ro**^o1-v(J7-Q8pc^oqni*Wk@QwuX37Un-y(F5j<}0ryrKbkB5Y zuQN|$lh>Wlnp==hV+^Pmcikn10O39!Pif5?tTA70U!fK90U=~SWGvq|PQ>`s{~CE5{l_l<(4gj7(aMi5-oCwT zoF)0VIg_69=DN>8w?Md>9r62w@{@(ypRcbiK|j@{WYpmH2HLHRL~@Cibw0>qsDX?9 z=59v!Xxxq&Sn*b?v0lKndGv->kx-HG^jIATsgF$Bee$>IE(3oW;PP(ty4wuvgdPGv zPMZNEqGdgmDqv(aDb>$=<_n_sMV?Ud8&(w6s&C_bBI%-T_pxuW$o+c9^|C6&hrI2J zNobsmlVACG{M1t=_BPIijjxs>!~6#JS+}*NERKp9zEAN@CU%~fyEgs>K%o2(ywUTg zeV=aWSbC6>=g*geNELMAZk9H3WeK=;G~yFAPK?$GZ8l@H9-y8e%dw9Z$Spt;l8te1 zit6vg`E(*Q6R`Shox~)=yKqnkv?#ldarFzpW98BB=)qC&2dG_WQl3DmfBO|48GGk#Kv6N z(J_dmkMBC665IBZ<32X`bRjv8+C2dgKriVLeun_PTVA+s{Zg#K*YT_F80_gzuY0(E zPh^lW;rL=FkRzOwtSO%c16{N;m(#guZ2AXx)?_b$9Mh%9Y%R*z=8Qn!g2$F@$^8+Dr2p8HMVQT(R}n82f%hL+bu?(J@Pauq&h z$%iMrvDNAR$3blIAcyU5N&e;7ofR#SSsZfgu)+@oPD#PH`5k{!Olp!jzfxf3PZ>69 zW6esp1gKy;{|m>Z$4~!l1hOacLIe^AMCfX@;vzp}u5>O7m}5O~LEP<)uIr(aobkEQ zu93WrCmx<98*Ha8`j*1Ba^|j~&k&c+FZ?3pAa#fhM~WboC?gSraSgNYZw44F z`Pzm*ZheaTlfpG$rS`x7lE}rwv~7!t=~+^k!~& z?BYS{AXWuv2F91x!}NQ>n1+;^s8PQ6zc`?V zKOC7Z%4{kUlOjw)!TJY7B9%g98SM3LFP2z?C%CHhCM-w&#{eO!Bk5Ca=_zgJ!|B1+ zspK@VC-d&)rKW>YWe~ZeEupn*7cOC}dkuc9_&;0EZ;NzojG8v+Nx%Te@O{s%I6w2W z^Z&fxP`kdwz=b`10)mbvYyz=7OqidZ`sF#CTB7G)4yfmXp9tGSE>KhboMm$j7oc?c zk*=aKr`kol&Ieh3&EGKopqliE-acV~#|t~+IF0(r+93PPV5^J3Z9M@ezmM7@*~{K8 zgbR6|Tp?d=X$WeeR(+L*QSNY*M{Lm*2-IaWP`1ztEngSF#&;F?VlX9DjdGNV3$KSY zCEE_flMX2#RqEtUyq&I{%zNq|y^y2-v&JCZ}+MeLCZ0*@dbs#!9i4Wfcjc%%aPJ)f=i@-*$?NIId8}6pLyinj1c7 zOV7gKW=z*Z$5RJ=4@83w*2C6EC6S>ov;39rYID9|)%&uEdBSKAy^SfavWllHxuH4k zR_`{3C?4rHG(#!V+LpSmQDhx@r?^KO0l?1d^35G~BE9KW5XSeeN`?EQL5vp3HQ1ba zaiZG@a?`zm$vM)1KD3A%Ob~DidC5&0FJQsBvC@?t(AEJYwnJ-^Z24I{K2;Yp`Va@n zI?kb`4VdG~*DiMX$sT|ndah})hpQ;p>=-)wH4*}cA zujVWqxnSD{w?={>Dottd+TkJa1z8vvsq580IFM%7;6rz`Wn`c2M>y~Xt^kpPtOeY_ zut4dnz%;?xE5Wqzx!R(fK1-t@R`9X!JJ?~ek_Z5u%$}(9{}wkcIg{Hc+Zjo^Z4&XX zOMvuA-Z^M2B~X*VUReWxxm~gC`Fyq~^X;iiLenoU$-%ZRpB-q72R}l6BSH3A?a^5! zPm9@;@sy~%V}l$Kk;{ZwE}CV;;kRW0j<3&ArZQ)s-H5L7pZpB{a?s8#n2f$yj@9uD z5mW@>{I#myz`eQrU@plH{6DxXa??tg1Yf{ z5F3Cgz1(B}_j7+TKpq3k=-!Z!Ls*C9uFK4?Nwm!AJ5iU5 z{xyMF1)19)8H>|J(Goo_8nV_u$S;Q6X#%*P(vB^QT{4fPdxSCNuAt@Hq{>4b{s;{{ z?9o}%zwrI7gB7;^vgTkppW_vN=_PE`P(;QeIbvNzVaH{252B~~;lGpoQaWTJ7%ts( z@@+1+&O+kzzu=2tR={+sPT~?mV=h^kjkT(}F0NCo9tXs-^It9@Eu2j7pD|m%d{ahk z&?R#hMWHlUlOSmeyT2cFIF4Q>GOe~*^W1D@sSKSHRxc*maj=E%{*IfQYT?`*w)dZo zZFr*)YF20En&1Nl2gLrKJQ(xblr%dBaf!9uj^rBvBP|3@KhpmMRq1e0^akwi&zS}S!*S~%o0gVTQ{=0zdmvK#;IjW(TTyB! zKtiu+``lBRfUbrnLRZ6K1qx}_d8xNBfiWT58L&FzMd>k7m}2yPdRjhXTz)`JLA z*RI718Ju|9Wq_>JbGt1le)9#eGI4;~DQ^Bec|~Q-Cjo2%(DhtHNovd7{YCC(V_5lo zA+fG1jz_E-MO)5ILJdi%p6B&RvG(B&AM$JZqIxpVz)n(2y4xiY&_gDi0IXZG@RB=a z#-}aoB)tTgVY;<6*UHtyA>2~>j~be>?=dh?n)k`;?TVBRo*sg^IO;oMbmV`v{;j@~ z3)_qd#59C5MX3Xth=;ol4Ls_|tk?N)SD&+OS(e{Rt%DeI~RKemxF_O?b%_NU4=un~_o0CXl^ zD-aJTtc!>8!E8%!l+3MtC*`egMEy_nv#ONNSP-UqTKK5JHj`~R-(DrSFpVahq*kEJ5i$HO& zD{urE-dS{F(wH*Af*UdSYKeo4De>A+9uU0r7ww0X`*>+Vv{Zty8^T zxz1vHo>cwlF3rQUaaY$7ahAJJ)2lwT#d!Rl*E5^8a*bM_jMOvpMLFo>SkZ< zD`k83Wpnw4N-4LogM6Pq8e++7e^9l&V5-R;YB^hNBI8p8z5WEscM!e8xBo^5w7_T^ zT@~R2Et|$`VRjZpp%%&VyR3HSAGgcZ2)tqno$%tfq2#wnb@?M+Sn`HivhouqF%KIk zWATab^4YWeF6_X|4mrL!tC@!--=reP?-Q`ZF7EmU7gh)dWmwxN>8~uE#i8|>0sW1< z93KtQ@cqXNyTq&$`zhU#g#@ri)sNCWAKZ0)q&QgeFDnfp4z><`+`aKP1Nv0EY^z6;zC_@>omjA=m>`$_Dm%(u z0O=S`!V>hoe$n5ge%{2+lBLJoG!NVifbz+V>i6SKG=zdVoTM6^#jJ61B0F~O+qCi{ zQmZ#LSu^j{FpDFYyRApnvrSSAwV0h`-GxbotIpGE-L#*zo`jFG<>UN48PGBq>D~v0 zf5d?n8@oo)EE5G)+Q%#kNCXV_IHzUJnt8}nqPMo zXX@Q8udoLP<$%fE`xUOA6|ii{ed*C(W*3UDmBTwUTavMMtKGi|ZZczy;;pLAt4fMq z6bzE}N@|#9=H1b`kM+u#Q~eGSaO5x782z5aSHm6+GItFB>kGK#cBDMxq=VX%tv(1N z)V%wD^*R_lkwgM4mY6!%L3*Q3SmyJ{n8$6eQ^B*CO3y}~V?x{o;eUiZj!JLn1{jGW z9DZ41DGTgN7G(zQ)e1rUob1J}V^)Z)TO2O`Y8{`bR1R&vn7E&kcvSH>KV+j_<-}Nb zV^lM0>fKjq|I}712&D6%J;a;WyTPp5TO|X4!4!pX**s-gZz60hN{JXQMdc_WeCI*p zXMrnu&>q+2EEesmSl#ZmKh(q}zBi`wj!IvRcxs6u)jOyTH)<eB;YXqy?}x zPn-{i1PKs;=S?nFg^Y0vQt6fb#y$4+=r=^B7t-ql7OAmY5nN_I)oMA#CS}aF+3>o`T&_mGl-Kk{7$v<&OBDC_e#zZ*SY$X{ z>|Od(gkU^LJB1pZ<1Em=!eUtJ{h6D=9C+(hsu3#PA6Z?o8r6v6(;#qz$gSU8~k(px*)cLn9OI)JK{ej18V$vY5pF_;%-~V=e}@m5Thk}?>tt=HNn|= zllD?A^$@-WcsXLjj}M;Zld(d(k<= z^t)0V&*t?aj>F8xC{qH`OfsC7gs!u_CM8;^FlKq`H0EH~vJ9)&c_FxQ%TLc*gq$@c zldc^Mf_U#sfbIcYI0HYj63lMKks$iPtSJbAqwG3ZjFK)9Z2c(5b%GR)?~ids ze}X*XXuc7z9bUaIb{f=9(5>EXXd!A{oUoJ=Sjx(()!l!wk!M0B{`uq<6D$3&_1y_i z(P7)_P+A9P8^U<;Wt9uuEX^h5n0it&Jt?A^^+XK>9!`|k&H1123V#KewYpbX2=;SZ zjU?Z)SB4jpe9DQ#uup2;bFPX`ws)E70z+6W0-j?q?Hu zTGM`MR1puW(?it7%m;`OXqK6~bvD+Cl<}2z>!AO8GXMX0 gx;R9(%=G-yIri(`POA~-4>qo;DQm;Z6%kMV7tr$;$N&HU literal 0 HcmV?d00001 From 41677a630598b45da451b7aaa7fbcb8e68b7c782 Mon Sep 17 00:00:00 2001 From: Stx69 <32230998+Stx69@users.noreply.github.com> Date: Sat, 2 Oct 2021 14:37:15 +0200 Subject: [PATCH 03/13] Add files via upload --- content/utilities/PlanetOverview/index.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 content/utilities/PlanetOverview/index.md diff --git a/content/utilities/PlanetOverview/index.md b/content/utilities/PlanetOverview/index.md new file mode 100644 index 00000000..35b2c116 --- /dev/null +++ b/content/utilities/PlanetOverview/index.md @@ -0,0 +1,6 @@ +--- +title: Planets Overview +date: 2021-10-2T16:35:06-02:00 +subtitle: Planets Overview on your map. +version: 0.6.0 +--- From d000d8b2c7199d6842da7ebb1f9e0e70fef4661c Mon Sep 17 00:00:00 2001 From: Stx69 <32230998+Stx69@users.noreply.github.com> Date: Sun, 3 Oct 2021 22:47:37 +0200 Subject: [PATCH 04/13] Update plugin.js Reformating form of code. --- content/utilities/PlanetOverview/plugin.js | 282 +++++++++++---------- 1 file changed, 150 insertions(+), 132 deletions(-) diff --git a/content/utilities/PlanetOverview/plugin.js b/content/utilities/PlanetOverview/plugin.js index 6e97a1bd..d2b41678 100644 --- a/content/utilities/PlanetOverview/plugin.js +++ b/content/utilities/PlanetOverview/plugin.js @@ -3,16 +3,14 @@ // remixed from Palnet score plugin -> THX to Phated // Import game utils -import { - getSilver, -} from 'https://plugins.zkga.me/utils/utils.js'; +import { getSilver } from "https://plugins.zkga.me/utils/utils.js"; // Import Skypack constants types import { - PlanetType, - PlanetTypeNames, - PlanetLevel, - PlanetLevelNames, + PlanetType, + PlanetTypeNames, + PlanetLevel, + PlanetLevelNames, } from "https://cdn.skypack.dev/@darkforest_eth/types"; // Constanst definitíon @@ -36,41 +34,39 @@ class Overview { // Slider Default value this.topX = 10; // checkbox MyPlanets - this.table = document.createElement('table'); - this.table.style.width = '100%'; - this.table.style.borderCollapse = 'separate'; - this.table.style.borderSpacing = '10px 0'; + this.table = document.createElement("table"); + this.table.style.width = "100%"; + this.table.style.borderCollapse = "separate"; + this.table.style.borderSpacing = "10px 0"; // default static text header of table - this.thead = document.createElement('thead'); + this.thead = document.createElement("thead"); this.thead.innerHTML = `NameLevelSilverSilverTimeEnergyEnergyTime`; this.table.appendChild(this.thead); // default dynamic table body - this.tbody = document.createElement('tbody'); + this.tbody = document.createElement("tbody"); this.table.appendChild(this.tbody); } - // Function to renderPlanets with sorting from home planet of preselected planet - renderPlanets(minLevel,planetType,middle,MyPlanets) { - + // Function to renderPlanets with sorting from home planet of preselected planet + renderPlanets(minLevel, planetType, middle, MyPlanets) { // clean table body this.tbody.innerHTML = null; const selectedPlanetCoords = ui.selectedPlanet?.location?.coords; const knownPlanets = []; for (const planet of df.getAllPlanets()) { if (planet.planetType != this.planetType) continue; - if (planet.planetLevel < this.minLevel ) continue; + if (planet.planetLevel < this.minLevel) continue; if (!planet?.location?.coords) continue; if (myPlanets.checked && planet.owner != df.account) continue; if (!selectedPlanetCoords) { - middle = df.getHomeCoords(); - } - else { - middle = selectedPlanetCoords; + middle = df.getHomeCoords(); + } else { + middle = selectedPlanetCoords; } knownPlanets.push({ locationId: planet.locationId, - distance: Math.floor(df.getDistCoords(planet.location.coords, middle )) + distance: Math.floor(df.getDistCoords(planet.location.coords, middle)), }); } @@ -83,21 +79,43 @@ class Overview { console.log(`Where is planet: ${p.locationId}`); continue; } - const row = document.createElement('tr'); + const row = document.createElement("tr"); row.style.color = getOwnerColor(planet); row.onclick = () => { ui.centerLocationId(planet.locationId); - } + }; // Create a Row per one planet - const silverPercent = Math.round(100/(planet.silverCap/Math.round(getSilver(planet)))); - const fullSilverDate = new Date(df.getSilverCurveAtPercent(planet,99) * 1000).toString() ; - const fullSilverTime = [fullSilverDate.substr(4,6),fullSilverDate.substr(16,8)]; - - const energyPercent = Math.round(100/(planet.energyCap/Math.round(planet.energy))); - const fullEnergyDate = new Date(df.getEnergyCurveAtPercent(planet,99) * 1000).toString(); - const fullEnergyTime = [fullEnergyDate.substr(4,6),fullEnergyDate.substr(16,8)]; - - row.innerHTML = `${idx + 1}.${getPlanetName(planet)}${planet.planetLevel}${getSilver(planet)}/${planet.silverCap}=${silverPercent}%${fullSilverTime}${Math.round(planet.energy)}/${planet.energyCap}=${energyPercent}%${fullEnergyTime}` + const silverPercent = Math.round( + 100 / (planet.silverCap / Math.round(getSilver(planet))) + ); + const fullSilverDate = new Date( + df.getSilverCurveAtPercent(planet, 99) * 1000 + ).toString(); + const fullSilverTime = [ + fullSilverDate.substr(4, 6), + fullSilverDate.substr(16, 8), + ]; + + const energyPercent = Math.round( + 100 / (planet.energyCap / Math.round(planet.energy)) + ); + const fullEnergyDate = new Date( + df.getEnergyCurveAtPercent(planet, 99) * 1000 + ).toString(); + const fullEnergyTime = [ + fullEnergyDate.substr(4, 6), + fullEnergyDate.substr(16, 8), + ]; + + row.innerHTML = `${idx + 1}.${getPlanetName( + planet + )}${ + planet.planetLevel + }${getSilver(planet)}/${ + planet.silverCap + }=${silverPercent}%${fullSilverTime}${Math.round( + planet.energy + )}/${planet.energyCap}=${energyPercent}%${fullEnergyTime}`; this.tbody.appendChild(row); } } @@ -105,96 +123,95 @@ class Overview { // async ? render(container) { // Setup size for main plugin window - container.style.width = '800px'; - - // Select from list PLanetType , with text loaded from client - const planetType = document.createElement('select'); - planetType.style.background = 'rgb(8,8,8)'; - planetType.style.width = '22%'; - planetType.style.marginTop = '10px'; - planetType.style.marginBottom = '10px'; + container.style.width = "800px"; + + // Select from list PLanetType , with text loaded from client + const planetType = document.createElement("select"); + planetType.style.background = "rgb(8,8,8)"; + planetType.style.width = "22%"; + planetType.style.marginTop = "10px"; + planetType.style.marginBottom = "10px"; planetType.style.marginRight = "10px"; Object.entries(PlanetType).forEach(([name, key]) => { - let opt = document.createElement('option'); - opt.value = `${key}`; - opt.innerText = `${PlanetTypeNames[key]}`; - planetType.appendChild(opt); + let opt = document.createElement("option"); + opt.value = `${key}`; + opt.innerText = `${PlanetTypeNames[key]}`; + planetType.appendChild(opt); }); - planetType.value = `${this.planetType}`; - planetType.onchange = (evt) => { - try { - this.planetType = parseInt(evt.target.value, 10); - } catch (e) { - console.error('could not parse planet level', e); - } - try { - dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; - this.renderPlanets(); - } catch (err) { - console.error('could not parse planet planet type', err); - } - } - - // Select from list planeLevel , with text loaded from client - const minPlanetLevel = document.createElement('select'); - minPlanetLevel.style.background = 'rgb(8,8,8)'; - minPlanetLevel.style.width = '15%'; - minPlanetLevel.style.marginTop = '10px'; - minPlanetLevel.style.marginBottom = '10px'; - minPlanetLevel.style.marginRight = "10px"; - Object.entries(PlanetLevel).forEach(([name, lvl]) => { - let opt = document.createElement('option'); + planetType.value = `${this.planetType}`; + planetType.onchange = (evt) => { + try { + this.planetType = parseInt(evt.target.value, 10); + } catch (e) { + console.error("could not parse planet level", e); + } + try { + dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; + this.renderPlanets(); + } catch (err) { + console.error("could not parse planet planet type", err); + } + }; + + // Select from list planeLevel , with text loaded from client + const minPlanetLevel = document.createElement("select"); + minPlanetLevel.style.background = "rgb(8,8,8)"; + minPlanetLevel.style.width = "15%"; + minPlanetLevel.style.marginTop = "10px"; + minPlanetLevel.style.marginBottom = "10px"; + minPlanetLevel.style.marginRight = "10px"; + Object.entries(PlanetLevel).forEach(([name, lvl]) => { + let opt = document.createElement("option"); opt.value = `${lvl}`; opt.innerText = `${PlanetLevelNames[lvl]}`; minPlanetLevel.appendChild(opt); - }); - minPlanetLevel.value = `${this.minLevel}`; - minPlanetLevel.onchange = (evt) => { + }); + minPlanetLevel.value = `${this.minLevel}`; + minPlanetLevel.onchange = (evt) => { try { - this.minLevel = parseInt(evt.target.value, 10); + this.minLevel = parseInt(evt.target.value, 10); } catch (e) { - console.error('could not parse planet level', e); + console.error("could not parse planet level", e); } try { dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; this.renderPlanets(); } catch (err) { - console.error('Unable to parse number', err); + console.error("Unable to parse number", err); } - } - - // Button "Update" for label info status of the transactions - const updateButton = document.createElement('button'); - updateButton.innerText = 'Update'; - updateButton.style.marginRight = "10px"; - updateButton.addEventListener('click', () => { - try { - dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; - this.renderPlanets(); - } catch (err) { - console.error('Unable to update', err); - } - }); + }; + // Button "Update" for label info status of the transactions + const updateButton = document.createElement("button"); + updateButton.innerText = "Update"; + updateButton.style.marginRight = "10px"; + updateButton.addEventListener("click", () => { + try { + dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; + this.renderPlanets(); + } catch (err) { + console.error("Unable to update", err); + } + }); - // Button "Un.Trans" - const unconfirmedButton = document.createElement('button'); - unconfirmedButton.innerText = 'Un.Trans'; - unconfirmedButton.style.marginRight = "10px"; - unconfirmedButton.addEventListener('click', () => { - updateTxStatus(); - unconfirmed(); - updateTx(); - this.renderPlanets(); - }); + // Button "Un.Trans" + const unconfirmedButton = document.createElement("button"); + unconfirmedButton.innerText = "Un.Trans"; + unconfirmedButton.style.marginRight = "10px"; + unconfirmedButton.addEventListener("click", () => { + updateTxStatus(); + unconfirmed(); + updateTx(); + this.renderPlanets(); + }); // Slider for count of total list lines - const topSlider = document.createElement('input'); - topSlider.style.marginTop = '13px'; - topSlider.style.width = '37%'; - topSlider.type = 'range'; + const topSlider = document.createElement("input"); + topSlider.style.marginTop = "13px"; + topSlider.style.width = "37%"; + topSlider.type = "range"; topSlider.value = `${this.topX}`; - topSlider.min = 1 + topSlider.min = 1; topSlider.max = 100; topSlider.onchange = (evt) => { try { @@ -202,24 +219,24 @@ class Overview { dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; this.renderPlanets(); } catch (err) { - console.error('Unable to parse number', err); + console.error("Unable to parse number", err); } - } + }; // label for dynamic information - const dynamicLabel = document.createElement('label'); - dynamicLabel.style.width = '50%'; - dynamicLabel.style.padding = '5px 0'; + const dynamicLabel = document.createElement("label"); + dynamicLabel.style.width = "50%"; + dynamicLabel.style.padding = "5px 0"; dynamicLabel.style.marginRight = "170px"; dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; // label for my planets - const myPLanetsLabel = document.createElement('label'); + const myPLanetsLabel = document.createElement("label"); myPLanetsLabel.innerText = `only my planets?`; myPLanetsLabel.style.marginRight = "20px"; // Checkbox for my planets ? - let MyPlanets = document.createElement('input'); + let MyPlanets = document.createElement("input"); MyPlanets.type = "Checkbox"; MyPlanets.checked = true; MyPlanets.id = "myPlanets"; @@ -228,32 +245,34 @@ class Overview { try { dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; this.renderPlanets(); + } catch (err) { + console.error("Unable to change checkbox", err); } - catch (err) { - console.error('Unable to change checkbox', err); - } - } - + }; // This is the fuction for button upgrade that show current unconfirmed tx - function updateTx(){ - dynamicLabel.innerText = 'Moves : ' + df.getUnconfirmedMoves().length + ' Upgrades : ' + df.getUnconfirmedUpgrades().length + ' Wormhole : ' + df.getUnconfirmedWormholeActivations().length; + function updateTx() { + dynamicLabel.innerText = + "Moves : " + + df.getUnconfirmedMoves().length + + " Upgrades : " + + df.getUnconfirmedUpgrades().length + + " Wormhole : " + + df.getUnconfirmedWormholeActivations().length; } // This is the fuction that updates the transactions - change client response - function updateTxStatus(){ - df.contractsAPI.contractCaller.queue.invocationIntervalMs=100; + function updateTxStatus() { + df.contractsAPI.contractCaller.queue.invocationIntervalMs = 100; } // This is the function that shows the transactions in the console - function unconfirmed(){ - console.log('Moves : ' , df.getUnconfirmedMoves()) - console.log('Upgrades : ' , df.getUnconfirmedUpgrades()) - console.log('Wormhole : ' , df.getUnconfirmedWormholeActivations().length) + function unconfirmed() { + console.log("Moves : ", df.getUnconfirmedMoves()); + console.log("Upgrades : ", df.getUnconfirmedUpgrades()); + console.log("Wormhole : ", df.getUnconfirmedWormholeActivations().length); } - - // Grafic append container.appendChild(planetType); container.appendChild(minPlanetLevel); @@ -270,14 +289,13 @@ class Overview { // Refresh for rendered container (table function renderPlanets) this.loopId = setInterval(this.renderPlanets.bind(this), REFRESH_INTERVAL); - } - destroy() { - if (this.loopId) { - clearInterval(this.loopId)} - } - + destroy() { + if (this.loopId) { + clearInterval(this.loopId); + } + } } export default Overview; From 8a95767b316ef2a525d83ec39e2379209294c0d1 Mon Sep 17 00:00:00 2001 From: Stx69 <32230998+Stx69@users.noreply.github.com> Date: Mon, 4 Oct 2021 11:52:55 +0200 Subject: [PATCH 05/13] Update plugin.js Updated according feedback! --- content/utilities/PlanetOverview/plugin.js | 38 ++++++++++++---------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/content/utilities/PlanetOverview/plugin.js b/content/utilities/PlanetOverview/plugin.js index d2b41678..571fe9a4 100644 --- a/content/utilities/PlanetOverview/plugin.js +++ b/content/utilities/PlanetOverview/plugin.js @@ -91,25 +91,33 @@ class Overview { const fullSilverDate = new Date( df.getSilverCurveAtPercent(planet, 99) * 1000 ).toString(); - const fullSilverTime = [ - fullSilverDate.substr(4, 6), - fullSilverDate.substr(16, 8), - ]; + + let fullSilverTime = ""; + if (fullSilverDate != "Invalid Date") + fullSilverTime = [ + fullSilverDate.substr(4, 6), + fullSilverDate.substr(16, 8), + ]; const energyPercent = Math.round( 100 / (planet.energyCap / Math.round(planet.energy)) ); + const fullEnergyDate = new Date( df.getEnergyCurveAtPercent(planet, 99) * 1000 ).toString(); - const fullEnergyTime = [ - fullEnergyDate.substr(4, 6), - fullEnergyDate.substr(16, 8), - ]; - row.innerHTML = `${idx + 1}.${getPlanetName( - planet - )}${ + let fullEnergyTime = ""; + if (fullEnergyDate != "Invalid Date") + fullEnergyTime = [ + fullEnergyDate.substr(4, 6), + fullEnergyDate.substr(16, 8), + ]; + + let planetName = getPlanetName(planet).substr(0, 10); + row.innerHTML = `${ + idx + 1 + }.${planetName}${ planet.planetLevel }${getSilver(planet)}/${ planet.silverCap @@ -199,7 +207,6 @@ class Overview { unconfirmedButton.innerText = "Un.Trans"; unconfirmedButton.style.marginRight = "10px"; unconfirmedButton.addEventListener("click", () => { - updateTxStatus(); unconfirmed(); updateTx(); this.renderPlanets(); @@ -208,7 +215,7 @@ class Overview { // Slider for count of total list lines const topSlider = document.createElement("input"); topSlider.style.marginTop = "13px"; - topSlider.style.width = "37%"; + topSlider.style.width = "40%"; topSlider.type = "range"; topSlider.value = `${this.topX}`; topSlider.min = 1; @@ -261,11 +268,6 @@ class Overview { df.getUnconfirmedWormholeActivations().length; } - // This is the fuction that updates the transactions - change client response - function updateTxStatus() { - df.contractsAPI.contractCaller.queue.invocationIntervalMs = 100; - } - // This is the function that shows the transactions in the console function unconfirmed() { console.log("Moves : ", df.getUnconfirmedMoves()); From a84da2bb849714ee3c55393e7a00d1ed1bf66f9f Mon Sep 17 00:00:00 2001 From: Stx69 <32230998+Stx69@users.noreply.github.com> Date: Mon, 4 Oct 2021 20:46:07 +0200 Subject: [PATCH 06/13] Update content/utilities/PlanetOverview/index.md ehmmm old copy from local storage.... Co-authored-by: Jacob Rosenthal --- content/utilities/PlanetOverview/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/utilities/PlanetOverview/index.md b/content/utilities/PlanetOverview/index.md index 35b2c116..d603b722 100644 --- a/content/utilities/PlanetOverview/index.md +++ b/content/utilities/PlanetOverview/index.md @@ -2,5 +2,6 @@ title: Planets Overview date: 2021-10-2T16:35:06-02:00 subtitle: Planets Overview on your map. -version: 0.6.0 +version: 0.6.4 + --- From 5e2be0ce12afbfb414fda29abed55818deecc175 Mon Sep 17 00:00:00 2001 From: Stx69 <32230998+Stx69@users.noreply.github.com> Date: Mon, 4 Oct 2021 23:55:39 +0200 Subject: [PATCH 07/13] Update plugin.js Update of description done. Please review grama... Next will the format conversion 000 000 000 = K/M/G. --- content/utilities/PlanetOverview/plugin.js | 39 ++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/content/utilities/PlanetOverview/plugin.js b/content/utilities/PlanetOverview/plugin.js index 571fe9a4..e53207f9 100644 --- a/content/utilities/PlanetOverview/plugin.js +++ b/content/utilities/PlanetOverview/plugin.js @@ -1,6 +1,24 @@ // Overview of Planets by STX -// Start sort from homeplanet if is not pre-selected planet -// remixed from Palnet score plugin -> THX to Phated +// How to use: +// 1. Select your preffered planet type, level and set count of top lines. = Will be refreshed according preselected level is equal or higher. (scroll able) +// 2. Default sorting according distance from homeplanet if is not pre-selected any object on map. Or if is selected some object on map it sorting distance from here. +// 3. By clic on line of table will centered map on it. +// 4. Checkbox is to show only your or all planets on your map. (spy mode) +// === feel free to see overview of silver & energy budget status and estimated time to have full stock of it. +// +// Optional function: +// Is implemented default refresh 30 seconds if you need immediately refresh push button 'Update' +// If you are interested about current status of your unconfirmed transaction push button 'Un.Trans'. At console reveal detailed information. +// +// remixed from Planet score plugin R3 -> THX to @Phated , +// was used for base frame and advanced html table coding. Whole complex coding inside from original. +// removed all connected with score +// remixed sorting of distance +// added auto-refresh +// added checkbox owner/all +// added timestamp of filled stocks silver/energy +// +// THX to @Modukon + @jacobrosenthal for main audit and recommended optimalization. // Import game utils import { getSilver } from "https://plugins.zkga.me/utils/utils.js"; @@ -274,6 +292,23 @@ class Overview { console.log("Upgrades : ", df.getUnconfirmedUpgrades()); console.log("Wormhole : ", df.getUnconfirmedWormholeActivations().length); } + // Formating of big numbers silver + energy + + function roundToDecimal(num, decimalCount = 1) { + if (decimalCount < 1) return Math.round(num); + let p = Math.pow(10, decimalCount); + num = num * p; + num = Math.round(num) / p; + return num; + } + + function formatNumberForDisplay(num, decimalCount = 1) { + if (num < 1e3) return roundToDecimal(num, decimalCount); + if (num < 1e6) return roundToDecimal(num / 1e3, decimalCount) + "k"; + if (num < 1e9) return roundToDecimal(num / 1e6, decimalCount) + "m"; + if (num < 1e12) return roundToDecimal(num / 1e9, decimalCount) + "b"; + return roundToDecimal(num / 1e12, decimalCount) + "t"; + } // Grafic append container.appendChild(planetType); From 0cd8cd648ba00fac970acb66e385af12dbdcdf52 Mon Sep 17 00:00:00 2001 From: Stx69 <32230998+Stx69@users.noreply.github.com> Date: Tue, 5 Oct 2021 00:24:13 +0200 Subject: [PATCH 08/13] Update content/utilities/PlanetOverview/plugin.js Co-authored-by: Jacob Rosenthal --- content/utilities/PlanetOverview/plugin.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/utilities/PlanetOverview/plugin.js b/content/utilities/PlanetOverview/plugin.js index e53207f9..cd187698 100644 --- a/content/utilities/PlanetOverview/plugin.js +++ b/content/utilities/PlanetOverview/plugin.js @@ -1,4 +1,6 @@ // Overview of Planets by STX +// Manage your empire. Sort your planets by level or name, quick view when they will reach max energy and silver. +// // How to use: // 1. Select your preffered planet type, level and set count of top lines. = Will be refreshed according preselected level is equal or higher. (scroll able) // 2. Default sorting according distance from homeplanet if is not pre-selected any object on map. Or if is selected some object on map it sorting distance from here. From 47aaa5332307489810a815cc9f8c88180eb4c026 Mon Sep 17 00:00:00 2001 From: Stx69 <32230998+Stx69@users.noreply.github.com> Date: Tue, 5 Oct 2021 02:04:21 +0200 Subject: [PATCH 09/13] Update plugin.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updated coments , nbrs formating k/m/b , final edit... I hope 👯 --- content/utilities/PlanetOverview/plugin.js | 63 ++++++++++++---------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/content/utilities/PlanetOverview/plugin.js b/content/utilities/PlanetOverview/plugin.js index cd187698..8bd666ad 100644 --- a/content/utilities/PlanetOverview/plugin.js +++ b/content/utilities/PlanetOverview/plugin.js @@ -19,6 +19,7 @@ // added auto-refresh // added checkbox owner/all // added timestamp of filled stocks silver/energy +// added button for unconfirmed Txs // // THX to @Modukon + @jacobrosenthal for main audit and recommended optimalization. @@ -139,13 +140,35 @@ class Overview { idx + 1 }.${planetName}${ planet.planetLevel - }${getSilver(planet)}/${ + }${formatNumberForDisplay( + getSilver(planet) + )} / ${formatNumberForDisplay( planet.silverCap - }=${silverPercent}%${fullSilverTime}${Math.round( - planet.energy - )}/${planet.energyCap}=${energyPercent}%${fullEnergyTime}`; + )}=${silverPercent}%${fullSilverTime}${formatNumberForDisplay( + Math.round(planet.energy) + )} / ${formatNumberForDisplay( + planet.energyCap + )}=${energyPercent}%${fullEnergyTime}`; this.tbody.appendChild(row); } + + // Formating for big numbers k/m/b + + function roundToDecimal(num, decimalCount = 1) { + if (decimalCount < 1) return Math.round(num); + let p = Math.pow(10, decimalCount); + num = num * p; + num = Math.round(num) / p; + return num; + } + + function formatNumberForDisplay(num, decimalCount = 1) { + if (num < 1e3) return roundToDecimal(num, decimalCount); + if (num < 1e6) return roundToDecimal(num / 1e3, decimalCount) + "k"; + if (num < 1e9) return roundToDecimal(num / 1e6, decimalCount) + "m"; + if (num < 1e12) return roundToDecimal(num / 1e9, decimalCount) + "b"; + return roundToDecimal(num / 1e12, decimalCount) + "t"; + } } // Render function // async ? @@ -209,7 +232,7 @@ class Overview { } }; - // Button "Update" for label info status of the transactions + // Button "Update" for table const updateButton = document.createElement("button"); updateButton.innerText = "Update"; updateButton.style.marginRight = "10px"; @@ -222,13 +245,13 @@ class Overview { } }); - // Button "Un.Trans" + // Button "Un.Trans" for label info status of the transactions const unconfirmedButton = document.createElement("button"); unconfirmedButton.innerText = "Un.Trans"; unconfirmedButton.style.marginRight = "10px"; unconfirmedButton.addEventListener("click", () => { - unconfirmed(); - updateTx(); + unconfirmedLabel(); + unconfirmedConsole(); this.renderPlanets(); }); @@ -254,6 +277,7 @@ class Overview { const dynamicLabel = document.createElement("label"); dynamicLabel.style.width = "50%"; dynamicLabel.style.padding = "5px 0"; + dynamicLabel.style.marginLeft = "20px"; dynamicLabel.style.marginRight = "170px"; dynamicLabel.innerText = `Top ${this.topX} of PlanetType: ${this.planetType} up Lvl: ${this.minLevel}`; @@ -277,8 +301,8 @@ class Overview { } }; - // This is the fuction for button upgrade that show current unconfirmed tx - function updateTx() { + // This is the function that shows the status of transactions in dynamicLabel + function unconfirmedLabel() { dynamicLabel.innerText = "Moves : " + df.getUnconfirmedMoves().length + @@ -289,28 +313,11 @@ class Overview { } // This is the function that shows the transactions in the console - function unconfirmed() { + function unconfirmedConsole() { console.log("Moves : ", df.getUnconfirmedMoves()); console.log("Upgrades : ", df.getUnconfirmedUpgrades()); console.log("Wormhole : ", df.getUnconfirmedWormholeActivations().length); } - // Formating of big numbers silver + energy - - function roundToDecimal(num, decimalCount = 1) { - if (decimalCount < 1) return Math.round(num); - let p = Math.pow(10, decimalCount); - num = num * p; - num = Math.round(num) / p; - return num; - } - - function formatNumberForDisplay(num, decimalCount = 1) { - if (num < 1e3) return roundToDecimal(num, decimalCount); - if (num < 1e6) return roundToDecimal(num / 1e3, decimalCount) + "k"; - if (num < 1e9) return roundToDecimal(num / 1e6, decimalCount) + "m"; - if (num < 1e12) return roundToDecimal(num / 1e9, decimalCount) + "b"; - return roundToDecimal(num / 1e12, decimalCount) + "t"; - } // Grafic append container.appendChild(planetType); From 718b2ef958058cb6be7422164e9b055b2d29d283 Mon Sep 17 00:00:00 2001 From: Stx69 <32230998+Stx69@users.noreply.github.com> Date: Tue, 5 Oct 2021 02:12:29 +0200 Subject: [PATCH 10/13] Delete screenshot.png --- content/utilities/PlanetOverview/screenshot.png | Bin 25486 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 content/utilities/PlanetOverview/screenshot.png diff --git a/content/utilities/PlanetOverview/screenshot.png b/content/utilities/PlanetOverview/screenshot.png deleted file mode 100644 index f17ae663c6f5c938675cbf1aca18aa40e06b783f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25486 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 From 14a5bf226230740fac75bd1c49165e041be70d7c Mon Sep 17 00:00:00 2001 From: Stx69 <32230998+Stx69@users.noreply.github.com> Date: Tue, 5 Oct 2021 02:12:43 +0200 Subject: [PATCH 11/13] Add files via upload --- content/utilities/PlanetOverview/screenshot.png | Bin 0 -> 42327 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 content/utilities/PlanetOverview/screenshot.png diff --git a/content/utilities/PlanetOverview/screenshot.png b/content/utilities/PlanetOverview/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..9b1314a1296c83aee7c1e64d7bb9d12dc40c3a8c GIT binary patch literal 42327 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 literal 0 HcmV?d00001 From 4004a9aefe50b1a6ad8d22f3777dbb315aaf0642 Mon Sep 17 00:00:00 2001 From: Stx69 <32230998+Stx69@users.noreply.github.com> Date: Tue, 5 Oct 2021 12:45:07 +0200 Subject: [PATCH 12/13] Update plugin.js added buttons tittle. --- content/utilities/PlanetOverview/plugin.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/utilities/PlanetOverview/plugin.js b/content/utilities/PlanetOverview/plugin.js index 8bd666ad..a7b7a230 100644 --- a/content/utilities/PlanetOverview/plugin.js +++ b/content/utilities/PlanetOverview/plugin.js @@ -235,6 +235,7 @@ class Overview { // Button "Update" for table const updateButton = document.createElement("button"); updateButton.innerText = "Update"; + updateButton.title = "Refresh immediately"; updateButton.style.marginRight = "10px"; updateButton.addEventListener("click", () => { try { @@ -248,6 +249,7 @@ class Overview { // Button "Un.Trans" for label info status of the transactions const unconfirmedButton = document.createElement("button"); unconfirmedButton.innerText = "Un.Trans"; + unconfirmedButton.title = "Logs unconfirmed transactions to the console (F12)"; unconfirmedButton.style.marginRight = "10px"; unconfirmedButton.addEventListener("click", () => { unconfirmedLabel(); From f872e2faee172bece02c85e1b202b8acd2d0d325 Mon Sep 17 00:00:00 2001 From: Stx69 <32230998+Stx69@users.noreply.github.com> Date: Tue, 5 Oct 2021 13:17:08 +0200 Subject: [PATCH 13/13] Update plugin.js After trial of some title's. Added for all active elements. select lists , buttons , range slider, checkbox. Should be standard for plugins? Its most helpful and efficient way for newbie... --- content/utilities/PlanetOverview/plugin.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/content/utilities/PlanetOverview/plugin.js b/content/utilities/PlanetOverview/plugin.js index a7b7a230..11446ffc 100644 --- a/content/utilities/PlanetOverview/plugin.js +++ b/content/utilities/PlanetOverview/plugin.js @@ -176,8 +176,9 @@ class Overview { // Setup size for main plugin window container.style.width = "800px"; - // Select from list PLanetType , with text loaded from client + // Select from list PlanetType , with text loaded from client const planetType = document.createElement("select"); + planetType.title = "Select planet type to reveal"; planetType.style.background = "rgb(8,8,8)"; planetType.style.width = "22%"; planetType.style.marginTop = "10px"; @@ -206,6 +207,7 @@ class Overview { // Select from list planeLevel , with text loaded from client const minPlanetLevel = document.createElement("select"); + minPlanetLevel.title = "Select min. lvl to reveal"; minPlanetLevel.style.background = "rgb(8,8,8)"; minPlanetLevel.style.width = "15%"; minPlanetLevel.style.marginTop = "10px"; @@ -259,6 +261,7 @@ class Overview { // Slider for count of total list lines const topSlider = document.createElement("input"); + topSlider.title = "Select count of top revealed planets (default: 10, range: 0-100)"; topSlider.style.marginTop = "13px"; topSlider.style.width = "40%"; topSlider.type = "range"; @@ -290,6 +293,7 @@ class Overview { // Checkbox for my planets ? let MyPlanets = document.createElement("input"); + MyPlanets.title = "If checked reveal only your planet"; MyPlanets.type = "Checkbox"; MyPlanets.checked = true; MyPlanets.id = "myPlanets";