From 5dfc80b2f26f722b44db3f683e2019cf8d733705 Mon Sep 17 00:00:00 2001 From: sinyo-matu Date: Sat, 6 May 2023 17:31:01 +0900 Subject: [PATCH] add favicon error indicator --- d2cli/static/favicon-err.ico | Bin 0 -> 1150 bytes d2cli/static/favicon.ico | Bin 0 -> 1150 bytes d2cli/static/watch.js | 18 +++++++++++++++++- d2cli/watch.go | 1 + 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 d2cli/static/favicon-err.ico create mode 100644 d2cli/static/favicon.ico diff --git a/d2cli/static/favicon-err.ico b/d2cli/static/favicon-err.ico new file mode 100644 index 0000000000000000000000000000000000000000..5619a4ebd39aebf606a46def8f8eb071391b383e GIT binary patch literal 1150 zcmZXUOKclO9LA@iP!SMRqN*qoq7odCKoF_wfg3_S6u3lOfJ+4kkRzc+2w}THYJ(CE zwKz46cohoekp`+)ie`HAG%!a0{r5>E5^R2co&jK{To1k_K_>`XU-lZ{~*13|V@>>$HCooi;>MhP(DRoXmOHXTJweOyT$G zMZ6#0;MVyp?X}JK?V9bVuuKR|1uy1co}Gdbdk4mQgD^jO3z?||4jf2t)F&SZhf}lB zXsX}VwVlGYuKTrlsR-lDH_%63fw6yYp!T7C(B@8J`jboeV5HZ>$FVDzJ9TsH#+qNd z^RnpLmP?+Ei@!oUxUa_!zW{@zfA|KR)1Skd{T8{oKagF>qh2V(k?W@yW~T4&Vp*Fx3DO0?feUSKZ;W%io6rjZR zLnmINy4BDgu=VJKStk(MX&^eQFZr z&&E+YJdDbC2--xnSDSc|oQJ3oPiI8@Z+~4*-RD}?F5)X5d2qBQtZE5*@*H@4lIr?> zuWJHg@f<{L4PHw{SCwNyX0_H`UZ&;Bv}smyw63sE0f}4|Epjk{9b%4%YHDSoy1@C3Gnlo?L^_Tf%9nV?W2I@5rT- zOpzKvhP|%6S8!hN`=Ak&2?(=8qD=a^^hdMfxQ2dIUb%h0r)zBTaEzIhU&}Do_ZXnF zI6-`sdUJh0;Eo`FZQ5_q?X=&N%B6l-X0X1mua6nT+PcAXMP;;(S-QT3-sx`YXNWXL z-bP&09JI97j^KT@ngKf$dOf%bKJBABViRM}(y!5fMHk8cAAgQCN?IW1HM&a%b};r2 DzHTL) literal 0 HcmV?d00001 diff --git a/d2cli/static/favicon.ico b/d2cli/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..452e6dcf6f1d38199bf1bfc3224c9f9116183c0e GIT binary patch literal 1150 zcmZ8hO=w(I6uy~?Vkue>#1_OXTnG)dP`Yp@(nZxx6v4VFDn%xs4eF+J5tRn9vrPjk zVpS@!21B)AW=2|Kp-o6^V$y_+lSyZi`F%h0^WK|zfA{C}yf@ZG@9@1d+;_io&Ufy| zV{Cwa`}Z??4zlD!j6KO1dyYU`wA0_Gz!<%IaAmVumdRuo0Op!n99M46?KO&pXIs0) zV@7f7`R(PUDCIzO=JSt6`e#;GSvsAL|1aOZ#Sr?eww2rGHI27;yLnZ#&4Os^IyV~C zP_Hj~jp`R#e)CY2V|)J3m^U;u6h}zT97B6rIM!w5Sb^#^A+;*RZUMZMhp3hyj5@ff zzouC~qTNz6pQ!M+E69h};T9qXOzD z%As33#n+-fq7_BqcF!u$g|b@U#T?w(DLAS3;e0%d?)Yhh3t7m@J;L7YH^KENT`QAoUn^%f(u6+;t+(|fRPQ>VbateOtC&Xp%c?cSRz z@I67Ao!fuF8avhJj=lniV1M>5f|;+OW-kM4^HBBOm>(G0uQz6{JSu%}Ooah_(%1Sf zMckMBywO+D7&(smhr^K57lG*sfOM#8u|J2Vv0PkRd5ZYsDh$!xDWI7;1Dp63)vYIw zBmep#?7sIBPCIv#{|^kb*M%e zveQD)GE>p~T&wdi>AwUa0M0=kg1d4H;cwp}y!y@m;MXoeZY)8O2c*^3yL#gV2u{8Y z7-=|6J>(%J=q?bD7VlmT-qt$2{2Jjd0`i448&Gyfg`L*<->0wa$^Es!nuZ>GNCy51 z#d#s>gCfWiP;QSvo{W4MMYk6U$G&LplpdG1#U?MLm`nck9Or(HBXk!(5Wh~niAWE4 zs7POz@-2#9_q0*1?1ksX=M#wpbBOEP4zrsrM(3Dk+mFypk5NA(g!82BoN(P?&*~hA w=hbP)+>zuvvH!n3NZ*KkjJ>#ru}>om&~}6e*MIxb`?&;TZ_~Hr$N|Rw1%hZb1poj5 literal 0 HcmV?d00001 diff --git a/d2cli/static/watch.js b/d2cli/static/watch.js index 71fa9436f..c6efceb50 100644 --- a/d2cli/static/watch.js +++ b/d2cli/static/watch.js @@ -28,7 +28,7 @@ function init(reconnectDelay) { // we can't just set `d2SVG.innerHTML = msg.svg` need to parse this as xml not html const parsedXML = new DOMParser().parseFromString(msg.svg, "text/xml"); d2SVG.replaceChildren(parsedXML.documentElement); - + changeFavicon("./static/favicon.ico"); const svgEl = d2SVG.querySelector("#d2-svg"); // just use inner SVG in watch mode svgEl.parentElement.replaceWith(svgEl); @@ -56,6 +56,7 @@ function init(reconnectDelay) { if (msg.err) { d2ErrDiv.innerText = msg.err; d2ErrDiv.style.display = "block"; + changeFavicon("./static/favicon-err.ico"); d2ErrDiv.scrollIntoView(); } }; @@ -73,3 +74,18 @@ function init(reconnectDelay) { }, reconnectDelay); }; } + +const changeFavicon = function (iconURL) { + const head = document.getElementsByTagName("head")[0]; + const newLink = document.createElement("link"); + newLink.rel = "icon"; + newLink.href = iconURL; + removeExistingFavicons(); + head.appendChild(newLink); +}; +const removeExistingFavicons = function () { + const links = document.getElementsByTagName("link"); + Array.from(links) + .filter((link) => /\bicon\b/i.test(link.getAttribute("rel"))) + .forEach((link) => link.remove()); +}; diff --git a/d2cli/watch.go b/d2cli/watch.go index d1a2c64f0..b352a7b36 100644 --- a/d2cli/watch.go +++ b/d2cli/watch.go @@ -429,6 +429,7 @@ func (w *watcher) handleRoot(hw http.ResponseWriter, r *http.Request) { %s +