From 4fc68b5717939e39e74df5d5aaf2d7c3569125b4 Mon Sep 17 00:00:00 2001 From: gerlofvanek Date: Sun, 23 Oct 2022 13:59:06 +0200 Subject: [PATCH] ui: Fixes global (GUI v.0.1.1) - Dash icon and Coin icon updates. - Removed withids. - ui: Notification drop-down update. - ui: Global GUI layout and bug fixes/features. - ui: Updated New Offer templates. - ui: Fixed close on messages/error messages. - ui: Start on new settings page. - ui: Removed TV chart. - ui: Drop-down filter with Coin icons. --- basicswap/http_server.py | 4 +- basicswap/static/css/libs/dd.min.css | 179 +++ basicswap/static/images/coins/Bitcoin-20.png | Bin 0 -> 1843 bytes basicswap/static/images/coins/Dash-20.png | Bin 0 -> 1543 bytes basicswap/static/images/coins/Dash.png | Bin 0 -> 13466 bytes basicswap/static/images/coins/Litecoin-20.png | Bin 0 -> 1806 bytes basicswap/static/images/coins/Monero-20.png | Bin 0 -> 1698 bytes basicswap/static/images/coins/Particl-20.png | Bin 0 -> 1736 bytes .../static/images/coins/Particl-Anon-20.png | Bin 0 -> 1736 bytes .../static/images/coins/Particl-Anon.png | Bin 0 -> 7887 bytes .../static/images/coins/Particl-Blind-20.png | Bin 0 -> 1736 bytes .../static/images/coins/Particl-Blind.png | Bin 0 -> 7887 bytes .../static/images/coins/ParticlAnon-20.png | Bin 0 -> 1736 bytes basicswap/static/images/coins/ParticlAnon.png | Bin 0 -> 7887 bytes .../static/images/coins/ParticlBlind-20.png | Bin 0 -> 1736 bytes .../static/images/coins/ParticlBlind.png | Bin 0 -> 7887 bytes basicswap/static/images/coins/Pivx-20.png | Bin 0 -> 1567 bytes .../images/{ => favicon}/favicon-32.png | Bin .../images/logos/basicswap-logo-dark.svg | 92 +- .../static/images/logos/basicswap-logo.svg | 103 +- .../static/images/other/placeholder-line.png | Bin 0 -> 1581 bytes basicswap/static/images/other/send-get.png | Bin 0 -> 4225 bytes basicswap/static/js/libs/dd.min.js | 1015 +++++++++++++++ basicswap/static/js/libs/tv-chart.js | 1099 ----------------- basicswap/templates/404.html | 123 +- .../templates/automation_strategies.html | 123 +- basicswap/templates/automation_strategy.html | 123 +- .../templates/automation_strategy_new.html | 121 +- basicswap/templates/bid.html | 172 +-- basicswap/templates/bid_xmr.html | 171 +-- basicswap/templates/bids.html | 2 +- basicswap/templates/debug.html | 120 +- basicswap/templates/explorers.html | 123 +- basicswap/templates/footer.html | 7 +- basicswap/templates/header.html | 162 +-- basicswap/templates/identity.html | 89 +- basicswap/templates/offer.html | 123 +- basicswap/templates/offer_confirm.html | 216 ++-- basicswap/templates/offer_new_1.html | 104 +- basicswap/templates/offer_new_2.html | 203 ++- basicswap/templates/offers.html | 172 ++- basicswap/templates/rpc.html | 123 +- basicswap/templates/settings.html | 429 +++++-- basicswap/templates/smsgaddresses.html | 139 +-- basicswap/templates/tor.html | 121 +- basicswap/templates/wallet.html | 155 ++- basicswap/templates/wallets.html | 123 +- 47 files changed, 3073 insertions(+), 2663 deletions(-) create mode 100644 basicswap/static/css/libs/dd.min.css create mode 100644 basicswap/static/images/coins/Bitcoin-20.png create mode 100644 basicswap/static/images/coins/Dash-20.png create mode 100644 basicswap/static/images/coins/Dash.png create mode 100644 basicswap/static/images/coins/Litecoin-20.png create mode 100644 basicswap/static/images/coins/Monero-20.png create mode 100644 basicswap/static/images/coins/Particl-20.png create mode 100644 basicswap/static/images/coins/Particl-Anon-20.png create mode 100644 basicswap/static/images/coins/Particl-Anon.png create mode 100644 basicswap/static/images/coins/Particl-Blind-20.png create mode 100644 basicswap/static/images/coins/Particl-Blind.png create mode 100644 basicswap/static/images/coins/ParticlAnon-20.png create mode 100644 basicswap/static/images/coins/ParticlAnon.png create mode 100644 basicswap/static/images/coins/ParticlBlind-20.png create mode 100644 basicswap/static/images/coins/ParticlBlind.png create mode 100644 basicswap/static/images/coins/Pivx-20.png rename basicswap/static/images/{ => favicon}/favicon-32.png (100%) create mode 100644 basicswap/static/images/other/placeholder-line.png create mode 100644 basicswap/static/images/other/send-get.png create mode 100644 basicswap/static/js/libs/dd.min.js delete mode 100644 basicswap/static/js/libs/tv-chart.js diff --git a/basicswap/http_server.py b/basicswap/http_server.py index 370a924..7a1f1ce 100644 --- a/basicswap/http_server.py +++ b/basicswap/http_server.py @@ -130,13 +130,13 @@ class HttpHandler(BaseHTTPRequestHandler): for msg in args_dict['messages']: messages_with_ids.append((self.server.msg_id_counter, msg)) self.server.msg_id_counter += 1 - args_dict['messages_withids'] = messages_with_ids + args_dict['messages'] = messages_with_ids if 'err_messages' in args_dict: err_messages_with_ids = [] for msg in args_dict['err_messages']: err_messages_with_ids.append((self.server.msg_id_counter, msg)) self.server.msg_id_counter += 1 - args_dict['err_messages_withids'] = err_messages_with_ids + args_dict['err_messages'] = err_messages_with_ids if self.server.msg_id_counter >= 0x7FFFFFFF: self.server.msg_id_counter = 0 diff --git a/basicswap/static/css/libs/dd.min.css b/basicswap/static/css/libs/dd.min.css new file mode 100644 index 0000000..b777d73 --- /dev/null +++ b/basicswap/static/css/libs/dd.min.css @@ -0,0 +1,179 @@ +/*! * +/** * * MSDropdown - dd.js * * @author: Marghoob Suleman * * @website: https://www.marghoobsuleman.com/ * * @version: 4.0.2 * * @date: Wed Oct 13 2021 15:19:38 GMT+0530 (India Standard Time) * * msDropdown is free web component: you can redistribute it and/or modify * * it under the terms of the either the MIT License or the Gnu General Public License (GPL) Version 2 * * / */ +/*! */ + .ms-pr { + position: relative; + border-width: 1px; + border-color: #fff +} + .blaat:active { + border-radius: 0.5rem; + border-width: 1px; + border-color: #3b82f6; + outline: none !important +} + .blaat:focus { + border-radius: 0.5rem; + border-width: 1px; + border-color: #3b82f6; + outline: none !important +} + .ms-dd { + border-radius: 0.5rem; + border-width: 1px; + border-color: #d1d5db; + background: none +} + .ms-list-option:active { + border-radius: 0.5rem; + border-width: 1px; + border-color: #3b82f6; + outline: none !important +} + .ms-dd .ms-value-input { + left: 20px; + position: absolute; + top: 10px; + width: 50% +} + .ms-dd .ms-dd-header { + c cursor: pointer; + min-height: 35px; + position: relative; + width: 100%; +} + .ms-dd .ms-dd-header .option-selected { + color: #333f51; + display: block; + overflow: hidden; + padding: 9px 19px 9px 9px; + pointer-events: none; + border-radius: 0.5rem; + border-width: 1px; + border-color: #f9fafb; + background: none +} + .ms-dd .ms-dd-header .ms-list-counter, .ms-dd .ms-dd-header input[type=checkbox] { + display: none +} + .ms-dd .ms-dd-header .ms-header-counter { + color: #0e76a8 +} + .ms-dd .ms-dd-header .ms-filter-box { + box-sizing: border-box; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + padding: 6px 10px; + min-height: 44px +} + .ms-dd .ms-dd-option-image, .ms-dd .ms-dd-selected-img { + margin-right: 5px; + max-width: 40px; + vertical-align: middle +} + .ms-dd .ms-dd-arrow { + height: 0; + margin-top: -3px; + position: absolute; + right: 10px; + top: 50%; + width: 0 +} + .ms-dd .ms-dd-arrow.ms-dd-pointer-down { + display: none +} + .ms-dd .ms-dd-arrow.ms-dd-pointer-up { + display: none +} + .ms-dd .ms-options { + background: #fff; + border: 1px solid #767676; + box-shadow: 0 1px 5px #ddd; + display: none; + list-style: none; + margin: 0; + overflow: auto; + padding: 0; + position: absolute; + width: 100%; + z-index: 9999 +} + .ms-dd .ms-list-option, .ms-dd .ms-optgroup ul .ms-list-option { + align-items: center; + color: #333; + cursor: pointer; + display: flex; + justify-content: flex-start; + overflow: hidden; + padding: 10px; + position: relative; + text-decoration: none +} + .ms-dd .ms-list-option input[type=checkbox], .ms-dd .ms-optgroup ul .ms-list-option input[type=checkbox] { + margin-right: 5px; + vertical-align: middle +} + .ms-dd .ms-list-option:last-child, .ms-dd .ms-optgroup ul .ms-list-option:last-child { + border-bottom: none +} + .ms-dd .ms-list-option:hover, .ms-dd .ms-optgroup ul .ms-list-option:hover { + background: #e0e0e6; + color: #000 +} + .ms-dd .ms-list-option.option-selected, .ms-dd .ms-optgroup ul .ms-list-option.option-selected { + background: #f9fafb +} + .ms-dd .ms-list-option.ico-align-right .ms-dd-option-image, .ms-dd .ms-list-option.ico-align-right .ms-dd-selected-img, .ms-dd .ms-optgroup ul .ms-list-option.ico-align-right .ms-dd-option-image, .ms-dd .ms-optgroup ul .ms-list-option.ico-align-right .ms-dd-selected-img { + order: 2 +} + .ms-dd .ms-list-option.disabled, .ms-dd .ms-list-option:disabled, .ms-dd .ms-optgroup ul .ms-list-option.disabled, .ms-dd .ms-optgroup ul .ms-list-option:disabled { + cursor: default; + opacity: .4 +} + .ms-dd .ms-list-option .ms-dd-desc, .ms-dd .ms-optgroup ul .ms-list-option .ms-dd-desc { + color: #aaa; + display: block; + line-height: 1.5em; + overflow: hidden; + text-shadow: 0 1px .5px #fff +} + .ms-dd .ms-header-middle-content, .ms-dd .ms-middle { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-size: 0.875rem; + min-width: 100px +} + .ms-dd.disabled, .ms-dd:disabled { + cursor: default; + opacity: .4; + pointer-events: none +} + .ms-dd .ms-optgroup-padding { + padding: 10px 10px 0 +} + .ms-dd .ms-optgroup { + display: block +} + .ms-dd .ms-optgroup:hover { + background: #fff; + color: #000 +} + .ms-dd .ms-optgroup ul { + margin: 0; + padding: 0 +} + .ms-dd .ms-optgroup ul .ms-list-option { + padding-left: 20px +} + .ms-dd .ms-optgroup ul:last-child { +} + .ms-dd .ms-dd-option-content { + width: 100% +} + .ms-value-input { + display:none; +} diff --git a/basicswap/static/images/coins/Bitcoin-20.png b/basicswap/static/images/coins/Bitcoin-20.png new file mode 100644 index 0000000000000000000000000000000000000000..cda77ca137cf81ddc2ecd065fc768c54392f95ee GIT binary patch literal 1843 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 literal 0 HcmV?d00001 diff --git a/basicswap/static/images/coins/Dash.png b/basicswap/static/images/coins/Dash.png new file mode 100644 index 0000000000000000000000000000000000000000..fc961553ab9fd874e151ab82316b8aa802c0d3ed GIT binary patch literal 13466 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%0D2t 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 Ag8%>k literal 0 HcmV?d00001 diff --git a/basicswap/static/images/coins/Monero-20.png b/basicswap/static/images/coins/Monero-20.png new file mode 100644 index 0000000000000000000000000000000000000000..00c2d7193faf837bedc52abc68a2e2e6603b5b0e GIT binary patch literal 1698 zcmaJ?X;2eq7!HAO1Q11LK!m!pPzTgp8wkmksDVugN{|WRPzP&{1u~FqOjZ-HDvBIh z(AEM44T{zSDu>{Kf(Ph;L$Tlmj;#&|ok0b`DyV3|ZV+GJxUU&Fa-*PYvf6&6qT#e zHngF^B$D+)wJaWwmqfryOhcDjFm#hfN3cnx;AJMAT$zI6fC5cYYx&?v;}sB4tN37C zpoA&Wg`&x7ak?IjPLGr+(^Hf@6}W6E5Nv`82O1QY113$X)&QIM;FMpO*jvmD5SW7C zDSYsQsCY>f5Q^zhAczjpluRZQ2;$LM3QnLrh^Gix0zga%VlX)j7Mlh^Fq1{x!1M(Y z0rjdxSc-_I!x1Mwn2h5(n87d_jdUZMj_H#aEFO=?U_uNCq7ew1Ax(?RO*E~+XT}49 z8kBmq4p(DZz~WJ^z&7H1kP!PJ3yn@9`RG_{n64F3HHJy9W3cEihvCyWDy@K z;Bke*kWdZ+@el|K3;?IOs?Q`o&E@?smqCbOSUUTkPS2Q#@v&?_jxKTdIQ*!Vn0P%g z+D{-a;;XQB4Mzkr(;tlrJmi7Yf~M{1bN-4(ANlZ(erXaJ_N(p|HX(XQJ~G zd%)adHjLazxXQ~po4W7u0SD3~koBU>>_^GF@O$~S@-<#*)Wb)<*fvNV6cu<%IU z#qf*-3b2>kvDKA%s!4yqWsB{0L49uj zc$1>QJ7(62=a*Myyzg=nTb&90dbBuZb;c|!8pVC|$OhLp+sJnwuO(~NUmK`gv)#6| znZ}+-F=;v~&nuLD#~uo&sTYp6H(w*S>09YF>MbnV#yry7%_twxNhgu-58n z(w^qi&s*uE=Nm32*pF`83m@3jc{XI#(GI_av%Y<2$cDN%hq=wduEA%`{QOYCh-CC> zYwx|km@N?)BKBh|6lnp~ar1HRp?COGc0;7pvhn zQd$d~inLed>Y_QJW|x6R+3i>^Xf%JCPiSF0DrMcg7c^rz)}Rg}tB zi0tQdZnafrQ+%AQ+nXqUo|8rRvjviZ%=~iZzDjb9o6BH)QRb7uX!DlhuA%ujp zwD~Wd2s^%-lzPjOC|&ywHb_N%(G0sobku`t`(tGV+R|Lmc-L@0-bQ|MIK??P4t(3? zxtXfCb>a2)D8JDh@%^8`!;U^p1LS7MzfJ!HE1m3DPn3IbR`@6H?{=r=7=PXEdTb5s z7~tj9R_D}E-4pGG+O4yT%~Vjnjfv5SN(+30?TRyMm%pM7RP8yn*8{i7N!pO=C9GFR rmMvtS4og1Nv0UGG?=7RZhGb2;v(>+Q@jLQL%U>g07>QJetl#l30LPN5 literal 0 HcmV?d00001 diff --git a/basicswap/static/images/coins/Particl-20.png b/basicswap/static/images/coins/Particl-20.png new file mode 100644 index 0000000000000000000000000000000000000000..d412b84224008a2967b8a1cddabf69b2a53253bc GIT binary patch literal 1736 zcmaJ?X;2eq7!H?mqktC$W(h(?$h8o1K&&|>auh;<;8Z2YLQ>dlOcp~>R21-_OsP_= zj#3ms@N7W^t;)!u1rgE8p_D3h@GOc#1*AYX2-+Xko!$Mu@15s)-{(Dcc4uV73Oj2T zYa9+|Ck)|S4qynC0%>rHTE|Rd;ivpEvAxku!UIzfG?|5e zCrT0?32+fD1ki{eK~5%<0UCoykp)tvG=?m|4*-9vvKM~O;kthrXgG2^NAV|Ov1f4;RO4A5xo#%`P9;B0N zRT@-1NG8FsF|{eQ4i!NkWPB8@ z6B{%TNd)PTRIMCqNuuWr87tqX0~vvs8YT~sr^1jL74lek%tBPC6igmnz@ak){!}o4 zMxpR|3_6{{<OG@(k=O*ULY(|Rvoo{nX9WI?wI>f%6!*7dr z9&*fdVDZ?|`H^kji-+t7X;pgFQjR2PQW? zo~#`_sM{y9o~#mP_$>7q?HsY@cu5VfN2$H;y)k7EUeFNNI$MHyseRkH<)MV;E?lqe z!rZnD<+I$dy}{pk$j!yaimt>;3LV@{6rzSR<$-hMgWUFj37qgQ2-U=2`b@cCwlDDJ zwAsagD~KeQEFeC`s!)MIr>-pBe2TFyW6ilsEhc__W^5z<@(9l61Sc$H%qG4 z??372G|-+sP!zPIrYT|d^At#@+;p3WLZscr4qU6s*y81|2>IPvF7b|gez zEst=@?EE}G^`hg?$p_O9Thfn*dmXR}ZTIN5@$vdozg9HQyR3&{d$WwsdzN)K$7(Q& zCa4w^yIm>)r>5WWMOXpf>(vh?trn6^mY0w9{q)E1L)!PJw)efw9)Nus zC2IS|kX>h$vc9F2u}<1fR^{9h*TvRRWLw3yEux)%cRD@HY4bhxq5G088j3b%&2uyJ91HO%9x?Ad zDz3X$5VhBZ7RtJOf~UG*QP_I*=AgqZ{TYk+Y^gRkYZRW7L$STTJN}4A_}AWkfA7;! zZ)^|S<@xB>kTGSquldSH%MoD{!?biTzq-V=a?3verRrndk9 literal 0 HcmV?d00001 diff --git a/basicswap/static/images/coins/Particl-Anon-20.png b/basicswap/static/images/coins/Particl-Anon-20.png new file mode 100644 index 0000000000000000000000000000000000000000..d412b84224008a2967b8a1cddabf69b2a53253bc GIT binary patch literal 1736 zcmaJ?X;2eq7!H?mqktC$W(h(?$h8o1K&&|>auh;<;8Z2YLQ>dlOcp~>R21-_OsP_= zj#3ms@N7W^t;)!u1rgE8p_D3h@GOc#1*AYX2-+Xko!$Mu@15s)-{(Dcc4uV73Oj2T zYa9+|Ck)|S4qynC0%>rHTE|Rd;ivpEvAxku!UIzfG?|5e zCrT0?32+fD1ki{eK~5%<0UCoykp)tvG=?m|4*-9vvKM~O;kthrXgG2^NAV|Ov1f4;RO4A5xo#%`P9;B0N zRT@-1NG8FsF|{eQ4i!NkWPB8@ z6B{%TNd)PTRIMCqNuuWr87tqX0~vvs8YT~sr^1jL74lek%tBPC6igmnz@ak){!}o4 zMxpR|3_6{{<OG@(k=O*ULY(|Rvoo{nX9WI?wI>f%6!*7dr z9&*fdVDZ?|`H^kji-+t7X;pgFQjR2PQW? zo~#`_sM{y9o~#mP_$>7q?HsY@cu5VfN2$H;y)k7EUeFNNI$MHyseRkH<)MV;E?lqe z!rZnD<+I$dy}{pk$j!yaimt>;3LV@{6rzSR<$-hMgWUFj37qgQ2-U=2`b@cCwlDDJ zwAsagD~KeQEFeC`s!)MIr>-pBe2TFyW6ilsEhc__W^5z<@(9l61Sc$H%qG4 z??372G|-+sP!zPIrYT|d^At#@+;p3WLZscr4qU6s*y81|2>IPvF7b|gez zEst=@?EE}G^`hg?$p_O9Thfn*dmXR}ZTIN5@$vdozg9HQyR3&{d$WwsdzN)K$7(Q& zCa4w^yIm>)r>5WWMOXpf>(vh?trn6^mY0w9{q)E1L)!PJw)efw9)Nus zC2IS|kX>h$vc9F2u}<1fR^{9h*TvRRWLw3yEux)%cRD@HY4bhxq5G088j3b%&2uyJ91HO%9x?Ad zDz3X$5VhBZ7RtJOf~UG*QP_I*=AgqZ{TYk+Y^gRkYZRW7L$STTJN}4A_}AWkfA7;! zZ)^|S<@xB>kTGSquldSH%MoD{!?biTzq-V=a?3verRrndk9 literal 0 HcmV?d00001 diff --git a/basicswap/static/images/coins/Particl-Anon.png b/basicswap/static/images/coins/Particl-Anon.png new file mode 100644 index 0000000000000000000000000000000000000000..f2947fea601433607c2f17b4a5126886dcb1844a GIT binary patch literal 7887 zcmaJ_Wmr^QyB<2EyM$pV31R3G7&@dGI)|ZQ7=$4Pq(ML$1*BU#R7yfXrIGHIltxn0 zPJ42nq^7UQTy889)d}&wu%iT+Zz1rh|>)K9AlyV zf>3pGw-~iZ04Bg=il3dL_xtbg7F|wb05BP_3ZmG4fRUsR=;Md>Q33ks0Cff*><9s` z0RT7ja|IBff*7!WrY?&Em@R*`NDG)PWGcr8#A5(59;vcpLRtYfhN1d=n4O;i`Be}Q zKXzvgMu=&nkSbWFma<;DE!npdGv(EBjmcJ90HP=;F`U`vw1F zz_Uz9Ms;UV_}w#@yHAaN!uBAxf}s25Hrst~Wbj=A_t=`qI}1MQmp@Hnnsq^1z37kn z$x5vKscRHF!9qV-((VXe`4R)FUg&gcH{vx6x^)H}VqnISn2h@XAVH^(;}{+!1IQdj zgwU4&z^jg{L=j~j8!U{+%{nrG>lK1k$???sfnb76a#mnsq{eIeV)abC|)hQ(S%Zvz2<6WTH~VdC1Dl zn#*CuMM7!)N{yYQKV?Ikkd-4zNd1AjtJ;Fv<6?ti*>N)GY)#I+Bt-x62LAhyDqwnY zQxa*CPRdRHmyISWsqW}CO@cyp{o>aY8lv`co7g3JLJArA6?)&wb0_gDqNVc8)DihU zx&j7K<&+}cnH=A;XcPyF9~VuHW;#1MUpfiwpjrr)!kLxRN7Kh$f8gzG?}VTE5)r>3 z4)0a7eMIj{A3$G9*F-Onq4^ePB0ZxI3Z4;S%y4`|`UYue!gIm%oH}`cB2_BYC^aZ` zy8>$HWhgg=u6O{gG$gIGG75aFV)#LKy_{f@rgEzMpl@TMO6cvhMoA^V>u3e%oOSbKb~Z?tU9-(T%(`rzC!`UnJQ8Yp^I zI8-?#JLGIV`-VZ%^KSK6axPnAn01(VIN&kXW4Xugrd_HXs)MS<=l$nD&D$P$9?%@@ z%^!JtL*Y`Lw$UURkKz7`w5a$*{->;PjhVx zxABoB%Guo-v0|~kY4d5%2XWH0(k`ps7|9x;jn0i`s??_~_W1S?)5dPPjK*0+SyEYp zjb+tY)n9$G5Gzz`REgZ<+~)@F^Md=g`-J^7qAPC3&h39!yzV$httw1>F1s( z?;#&IkG8$y?;>Byzm|X5F?M8hEbz)X6{UUqG-;3`-6x&a08#p~)IHCCFm;pRuw}eq z;=CxUHEXeY4l%hjB-0&Od85Uj#n^B8MdnEU?D*1T?b*&YH zW}Oe&oVn9rMBl+~1Wyzv9;X#ofJl~FfrxO^Lv6-*4IbjuWS%BZcrk*%LKcL4d!@NE)QBIws_GWq%;HR+ zL3KFA(`DZ!>ijtk+AZFw1>{pqXbuY|qw@l&ejZA173SP6hSoo24YiD>c*Y}C3sAF?z>!+{FA0(3f?rS4h}DNiD@B6XBM6~-6py=!XLc#^V}W0ZO!u_PU+c@{#RS%SdT@xoTwY+1z8v*V(VLi}Z<|)9QI=z)g>ubR2kjUlDJh zw-5u2uc8JnH`uPcP8X=%A~nZ~>h)`MNoX_$%6R?E>CF9_)!Nm}CWTiV?su=)9)!_6 zZ%?YzZLa$;+w5oha~0H~+)Be1Ye4JEFKDUXV&~_4JRUgcH26O4PIt{j-|)l*y?BzK zA3k1EqR1O&ERtIOx_{8U=FIFPoEnyDXL#h2K4oqc%tM=MUFA_#R`aV)rFm=3SlfE) z`8gUfKfkQeG;pw|wpYC8UUg~OQLEAJB0n|y;+VLa@n`%dqcuWf8CBr#a-Q(5{@cJe zEK!)~f%#Bl)xt@ESkZ-lPO#;m(Oq?A)2BJk`RR@&-+)t+@Q2jW%SW&G+ZuTNj9uH6 z1JB*Z55txc8EhF_I<|tAnpJ&ux^oi)N&@gMl#ljYP)N7M+K!I*1PFbxcxE*zkIk$Q z zCw9ZHzL&l)r5qUuGWw0)^Qzolxm&w=I%0A=d;H)kcBG>QU4H6$R9Rjt)yvk)(l(5i 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 literal 0 HcmV?d00001 diff --git a/basicswap/static/images/coins/Particl-Blind.png b/basicswap/static/images/coins/Particl-Blind.png new file mode 100644 index 0000000000000000000000000000000000000000..f2947fea601433607c2f17b4a5126886dcb1844a GIT binary patch literal 7887 zcmaJ_Wmr^QyB<2EyM$pV31R3G7&@dGI)|ZQ7=$4Pq(ML$1*BU#R7yfXrIGHIltxn0 zPJ42nq^7UQTy889)d}&wu%iT+Zz1rh|>)K9AlyV zf>3pGw-~iZ04Bg=il3dL_xtbg7F|wb05BP_3ZmG4fRUsR=;Md>Q33ks0Cff*><9s` z0RT7ja|IBff*7!WrY?&Em@R*`NDG)PWGcr8#A5(59;vcpLRtYfhN1d=n4O;i`Be}Q zKXzvgMu=&nkSbWFma<;DE!npdGv(EBjmcJ90HP=;F`U`vw1F zz_Uz9Ms;UV_}w#@yHAaN!uBAxf}s25Hrst~Wbj=A_t=`qI}1MQmp@Hnnsq^1z37kn z$x5vKscRHF!9qV-((VXe`4R)FUg&gcH{vx6x^)H}VqnISn2h@XAVH^(;}{+!1IQdj zgwU4&z^jg{L=j~j8!U{+%{nrG>lK1k$???sfnb76a#mnsq{eIeV)abC|)hQ(S%Zvz2<6WTH~VdC1Dl zn#*CuMM7!)N{yYQKV?Ikkd-4zNd1AjtJ;Fv<6?ti*>N)GY)#I+Bt-x62LAhyDqwnY zQxa*CPRdRHmyISWsqW}CO@cyp{o>aY8lv`co7g3JLJArA6?)&wb0_gDqNVc8)DihU zx&j7K<&+}cnH=A;XcPyF9~VuHW;#1MUpfiwpjrr)!kLxRN7Kh$f8gzG?}VTE5)r>3 z4)0a7eMIj{A3$G9*F-Onq4^ePB0ZxI3Z4;S%y4`|`UYue!gIm%oH}`cB2_BYC^aZ` zy8>$HWhgg=u6O{gG$gIGG75aFV)#LKy_{f@rgEzMpl@TMO6cvhMoA^V>u3e%oOSbKb~Z?tU9-(T%(`rzC!`UnJQ8Yp^I zI8-?#JLGIV`-VZ%^KSK6axPnAn01(VIN&kXW4Xugrd_HXs)MS<=l$nD&D$P$9?%@@ z%^!JtL*Y`Lw$UURkKz7`w5a$*{->;PjhVx zxABoB%Guo-v0|~kY4d5%2XWH0(k`ps7|9x;jn0i`s??_~_W1S?)5dPPjK*0+SyEYp zjb+tY)n9$G5Gzz`REgZ<+~)@F^Md=g`-J^7qAPC3&h39!yzV$httw1>F1s( z?;#&IkG8$y?;>Byzm|X5F?M8hEbz)X6{UUqG-;3`-6x&a08#p~)IHCCFm;pRuw}eq z;=CxUHEXeY4l%hjB-0&Od85Uj#n^B8MdnEU?D*1T?b*&YH zW}Oe&oVn9rMBl+~1Wyzv9;X#ofJl~FfrxO^Lv6-*4IbjuWS%BZcrk*%LKcL4d!@NE)QBIws_GWq%;HR+ zL3KFA(`DZ!>ijtk+AZFw1>{pqXbuY|qw@l&ejZA173SP6hSoo24YiD>c*Y}C3sAF?z>!+{FA0(3f?rS4h}DNiD@B6XBM6~-6py=!XLc#^V}W0ZO!u_PU+c@{#RS%SdT@xoTwY+1z8v*V(VLi}Z<|)9QI=z)g>ubR2kjUlDJh zw-5u2uc8JnH`uPcP8X=%A~nZ~>h)`MNoX_$%6R?E>CF9_)!Nm}CWTiV?su=)9)!_6 zZ%?YzZLa$;+w5oha~0H~+)Be1Ye4JEFKDUXV&~_4JRUgcH26O4PIt{j-|)l*y?BzK zA3k1EqR1O&ERtIOx_{8U=FIFPoEnyDXL#h2K4oqc%tM=MUFA_#R`aV)rFm=3SlfE) z`8gUfKfkQeG;pw|wpYC8UUg~OQLEAJB0n|y;+VLa@n`%dqcuWf8CBr#a-Q(5{@cJe zEK!)~f%#Bl)xt@ESkZ-lPO#;m(Oq?A)2BJk`RR@&-+)t+@Q2jW%SW&G+ZuTNj9uH6 z1JB*Z55txc8EhF_I<|tAnpJ&ux^oi)N&@gMl#ljYP)N7M+K!I*1PFbxcxE*zkIk$Q z zCw9ZHzL&l)r5qUuGWw0)^Qzolxm&w=I%0A=d;H)kcBG>QU4H6$R9Rjt)yvk)(l(5i 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 literal 0 HcmV?d00001 diff --git a/basicswap/static/images/coins/ParticlAnon.png b/basicswap/static/images/coins/ParticlAnon.png new file mode 100644 index 0000000000000000000000000000000000000000..f2947fea601433607c2f17b4a5126886dcb1844a GIT binary patch literal 7887 zcmaJ_Wmr^QyB<2EyM$pV31R3G7&@dGI)|ZQ7=$4Pq(ML$1*BU#R7yfXrIGHIltxn0 zPJ42nq^7UQTy889)d}&wu%iT+Zz1rh|>)K9AlyV zf>3pGw-~iZ04Bg=il3dL_xtbg7F|wb05BP_3ZmG4fRUsR=;Md>Q33ks0Cff*><9s` z0RT7ja|IBff*7!WrY?&Em@R*`NDG)PWGcr8#A5(59;vcpLRtYfhN1d=n4O;i`Be}Q zKXzvgMu=&nkSbWFma<;DE!npdGv(EBjmcJ90HP=;F`U`vw1F zz_Uz9Ms;UV_}w#@yHAaN!uBAxf}s25Hrst~Wbj=A_t=`qI}1MQmp@Hnnsq^1z37kn z$x5vKscRHF!9qV-((VXe`4R)FUg&gcH{vx6x^)H}VqnISn2h@XAVH^(;}{+!1IQdj zgwU4&z^jg{L=j~j8!U{+%{nrG>lK1k$???sfnb76a#mnsq{eIeV)abC|)hQ(S%Zvz2<6WTH~VdC1Dl zn#*CuMM7!)N{yYQKV?Ikkd-4zNd1AjtJ;Fv<6?ti*>N)GY)#I+Bt-x62LAhyDqwnY zQxa*CPRdRHmyISWsqW}CO@cyp{o>aY8lv`co7g3JLJArA6?)&wb0_gDqNVc8)DihU zx&j7K<&+}cnH=A;XcPyF9~VuHW;#1MUpfiwpjrr)!kLxRN7Kh$f8gzG?}VTE5)r>3 z4)0a7eMIj{A3$G9*F-Onq4^ePB0ZxI3Z4;S%y4`|`UYue!gIm%oH}`cB2_BYC^aZ` zy8>$HWhgg=u6O{gG$gIGG75aFV)#LKy_{f@rgEzMpl@TMO6cvhMoA^V>u3e%oOSbKb~Z?tU9-(T%(`rzC!`UnJQ8Yp^I zI8-?#JLGIV`-VZ%^KSK6axPnAn01(VIN&kXW4Xugrd_HXs)MS<=l$nD&D$P$9?%@@ z%^!JtL*Y`Lw$UURkKz7`w5a$*{->;PjhVx zxABoB%Guo-v0|~kY4d5%2XWH0(k`ps7|9x;jn0i`s??_~_W1S?)5dPPjK*0+SyEYp zjb+tY)n9$G5Gzz`REgZ<+~)@F^Md=g`-J^7qAPC3&h39!yzV$httw1>F1s( z?;#&IkG8$y?;>Byzm|X5F?M8hEbz)X6{UUqG-;3`-6x&a08#p~)IHCCFm;pRuw}eq z;=CxUHEXeY4l%hjB-0&Od85Uj#n^B8MdnEU?D*1T?b*&YH zW}Oe&oVn9rMBl+~1Wyzv9;X#ofJl~FfrxO^Lv6-*4IbjuWS%BZcrk*%LKcL4d!@NE)QBIws_GWq%;HR+ zL3KFA(`DZ!>ijtk+AZFw1>{pqXbuY|qw@l&ejZA173SP6hSoo24YiD>c*Y}C3sAF?z>!+{FA0(3f?rS4h}DNiD@B6XBM6~-6py=!XLc#^V}W0ZO!u_PU+c@{#RS%SdT@xoTwY+1z8v*V(VLi}Z<|)9QI=z)g>ubR2kjUlDJh zw-5u2uc8JnH`uPcP8X=%A~nZ~>h)`MNoX_$%6R?E>CF9_)!Nm}CWTiV?su=)9)!_6 zZ%?YzZLa$;+w5oha~0H~+)Be1Ye4JEFKDUXV&~_4JRUgcH26O4PIt{j-|)l*y?BzK zA3k1EqR1O&ERtIOx_{8U=FIFPoEnyDXL#h2K4oqc%tM=MUFA_#R`aV)rFm=3SlfE) z`8gUfKfkQeG;pw|wpYC8UUg~OQLEAJB0n|y;+VLa@n`%dqcuWf8CBr#a-Q(5{@cJe zEK!)~f%#Bl)xt@ESkZ-lPO#;m(Oq?A)2BJk`RR@&-+)t+@Q2jW%SW&G+ZuTNj9uH6 z1JB*Z55txc8EhF_I<|tAnpJ&ux^oi)N&@gMl#ljYP)N7M+K!I*1PFbxcxE*zkIk$Q z zCw9ZHzL&l)r5qUuGWw0)^Qzolxm&w=I%0A=d;H)kcBG>QU4H6$R9Rjt)yvk)(l(5i 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 literal 0 HcmV?d00001 diff --git a/basicswap/static/images/coins/ParticlBlind.png b/basicswap/static/images/coins/ParticlBlind.png new file mode 100644 index 0000000000000000000000000000000000000000..f2947fea601433607c2f17b4a5126886dcb1844a GIT binary patch literal 7887 zcmaJ_Wmr^QyB<2EyM$pV31R3G7&@dGI)|ZQ7=$4Pq(ML$1*BU#R7yfXrIGHIltxn0 zPJ42nq^7UQTy889)d}&wu%iT+Zz1rh|>)K9AlyV zf>3pGw-~iZ04Bg=il3dL_xtbg7F|wb05BP_3ZmG4fRUsR=;Md>Q33ks0Cff*><9s` z0RT7ja|IBff*7!WrY?&Em@R*`NDG)PWGcr8#A5(59;vcpLRtYfhN1d=n4O;i`Be}Q zKXzvgMu=&nkSbWFma<;DE!npdGv(EBjmcJ90HP=;F`U`vw1F zz_Uz9Ms;UV_}w#@yHAaN!uBAxf}s25Hrst~Wbj=A_t=`qI}1MQmp@Hnnsq^1z37kn z$x5vKscRHF!9qV-((VXe`4R)FUg&gcH{vx6x^)H}VqnISn2h@XAVH^(;}{+!1IQdj zgwU4&z^jg{L=j~j8!U{+%{nrG>lK1k$???sfnb76a#mnsq{eIeV)abC|)hQ(S%Zvz2<6WTH~VdC1Dl zn#*CuMM7!)N{yYQKV?Ikkd-4zNd1AjtJ;Fv<6?ti*>N)GY)#I+Bt-x62LAhyDqwnY zQxa*CPRdRHmyISWsqW}CO@cyp{o>aY8lv`co7g3JLJArA6?)&wb0_gDqNVc8)DihU zx&j7K<&+}cnH=A;XcPyF9~VuHW;#1MUpfiwpjrr)!kLxRN7Kh$f8gzG?}VTE5)r>3 z4)0a7eMIj{A3$G9*F-Onq4^ePB0ZxI3Z4;S%y4`|`UYue!gIm%oH}`cB2_BYC^aZ` zy8>$HWhgg=u6O{gG$gIGG75aFV)#LKy_{f@rgEzMpl@TMO6cvhMoA^V>u3e%oOSbKb~Z?tU9-(T%(`rzC!`UnJQ8Yp^I zI8-?#JLGIV`-VZ%^KSK6axPnAn01(VIN&kXW4Xugrd_HXs)MS<=l$nD&D$P$9?%@@ z%^!JtL*Y`Lw$UURkKz7`w5a$*{->;PjhVx zxABoB%Guo-v0|~kY4d5%2XWH0(k`ps7|9x;jn0i`s??_~_W1S?)5dPPjK*0+SyEYp zjb+tY)n9$G5Gzz`REgZ<+~)@F^Md=g`-J^7qAPC3&h39!yzV$httw1>F1s( z?;#&IkG8$y?;>Byzm|X5F?M8hEbz)X6{UUqG-;3`-6x&a08#p~)IHCCFm;pRuw}eq z;=CxUHEXeY4l%hjB-0&Od85Uj#n^B8MdnEU?D*1T?b*&YH zW}Oe&oVn9rMBl+~1Wyzv9;X#ofJl~FfrxO^Lv6-*4IbjuWS%BZcrk*%LKcL4d!@NE)QBIws_GWq%;HR+ zL3KFA(`DZ!>ijtk+AZFw1>{pqXbuY|qw@l&ejZA173SP6hSoo24YiD>c*Y}C3sAF?z>!+{FA0(3f?rS4h}DNiD@B6XBM6~-6py=!XLc#^V}W0ZO!u_PU+c@{#RS%SdT@xoTwY+1z8v*V(VLi}Z<|)9QI=z)g>ubR2kjUlDJh zw-5u2uc8JnH`uPcP8X=%A~nZ~>h)`MNoX_$%6R?E>CF9_)!Nm}CWTiV?su=)9)!_6 zZ%?YzZLa$;+w5oha~0H~+)Be1Ye4JEFKDUXV&~_4JRUgcH26O4PIt{j-|)l*y?BzK zA3k1EqR1O&ERtIOx_{8U=FIFPoEnyDXL#h2K4oqc%tM=MUFA_#R`aV)rFm=3SlfE) z`8gUfKfkQeG;pw|wpYC8UUg~OQLEAJB0n|y;+VLa@n`%dqcuWf8CBr#a-Q(5{@cJe zEK!)~f%#Bl)xt@ESkZ-lPO#;m(Oq?A)2BJk`RR@&-+)t+@Q2jW%SW&G+ZuTNj9uH6 z1JB*Z55txc8EhF_I<|tAnpJ&ux^oi)N&@gMl#ljYP)N7M+K!I*1PFbxcxE*zkIk$Q z zCw9ZHzL&l)r5qUuGWw0)^Qzolxm&w=I%0A=d;H)kcBG>QU4H6$R9Rjt)yvk)(l(5i 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 Lu6{1-oD!M - - - + + + + + + + + + + + diff --git a/basicswap/static/images/logos/basicswap-logo.svg b/basicswap/static/images/logos/basicswap-logo.svg index e16e430..4a9f66d 100644 --- a/basicswap/static/images/logos/basicswap-logo.svg +++ b/basicswap/static/images/logos/basicswap-logo.svg @@ -1,47 +1,68 @@ - + - - - + + + + + + + + + + + + + diff --git a/basicswap/static/images/other/placeholder-line.png b/basicswap/static/images/other/placeholder-line.png new file mode 100644 index 0000000000000000000000000000000000000000..182ea8b64ce6df52c8d413e69d18e40646527c9a GIT binary patch literal 1581 zcmbVMJ#X7a7-nEJNK<6;Qgk{nOM;d>^7v&P!WuFu#sVtWa0JBd)YI`K5f*tYNn5g) z0^PcHYmuK2WX+Hv0lIg{&*;*nL$~y$DAEa_v_T1wJRYCt{e15I>GU8uKIZZM3;ma96}rdJ;w(XYl2#^Qy`z#>?eWUs}2>X4vfYde|VC5DgGo zd6`vgrDf&a)Ii&e$)EUmoO{Jh_c*SyT>IP2JIN%d< z^1m(;P%K;g?-*!M2v*5rEajq=>2X^HL@eDx_Z}x%ESKf|wbO)rWRqQ{(F{e{mqzt5!q--W|p3PL$ zb%q9VAq#K}(OI?VH$4(Xav|cVkSSWLmL^*&Z+OIstiUuqGpxJTi=2bd>JJ8i8<5b0 ztQu~-rQ;hec`p}t!5k(fRQz&trXPv#H>*Vg_Tf-a#_RLxt0jY&Yp3<*wtzoODh+=* z7htmO*p@aluu@K|B`ZXK29n;Y2A7jEi*o$~tMTT`fo z!)U9Q-B5*(ZY+xoOcyY8zYTtW3Ilt081~1ve&K(=d9%N>yR-9Kj+7sM-Z^^x{8ds9 O^x@zre0K2NkN*IWOXp_* literal 0 HcmV?d00001 diff --git a/basicswap/static/images/other/send-get.png b/basicswap/static/images/other/send-get.png new file mode 100644 index 0000000000000000000000000000000000000000..231009efbad09a5bfd671c7aeb793f535796cf5e GIT binary patch literal 4225 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 bW;ivn>Rm=g#qBiJp9EfRzKlxOsEmIAWW}{& literal 0 HcmV?d00001 diff --git a/basicswap/static/js/libs/dd.min.js b/basicswap/static/js/libs/dd.min.js new file mode 100644 index 0000000..7a4892c --- /dev/null +++ b/basicswap/static/js/libs/dd.min.js @@ -0,0 +1,1015 @@ +/*! For license information please see dd.min.js.LICENSE.txt */ +(() => { + "use strict"; + let e = null; + class t { + constructor(e, t) { + this.ele = e, this._settings = { + byJson: { + data: null, + selectedIndex: 0, + name: null, + size: 0, + multiple: !1, + width: 250 + }, + mainCss: "ms-dd", + rowHeight: null, + visibleRows: null, + showIcon: !0, + zIndex: 9999, + event: "click", + style: "", + childWidth: null, + childHeight: null, + enableCheckbox: !1, + checkboxNameSuffix: "_mscheck", + showPlusItemCounter: !0, + enableAutoFilter: !1, + showFilterAlways: !1, + showListCounter: !1, + imagePosition: "left", + errorMessage: "Please select an item from this list", + on: { + create: null, + open: null, + close: null, + add: null, + remove: null, + change: null, + blur: null, + click: null, + dblclick: null, + mousemove: null, + mouseover: null, + mouseout: null, + focus: null, + mousedown: null, + mouseup: null + }, + ...t + }, this._css = {}, this._onDocumentClick = null, this._onDocumentKeyDown = null, this._onDocumentKeyUp = null, this._isOpen = !1, this._DOWN_ARROW = 40, this._UP_ARROW = 38, this._LEFT_ARROW = 37, this._RIGHT_ARROW = 39, this._ESCAPE = 27, this._ENTER = 13, this._ALPHABETS_START = 47, this._SHIFT = 16, this._CONTROL = 17, this._MAC_CONTROL = 91, this._BACKSPACE = 8, this._DELETE = 46, this._SPACE = 32, this._shiftHolded = !1, this._controlHolded = !1, this._isFirstTime = !0, this._cacheEle = {}, this._isMouseDown = !1, this._itemsArr = [], this._css = { + dd: this._settings.mainCss + " ms-pr blaat", + wrapperDisabled: "disabled", + headerA: "ms-list-option option-selected ", + header: "ms-dd-header ", + headerMiddleContent: "ms-header-middle-content ", + arrow: "ms-dd-arrow", + arrowDown: "ms-dd-pointer-down", + arrowUp: "ms-dd-pointer-up", + headerCounter: "ms-header-counter", + listOfItems: "ms-options ", + itemContent: "ms-dd-option-content", + item: "ms-list-option ", + itemSpan: "ms-middle", + itemSpanOpt: "ms-optgroup-padding", + itemLabel: "ms-dd-label", + itemImage: "ms-dd-option-image", + itemDesc: "ms-dd-desc", + itemSelected: "option-selected", + itemDisabled: "disabled", + itemEnabled: "enabled", + optgroup: "ms-optgroup", + listCounter: "ms-list-counter", + valueInput: "ms-value-input", + checkbox: "ms-checkbox", + imageRight: "ico-align-right" + }, this._wrapper = {}, this._createByJson(), this._checkDataSettings(), this._isList = this.ele.size > 1, this._isMultiple = this.ele.multiple, this._enableCheckbox = this._settings.enableCheckbox, (this._isList || "true" === this._enableCheckbox.toString()) && (this._isMultiple = this.ele.multiple = !0), this._isFilterApplied = !1, this._nexPrevCounter = 0, this._init() + } + _init() { + this._makeLayout(), this._updateUiAndValueByIndex(this.selectedIndex), this.ele.size > 1 && (this._makeUiAsList(!0, this.ele.size), this._scrollToItem()), null !== this._settings.childWidth && (this._wrapper.listOfItems.style.width = this._settings.childWidth), this._showHideOriginal(!1), "true" === this._settings.showFilterAlways.toString() && (this._settings.enableAutoFilter = !0, this._showHideFilterBox(!0)), this.ele.autofocus ? (this._wrapper.holder.focus(), this._wrapper.filterInput.focus()) : this._wrapper.filterInput.blur(), this.updateUiAndValue(), this._fireLocalEventIfExist("create"), this._fireEventIfExist("onCreate") + } + _showHideOriginal(e = !0) { + e ? this._show(this.ele) : this._hide(this.ele) + } + _checkDataSettings() { + let e = this._getDataSet(this.ele), + t = this._settings; + t.mainCss = e?.mainCss || t.mainCss, t.showIcon = e?.showIcon || t.showIcon, t.event = e?.event || t.event, t.childWidth = e?.childWidth || t.childWidth, t.childHeight = e?.childHeight || t.childHeight, t.enableCheckbox = e?.enableCheckbox || t.enableCheckbox, t.checkboxNameSuffix = e?.checkboxNameSuffix || t.checkboxNameSuffix, t.enableAutoFilter = e?.enableAutoFilter || t.enableAutoFilter, t.visibleRows = e?.visibleRows || t.visibleRows, t.showPlusItemCounter = e?.showPlusItemCounter || t.showPlusItemCounter, t.errorMessage = e?.errorMessage || t.errorMessage, t.showFilterAlways = e?.showFilterAlways || t.showFilterAlways, t.showListCounter = e?.showListCounter || t.showListCounter, t.imagePosition = e?.imagePosition || t.imagePosition, this._settings = { + ...this._settings, + ...t + } + } + setSettingAttribute(e, t) { + this._settings[e] = t + } + _createByJson() { + if (this._settings.byJson.data) try { + let e = this._settings.byJson, + t = {}; + t.name = e.name || this.ele.id || "", e.size > 0 && (t.size = e.size), e.multiple && (t.multiple = e.multiple); + let s = this._createEle("select", t), + i = e.data.length; + for (let t = 0; t < i; t++) { + let i = e.data[t], + l = new Option(i.text, i.value); + i.disabled && (l.disabled = !0); + for (let e in i) + if (i.hasOwnProperty(e) && "text" !== e.toLowerCase()) { + let t = `data-${e}`; + t = t.replace(/([A-Z])/g, "-$1").toLowerCase(), l.setAttribute(t, i[e]) + } s.options[t] = l + } + this.ele.appendChild(s), s.selectedIndex = e.selectedIndex, e.width && (this.ele.style.width = e.width + "px"), this.ele = s + } catch (e) { + throw "There is an error in json data." + } + } + _scrollToItem(e, t = "smooth") { + (e = e || this.uiData.ui) && (e = e.length > 1 ? e[0] : e, this._scrollToIfNeeded(e)) + } + _showHideFilterBox(e = !0) { + e ? (this._show(this._wrapper.filterHolder), this._wrapper.filterInput.focus(), "false" === this._settings.showFilterAlways.toString() && this._hide(this._wrapper.headerA)) : (this._wrapper.filterInput.value = "", this._hide(this._wrapper.filterHolder), this._show(this._wrapper.headerA)) + } + _applyFilters(e) { + let t = this._wrapper.filterInput.value; + if (0 === t.length) this._show(this._wrapper.headerA), this._makeChildren(), this._isFilterApplied = !1; + else { + "false" === this._settings.showFilterAlways.toString() && this._hide(this._wrapper.headerA), this._isOpen || this.open(null); + let e = [...this.options].filter((function(e) { + return "OPTGROUP" !== e.nodeName && !1 === e.disabled && e.text.toLowerCase().indexOf(t.toLowerCase()) >= 0 + })); + this._makeChildren(e), this._isFilterApplied = !0, this._nexPrevCounter = -1, this._scrollToIfNeeded(null, 0) + } + } + _makeFilterBox() { + let e = this._createEle("div", { + className: "ms-filter-box" + }), + t = this._createEle("input", { + type: "text" + }); + return e.appendChild(t), this._wrapper.filterInput = t, this._wrapper.filterHolder = e, this._bindEvents(t, "input", (e => { + this._applyFilters(e) + })), e + } + _makeHeader() { + let e = this._css, + t = this._createEle("div", { + className: e.header + }), + s = this._createEle("a", { + className: e.headerA + }), + i = this._createEle("span", { + className: e.headerMiddleContent + }), + l = this._createEle("span", { + className: e.arrow + " " + e.arrowDown + }); + return s.appendChild(l), s.appendChild(i), t.appendChild(s), this._wrapper.header = t, this._wrapper.headerA = s, this._wrapper.headerContent = i, this._wrapper.arrow = l, "left" !== this._settings.imagePosition && s.classList.add(e.imageRight), this._bindEvents(t, this._settings.event, (e => { + this.open(e) + })), t + } + _makeChildren(e = null) { + let t, s = this._css, + i = "true" === this._enableCheckbox.toString(), + l = this, + n = function(e, t) { + let n = {}; + return n = l._parseOption(e), { + opt: n, + itemObj: { + label: { + text: n.text, + css: s.itemLabel + }, + img: { + src: n.image, + css: s.itemImage + }, + desc: { + text: n.description, + css: s.itemDesc + }, + isDisabled: e.disabled || !1, + isSelected: e.selected || !1, + isCheckbox: i, + value: n.value, + title: n.title, + imageCss: `${n.imageCss} ${n.className}`, + counter: t + 1, + isOptGroup: "OPTGROUP" === e.nodeName, + innerSpanCss: s.itemContent + } + } + }, + r = function(e, t) { + t.isDisabled || (l._bindEvents(e, "mouseup", (e => { + l._isMouseDown = !1, i && "INPUT" === e.target.nodeName || l._isList || l.close(e) + })), l._bindEvents(e, "mousedown", (t => { + if (l._isMouseDown = !0, i && "INPUT" === t.target.nodeName) l._setSelectedByItemToggle(e._refCheckbox, e); + else if (l._shiftHolded && l._isMultiple) { + let t = l.selectedIndex, + s = e.index; + l._setSelectedByIndexFromTo(t, s) + } else l._controlHolded && l._isMultiple ? l._setSelectedByItem(e, !1, !1) : l._setSelectedByItem(e) + })), l._bindEvents(e, "mouseover", (t => { + l._isMouseDown && l._isMultiple && l._setSelectedByItem(e, !1, !1) + }))) + }; + this._wrapper.listOfItems ? t = this._wrapper.listOfItems : (t = this._createEle("ul", { + className: s.listOfItems, + zIndex: this._settings.zIndex + }), this._wrapper.listOfItems = t), t.innerHTML = ""; + let a = null === e ? this.ele.children : e, + h = a.length; + for (let e = 0; e < h; e++) { + let i = a[e], + l = n(i, e), + h = l.opt, + d = l.itemObj, + o = this._createRow(d); + if ("" !== h.className && (o.className = o.className + " " + h.className), "" !== h.internalStyle && (o.style = h.internalStyle), o.index = h.index, o.setAttribute("data-ms-index", h.index), d.isOptGroup) { + let e = i.children, + t = e.length, + l = this._createEle("ul"); + for (let i = 0; i < t; i++) { + let t = n(e[i], i), + a = t.opt, + h = t.itemObj, + d = this._createRow(h); + "" !== a.className && (d.className = d.className + " " + a.className), "" !== a.internalStyle && (d.style = a.internalStyle), d.index = a.index, d.setAttribute("data-ms-index", a.index), h.isSelected && this._setSelectedByItem(d, !0), r(d, h), "left" !== this._settings.imagePosition && d.classList.add(s.imageRight), l.appendChild(d) + } + o.appendChild(l) + } + d.isOptGroup || r(o, d), "left" !== this._settings.imagePosition && o.classList.add(s.imageRight), t.appendChild(o), d.isSelected && this._setSelectedByItem(o, !0) + } + return null !== this._settings.childHeight && (t.style.maxHeight = this._settings.childHeight + "px"), t + } + _makeLayout() { + this.ele.tabIndex = -1; + let t = this._css, + s = this._createEle("div", { + tabIndex: 0, + className: t.dd + }), + i = this.ele.name, + l = this.ele.required, + n = this._createEle("input", { + tabIndex: -1, + name: i, + type: "text", + className: this._css.valueInput, + required: l + }); + s.appendChild(n), this.ele.required = !1, this.ele.name = ""; + let r = this._createEle("div", { + className: "more", + style: "display:none" + }); + s.appendChild(r), this._wrapper.valueBox = n, this._wrapper.moreValueBox = r; + let a = this._makeHeader(), + h = this._makeFilterBox(); + a.appendChild(h), this._showHideFilterBox(!1); + let d = this._makeChildren(); + s.appendChild(a), s.appendChild(d), this._wrapper.holder = s, this._insertAfter(s, this.ele), this._hide(d), this.disabled && s.classList.add(t.wrapperDisabled); + let o = this._getInternalStyle(this.ele); + s.setAttribute("style", o), null !== this._settings.byJson.data && s.setAttribute("style", `width:${this._settings.byJson.width}px`); + let u = this._createEle("div", { + style: "clear:both" + }); + s.appendChild(u), this._bindEvents(this._wrapper.holder, "focus", (t => { + this._isList ? this._bindDocumentEvents(null, !1, !0) : (e && (e.close(null), e = null), this._bindDocumentEvents(null, !0, !0), e = this), this._fireLocalEventIfExist("focus"), this._fireEventIfExist("focus") + })), this._bindEvents(this._wrapper.holder, "blur", (e => { + this._isList && this._unbindDocumentEvents(), this._fireLocalEventIfExist("blur"), this._fireEventIfExist("blur") + })), this._bindEvents(this._wrapper.holder, "dblclick", (e => { + this._fireLocalEventIfExist("blur"), this._fireEventIfExist("blur") + })), this._bindEvents(n, "invalid", (e => { + e.target.setCustomValidity(""), e.target.validity.valid || e.target.setCustomValidity(this._settings.errorMessage) + })), this._bindEvents(n, "input", (e => { + e.target.setCustomValidity("") + })); + let _ = ["click", "dblclick", "mousemove", "mouseover", "mouseout", "mousedown", "mouseup"]; + for (let e = 0, t = _.length; e < t; e++) { + let t = _[e]; + this._bindEvents(this._wrapper.holder, t, (e => { + this._fireLocalEventIfExist(t), this._fireEventIfExist(t) + })) + } + return s + } + _createRow(e) { + let t = e.isOptGroup ? this._css.optgroup : this._css.item, + s = this._createEle("li", { + className: t + }); + if (e.isCheckbox && !e.isOptGroup) { + let t = this._createEle("input", { + tabIndex: -1, + className: this._css.checkbox, + type: "checkbox", + disabled: e.isDisabled, + checked: !1, + value: e.value, + name: this._wrapper.valueBox.name + this._settings.checkboxNameSuffix + "[]" + }); + s.appendChild(t), s._refCheckbox = t + } + let i = e.isOptGroup ? " " + this._css.itemSpanOpt : "", + l = this._createEle("span", { + className: this._css.itemSpan + i + }), + n = "true" === this._settings.showListCounter.toString() ? `${e.counter} ${e.label.text}` : e.label.text, + r = this._createEle("span", { + className: e.label.css + }, n), + a = this._createEle("span", { + className: e.innerSpanCss + }); + if (a.appendChild(r), null !== e.img.src) { + let t = this._createEle("img", { + className: e.img.css, + src: e.img.src + }); + l.appendChild(t) + } + if (null === e.img.src && "" !== e.imageCss.replace(/\s/g, "")) { + let t = this._createEle("span", { + className: e.img.css + " " + e.imageCss + }, " "); + l.appendChild(t) + } + if (null !== e.desc.text) { + let t = this._createEle("span", { + className: e.desc.css + }, e.desc.text); + a.appendChild(t) + } + return l.appendChild(a), s.appendChild(l), e.isDisabled ? s.classList.add(this._css.itemDisabled) : e.isOptGroup || s.classList.add(this._css.itemEnabled), "" !== e.title && (s.title = e.title), s + } + _parseOption(e) { + let t, s, i, l = null, + n = "", + r = "", + a = "", + h = "", + d = "", + o = "", + u = -1; + if (void 0 !== e) { + let _ = e.nodeName, + p = e.dataset; + "OPTGROUP" === _ ? h = e.label : (h = e.text, a = e.value || h), u = e.index, t = e.selected, s = e.disabled, d = e.className || "", n = p.title || "", r = p.description || "", l = p.image || l, o = p.imageCss || "", i = this._getInternalStyle(e) + } + return { + image: l, + title: n, + description: r, + value: a, + text: h, + className: d, + imageCss: o, + index: u, + selected: t, + disabled: s, + internalStyle: i + } + } + _removeOldSelected() { + let e = this._getAllEle("ul li." + this._css.itemSelected, this._wrapper.holder); + for (let t = 0; t < e.length; t++) e[t].classList.remove(this._css.itemSelected), this._isMultiple && "true" === this._enableCheckbox.toString() && (e[t]._refCheckbox.checked = !1) + } + _setSelectedByIndexFromTo(e, t) { + let s = Math.min(e, t), + i = Math.max(e, t), + l = this.optionsUI; + for (let e = s; e <= i; e++) this._setSelectedByItem(l[e], !1, !1) + } + _setSelectedByItemToggle(e, t) { + let s = !e.checked, + i = t.index; + s ? (t.classList.add(this._css.itemSelected), this.ele.options[i].selected = !0) : (t.classList.remove(this._css.itemSelected), this.ele.options[i].selected = !1), this.updateUiAndValue() + } + _setSelectedByItem(e, t = !1, s = !0) { + if (t && e) e.classList.add(this._css.itemSelected); + else { + let t = e.index; + !0 === s ? (this._removeOldSelected(), this.ele.selectedIndex = t) : this.ele.options[t].selected = !0, e?.classList?.add(this._css.itemSelected), this.updateUiAndValue() + } + "true" === this._enableCheckbox.toString() && e?._refCheckbox && (e._refCheckbox.checked = !0), !1 === this._isFirstTime && (this._fireLocalEventIfExist("change"), this._fireEventIfExist("change")), this._isFirstTime = !1 + } + _setSelectedByOptionItem(e, t = !1) { + let s = e.index, + i = this._getDataAndUI(s); + this._setSelectedByItem(i.ui, t) + } + _updateHeaderUI(e = null, t = null) { + let s = null === e ? this.uiData : e, + i = this._isArray(s.index) ? s.ui[0].innerHTML : null; + this._wrapper.headerContent.innerHTML = null !== t ? t : i || s?.ui?.innerHTML || " "; + let l = this._getEle("." + this._css.itemLabel, this._wrapper.headerContent); + if ("true" === this._settings.showPlusItemCounter.toString() && null !== s.ui && s.ui.length > 1 && (l.innerHTML = l.innerHTML + `  (+${s.ui.length-1})`), "false" === this._settings.showIcon.toString()) { + let e = this._getEle("img", this._wrapper.headerContent); + e && this._hide(e) + } + this._setTitleMinHeight(!1) + } + _findElementByIndexProp(e) { + let t = this._getAllEle(`ul li.${this._css.item}`, this._wrapper.holder), + s = t.length; + for (let i = 0; i < s; i++) + if (t[i].index === e) return t[i]; + return null + } + _getDataAndUI(e = null) { + let t, s, i, l = this.ele, + n = null, + r = -1, + a = this, + h = !1, + d = function(e) { + let t = l.options[e], + s = e; + return { + option: t, + data: a._parseOption(t), + index: s, + ui: a._findElementByIndexProp(s) + } + }; + if (null !== e) i = d(e), n = i.option, t = i.data, r = i.index, s = i.ui; + else if (s = this._getAllEle("ul li." + this._css.itemSelected, this._wrapper.holder), s.length > 1) { + let e = [], + l = [], + a = [], + o = []; + for (let t = 0; t < s.length; t++) i = d(s[t].index), e.push(i.data), l.push(i.option), a.push(i.index), o.push(i.ui); + t = e, n = l, r = a, s = o, h = !0 + } else i = d(s[0]?.index || this.selectedIndex), n = i.option || null, t = i.data || null, r = i.index || -1, s = i.ui || null; + return { + data: t, + ui: s, + index: r, + option: n, + isArray: h + } + } + _isArray = function(e) { + return "[object Array]" === Object.prototype.toString.call(e) + }; + updateUiAndValue(e = null) { + let t = null === e ? this.uiData : e; + this._updateHeaderUI(t); + let s = this._wrapper.valueBox; + if (s.value = this.ele.value, this._isMultiple && "[]" === s.name.substr(s.name.length - 2, s.name.length)) { + this._wrapper.moreValueBox.innerHTML = ""; + for (let e = 1; e < t.data.length; e++) { + let i = this._createEle("input", { + type: "hidden", + name: s.name, + value: t.data[e].value + }); + this._wrapper.moreValueBox.appendChild(i) + } + } + } + _updateUiAndValueByIndex(e) { + let t = this._getDataAndUI(e); + this.updateUiAndValue(t) + } + _createEle(e, t, s) { + let i = document.createElement(e); + if (t) + for (let e in t) "style" === e ? i.style.cssText = t[e] : i[e] = t[e]; + return s && (i.innerHTML = s), i + } + _getEle(e, t = null) { + return null === t ? document.querySelector(e) : t.querySelector(e) + } + _getAllEle(e, t = null) { + return null === t ? document.querySelectorAll(e) : t.querySelectorAll(e) + } + _getInternalStyle(e) { + return void 0 === e.style ? "" : e.style.cssText + } + _toggleShow(e) { + e.style.display = "none" === e.style.display || "" === e.style.display ? "inherit" : "none" + } + _show(e, t = "block") { + e.style.display = t + } + _hide(e) { + e.style.display = "none" + } + _insertAfter(e, t) { + return t.parentNode.insertBefore(e, t.nextSibling) + } + _insertBefore(e, t) { + return t.insertBefore(e, t) + } + _getIndex(e) { + return [...this._getAllEle("ul li", this._wrapper.holder)].indexOf(e) + } + _getProp(e, t) { + let s = {}; + for (let i = 0; i < e.attributes.length; i++) { + let l = e.attributes[i].nodeName, + n = e.attributes[i].nodeValue; + if (t === l) return n; + s[l] = n + } + return void 0 === t ? s : null + } + _getDataSet(e, t = null) { + return null === t ? e.dataset : e.dataset[t] || null + } + _bindEvents(e, t, s) { + e.addEventListener(t, s) + } + _unbindEvents(e, t, s) { + e.removeEventListener(t, s) + } + _adjustChildHeight(e = null) { + if (null !== (e = null === e ? parseInt(this._settings.visibleRows) : e)) { + let t = this._getEle("li[data-ms-index='0']", this._wrapper.listOfItems), + s = null !== this._settings.rowHeight ? this._settings.rowHeight : t.clientHeight; + this._wrapper.listOfItems.style.height = e * s + "px" + } + } + _setTitleMinHeight(e = !0) { + let t = 0; + if (!0 === e) { + let e = this._getAllEle("li", this._wrapper.listOfItems), + s = e.length; + for (let i = 0; i < s; i++) { + let s = e[i]; + t = s.clientHeight > t ? s.clientHeight : t + } + } else t = this._wrapper.headerA.clientHeight; + this._wrapper.header.style.minHeight = t + "px" + } + _makeUiAsList(e, t) { + !0 === e ? (this._hide(this._wrapper.header), this.open(null, !0), this._adjustChildHeight(t), this._wrapper.listOfItems.style.position = "relative", this._wrapper.listOfItems.style.display = "inline-block", this._wrapper.listOfItems.style.zIndex = 0, this._wrapper.holder.style.zIndex = 0, this._isList = !0) : (this._show(this._wrapper.header), this._wrapper.listOfItems.style.height = null, this._wrapper.listOfItems.style.position = "absolute", this._wrapper.listOfItems.style.zIndex = this._settings.zIndex, this._wrapper.holder.style.zIndex = 0, this._isList = !1, this.close(null)) + } + _bindDocumentEvents(e, t = !0, s = !0) { + this._unbindDocumentEvents(), this._onDocumentClick = e => { + let t = this._wrapper.listOfItems.getBoundingClientRect(), + s = this._wrapper.header.getBoundingClientRect(), + i = t.left + t.width, + l = s.top + t.height + s.height; + (e.clientX < t.left || e.clientX > i || e.clientY < s.y || e.clientY > l) && this.close(e) + }, this._onDocumentKeyDown = e => { + switch (e.keyCode) { + case this._DOWN_ARROW: + case this._RIGHT_ARROW: + e.preventDefault(), e.stopPropagation(), this._show(this._wrapper.listOfItems), this._isOpen = !0, this.next(); + break; + case this._UP_ARROW: + case this._LEFT_ARROW: + e.preventDefault(), e.stopPropagation(), this.previous(); + break; + case this._ESCAPE: + case this._ENTER: + e.preventDefault(), e.stopPropagation(), this.close(null); + break; + case this._SHIFT: + this._shiftHolded = !0; + break; + case this._CONTROL: + case this._MAC_CONTROL: + this._controlHolded = !0; + break; + case this._SPACE: + this._show(this._wrapper.listOfItems), this._isOpen = !0; + break; + default: + e.keyCode >= this._ALPHABETS_START && !1 === this._isList && "true" === this._settings.enableAutoFilter.toString() && this._showHideFilterBox(!0), this._shiftHolded = !1, this._controlHolded = !1 + } + }, this._onDocumentKeyUp = e => { + this._shiftHolded = !1, this._controlHolded = !1 + }, !0 === t && this._bindEvents(document, "mouseup", this._onDocumentClick), !0 === s && (this._bindEvents(document, "keydown", this._onDocumentKeyDown), this._bindEvents(document, "keyup", this._onDocumentKeyUp)) + } + _unbindDocumentEvents() { + null !== this._onDocumentClick && this._unbindEvents(document, "mouseup", this._onDocumentClick), null !== this._onDocumentKeyDown && this._unbindEvents(document, "keydown", this._onDocumentKeyDown), null !== this._onDocumentKeyUp && this._unbindEvents(document, "keyup", this._onDocumentKeyUp), this._onDocumentClick = null, this._onDocumentKeyDown = null, this._onDocumentKeyUp = null + } + _scrollToIfNeeded(e = null, t = null, s = "next") { + let i = this._wrapper.listOfItems; + if (i.getBoundingClientRect(), null === e && null !== t && (i.scrollTop = t), e = void 0 !== e ? e : this._getEle("li." + this._css.itemSelected)) { + let t = e.offsetTop, + l = i.clientHeight, + n = e.clientHeight; + t + n - i.scrollTop > l && "next" === s ? i.scrollTop = t + n - l : t - i.scrollTop < 0 && "previous" === s && (i.scrollTop = t) + } + } + _fireLocalEventIfExist(e, t = null) { + if ("function" == typeof this._settings.on[e]) { + let s = null === t ? this._getDataAndUI() : t, + i = this._settings.on[e]; + try { + i(s) + } catch (e) { + console.error(e.message) + } + } + } + _fireEventIfExist(e) { + if (this.ele.dataset[e]) { + let t = new Function(this.ele.dataset[e]); + try { + t() + } catch (e) { + console.error(e.message) + } + } + if (this._has_handler(e).hasEvent) { + if (this._has_handler(e).byElement) try { + this.ele[e]() + } catch (t) { + try { + this.ele["on" + e]() + } catch (e) {} + } else if (this._has_handler(e).byJQuery) switch (e) { + case "keydown": + case "keyup": + break; + default: + try { + "undefined" != typeof jQuery && jQuery(this.ele).triggerHandler(e) + } catch (e) {} + } + return !1 + } + } + _has_handler(e) { + let t = { + byElement: !1, + local: !1, + byJQuery: !1, + hasEvent: !1 + }; + null !== this._settings.on[e] && (t.hasEvent = !0, t.local = !0); + try { + null !== this._getProp(this.ele, "on" + e) && (t.hasEvent = !0, t.byElement = !0) + } catch (e) {} + if ("undefined" != typeof jQuery) { + let s, i = jQuery(this.ele); + s = "function" == typeof jQuery?._data ? jQuery?._data(this.ele, "events") : i.data("events"), s && s[e] && (t.hasEvent = !0, t.byJQuery = !0) + } + return t + } + add(e, t = null) { + let s, i, l, n, r, a, h; + e instanceof HTMLOptionElement ? h = e : "string" == typeof e ? (s = i = e, h = new Option(s, i)) : e instanceof Object && (s = e.text || "", i = e.value || s, l = e.title || "", n = e.image || "", a = e.imageCss || "", r = e.description || "", h = new Option(s, i), h.setAttribute("data-description", r), h.setAttribute("data-image", n), h.setAttribute("data-title", l), h.setAttribute("data-image-css", a)), this.ele.add(h, t), this._makeChildren(), this._fireLocalEventIfExist("add") + } + remove(e) { + let t = this._getDataAndUI(e); + return this.ele.remove(e), this._makeChildren(), this._fireLocalEventIfExist("remove", t), t + } + next() { + let e, t = this, + s = this.optionsUI, + i = s.length; + if (e = this._isFilterApplied ? this._nexPrevCounter : this.selectedIndex, i > 0) { + let l = function() { + let l = e; + for (; l < i; l++) { + let e = l + 1; + if (e = e >= i ? i - 1 : e, t._nexPrevCounter++, !s[e].classList.contains(t._css.itemDisabled)) return s[e] + } + return null + }(); + l && (this._setSelectedByItem(l, !1, !0), this._scrollToIfNeeded(l)) + } + } + previous() { + let e, t = this, + s = this.optionsUI; + if (s.length, e = this._isFilterApplied ? this._nexPrevCounter : this.selectedIndex, s.length > 0) { + let i = function(i) { + let l = e; + for (; l > 0; l--) { + let e = l - 1; + if (e = e >= 0 ? e : 0, t._nexPrevCounter--, !s[e].classList.contains(t._css.itemDisabled)) return s[e] + } + return null + }(); + i && (this._setSelectedByItem(i, !1, !0), this._scrollToIfNeeded(i, null, "previous")) + } + } + open(e, t = !1) { + this.disabled || (this._isOpen ? this.close(null) : (this._isOpen = !0, this._show(this._wrapper.listOfItems), !1 === t && this._bindDocumentEvents(e), this._wrapper.arrow.classList.remove(this._css.arrowDown), this._wrapper.arrow.classList.add(this._css.arrowUp), this._adjustChildHeight(), this._scrollToItem(), this._fireLocalEventIfExist("open"))) + } + close(e) { + let t = this._isList, + s = !1; + if (null !== e) { + e.stopImmediatePropagation(); + let t = e.target.closest("li"); + s = null !== t && t.classList.contains("disabled") + } + this.disabled || t || s || (this._scrollToIfNeeded(null, 0), this._hide(this._wrapper.listOfItems), this._wrapper.arrow.classList.add(this._css.arrowDown), this._wrapper.arrow.classList.remove(this._css.arrowUp), this._isOpen = !1, this._isMouseDown = !1, this._shiftHolded = !1, this._controlHolded = !1, this._isFilterApplied = !1, this._wrapper.filterInput.value = "", this._wrapper.filterInput.blur(), "false" === this._settings.showFilterAlways.toString() && this._showHideFilterBox(!1), this._applyFilters(), this._unbindDocumentEvents(), this._updateHeaderUI(), this.ele.length !== this._getAllEle(`li.${this._css.item}`, this._wrapper.listOfItems).length && (this._makeChildren(), this.updateUiAndValue()), this._fireLocalEventIfExist("close")) + } + namedItem(e, t = !1) { + let s = null, + i = this.ele.querySelector(`option[name='${e}']`); + if (i && t) { + s = {}; + let e = this._parseOption(i); + s.option = i, s.data = e + } else s = i; + return s + } + item(e, t = !1) { + let s = null, + i = this.ele.options[e]; + if (i && t) { + s = {}; + let e = this._parseOption(i); + s.option = i, s.data = e + } else s = i; + return s + } + visible(e = null) { + if (!0 === e ? this._show(this._wrapper.holder, "inline-block") : !1 === e && this._hide(this._wrapper.holder), null === e) return "none" !== this._wrapper.holder.style.display + } + showRows(e) { + this._settings.visibleRows = e > this.length ? this.length : e, this._adjustChildHeight() + } + visibleRows(e) { + this.showRows(e) + } + on(e, t) { + this._settings.on[e] = t + } + off(e, t) { + this._settings.on[e] = null + } + refresh() { + this._makeChildren(), this.updateUiAndValue() + } + destroy() { + this._show(this.ele), this.ele.required = this._wrapper.valueBox.required, this.ele.name = this._wrapper.valueBox.name, this._wrapper.holder.parentNode.removeChild(this._wrapper.holder) + } + get selectedIndex() { + return this.ele.selectedIndex + } + set selectedIndex(e) { + let t = this, + s = function(e) { + t.ele.selectedIndex = e, -1 === e ? (t._updateHeaderUI(null, ""), t._removeOldSelected()) : t._setSelectedByOptionItem(t.ele.options[e]) + }; + if (e < this.length && !this._isArray(e)) s(e); + else if (this._isMultiple && this._isArray(e)) { + for (let t = 0, s = e.length; t < s; t++) e[t] < this.length && -1 !== e[t] && this._setSelectedByOptionItem(this.ele.options[e[t]], t > 0); + this._updateHeaderUI(null) + } else s(e) + } + get options() { + return this.ele.options + } + set options(e) { + e instanceof HTMLOptionElement ? (this.ele.add(e), this._makeChildren(), this.updateUiAndValue()) : "number" == typeof e && (this.ele.length = e, this._makeChildren(), this.updateUiAndValue()) + } + get optionsUI() { + return this._cacheEle.allItems, this._cacheEle.allItems = this._getAllEle(`li.${this._css.item}`, this._wrapper.listOfItems) + } + get length() { + return this.ele.length + } + set length(e) { + this.ele.options.length = e, this._makeChildren(), this.updateUiAndValue() + } + get value() { + return this.ele.value + } + set value(e) { + this.ele.value = e, this.selectedIndex = this.ele.selectedIndex + } + get selectedText() { + return this.selectedIndex >= 0 ? this.ele.options[this.selectedIndex].text : "" + } + get disabled() { + return this.ele.hasAttribute("disabled") + } + set disabled(e) { + e ? (this.ele.setAttribute("disabled", ""), this._wrapper.holder.classList.add(this._css.wrapperDisabled)) : (this.ele.removeAttribute("disabled"), this._wrapper.holder.classList.remove(this._css.wrapperDisabled)) + } + get form() { + return this.ele.form + } + get multiple() { + return this.ele.multiple + } + set multiple(e) { + e ? (this.ele.setAttribute("multiple", ""), this._enableCheckbox = this._settings.enableCheckbox) : this.ele.removeAttribute("multiple"), this._isMultiple = e, e || (this.selectedIndex = this.ele.selectedIndex, this._enableCheckbox = !1), this._makeChildren() + } + get name() { + return this._wrapper?.valueBox ? this._wrapper.valueBox.name || "" : this.ele.name + } + set name(e) { + this._wrapper?.valueBox ? this._wrapper.valueBox.name = e : this.ele.name = e + } + get required() { + return this._wrapper.valueBox.required + } + set required(e) { + e ? this._wrapper.valueBox.setAttribute("required", !0) : this._wrapper.valueBox.removeAttribute("required") + } + get size() { + return this.ele.size + } + set size(e) { + this.ele.size = e, this._makeUiAsList(e > 1, e) + } + get selectedOptions() { + let e = null; + if (this.selectedIndex >= 0 && (e = this.ele.options[this.selectedIndex], this.multiple)) { + e = []; + let t = this.options, + s = t.length; + for (let i = 0; i < s; i++) t[i].selected && e.push(t[i]); + e = 1 === e.length ? e[0] : e + } + return e + } + get children() { + return this.ele.children + } + get uiData() { + return this._getDataAndUI() + } + get version() { + return "4.0.3" + } + } + class s { + constructor(e, i) { + "string" == typeof e ? document.querySelectorAll(e).forEach((e => { + new s(e, i) + })) : (e.msDropdown = this, this._ddMaker = new t(e, i)) + } + setSettingAttribute(e, t, s = !1) { + this._ddMaker.setSettingAttribute(e, t), s && this._ddMaker.refresh() + } + add(e, t) { + this._ddMaker.add(e, t) + } + remove(e) { + return this._ddMaker.remove(e) + } + next() { + this._ddMaker.next() + } + previous() { + this._ddMaker.previous() + } + open() { + this._ddMaker.open(null, !1) + } + close() { + this._ddMaker.close(null) + } + namedItem(e, t = !1) { + return this._ddMaker.namedItem(e, t) + } + item(e, t = !1) { + return this._ddMaker.item(e, t) + } + visible(e = null) { + return this._ddMaker.visible(e) + } + showRows(e) { + this._ddMaker.showRows(e) + } + visibleRows(e) { + this._ddMaker.showRows(e) + } + on(e, t) { + this._ddMaker.on(e, t) + } + off(e, t) { + this._ddMaker.off(e, t) + } + updateUiAndValue() { + this._ddMaker.updateUiAndValue() + } + refresh() { + this._ddMaker.refresh() + } + destroy() { + this._ddMaker.destroy() + } + get selectedIndex() { + return this._ddMaker.selectedIndex + } + set selectedIndex(e) { + this._ddMaker.selectedIndex = e + } + get options() { + return this._ddMaker.options + } + set options(e) { + this._ddMaker.options = e + } + get optionsUI() { + return this._ddMaker.optionsUI + } + get length() { + return this._ddMaker.length + } + set length(e) { + this._ddMaker.length = e + } + get value() { + return this._ddMaker.value + } + set value(e) { + this._ddMaker.value = e + } + get selectedText() { + return this._ddMaker.selectedText + } + get disabled() { + return this._ddMaker.disabled + } + set disabled(e) { + this._ddMaker.disabled = e + } + get form() { + return this._ddMaker.form + } + get multiple() { + return this._ddMaker.multiple + } + set multiple(e) { + this._ddMaker.multiple = e + } + get name() { + return this._ddMaker.name + } + set name(e) { + this._ddMaker.name = e + } + get required() { + return this._ddMaker.required + } + set required(e) { + this._ddMaker.required = e + } + get size() { + return this._ddMaker.size + } + set size(e) { + this._ddMaker.size = e + } + get selectedOptions() { + return this._ddMaker.selectedOptions + } + get children() { + return this._ddMaker.children + } + get uiData() { + return this._ddMaker.uiData + } + static make(e, t) { + if (!e.msDropdown) try { + let i = new s(e, t); + return e.addEventListener("change", (() => { + e.multiple ? e.msDropdown.refresh() : e.msDropdown.selectedIndex = current.selectedIndex + })), i + } catch (e) { + console.log(e.message) + } + } + static get version() { + return "4.0.3" + } + static get author() { + return "Marghoob Suleman" + } + } + class i extends HTMLSelectElement { + constructor(e, t) { + super() + } + connectedCallback() { + setTimeout((() => { + this.msDropdown || (this.msDropdown = new s(this)); + try { + this.addEventListener("change", (e => { + this.multiple ? this.msDropdown.refresh() : this.msDropdown.selectedIndex = this.selectedIndex + })) + } catch (e) { + console.log(e.message) + } + }), 1) + } + disconnectedCallback() {} + adoptedCallback() {} + attributeChangedCallback(e, t, s) { + if (this.msDropdown && -1 !== e.indexOf("data-")) { + let t = (e = e.replace("data-", "")).toLowerCase().split("-"); + for (let e = 1; e < t.length; e++) t[e] = t[e].charAt(0).toUpperCase() + t[e].substring(1); + this.msDropdown.setSettingAttribute(t.join(""), s, !0) + } + console.log("attributeChangedCallback") + } + static get observedAttributes() { + return ["data-main-css", "data-show-icon", "data-event", "data-child-width", "data-child-height", "data-enable-checkbox", "data-checkbox-name-suffix", "data-enable-auto-filter", "data-visible-rows", "data-show-plus-item-counter", "data-error-message", "data-show-filter-always", "data-show-list-counter", "data-image-position"] + } + } + customElements.define("ms-dropdown", i, { + extends: "select" + }), window.MsDropdown = s, navigator.vendor && navigator.vendor.indexOf("Apple") > -1 && navigator.userAgent && -1 == navigator.userAgent.indexOf("CriOS") && -1 == navigator.userAgent.indexOf("FxiOS") && s.make("select[is='ms-dropdown']") +})(); \ No newline at end of file diff --git a/basicswap/static/js/libs/tv-chart.js b/basicswap/static/js/libs/tv-chart.js deleted file mode 100644 index b7076a1..0000000 --- a/basicswap/static/js/libs/tv-chart.js +++ /dev/null @@ -1,1099 +0,0 @@ -"use strict"; -!(function () { - if (!window.TradingView || !window.TradingView.host || window.TradingView.reoloadTvjs) { - var e, - t, - o, - i, - n, - r, - s, - a = { "color-gull-gray": "#9db2bd", "color-brand": "#2962FF", "color-brand-hover": "#1E53E5", "color-brand-active": "#1848CC" }, - d = "-apple-system, BlinkMacSystemFont, 'Trebuchet MS', Roboto, Ubuntu, sans-serif", - l = { - host: null == window.location.host.match(/tradingview\.com|pyrrosinvestment\.com/i) ? "https://s.tradingview.com" : "https://www.tradingview.com", - ideasHost: "https://www.tradingview.com", - chatHost: "https://www.tradingview.com", - widgetHost: "https://www.tradingview-widget.com", - getHost: function (e) { - return e.useWidgetHost ? l.widgetHost : l.host; - }, - embedStylesForCopyright: function () { - var e = document.createElement("style"); - return ( - (e.innerHTML = - ".tradingview-widget-copyright {font-size: 13px !important; line-height: 32px !important; text-align: center !important; vertical-align: middle !important; font-family: " + - d + - " !important; color: " + - a["color-gull-gray"] + - " !important;} .tradingview-widget-copyright .blue-text {color: " + - a["color-brand"] + - " !important;} .tradingview-widget-copyright a {text-decoration: none !important; color: " + - a["color-gull-gray"] + - " !important;} .tradingview-widget-copyright a:visited {color: " + - a["color-gull-gray"] + - " !important;} .tradingview-widget-copyright a:hover .blue-text {color: " + - a["color-brand-hover"] + - " !important;} .tradingview-widget-copyright a:active .blue-text {color: " + - a["color-brand-active"] + - " !important;} .tradingview-widget-copyright a:visited .blue-text {color: " + - a["color-brand"] + - " !important;}"), - e - ); - }, - embedStylesForFullHeight: function (e, t, o) { - var i = t ? "calc(" + e + " - 32px)" : e, - n = document.querySelector("#" + o); - (n.parentElement.style.height = i), (n.style.height = "100%"); - }, - gId: function () { - return "tradingview_" + ((1048576 * (1 + Math.random())) | 0).toString(16).substring(1); - }, - isPersentHeight: function (e) { - return "%" === e; - }, - getSuffix: function (e) { - var t = e.toString().match(/(%|px|em|ex)/); - return t ? t[0] : "px"; - }, - hasCopyright: function (e) { - var t = document.getElementById(e), - o = t && t.parentElement; - return !!o && !!o.querySelector(".tradingview-widget-copyright"); - }, - calculateWidgetHeight: function (e, t) { - var o = parseInt(e), - i = this.getSuffix(e), - n = this.isPersentHeight(i), - r = t && this.hasCopyright(t); - return n && t && (this.embedStylesForFullHeight(o + i, r, t), r) ? 100 + i : r ? "calc(" + o + i + " - 32px)" : o + i; - }, - onready: function (e) { - window.addEventListener ? window.addEventListener("DOMContentLoaded", e, !1) : window.attachEvent("onload", e); - }, - css: function (e) { - var t, - o = document.getElementsByTagName("head")[0], - i = document.createElement("style"); - (i.type = "text/css"), i.styleSheet ? (i.styleSheet.cssText = e) : ((t = document.createTextNode(e)), i.appendChild(t)), o.appendChild(i); - }, - bindEvent: function (e, t, o) { - e.addEventListener ? e.addEventListener(t, o, !1) : e.attachEvent && e.attachEvent("on" + t, o); - }, - unbindEvent: function (e, t, o) { - e.removeEventListener ? e.removeEventListener(t, o, !1) : e.detachEvent && e.detachEvent("on" + t, o); - }, - cloneSimpleObject: function (e) { - if (null == e || "object" != typeof e) return e; - var t = e.constructor(); - for (var o in e) e.hasOwnProperty(o) && (t[o] = e[o]); - return t; - }, - isArray: function (e) { - return "[object Array]" === Object.prototype.toString.call(e); - }, - isMobileDevice: - ((e = { Android: /Android/i.test(navigator.userAgent), BlackBerry: /BlackBerry/i.test(navigator.userAgent), iOS: /iPhone|iPad|iPod/i.test(navigator.userAgent), Opera: /Opera Mini/i.test(navigator.userAgent) }), - (e.any = e.Android || e.BlackBerry || e.iOS || e.Opera), - e), - generateUtmForUrlParams: function (e) { - return ( - "utm_source=" + - encodeURI(window.location.hostname) + - "&utm_medium=" + - (l.hasCopyright(e.container) ? "widget_new" : "widget") + - (e.type ? "&utm_campaign=" + e.type : "") + - (e.type && "chart" === e.type ? "&utm_term=" + encodeURIComponent(e.symbol) : "") - ); - }, - WidgetAbstract: function () {}, - MiniWidget: function (e) { - (this.id = l.gId()), - (this.options = { - whitelabel: e.whitelabel || "", - width: l.WidgetAbstract.prototype.fixSize(e.width) || 300, - height: l.WidgetAbstract.prototype.fixSize(e.height) || 400, - symbols: e.symbols, - tabs: e.tabs || "", - symbols_description: e.symbols_description || "", - customer: e.customer || "", - container: e.container_id || "", - greyText: e.greyText || "", - large_chart_url: e.large_chart_url || "", - large_chart_target: e.large_chart_target || "", - gridLineColor: e.gridLineColor || "", - fontColor: e.fontColor || "", - widgetFontColor: e.widgetFontColor || "", - underLineColor: e.underLineColor || "", - underLineBottomColor: e.underLineBottomColor || "", - trendLineColor: e.trendLineColor || "", - timeAxisBackgroundColor: e.timeAxisBackgroundColor || "", - activeTickerBackgroundColor: e.activeTickerBackgroundColor || "", - noGraph: e.noGraph || !1, - locale: e.locale, - styleTickerActiveBg: e.styleTickerActiveBg || "", - styleTabActiveBorderColor: e.styleTabActiveBorderColor || "", - styleTickerBodyFontSize: e.styleTickerBodyFontSize || "", - styleTickerBodyFontWeight: e.styleTickerBodyFontWeight || "", - styleTickerHeadFontSize: e.styleTickerHeadFontSize || "", - styleTickerHeadFontWeight: e.styleTickerHeadFontWeight || "", - styleTickerChangeDownColor: e.styleTickerChangeDownColor || "", - styleTickerChangeUpColor: e.styleTickerChangeUpColor || "", - styleTickerLastDownBg: e.styleTickerLastDownBg || "", - styleTickerLastUpBg: e.styleTickerLastUpBg || "", - styleTickerSymbolColor: e.styleTickerSymbolColor || "", - styleTickerSymbolHoverTextDecoration: e.styleTickerSymbolHoverTextDecoration || "", - styleTickerActiveSymbolTextDecoration: e.styleTickerActiveSymbolTextDecoration || "", - styleTabsActiveBorderColor: e.styleTabsActiveBorderColor || "", - styleTabsNoBorder: e.styleTabsNoBorder || "", - styleWidgetNoBorder: e.styleWidgetNoBorder || "", - useWidgetHost: Boolean(e.useWidgetHost), - }), - this.createWidget(); - }, - MediumWidget: function (e) { - this.id = l.gId(); - const t = l.calculateWidgetHeight(e.height || 400, e.container_id); - let o; - switch (e.chartType) { - case "candlesticks": { - const { chartType: t, upColor: i, downColor: n, borderUpColor: r, borderDownColor: s, wickUpColor: a, wickDownColor: d } = e; - o = { chartType: t, upColor: i, downColor: n, borderUpColor: r, borderDownColor: s, wickUpColor: a, wickDownColor: d }; - break; - } - case "bars": { - const { chartType: t, upColor: i, downColor: n } = e; - o = { chartType: t, upColor: i, downColor: n }; - break; - } - case "line": { - const { chartType: t, color: i, colorGrowing: n, colorFalling: r, lineWidth: s } = e; - o = { chartType: t, color: i, colorGrowing: n, colorFalling: r, lineWidth: s }; - break; - } - case "area": - default: { - const { - chartType: t = "area", - lineColor: i = e.trendLineColor || "", - lineColorGrowing: n, - lineColorFalling: r, - topColor: s = e.underLineColor || "", - bottomColor: a = e.underLineBottomColor || "", - lineWidth: d, - } = e; - o = { chartType: t, lineColor: i, lineColorGrowing: n, lineColorFalling: r, topColor: s, bottomColor: a, lineWidth: d }; - break; - } - } - (this.options = { - container: e.container_id || "", - width: l.WidgetAbstract.prototype.fixSize(e.width) || "", - height: l.WidgetAbstract.prototype.fixSize(t) || "", - symbols: e.symbols, - greyText: e.greyText || "", - symbols_description: e.symbols_description || "", - large_chart_url: e.large_chart_url || "", - customer: e.customer || "", - backgroundColor: e.backgroundColor || "", - gridLineColor: e.gridLineColor || "", - fontColor: e.fontColor || "", - widgetFontColor: e.widgetFontColor || "", - timeAxisBackgroundColor: e.timeAxisBackgroundColor || "", - chartOnly: !!e.chartOnly, - locale: e.locale, - whitelabel: !!e.whitelabel || "", - colorTheme: e.colorTheme, - isTransparent: e.isTransparent, - useWidgetHost: Boolean(e.useWidgetHost), - showFloatingTooltip: e.showFloatingTooltip, - valuesTracking: e.valuesTracking, - showVolume: e.showVolume, - volumeUpColor: e.volumeUpColor, - volumeDownColor: e.volumeDownColor, - hideDateRanges: e.hideDateRanges, - scalePosition: e.scalePosition, - scaleMode: e.scaleMode, - fontFamily: e.fontFamily, - noTimeScale: e.noTimeScale, - ...o, - }), - this.createWidget(); - }, - widget: function (e) { - this.id = e.id || l.gId(); - var t = l.getUrlParams(), - o = e.tvwidgetsymbol || t.tvwidgetsymbol || t.symbol || e.symbol || "NASDAQ:AAPL", - i = e.logo || ""; - i.src && (i = i.src), i && i.replace(".png", ""); - var n = l.calculateWidgetHeight(e.height || 500, e.container_id); - (this.options = { - whitelabel: e.whitelabel || "", - width: e.width || 800, - height: n, - symbol: o, - interval: e.interval || "1", - range: e.range || "", - timezone: e.timezone || "", - autosize: e.autosize, - hide_top_toolbar: e.hide_top_toolbar, - hide_side_toolbar: e.hide_side_toolbar, - hide_legend: e.hide_legend, - allow_symbol_change: e.allow_symbol_change, - save_image: void 0 === e.save_image || e.save_image, - container: e.container_id || "", - toolbar_bg: e.toolbar_bg || "f4f7f9", - watchlist: e.watchlist || [], - editablewatchlist: !!e.editablewatchlist, - studies: e.studies || [], - theme: e.theme || "", - style: e.style || "", - extended_hours: void 0 === e.extended_hours ? void 0 : +e.extended_hours, - details: !!e.details, - calendar: !!e.calendar, - hotlist: !!e.hotlist, - hideideas: !!e.hideideas, - hideideasbutton: !!e.hideideasbutton, - widgetbar_width: +e.widgetbar_width || void 0, - withdateranges: e.withdateranges || "", - customer: e.customer || i || "", - venue: e.venue, - symbology: e.symbology, - logo: i, - show_popup_button: !!e.show_popup_button, - popup_height: e.popup_height || "", - popup_width: e.popup_width || "", - studies_overrides: e.studies_overrides, - overrides: e.overrides, - enabled_features: e.enabled_features, - disabled_features: e.disabled_features, - publish_source: e.publish_source || "", - enable_publishing: e.enable_publishing, - whotrades: e.whotrades || void 0, - locale: e.locale, - referral_id: e.referral_id, - no_referral_id: e.no_referral_id, - fundamental: e.fundamental, - percentage: e.percentage, - hidevolume: e.hidevolume, - padding: e.padding, - greyText: e.greyText || "", - horztouchdrag: e.horztouchdrag, - verttouchdrag: e.verttouchdrag, - useWidgetHost: Boolean(e.useWidgetHost), - }), - e.cme && (this.options.customer = "cme"), - isFinite(e.widgetbar_width) && e.widgetbar_width > 0 && (this.options.widgetbar_width = e.widgetbar_width), - (this._ready_handlers = []), - this.create(); - }, - chart: function (e) { - (this.id = l.gId()), - (this.options = { - width: e.width || 640, - height: e.height || 500, - container: e.container_id || "", - realtime: e.realtime, - chart: e.chart, - locale: e.locale, - type: "chart", - autosize: e.autosize, - mobileStatic: e.mobileStatic, - }), - (this._ready_handlers = []), - this.create(); - }, - stream: function (e) { - (this.id = l.gId()), (this.options = { width: e.width || 640, height: e.height || 500, container: e.container_id || "", stream: e.stream, locale: e.locale, autosize: e.autosize }), this.create(); - }, - EventsWidget: function (e) { - (this.id = l.gId()), - (this.options = { container: e.container_id || "", width: e.width || 486, height: e.height || 670, currency: e.currencyFilter || "", importance: e.importanceFilter || "", type: "economic-calendar" }), - this.createWidget(e); - }, - IdeasStreamWidget: function (e) { - (this.id = l.gId()), - (this.options = { - container: e.container_id || "", - width: e.width || 486, - height: e.height || 670, - symbol: e.symbol || "", - username: e.username || "", - mode: e.mode || "", - publishSource: e.publishSource || "", - sort: e.sort || "trending", - stream: e.stream, - waitSymbol: e.waitSymbol, - hideDescription: e.hideDescription, - startingCount: e.startingCount, - bgColor: e.bgColor || "", - headerColor: e.headerColor || "", - borderColor: e.borderColor || "", - locale: e.locale, - type: "ideas-stream", - useWidgetHost: Boolean(e.useWidgetHost), - }), - (this._ready_handlers = []), - this.createWidget(); - }, - IdeaWidget: function (e) { - (this.id = l.gId()), - (this.options = { container: e.container_id || "", width: e.width || 486, height: e.height || 670, idea: e.idea || "", chartUrl: e.chartUrl || "", whotrades: e.whotrades || void 0, locale: e.locale, type: "idea" }), - this.createWidget(e); - }, - ChatWidgetEmbed: function (e) { - (this.id = l.gId()), - (this.options = { container: e.container_id || "", width: e.width || 400, height: e.height || 500, room: e.room || "", whotrades: e.whotrades || void 0, locale: e.locale, type: "chat-embed" }), - this.createWidget(e); - }, - }; - (l.WidgetAbstract.prototype = { - fixSize: function (e) { - return /^[0-9]+(\.|,[0-9])*$/.test(e) ? e + "px" : e; - }, - width: function () { - return this.options.autosize ? "100%" : l.WidgetAbstract.prototype.fixSize(this.options.width); - }, - height: function () { - return this.options.autosize ? "100%" : l.WidgetAbstract.prototype.fixSize(this.options.height); - }, - addWrapperFrame: function (e, t, o) { - var i = l.WidgetAbstract.prototype.height.call(this), - n = l.WidgetAbstract.prototype.width.call(this); - o = o || "transparent"; - return ( - '
' + - e + - "
" + - (t || "") + - "
" - ); - }, - addFooterLogo: function (e, t) { - var o = (t || {}).greyText || "powered by", - i = (t || {}).linkText || "tradingview.com", - n = (t || {}).href || "https://www.tradingview.com/"; - return l.WidgetAbstract.prototype.addWrapperFrame.call( - this, - e, - '
", - "#fff" - ); - }, - }), - (l.ChatWidgetEmbed.prototype = { - createWidget: function () { - var e = this.widgetCode(); - (e = l.WidgetAbstract.prototype.addFooterLogo.call(this, e)), h(e, this.options.container); - }, - widgetCode: function () { - var e = this.options.room ? "#" + encodeURIComponent(this.options.room) : "", - t = "&" + l.createUrlParams({ whotrades: this.options.whotrades, locale: this.options.locale }), - o = l.generateUtmForUrlParams(this.options, { type: "UserInfoWidget" }); - return ( - '' - ); - }, - }), - (l.IdeaWidget.prototype = { - createWidget: function () { - var e = this.widgetCode(); - h(e, this.options.container); - var t = this, - o = document.getElementById(this.id); - (this.postMessage = l.postMessageWrapper(o.contentWindow, this.id)), - this.postMessage.on( - "resize", - function (e) { - e.id === t.id && (o.style.height = e.height + "px"); - }, - !0 - ); - }, - widgetCode: function () { - var e = l.createUrlParams({ - id: this.id, - width: this.options.width, - height: this.options.height, - idea: this.options.idea, - chart_url: this.options.chartUrl, - whotrades: this.options.whotrades, - locale: this.options.locale, - }); - this.options.type = "idea"; - var t = "&" + l.generateUtmForUrlParams(this.options), - o = l.ideasHost + "/idea-popup/?" + e + t; - return ( - '' - ); - }, - getSymbol: function (e) { - this.postMessage.on("symbolInfo", e); - }, - }), - (l.EventsWidget.prototype = { - createWidget: function () { - var e = this.widgetCode(); - h(e, this.options.container); - }, - widgetCode: function () { - var e = l.createUrlParams({ currency: this.options.currency, importance: this.options.importance }); - this.options.type = "events"; - var t = "&" + l.generateUtmForUrlParams(this.options); - return ( - '' - ); - }, - }), - (l.IdeasStreamWidget.prototype = { - createWidget: function () { - var e = this.widgetCode(); - h(e, this.options.container); - var t = this, - o = document.getElementById(this.id); - (this.postMessage = l.postMessageWrapper(o.contentWindow, this.id)), - l.bindEvent(o, "load", function () { - t._ready = !0; - for (var e = t._ready_handlers.length; e--; ) t._ready_handlers[e].call(t); - }), - t.postMessage.on( - "resize", - function (e) { - if (e.id === t.id) { - var i = Math.max(e.height, 450); - o.style.height = i + "px"; - } - }, - !0 - ); - }, - widgetCode: function () { - var e = this.options, - t = l.createUrlParams({ - id: this.id, - width: e.width, - height: e.height, - symbol: e.symbol, - username: e.username, - mode: e.mode, - publish_source: e.publishSource, - sort: e.sort, - stream: e.stream, - wait_symbol: e.waitSymbol, - hide_desc: e.hideDescription, - s_count: e.startingCount, - bg_color: e.bgColor, - h_color: e.headerColor, - borderColor: e.borderColor, - locale: e.locale, - useWidgetHost: Boolean(e.useWidgetHost), - }), - o = l.generateUtmForUrlParams(this.options) + "&", - i = l.getHost(e) + "/ideaswidgetembed/?" + o + t; - return ''; - }, - setSymbol: function (e) { - var t = document.getElementById(this.id); - this.postMessage.post(t.contentWindow, "setSymbol", e); - }, - ready: function (e) { - this._ready ? e.call(this) : this._ready_handlers.push(e); - }, - }), - (l.MiniWidget.prototype = { - createWidget: function () { - var e = this.widgetCode(), - t = this.options; - if (!t.noLogoOverlay && !t.whitelabel) { - var o = this.options.greyText || "Quotes by"; - e = l.WidgetAbstract.prototype.addFooterLogo.call(this, e, { greyText: o, linkText: "TradingView" }); - } - h(e, t.container); - }, - widgetCode: function () { - var e = "", - t = "", - o = "", - i = "/miniwidgetembed/", - n = this.options.width ? "&width=" + encodeURIComponent(this.options.width) : "", - r = this.options.height ? "&height=" + encodeURIComponent(this.options.height) : "", - s = this.options.noGraph ? "&noGraph=" + encodeURIComponent(this.options.noGraph) : "", - a = this.options.locale ? "&locale=" + encodeURIComponent(this.options.locale) : "", - d = this.options.whitelabel ? "&whitelabel=1" : ""; - this.options.type = "market-overview"; - for ( - var h = "&" + l.generateUtmForUrlParams(this.options), - c = [ - "large_chart_url", - "large_chart_target", - "backgroundColor", - "gridLineColor", - "fontColor", - "underLineColor", - "underLineBottomColor", - "trendLineColor", - "activeTickerBackgroundColor", - "timeAxisBackgroundColor", - "locale", - "styleTickerActiveBg", - "styleTabActiveBorderColor", - "styleTickerBodyFontSize", - "styleTickerBodyFontWeight", - "styleTickerHeadFontSize", - "styleTickerHeadFontWeight", - "styleTickerChangeDownColor", - "styleTickerChangeUpColor", - "styleTickerLastDownBg", - "styleTickerLastUpBg", - "styleTickerSymbolColor", - "styleTickerSymbolHoverTextDecoration", - "styleTickerActiveSymbolTextDecoration", - "styleTabsActiveBorderColor", - "styleTabsNoBorder", - "styleWidgetNoBorder", - ], - p = "", - g = c.length - 1; - g >= 0; - g-- - ) { - var m = c[g], - u = this.options[m]; - p += u ? "&" + m + "=" + encodeURIComponent(u) : ""; - } - var y = function (e) { - for (var t = [], i = 0; i < e.length; i++) { - var n = e[i]; - if (l.isArray(n)) { - var r = encodeURIComponent(n[0]), - s = encodeURIComponent(n[1]); - t.push(r), (o += "&" + r + "=" + s); - } else "string" == typeof n && t.push(encodeURIComponent(n)); - } - return t.join(","); - }; - if (this.options.tabs) { - g = 0; - for (var w = this.options.tabs.length; g < w; g++) { - var b = this.options.tabs[g]; - this.options.symbols[b] && (e += (e ? "&" : "") + encodeURIComponent(b) + "=" + y(this.options.symbols[b])); - } - t = "&tabs=" + encodeURIComponent(this.options.tabs.join(",")); - } else this.options.symbols && (e = "symbols=" + y(this.options.symbols)); - if (this.options.symbols_description) for (var f in this.options.symbols_description) o += "&" + encodeURIComponent(f) + "=" + encodeURIComponent(this.options.symbols_description[f]); - this.options.customer && (i = "/" + this.options.customer + i); - var v = l.getHost(this.options) + i + "?" + e + t + o + p + n + r + s + a + d + h; - return ( - '' - ); - }, - remove: function () { - var e = document.getElementById("tradingview_widget"); - e.parentNode.removeChild(e); - }, - }), - (l.MediumWidget.prototype = { - createWidget: function () { - var e = this.widgetCode(); - h(e, this.options.container); - }, - widgetCode: function () { - var e = "", - t = - "symbols=" + - (function (t) { - for (var o = [], i = 0; i < t.length; i++) { - var n = t[i]; - if (l.isArray(n)) { - var r = encodeURIComponent(n[0]), - s = encodeURIComponent(n[1]); - o.push(r), 2 === n.length && (e += "&" + r + "=" + s); - } else "string" == typeof n && o.push(encodeURIComponent(n)); - } - return o.join(","); - })(this.options.symbols), - o = "&width=" + encodeURIComponent(this.options.width), - i = "&height=" + encodeURIComponent(this.options.height), - n = "&colorTheme=" + encodeURIComponent(this.options.colorTheme); - this.options.type = "symbol-overview"; - var r = "&" + l.generateUtmForUrlParams(this.options); - for ( - var s = [ - "backgroundColor", - "gridLineColor", - "fontColor", - "widgetFontColor", - "underLineColor", - "underLineBottomColor", - "trendLineColor", - "activeTickerBackgroundColor", - "timeAxisBackgroundColor", - "locale", - "scalePosition", - "scaleMode", - "chartType", - "color", - "colorGrowing", - "colorFalling", - "lineColor", - "lineColorGrowing", - "lineColorFalling", - "topColor", - "bottomColor", - "upColor", - "downColor", - "borderUpColor", - "borderDownColor", - "wickUpColor", - "wickDownColor", - "fontFamily", - "noTimeScale", - "valuesTracking", - "lineWidth", - "volumeUpColor", - "volumeDownColor", - ], - a = "", - d = s.length - 1; - d >= 0; - d-- - ) { - var h = s[d], - c = this.options[h]; - a += c ? "&" + h + "=" + encodeURIComponent(c) : ""; - } - var p = this.options.chartOnly ? "&chartOnly=1" : "", - g = this.options.whitelabel ? "&whitelabel=1" : "", - m = this.options.isTransparent ? "&isTransparent=1" : "", - u = this.options.showFloatingTooltip ? "&showFloatingTooltip=1" : "", - y = this.options.showVolume ? "&showVolume=1" : "", - w = this.options.hideDateRanges ? "&hideDateRanges=1" : "", - b = "/mediumwidgetembed/"; - this.options.customer && (b = "/" + this.options.customer + b); - var f = l.getHost(this.options) + b + "?" + t + e + a + p + g + o + i + n + m + r + u + y + w; - return ( - '' - ); - }, - remove: function () { - var e = document.getElementById("tradingview_widget"); - e.parentNode.removeChild(e); - }, - }), - (l.widget.prototype = { - create: function () { - this.options.type = this.options.fundamental ? "fundamental" : "chart"; - var e = this.render(), - t = this; - this.options.noLogoOverlay || (e = l.WidgetAbstract.prototype.addWrapperFrame.call(this, e)), h(e, this.options.container); - var o = document.getElementById("tradingview-copyright"); - o && o.parentElement && o.parentElement.removeChild(o), - (this.iframe = document.getElementById(this.id)), - (this.postMessage = l.postMessageWrapper(this.iframe.contentWindow, this.id)), - l.bindEvent(this.iframe, "load", function () { - t.postMessage.get("widgetReady", {}, function () { - var e; - for (t._ready = !0, e = t._ready_handlers.length; e--; ) t._ready_handlers[e].call(t); - }); - }), - t.postMessage.on("logoCreated", function (e) { - if (e.left && e.bottom && e.width && e.height && e.href) { - t._logoOverlay && (t._logoOverlay.parentNode.removeChild(t._logoOverlay), delete t._logoOverlay); - var o = document.createElement("a"); - e.text && ((o.textContent = e.text), (o.style.color = "transparent")), - (o.style.position = "absolute"), - (o.style.display = "inline-block"), - (o.style.left = e.left), - (o.style.bottom = e.bottom), - (o.style.width = e.width), - (o.style.height = e.height), - (o.style.backgroundColor = "transparent"), - (o.style.pointerEvents = "none"), - (o.href = e.href), - o.setAttribute("target", "_blank"), - (t._logoOverlay = o), - document.getElementById(t.id + "-wrapper").appendChild(o); - } - }), - t.postMessage.on("setLogoOverlayVisibility", function (e) { - t._logoOverlay && e && "boolean" == typeof e.visible && (t._logoOverlay.style.display = e.visible ? "inline-block" : "none"); - }), - t.postMessage.on("openChartInPopup", function (e) { - for (var o = l.cloneSimpleObject(t.options), i = ["symbol", "interval"], n = i.length - 1; n >= 0; n--) { - var r = i[n], - s = e[r]; - s && (o[r] = s); - } - o.show_popup_button = !1; - var a = t.options.popup_width || 900, - d = t.options.popup_height || 600, - h = (screen.width - a) / 2, - c = (screen.height - d) / 2, - p = window.open(t.generateUrl(o), "_blank", "resizable=yes, top=" + c + ", left=" + h + ", width=" + a + ", height=" + d); - p && (p.opener = null); - }); - }, - ready: function (e) { - this._ready ? e.call(this) : this._ready_handlers.push(e); - }, - render: function () { - var e = this.generateUrl(); - return ''; - }, - generateUrl: function (e) { - var t; - function o(t, o) { - return (o = o || t), void 0 === e[t] ? "" : "&" + encodeURIComponent(o) + "=" + (e[t] ? "1" : "0"); - } - function i(t, o, i) { - return (i = i || t), e[t] ? "&" + i + "=" + o : ""; - } - function n(t, o, i) { - return (i = i || {}), "&" + t + "=" + (e[t] ? encodeURIComponent(JSON.stringify(o)) : encodeURIComponent(JSON.stringify(i))); - } - return ( - (t = "cme" === (e = e || this.options).customer ? "/cmewidgetembed/" : e.customer ? "/" + e.customer + "/widgetembed/" : "/widgetembed/"), - (e.enable_publishing ? l.ideasHost : l.getHost(e)) + - t + - "?frameElementId=" + - this.id + - "&symbol=" + - encodeURIComponent(e.symbol) + - "&interval=" + - encodeURIComponent(e.interval) + - (e.range ? "&range=" + encodeURIComponent(e.range) : "") + - (e.whitelabel ? "&whitelabel=1" : "") + - (e.hide_top_toolbar ? "&hidetoptoolbar=1" : "") + - (e.hide_legend ? "&hidelegend=1" : "") + - o("hide_side_toolbar", "hidesidetoolbar") + - o("allow_symbol_change", "symboledit") + - o("save_image", "saveimage") + - "&toolbarbg=" + - e.toolbar_bg.replace("#", "") + - (e.watchlist && e.watchlist.length && e.watchlist.join ? "&watchlist=" + encodeURIComponent(e.watchlist.join("")) : "") + - i("editablewatchlist", "1") + - i("details", "1") + - i("calendar", "1") + - i("hotlist", "1") + - (e.studies && l.isArray(e.studies) ? ("string" == typeof e.studies[0] ? i("studies", encodeURIComponent(e.studies.join(""))) : n("studies", e.studies)) : "") + - o("horztouchdrag") + - o("verttouchdrag") + - i("widgetbar_width", e.widgetbar_width, "widgetbarwidth") + - i("hideideas", "1") + - i("theme", encodeURIComponent(e.theme)) + - i("style", encodeURIComponent(e.style)) + - (void 0 === e.extended_hours ? "" : "&extended_hours=" + e.extended_hours) + - i("timezone", encodeURIComponent(e.timezone)) + - i("hideideasbutton", "1") + - i("withdateranges", "1") + - i("hidevolume", "1") + - (void 0 === e.padding ? "" : "&padding=" + e.padding) + - i("show_popup_button", "1", "showpopupbutton") + - n("studies_overrides", e.studies_overrides, {}) + - n("overrides", e.overrides, {}) + - n("enabled_features", e.enabled_features, []) + - n("disabled_features", e.disabled_features, []) + - (e.show_popup_button ? "&showpopupbutton=1" : "") + - (e.publish_source ? "&publishsource=" + encodeURIComponent(e.publish_source) : "") + - (e.enable_publishing ? "&enablepublishing=" + encodeURIComponent(e.enable_publishing) : "") + - (e.venue ? "&venue=" + encodeURIComponent(e.venue) : "") + - (e.symbology ? "&symbology=" + encodeURIComponent(e.symbology) : "") + - (e.whotrades ? "&whotrades=" + encodeURIComponent(e.whotrades) : "") + - (e.locale ? "&locale=" + e.locale : "") + - (e.referral_id ? "&referral_id=" + e.referral_id : "") + - (e.no_referral_id ? "&no_referral_id=1" : "") + - (e.fundamental ? "&fundamental=" + encodeURIComponent(e.fundamental) : "") + - (e.percentage ? "&percentage=" + encodeURIComponent(e.percentage) : "") + - "&utm_source=" + - encodeURI(window.location.hostname) + - "&utm_medium=" + - (l.hasCopyright(e.container) ? "widget_new" : "widget") + - (e.type ? "&utm_campaign=" + e.type : "") + - (e.type && "chart" === e.type ? "&utm_term=" + encodeURIComponent(e.symbol) : "") - ); - }, - image: function (e) { - this.postMessage.get("imageURL", {}, function (t) { - var o = l.host + "/x/" + t + "/"; - e(o); - }); - }, - subscribeToQuote: function (e) { - var t = document.getElementById(this.id); - this.postMessage.post(t.contentWindow, "quoteSubscribe"), this.postMessage.on("quoteUpdate", e); - }, - getSymbolInfo: function (e) { - this.postMessage.get("symbolInfo", {}, e); - }, - remove: function () { - var e = document.getElementById(this.id); - e.parentNode.removeChild(e); - }, - reload: function () { - var e = document.getElementById(this.id), - t = e.parentNode; - t.removeChild(e), (t.innerHTML = this.render()); - }, - }), - (l.chart.prototype = { - create: function () { - this.isMobile = l.isMobileDevice.any; - var e, - t = this.render(), - o = this; - l.chartCssAttached || (l.css(this.renderCss()), (l.chartCssAttached = !0)), - h(t, this.options.container), - (e = document.getElementById(this.id)), - l.bindEvent(e, "load", function () { - var e; - for (o._ready = !0, e = o._ready_handlers.length; e--; ) o._ready_handlers[e].call(o); - }), - l.onready(function () { - var t = !1; - if ((document.querySelector && document.querySelector('a[href$="/v/' + o.options.chart + '/"]') && (t = !0), !t)) - for (var i = document.getElementsByTagName("a"), n = new RegExp("/v/" + o.options.chart + "/$"), r = new RegExp("/chart/([0-9a-zA-Z:+*-/()]+)/" + o.options.chart), s = 0; s < i.length; s++) - if (n.test(i[s].href) || r.test(i[s].href)) { - t = !0; - break; - } - t && ((e.src += "#nolinks"), (e.name = "nolinks")); - }), - (this.postMessage = l.postMessageWrapper(e.contentWindow, this.id)), - this.postMessage.on( - "toggleFullscreen", - function (t) { - e.contentWindow === this.source && o.toggleFullscreen(t.value); - }, - !0 - ); - }, - ready: l.widget.prototype.ready, - renderCss: function () { - return ".tradingview-widget {position: relative;}"; - }, - render: function () { - var e = this.options.mobileStatic && this.isMobile ? l.host + "/embed-static/" : l.host + "/embed/", - t = "?method=script" + (this.options.locale ? "&locale=" + encodeURIComponent(this.options.locale) : ""); - return ( - (this.options.type = "chart"), - '
' - ); - }, - toggleFullscreen: function (e) { - var t = document.getElementById(this.id); - e - ? ((t.style.position = "fixed"), - (t.style.width = "100vw"), - (t.style.maxWidth = "100%"), - (t.style.height = "100vh"), - (t.style.maxHeight = "100%"), - (t.style.left = "0px"), - (t.style.top = "0px"), - (t.style.zIndex = "1000000"), - (t.style.backgroundColor = "#fff")) - : ((t.style.position = "static"), - this.options.autosize ? ((t.style.width = "100%"), (t.style.height = "100%")) : ((t.style.width = this.options.width + "px"), (t.style.height = this.options.height + "px")), - (t.style.maxWidth = "none"), - (t.style.maxHeight = "none"), - (t.style.zIndex = "auto"), - (t.style.backgroundColor = "transparent")); - }, - getSymbolInfo: function (e) { - this.postMessage.get("symbolInfo", {}, e); - }, - }), - (l.stream.prototype = { - create: function () { - this.isMobile = l.isMobileDevice.any; - var e = this.render(); - h(e, this.options.container); - }, - render: function () { - var e = "?" + (this.options.locale ? "&locale=" + encodeURIComponent(this.options.locale) : ""); - return ( - (this.options.type = "chart"), - '
' - ); - }, - }), - (l.postMessageWrapper = - ((o = {}), - (i = {}), - (n = {}), - (r = 0), - (s = 0), - window.addEventListener && - window.addEventListener("message", function (e) { - var n; - try { - n = JSON.parse(e.data); - } catch (e) { - return; - } - if (n && n.provider && "TradingView" === n.provider) - if (((n.source = e.source), "get" === n.type)) { - if (!i[n.name]) return; - i[n.name].forEach(function (e) { - "function" == typeof e && - e.call(n, n.data, function (e) { - var o = { id: n.id, type: "on", name: n.name, client_id: n.client_id, data: e, provider: "TradingView" }; - t.postMessage(JSON.stringify(o), "*"); - }); - }); - } else if ("on" === n.type) o[n.client_id] && o[n.client_id][n.id] && (o[n.client_id][n.id].call(n, n.data), delete o[n.client_id][n.id]); - else if ("post" === n.type) { - if (!i[n.name]) return; - i[n.name].forEach(function (e) { - "function" == typeof e && e.call(n, n.data, function () {}); - }); - } - }), - function (e, a) { - return ( - (o[a] = {}), - (n[a] = e), - (t = e), - { - on: function (e, t, o) { - (i[e] && o) || (i[e] = []), i[e].push(t); - }, - off: function (e, t) { - if (!i[e]) return !1; - var o = i[e].indexOf(t); - o > -1 && i[e].splice(o, 1); - }, - get: function (e, t, i) { - var s = { id: r++, type: "get", name: e, client_id: a, data: t, provider: "TradingView" }; - (o[a][s.id] = i), n[a].postMessage(JSON.stringify(s), "*"); - }, - post: function (e, t, o) { - var i = { id: s++, type: "post", name: t, data: o, provider: "TradingView" }; - e && "function" == typeof e.postMessage && e.postMessage(JSON.stringify(i), "*"); - }, - } - ); - })), - (l.getUrlParams = function () { - for ( - var e = /\+/g, - t = /([^&=]+)=?([^&]*)/g, - o = window.location.search.substring(1), - i = t.exec(o), - n = function (t) { - return decodeURIComponent(t.replace(e, " ")); - }, - r = {}; - i; - - ) - (r[n(i[1])] = n(i[2])), (i = t.exec(o)); - return r; - }), - (l.createUrlParams = function (e) { - var t = []; - for (var o in e) e.hasOwnProperty(o) && null != e[o] && t.push(encodeURIComponent(o) + "=" + encodeURIComponent(e[o])); - return t.join("&"); - }); - var h = function (e, t) { - var o = document.getElementById(t); - if (o) { - o.innerHTML = e; - var i = o.parentElement && o.parentElement.querySelector(".tradingview-widget-copyright"); - i && (i.style.width = o.querySelector("iframe").style.width); - } else document.write(e); - document.body.appendChild(l.embedStylesForCopyright()); - }, - c = function (e, t) { - for (var o in t) "object" == typeof t[o] && e.hasOwnProperty(o) ? c(e[o], t[o]) : (e[o] = t[o]); - return e; - }; - window.TradingView ? c(window.TradingView, l) : (window.TradingView = l); - } -})(); diff --git a/basicswap/templates/404.html b/basicswap/templates/404.html index 3c9736f..b1ecfaa 100644 --- a/basicswap/templates/404.html +++ b/basicswap/templates/404.html @@ -26,71 +26,70 @@ - {% for m in messages %} + {% for m in messages %} -
-
-
-
-
-
-
- - - -
-
-

{{ m }}

-
-
-
- -
-
-
-
+ - {% endfor %} + {% endfor %} - {% for m in err_messages %} + {% for m in err_messages %} -
-
-
-
-
-
-
- - - -
-
-

-

Error: {{ m }}

-

-
-
-
- -
-
-
-
+ - {% endfor %} + {% endfor %}
@@ -111,10 +110,6 @@
- - - -
diff --git a/basicswap/templates/automation_strategies.html b/basicswap/templates/automation_strategies.html index 1da3106..c93fc8a 100644 --- a/basicswap/templates/automation_strategies.html +++ b/basicswap/templates/automation_strategies.html @@ -44,71 +44,70 @@ - {% for m in messages %} + {% for m in messages %} -
-
-
-
-
-
-
- - - + + + {% endfor %} + + {% for m in err_messages %} + +
-
- -
-
-
-
+ - {% endfor %} - - {% for m in err_messages %} - -
-
-
-
-
-
-
- - - -
-
-

-

Error: {{ m }}

-

-
-
-
- -
-
-
-
- - {% endfor %} + {% endfor %}
@@ -212,7 +211,7 @@ {% for s in strategies %} - {{ s[1] }} + {{ s[1] }} {{ s[2] }} diff --git a/basicswap/templates/automation_strategy.html b/basicswap/templates/automation_strategy.html index 28f0875..b3ca255 100644 --- a/basicswap/templates/automation_strategy.html +++ b/basicswap/templates/automation_strategy.html @@ -41,71 +41,70 @@
- {% for m in messages %} + {% for m in messages %} -
-
-
-
-
-
-
- - - -
-
-

{{ m }}

-
-
-
- -
-
-
-
+ - {% endfor %} + {% endfor %} - {% for m in err_messages %} + {% for m in err_messages %} -
-
-
-
-
-
-
- - - -
-
-

-

Error: {{ m }}

-

-
-
-
- -
-
-
-
+ - {% endfor %} + {% endfor %}
@@ -142,13 +141,13 @@ Data - Notes - diff --git a/basicswap/templates/automation_strategy_new.html b/basicswap/templates/automation_strategy_new.html index 47caa1b..f7a6347 100644 --- a/basicswap/templates/automation_strategy_new.html +++ b/basicswap/templates/automation_strategy_new.html @@ -41,71 +41,70 @@
- {% for m in messages %} + {% for m in messages %} -
-
-
-
-
-
-
- - - + + + {% endfor %} + + {% for m in err_messages %} + +
-
- -
-
-
-
+ - {% endfor %} - - {% for m in err_messages %} - -
-
-
-
-
-
-
- - - -
-
-

-

Error: {{ m }}

-

-
-
-
- -
-
-
-
- - {% endfor %} + {% endfor %}
diff --git a/basicswap/templates/bid.html b/basicswap/templates/bid.html index a3dd521..e61f50e 100644 --- a/basicswap/templates/bid.html +++ b/basicswap/templates/bid.html @@ -54,74 +54,70 @@
- {% for m in messages %} + {% for m in messages %} -
-
-
-
-
-
-
- - - + + + {% endfor %} + + {% for m in err_messages %} + +
-
- -
-
-
-
- - {% endfor %} - - {% for m in err_messages %} - -
-
-
-
-
-
-
- - - -
-
-

-

Error: {{ m }}

-

-
-
-
- -
-
-
-
- - {% endfor %} - - + + {% endfor %}
@@ -371,10 +367,38 @@ {% else %} + {% if data.show_bidder_seq_diagram %} +
+ +
+ {% else %} +
+ +
+ {% endif %} + {% if data.show_offerer_seq_diagram %} +
+ +
+ {% else %} +
+ +
+ {% endif %} + + {% if data.can_abandon == true %}
-
@@ -412,33 +436,23 @@ {% endif %} + +
- {% if data.show_bidder_seq_diagram %} - - {% else %} - - {% endif %} - - {% if data.show_offerer_seq_diagram %} - - {% else %} - - - {% endif %} {% if data.show_bidder_seq_diagram %} - + {% endif %} {% if data.show_offerer_seq_diagram %} - + {% endif %} diff --git a/basicswap/templates/bid_xmr.html b/basicswap/templates/bid_xmr.html index 1297d20..609e361 100644 --- a/basicswap/templates/bid_xmr.html +++ b/basicswap/templates/bid_xmr.html @@ -54,71 +54,70 @@
- {% for m in messages %} + {% for m in messages %} -
-
-
-
-
-
-
- - - + + + {% endfor %} + + {% for m in err_messages %} + +
-
- -
-
-
-
+ - {% endfor %} - - {% for m in err_messages %} - -
-
-
-
-
-
-
- - - -
-
-

-

Error: {{ m }}

-

-
-
-
- -
-
-
-
- - {% endfor %} + {% endfor %}
@@ -565,18 +564,38 @@ {% else %} - {% if data.was_received == 'True' %} + {% if data.show_bidder_seq_diagram %} +
+ +
+ {% else %} +
+ +
+ {% endif %} + {% if data.show_offerer_seq_diagram %} +
+ +
+ {% else %} +
+ +
+ {% endif %} -
- -
- {% endif %} {% if data.can_abandon == true %}
-
@@ -604,15 +623,13 @@ {% endif %} - {% if data.show_bidder_seq_diagram %} - - {% else %} - - {% endif %} - {% if data.show_offerer_seq_diagram %} - - {% else %} - + {% if data.was_received == 'True' %} + +
+ +
+ {% endif %}
diff --git a/basicswap/templates/bids.html b/basicswap/templates/bids.html index 03495e8..ddab01f 100644 --- a/basicswap/templates/bids.html +++ b/basicswap/templates/bids.html @@ -148,7 +148,7 @@ - Clear Filters + Clear diff --git a/basicswap/templates/debug.html b/basicswap/templates/debug.html index 859f3e3..6328115 100644 --- a/basicswap/templates/debug.html +++ b/basicswap/templates/debug.html @@ -42,71 +42,71 @@
- {% for m in messages %} + {% for m in messages %} -
-
-
-
-
-
-
- - - -
-
-

{{ m }}

-
-
-
- -
-
-
-
+ - {% endfor %} + {% endfor %} - {% for m in err_messages %} + {% for m in err_messages %} -
-
-
-
-
-
-
- - - -
-
-

-

Error: {{ m }}

-

-
-
-
- -
-
-
-
+ - {% endfor %} + {% endfor %} +
diff --git a/basicswap/templates/explorers.html b/basicswap/templates/explorers.html index 67521de..143c67a 100644 --- a/basicswap/templates/explorers.html +++ b/basicswap/templates/explorers.html @@ -41,71 +41,70 @@
- {% for m in messages %} + {% for m in messages %} -
-
-
-
-
-
-
- - - + + + {% endfor %} + + {% for m in err_messages %} + +
-
- -
-
-
-
+ - {% endfor %} - - {% for m in err_messages %} - -
-
-
-
-
-
-
- - - -
-
-

-

Error: {{ m }}

-

-
-
-
- -
-
-
-
- - {% endfor %} + {% endfor %}
@@ -191,7 +190,7 @@ - diff --git a/basicswap/templates/footer.html b/basicswap/templates/footer.html index dc35cd0..4ed5a8d 100644 --- a/basicswap/templates/footer.html +++ b/basicswap/templates/footer.html @@ -24,10 +24,10 @@
-

© 2022~ BasicSwap

-

version {{ version }}

+

© 2022~

+

{{ title }}

-

GUI version 0.1

+

GUI 0.1.1

Made with

@@ -56,3 +56,4 @@
+ \ No newline at end of file diff --git a/basicswap/templates/header.html b/basicswap/templates/header.html index c7e33e3..10a4ae8 100644 --- a/basicswap/templates/header.html +++ b/basicswap/templates/header.html @@ -7,10 +7,11 @@ {% endif %} + - + {{ title }} @@ -18,11 +19,11 @@
- {% for m in messages %} + {% for m in messages %} -
-
-
-
-
-
-
- - - +
-
- -
-
-
-
+ - {% endfor %} + {% endfor %} + + {% for m in err_messages %} + + + + {% endfor %}
diff --git a/basicswap/templates/offer.html b/basicswap/templates/offer.html index 00e345a..5d3d447 100644 --- a/basicswap/templates/offer.html +++ b/basicswap/templates/offer.html @@ -50,71 +50,70 @@
- {% for m in messages %} + {% for m in messages %} -
-
-
-
-
-
-
- - - -
-
-

{{ m }}

-
-
-
- -
-
-
-
- - {% endfor %} - - {% for m in err_messages %} - -
-
-
-
-
-
-
- - - +
-
- -
-
-
-
+ - {% endfor %} + {% endfor %} + + {% for m in err_messages %} + + + + {% endfor %} {% if sent_bid_id %}
diff --git a/basicswap/templates/offer_confirm.html b/basicswap/templates/offer_confirm.html index 4d9f912..55b806c 100644 --- a/basicswap/templates/offer_confirm.html +++ b/basicswap/templates/offer_confirm.html @@ -39,7 +39,7 @@
-
+

Confirm your offer information

@@ -54,70 +54,70 @@
- {% for m in messages %} + {% for m in messages %} -
-
-
-
-
-
-
- - - -
-
-

{{ m }}

-
-
-
- -
-
-
-
+ - {% endfor %} - {% for m in err_messages %} + {% endfor %} -
-
-
-
-
-
-
- - - -
-
-

-

Error: {{ m }}

-

-
-
-
- -
-
-
-
+ {% for m in err_messages %} - {% endfor %} + + + {% endfor %}
@@ -146,7 +146,7 @@
- + @@ -171,7 +171,7 @@
- + @@ -206,7 +206,7 @@
contacts 2 - + @@ -230,43 +230,28 @@
-

Coins from

+

You Send

-

Coin From

-
- - - - - - - - - - - -
- + {% for c in coins_from %} - {{ c[1] }} + {{ c[1] }} {% endfor %}
-

Amount From (The amount you will send)

- + @@ -275,7 +260,7 @@
- +
@@ -286,7 +271,7 @@
- + @@ -304,7 +289,7 @@
- + @@ -315,7 +300,7 @@
- Fee Rate Source: {{ data.from_fee_src }} + Fee Rate Source: {{ data.from_fee_src }}
@@ -326,7 +311,7 @@
- + @@ -342,7 +327,7 @@
- Lock Tx Spend Fee: {{ data.amt_from_lock_spend_tx_fee }} {{ data.tla_from }} + Lock Tx Spend Fee: {{ data.amt_from_lock_spend_tx_fee }} {{ data.tla_from }}
{% endif %} @@ -357,44 +342,29 @@
-

Coins to

+

You Get

-

Coin To

-
- - - - - - - - - - - -
- + {% for c in coins %} - {{ c[1] }} + {{ c[1] }} {% endfor %}
-

Amount to (The amount you will receive)

- + @@ -403,7 +373,7 @@
- +
@@ -414,7 +384,7 @@
- + @@ -432,7 +402,7 @@
- + @@ -443,7 +413,7 @@
- Fee Rate Source: {{ data.to_fee_src }} + Fee Rate Source: {{ data.to_fee_src }}
@@ -454,7 +424,7 @@
- + @@ -481,7 +451,7 @@
- + @@ -502,7 +472,7 @@
- + @@ -541,7 +511,7 @@
- + @@ -559,7 +529,7 @@
- + @@ -590,7 +560,7 @@
- + @@ -610,7 +580,7 @@
- + @@ -633,7 +603,7 @@
- + @@ -676,7 +646,7 @@
- + diff --git a/basicswap/templates/offer_new_1.html b/basicswap/templates/offer_new_1.html index f3ae21d..cad64be 100644 --- a/basicswap/templates/offer_new_1.html +++ b/basicswap/templates/offer_new_1.html @@ -49,7 +49,7 @@ {% for m in messages %} -
@@ -61,16 +61,15 @@
-

{{ m }}

+

{{ m[1] }}

- - - - - +
@@ -81,7 +80,7 @@ {% for m in err_messages %} -
@@ -140,7 +139,7 @@
- + @@ -151,7 +150,7 @@
-
+
@@ -165,7 +164,7 @@
- + @@ -177,7 +176,7 @@
@@ -199,7 +198,7 @@
- + @@ -223,43 +222,28 @@
-

Coins from

+

You Send

-

Coin From

- + -
- - - - - - - - - - - -
- + {% for c in coins_from %} - {{ c[1] }} + {{ c[1] }} {% endfor %}
-

Amount From (The amount you will send)

- - + + @@ -268,7 +252,8 @@
- + +
@@ -282,44 +267,29 @@
-

Coins to

+

You Get

-

Coin To

- + -
- - - - - - - - - - - -
- + {% for c in coins %} - {{ c[1] }} + {{ c[1] }} {% endfor %}
-

Amount to (The amount you will receive)

- - + + @@ -328,7 +298,7 @@
- +
@@ -353,7 +323,7 @@
law - + @@ -371,7 +341,7 @@
- + @@ -427,7 +397,7 @@
-
+
-
-
- - + @@ -149,15 +127,16 @@
+
- + {% for c in coins_from %} + + {% endfor %}
@@ -176,11 +155,10 @@ - + {% for c in coins %} + + {% endfor %}
@@ -247,7 +225,7 @@ - Clear Filters + Clear
@@ -311,9 +289,9 @@ {{ o[7] }} {{ o[8] }}{% if o[9]==true %} {% endif %} - {{ o[2] }} + {{ o[2] }} {{ o[4] }} - {{ o[3] }} + {{ o[3] }} {{ o[5] }} {{ o[6] }} diff --git a/basicswap/templates/rpc.html b/basicswap/templates/rpc.html index a157cc8..d8605a3 100644 --- a/basicswap/templates/rpc.html +++ b/basicswap/templates/rpc.html @@ -42,71 +42,70 @@
- {% for m in messages %} + {% for m in messages %} -
-
-
-
-
-
-
- - - + + + {% endfor %} + + {% for m in err_messages %} + +
-
- -
-
-
-
+
- {% endfor %} - - {% for m in err_messages %} - -
-
-
-
-
-
-
- - - -
-
-

-

Error: {{ m }}

-

-
-
-
- -
-
-
-
- - {% endfor %} + {% endfor %}
@@ -172,7 +171,7 @@ - diff --git a/basicswap/templates/settings.html b/basicswap/templates/settings.html index 5d4bafb..fa5cf0e 100644 --- a/basicswap/templates/settings.html +++ b/basicswap/templates/settings.html @@ -15,7 +15,7 @@ -
  • Settings
  • +
  • Settings
  • @@ -33,94 +33,117 @@

    Settings

    -

    Manage your Basicswap and Coins settings

    +

    Manage your BasicSwap and Coins settings

    - {% for m in messages %} + {% for m in messages %} -
    -
    -
    -
    -
    -
    -
    - - - + + + {% endfor %} + + {% for m in err_messages %} + +
    -
    - -
    -
    -
    -
    + - {% endfor %} - - {% for m in err_messages %} - -
    -
    -
    -
    -
    -
    -
    - - - -
    -
    -

    -

    Error: {{ m }}

    -

    -
    -
    -
    - -
    -
    -
    -
    - - {% endfor %} + {% endfor %} - - +
    - {% for c in chains %} +
    + +
    + + + + +
    +
    +
    +
    @@ -278,4 +541,4 @@ {% include 'footer.html' %} - + \ No newline at end of file diff --git a/basicswap/templates/smsgaddresses.html b/basicswap/templates/smsgaddresses.html index 555635d..5ed9337 100644 --- a/basicswap/templates/smsgaddresses.html +++ b/basicswap/templates/smsgaddresses.html @@ -42,72 +42,71 @@
    - {% for m in messages %} + {% for m in messages %} -
    -
    -
    -
    -
    -
    -
    - - - + + + {% endfor %} + + {% for m in err_messages %} + +
    -
    - -
    -
    -
    -
    - - {% endfor %} - - {% for m in err_messages %} - -
    -
    -
    -
    -
    -
    -
    - - - -
    -
    -

    -

    Error: {{ m }}

    -

    -
    -
    -
    - -
    -
    -
    -
    - - {% endfor %} + + {% endfor %} +
    @@ -174,23 +173,13 @@
    - +
    + Cancel
    diff --git a/basicswap/templates/tor.html b/basicswap/templates/tor.html index a4e5e7d..0eb1ca4 100644 --- a/basicswap/templates/tor.html +++ b/basicswap/templates/tor.html @@ -45,71 +45,70 @@
    - {% for m in messages %} + {% for m in messages %} -
    -
    -
    -
    -
    -
    -
    - - - + + + {% endfor %} + + {% for m in err_messages %} + +
    -
    - -
    -
    -
    -
    + - {% endfor %} - - {% for m in err_messages %} - -
    -
    -
    -
    -
    -
    -
    - - - -
    -
    -

    -

    Error: {{ m }}

    -

    -
    -
    -
    - -
    -
    -
    -
    - - {% endfor %} + {% endfor %}
    diff --git a/basicswap/templates/wallet.html b/basicswap/templates/wallet.html index b8f72df..afb7ec2 100644 --- a/basicswap/templates/wallet.html +++ b/basicswap/templates/wallet.html @@ -50,41 +50,103 @@
    - {% for m in messages %} + {% for m in messages %} -
    -
    -
    -
    -
    -
    -
    - - - -
    -
    -

    {{ m }}

    -
    -
    -
    - -
    -
    -
    -
    + - {% endfor %} + {% endfor %} - {% for m in err_messages %} + {% for m in err_messages %} -
    + + + {% endfor %} + +{% if w.updating %} + + + +{% endif %} +{% if w.havedata %} {% if w.error %} + +
    @@ -97,7 +159,7 @@

    -

    Error: {{ m }}

    +

    Error: {{ w.error }}

    @@ -114,12 +176,9 @@
    - {% endfor %} +{% else %} - - -
    {% if w.updating %} -
    Updating
    {% endif %} {% if w.havedata %} {% if w.error %}

    Error: {{ w.error }}

    {% else %} +
    @@ -174,10 +233,22 @@ {% endif %} Expected Seed: - {{ w.expected_seed }}{% if w.expected_seed != true %} - - - {% else %} + {{ w.expected_seed }} + {% if w.expected_seed != true %} + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + {% else %} {% if w.cid == '1' %} Stealth Address @@ -189,7 +260,7 @@ - + {{ w.deposit_address }} {% else %} diff --git a/basicswap/templates/wallets.html b/basicswap/templates/wallets.html index 8dbc5ca..198ce4a 100644 --- a/basicswap/templates/wallets.html +++ b/basicswap/templates/wallets.html @@ -46,71 +46,70 @@
    - {% for m in messages %} + {% for m in messages %} -
    -
    -
    -
    -
    -
    -
    - - - -
    -
    -

    {{ m }}

    -
    -
    -
    - -
    -
    -
    -
    - - {% endfor %} - - {% for m in err_messages %} - -
    -
    -
    -
    -
    -
    -
    - - - +
    -
    - -
    -
    -
    -
    +
    - {% endfor %} + {% endfor %} + + {% for m in err_messages %} + + + + {% endfor %}