From e3006a31acccfcde95ade0bf4a92813baedc14b5 Mon Sep 17 00:00:00 2001 From: likexuan Date: Fri, 22 Apr 2022 16:36:05 +0800 Subject: [PATCH 01/25] =?UTF-8?q?=20NEZ-1833=20feat=20:=20asset=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9=E9=A1=B5=E9=9D=A2=20Type?= =?UTF-8?q?=20&=20model=20=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/rightBox/asset/assetBox.vue | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/nezha-fronted/src/components/common/rightBox/asset/assetBox.vue b/nezha-fronted/src/components/common/rightBox/asset/assetBox.vue index b6d4cc072..c7908126a 100644 --- a/nezha-fronted/src/components/common/rightBox/asset/assetBox.vue +++ b/nezha-fronted/src/components/common/rightBox/asset/assetBox.vue @@ -51,7 +51,11 @@ - + + @@ -327,6 +332,7 @@ export default { const vm = this return { assetConstants, + judgeTypes: true, showAllTalonOption: false, showAddressOption: true, talonShowTow: true, @@ -546,6 +552,17 @@ export default { this.getFieldGroupData() }, methods: { + judgeType () { + if (!this.editAsset.type.name) { + this.$message({ + type: 'error', + message: '请先选择Type值' + }) + return false + } else { + this.judgeTypes = false + } + }, clickOutside () { this.esc(false) }, @@ -629,6 +646,10 @@ export default { }) }, selectType (type) { + this.$refs.cascader.$refs.panel.clearCheckedNodes() + this.$refs.cascader.$refs.panel.activePath = [] + this.editAsset.brandAndModel = '' + this.lockModelInputValue = '' this.editAsset.type = { ...type } this.editAsset.typeId = type.id ? type.id : '' this.editAsset.authType = '' @@ -639,6 +660,7 @@ export default { this.editAsset.snmpCredentialId = '' this.editAsset.authProtocolPort = '' this.editAsset.pid = '' + this.getModelData() }, addLabel ([groupId, metaId]) { const label = this.options.metaOptions.find(m => m.id === metaId) @@ -798,7 +820,7 @@ export default { }, getModelData () { return new Promise(resolve => { - this.$get('asset/model?pageSize=-1').then(response => { + this.$get('asset/model?pageSize=-1&typeIds=' + this.editAsset.typeId).then(response => { if (response.code === 200) { this.options.modelOptions = response.data.list const titleSearchData = {} @@ -810,6 +832,11 @@ export default { } }) this.options.brandAndModelOptions = Object.keys(titleSearchData).map(b => titleSearchData[b]) + if (!this.editAsset.type.name) { + this.judgeTypes = true + } else { + this.judgeTypes = false + } } resolve() }) From c02619ee61a5e6327f2580074a20627d93722e69 Mon Sep 17 00:00:00 2001 From: likexuan Date: Fri, 22 Apr 2022 17:55:21 +0800 Subject: [PATCH 02/25] =?UTF-8?q?=20NEZ-1830=20fix=20:=20Network=20Zodiac?= =?UTF-8?q?=20=E5=89=8D=E7=AB=AFlogo=E6=9B=B4=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nezha-fronted/build/webpack.dev.conf.js | 1 + nezha-fronted/build/webpack.prod.conf.js | 1 + nezha-fronted/index.html | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/nezha-fronted/build/webpack.dev.conf.js b/nezha-fronted/build/webpack.dev.conf.js index 3c6ef7a3d..45b7911e6 100644 --- a/nezha-fronted/build/webpack.dev.conf.js +++ b/nezha-fronted/build/webpack.dev.conf.js @@ -55,6 +55,7 @@ const devWebpackConfig = merge(baseWebpackConfig, { new webpack.NoEmitOnErrorsPlugin(), // https://github.com/ampedandwired/html-webpack-plugin new HtmlWebpackPlugin({ + favicon: './static/favicon.ico', filename: 'index.html', template: 'index.html', inject: true diff --git a/nezha-fronted/build/webpack.prod.conf.js b/nezha-fronted/build/webpack.prod.conf.js index 37f617375..396e1f024 100644 --- a/nezha-fronted/build/webpack.prod.conf.js +++ b/nezha-fronted/build/webpack.prod.conf.js @@ -91,6 +91,7 @@ const webpackConfig = merge(baseWebpackConfig, { // you can customize output by editing /index.html // see https://github.com/ampedandwired/html-webpack-plugin new HtmlWebpackPlugin({ + favicon: './static/favicon.ico', filename: config.build.index, template: 'index.html', hash: false, diff --git a/nezha-fronted/index.html b/nezha-fronted/index.html index 740f68da9..f6e379b09 100644 --- a/nezha-fronted/index.html +++ b/nezha-fronted/index.html @@ -5,7 +5,7 @@ - + Network Zodiac From 4674054048c9c36b72fbb0b633bf3e31a0c7efe5 Mon Sep 17 00:00:00 2001 From: likexuan Date: Fri, 22 Apr 2022 18:02:21 +0800 Subject: [PATCH 03/25] =?UTF-8?q?=20NEZ-1830=20fix=20:=20Network=20Zodiac?= =?UTF-8?q?=20=E5=89=8D=E7=AB=AFlogo=E6=9B=B4=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nezha-fronted/src/assets/img/favicon.ico | Bin 0 -> 50461 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 nezha-fronted/src/assets/img/favicon.ico diff --git a/nezha-fronted/src/assets/img/favicon.ico b/nezha-fronted/src/assets/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0b402b5cefc931b8d1cc353b69e8ba38c3e706a7 GIT binary patch literal 50461 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%0D*o`^#F*q`6t!>LQ)7+bz6GYO}50VviDZB|q zSu=&k0~7+mpb%$*_2lVP-)!{CP~?f^$CX|o-aJ`E?lg--KwQ&m<%R=?y zQKXHjBngXn!5JD@g|1Ha6VjJZY69pv$#PJ{a=2ojv}V{-c5Q`l+! z+BHuE>X@R|@1OUI;>hxSk~@SOrZLqUX2G?da_QhZv=o?w-)7neP72Hni0`C-wk-pC zbOsXmNm0v>2IsSGI%ES|Cxt}zO*Msn(%J;%z*;xuk!$)}d=70_NyX{XYayV&2)1FQ_w@+8mx$yWD*eWCZ*Ko6he27fH*+s;255k52pwDZ_fv%`&;7FROu25d(Z(qvZfTVg;~(vEs>CmnY<#Wm3A z1**6zmXU%Z(8%PkL|K36j(J4MfvCL7#cuG1i`x|U<}nKe?mOdB+IZ~JQa~bIr)=jL z?G(Lhiy%p57DqE5G3IMx{!8!Xp?yyX+IU?NI9zWt%G!t0kA11 zBI`TlY(-chnp`M*0sQF7y_3)f*lK76gAR{N@9B`1O8H zV>*$^`HoqdY!=>|2ImK8;15)!xHJaJ`SrM&b03C2gXg_+7uxLkBF?=$%W#sJIyM8y^E@Gq_zm36qD0y zRHSRS`sU{nrEe~=Kt7~9T4*%9egge@0c+NlO6C6H{f;nsoJK9)t_mx$@E~V(^7lrX zdS6CI=e@j_+xdlC#I)G18Kxu|OXy)kr%TLM&$;5DEQtsgl22^k6uuG6{5*}%g0NaW zc!#=bExBP8>NScL*&0)XF5pelT{5e_ z(NEXwNB)MbJwj7A0}Y3-zf0R7ciBgLG%$&_0kl7*$BB!&+ZW*f;_3x<%9X$Oty6!!``RF{0?9(6R!|a zQ8tpfENOVD|$P$)|UGTD3wjT(Y5BY0r= zc#CA`Xz^8E8R7q?_5Sl+A)Oq?9ZKgY*?@TstGnZ{3io`!g&K$Ni<#C1dqeSoWVezI z-Q&Lme&AXLf1D=_Jsnm%A@8D5C%P@fCr$PXem$g);U$UYd<0FR$w-yX?Od?Q>&Vr= z=o`x~)y<(a)K^!*Eswgkit%=-2KI&rGXvcYsHhYL7Tm$QIpNNY1>wt4P8WpT*x%=k z6-`6-wp&APN%{6{U>7=rk3J<_wCH2g2S|Fy z!I83k4M)#>>uk8YjwuF)1>db1;kjT7lTqC_;?MFwKH|2f)erkeV+&C6z|~#*OS!7z z!&&#A{Lcpf2r5*oy&F;BPAPX0Pb=W(ZVetCuKVb-K@O!+Ft15(7Kx@|UW)KC9}-Zm z5p)W;Ff$68g~W}baIgzA9EWfG5#7Vbr=zwu9AO-XHoK1~l=#3xvUx47d-}jCWYA6m z(jfxyEs(6PDxy>N;iNn?Rm~L_ucs)nRP7t`+nS0*N)}{)!7tR-((fb%4l9{=ua0w% z)hiQCO~&f(EiMQvUKAaQb~na18AVG}sOO1R;r4d?L3kOQn-;cf_zuppYBC@ZwWZZ@ zofv~@vU4eTxfW;G-i}jzK_2Dh@9qnQ9bRrhJIg3?vok z%NaiCfx&JlmI%e%MCpZQwr^nESHuJ)bG?-TB`EjDbV9*F{QP|PRadTGiWI@XGZ=DY z#y*!Ln6)c5-9E`6Z1Ru+$!ww9`_Ng#Vs?VN63lSS@5(Z|&#H}-{qol2WEd7(wLJ_! ziGqy^E@kc)M79@EMwG$o1O=zsgy<^uOZ8XmmR(O7NK&U1gDNvLRvlJ6wz<7a48jie z%7S~Sb;vs~1CaUgj}2u~Ha}thj9w6U{zPsi808?mT0Izaiu9(Y?u77u-q4g=NAM4a zL+&-!Z`?a^M&QR07=Ef*c+`(>|fGoHb}WDxz=Jvwdi6Z z2^w@#yBkgV})U#P;+%BQV9|XyP`VXDf$n=e?IyZn5*ZSWiv6{G2|p?6~F0q6stm1OACyqX--Z|cf*l2u0tqR zDn%#0XS)Zs7zmN%qEch!>AC;#<2Frj#!L}=kC?2sH+bjR+NjmT`4?!$9yrLQCfb>v z;{9@MwwKJ_*jaw|XuStx*JS0hyZqfiqHCP+qc=Nwjs6@@-ohR`Azd8p`W1s5UCxZW zc|hjOPvYwzj8DjOEI^*_uNi<|)z`YN%3IuSMw!}3hw6a+7Bp34BwT-Pji^J?k#y{t z1%mvq9nBOtuIwDOo?GdhMiImfUtMFe?*{|Dyt_21p`Cv=QC$dfh5E~lrWoBR^1UDQ z(lX4b;h$lAG9y1mJboet;ETyz7`_4Ig{#}Fm6XekaX1Ns4D8gzo|3@T>1;nEiXfzu zpLB%nR(oFqNX#u9>&e4EHmN3?+~3GY!{*{J;-szqX`kKhIsn_t8ff2~w5z zQyKMP$6XFVL@;%v!wA`6yrOlzBG{^yMcB#JUtObz`W@ziR3^nQg<1|YpmdvTS7{M+pKo~_>Fe(|);s6X+^k*2z|;ro2Brd)C;$ZM3VT+_UUGE zcSH&mCIQ?8Z?r!jhtpn-afb~5`V1Cw2v(O>poi-Wzm5p|eS>Qyn5$%cYR3w=S(D@t zcu)Txzz&%rO$KPSRgg>pg?K{|3EUumJo(HjCjp`KBe~}}V~!CH+S1NknbYiZHGDL$ zWO8-)mewAYBSZvn*Q1-X6!k__YPy3N!tPl5<43J0VsF{2R$*t{DrA2C?SDT$;5GGs}n{A}zy%s6X-r z1VpTR5wYq=`6cKA_>AKRCg7vzc!;Pf=U!th48*B*7Se`W((G>prHiJ~vpvR~PW)~n zIZCB_G1PAaU#q$~2xI!B(Ve^f-`$T;4{= zah|U1YwWJYtnl+Z6G&#O1#(69*R+hI;%DiYjekO!yfCPtdt7y*o#@Ls)hC}Se*LwE zo6(SO9?W2mMAnmAE!G|*v2kc!;~PV?!<9_c-2+!l*SLE5aNBU~8dnvKI(c=3S*-u{ zu;#Ci$KIOCo?RC+rxpSyqBE>tnqBUUr3Zi^ISEJ;cFhaTLh+EpXyQw;#_P@YgUQ#e zihr7Fmn0hXJ6#jf?DO@BwWh$4@WiGXkfV(6v+%IU-7L!Pvp?04(UlBz27$JI+|W3r z_~X>j*%H`@l7}u_sb)BFLN<$oUdTf#X0#nu;X4O=0cdoUIw6P%z9%bUf8*@k^v*B1 z=h{bVW~;bd_@?f{z*M(czNp(WyrNVlx}IuCQ>LHFoQq?70*TIz1YteD-; zI@BIh8uT%(;3^V5kWd)ey8kejcJ13mx!q0za&wbP$cX^Vp!k|iaZiOqV_vUkYp!#v zHW+7ZwZB?!P;_T9nQ7QC1tq+A>jwQBY{@${OJ?^rvc0VyR)I5;V#q(}iXS+v0yT>E z1#B=#Zk-7tzQ;}ho-L%;y$yE>mbQ+|_@gQ4Z(Pawtyb}?z#>y3yoKktlXdfr! zcS^FWjc@t>aUWQ{7D*V)=Q7?we>a6!wR>`lqD z5MsjKxpXs3A*w|I9vTg zb9ws{HU3iLek}`f*Z4{LHBdK>?*+@UT?!dah3z6ex`LO4d`sUy`~XetVn1UU5Bdoo zy~#sdewp&A=u`*&`yO3Egv121mPC>M9a?N*bgKP2tF!XE_e#-}4k@_o^~I6ef`Tt9 z4$}IEeX&HdcxMJJ4slWvkvvmFA*0psUA!dg8e4V4Wp^_01^{4hHAO-0-&3c+HP(0= zTaQ|B#XSlRe!hQ1Mei~=ZKj|(`Tje| zslZo|^{*r~6+IgB=o4&V?RlrDgN_;l%%hDHV2)}Hy%G~gQ37C~Ops&v>T~9?QJeyP z2pJH439M{GANcydJX5{P_7azU&K!Y%jt!O-IkgWeKfj=`aZK<(adLU*jEd3f-ABfx z`MN57OkkQtr@(Y`>Jk>+n}3Oj-YhV2bs_80fDIl2csPLTl|OPSf^A>)WRe>ns9Dnz z3;{iR#R`odLM<&NkWDEfJ`(*Q>W9lF8r46?{rW7C{&cuOw_)-E(&{>=A5gV9Jb&<)iX8(x7bA1lXtu@><&8+q1<(zf2+hUCoQC_2Jjo}Kg8 zt7~xy=9dElvToIV*A;Xyz;z7YFv<#{2`u}pDX{`F4;YjItr6jN-DFIagb2}_<@}9u znH?uJ~ zy@GOx1RG096Qs2sEc)<5ynszN4_?MHzhDXwlJ&wx3C{}J)PLUoqnADN+Wa-L_LkBO zIkATFKqNCG>r|g(f1P;M^WY5yBiH(&hkAQMDfE<{*qrr0e>Kxa6fsBul|$7(Z^ZhzeT#PFsStDD?TQ8{Ea+QJi^ zg2o>ytOd|q4FTT720wou63gZe;P}MyZA72aNbSJ)Cm9)qO*>f`I_*$zR3JL4)rV|3 zljZpdZ|E!|p8?6La#SXDcRh0Rz)0yVxxG~VIbFnu=ZMldpIbGftN|W3bXg<%NN={% z7yq==!}0G`r*kivD3A;9m+dzS=_nq0n$|T*)4_5C$UMPeVIKA9vm-1+ z`wy54x1fxh8a#1$=+MGMA7{o;a>DjR|(vSzi} zZRMQ9%B?xd6jGPd=IBG{BzfQELPa4hYk?hUP$H0I;d*I~^h$dRk>r5K=+X;8nI)@yl z#wqz6RqlgUC?jdY2OlTmEc^?Z?Tvsu{7{OxjxxeD0%!^xUTnp2H}pMVRy90%9j-bO!_BkpcJ! zieVbGa z|D;m|6Zrvf@f!O5;Yq0I^!$9Hr@=cx%J^Dtzt7BWYglEDlmP}O=DuHY?sqMtj<>%$ z_)>lp3eCM<5eJ%5npof2I})lOJ+_p{p9nG{kAx_Nn zOeR%iPMm#<4AYQRpNi3qr!>12m*sn9)E-SLF5OXU|E~o_I+%YL0c%_KO-xajIG579 zOP@U3ryrAT?8mrwfo{SIP9asWNWFWdzV!>M9-`Rn$1)hC7u zW~T);zZp5fwAEF%Fsle@CJqyWGw8|YS7zdv77-(cw3GRzH}m8{nvJt(ZeT3^y-LAi z^zn*iK#pW){I0mhZ^xI#T@|W>fLo%^AEl`U7g*P3uz%`QGc{@FHs4;4aNPUO#F%EJ6l$%}7QKql2U2+&UU4<_p@w5>q2huH3?~}Z_8dyT zN5Enh3}vvcT;)cf18F~NSDG_HtbL}n;;>F$*%Y^SL%Z@(c`qqqb5)(}ahtZP@9F&9 zekR7V#_K4U#za1$b;0Fo_abCI5Hif+vt2BUn7xv?a5-c!rLUt;WK%cCUg`>?PNP7C6&6r>+8qoKA& z#c^&OOnuvWPJemf^B+A>^@m;${Dk^C?zCTNk?(we{{X(?OWHcw4p{oCo%M2%Ssh0i z6pf&lI8#WT9|Lx;|1xge!lYDKY|z9jO`TIxoySn+eN0 z0WpGvJK+|tOn(f=-?jgf)>NUHydjR!Vt1}@B4eBYXEH=lm!>lwpY=_|iiS%Z7P192 zvKuZCm=UjTzaK>*5~)z-E-XD_c?bNqKTPJ&s>8CD7PsZjC_5>BR;m)wvi^yM#u~~eHZI4dIeO3!;wQ;RUGTZJp8#u@1*BosLR0ZXyd$ZY~LPM zo+&lirBk~IG~~>4jwQO~>{m2$-FF}Ujx6lJN`W-uH@HG0y;xpKt1DXeMxZ}_`rs*; z?h_w*Y)OX&`-Z+u<@8S^WPRvH1*>irVxT>TdqP*sOpJCXC4=say39nhL;f|RLK$4V z<^ft6lro#R2GbZ12|o>0U){nnJYTOnxm=Mt(UOs*7VZ7^Vn!?-7>jwr;3$(>iSr2t zE}DiRcY>^Z^D@tis1rD8*pHw8n#=E`ASTS^212Vw7ECPALV zNi$7z^~n6d8VsFe7%Sz3No2jZ;&a-g^G(gPs$pI1AGkpc*ehlL6>_&}r+S=NKmY!1 zF!8y{E)ʆbr-cdD(4vWPuxQB$G^L0cr22h98>>JCxX?F(C^;)}ZF`57RVK%X3O zMck;VV+=`b%9%gqA;g1;MHV>m9flI)(DKcJjkDH!bBI;*_lb;%4@4lW-X_n)iSJQ| zuy{=KH_6PnzvEEs4dBliAji;~_RcLHdiT~h>E7DwajX^>?8GKS<`B=qWyyvq(o#-) zwprxk3QityI|Sh6&qv^^;vmWiK=vU$FP3YHiiXW;@~9T9Fn3Bb?Kpz%)7OC$;4~{-QaNv0 z^hGa|nkOP(bVsS*f3oa1SpeDEk{M3+4|>w~$qtr5*;tF7kUHGIn#w?-7=t%PYVS1Y zELO0fI}Qg3zrFXnJ@wD6Qq@_@3t&FfV_G{@KmX)vmLeDTvmvY~jVva%AaO#|V3R@9 zW~{s`2!fcD`dAF4TvR^4MWiDo60sKqTAIWyvHB$>68UBv^C@AMdTK=UXg3us^;;%F z45F3(s+58wBe0=-cBssm>ZTFoo<0baiy3JEf7%*eo_}1C)bL$jty6m)NM^iy&jm!3 zM<2<$gC|QY#-nId9bTFvr}$$w{Fh>CBxo^d=J-HVorIinj}~&BP*0!o7{0#L*Ua1gT&HnFY=<8MVK6EBLiGvw@Iq z=LLgsvnbSRD)Z}cpZo&lU0AHpzej(1IWJ1F@Ue`57_7&l{_`T6;B$9)8C=5sbvDz; zIE}@Ys5}*j)Xkkd&!lst7QL-Di(odEIhS2)a|df(I8e3gf!c-fkkVHxy6=(f7!(1& zzjD13cZ($dRisc^cqs<>FOCdwLUL?94Zfs`9Qmz|NJ!;K3}baIG&9)YPI7NF_l}2x zZ((yPG$%R5J=|i7pZF`6VodAqSBFLt%wL7j{V%o}VXr3!_o}{=@8p*Yf`v&e{2S#s z!SCO>{z_K=xMq&32i|peC8@-vzi^Jck0Aksa39Ue;C)(l%fFmhm(aq6BM-_`YI5asu$wVEJChcL1-g?;GFYXEj?BqA%H1IO3OU|^G5O4W`YU!-QJQeB zCoi+CQ};^JXZ-Tz@+G0&;`$UzHMdm;Xt&q4Xqqe5GUiTG=t)e#IiuQS6_d0`dI$7p z*IdSK>8vxc8ZM**P961U$JVH&;KKl7NvZ%wo7V$-_m;iDjdB*G%6@Y!FLCL= z1XjwV%KB8Kw5hih{TNs$O23H2?D;=ch*SjgP-}=upM`xh7geCT^`gccB<6&45r?>C z$#Z*5u0ob8=#qpUYv(!EGu#6O(BjAhdVL}lKu|xgNGh1;orIaJPqeda`}-k0DgWZJ za*wD$dP*dzPxTiH*Vs8FU=gB-p2<+20=GGpNu$4nvU-<3qq~X9_xMNkyKvp*yIQV< z0Lu(6I6!w%g4ko(-W{F<>@qs6w>;tMHX67$jq|~`+^!uE{w83DKd_VdD)NCkSGYsB z{m0!m^gUO!Z=@D?@;bFyh2W%bj*>L~dI53;SPP`sQV7KT8=(67YIR#rVUXw4_+*?P**9Y0{S+Hif~YFGV? zla}exb5f=Wylhv2GzF_|^e`DfPM(frw9!5jDtgbD06l3jW+Y97+c4+n0mMAsBC6LE z7`r2TPH@k+eld+)p$G6wp71xwVX#CshMxT4K_hjOut?1%(~BoY^1uHAD3tEDdJVW= z)-hZ7u_zKgD@V0;qg?dUzhkxD6y6dG>qxz6I^wXZI*Lprm14wjvs1%rMt_|C23D_( zN5&QXM|x(rF_VG9YVDI1W8#qT?dfGyQOo|Q?#s-uX{a|cB6%=x^4xYiBK=`aEb?z9 zI2u&TdP)0^K2K|Ari+Tk;S%wpa~}B6RXRr_pEfqFFoy`Ys5~XV3k6xb&q{mclA6<7 z?_A4|6tqT{gv~!l#7^KK3&+5uoq^iZ^pV+dcU4j*uCbJV6T5RT{ z(4Q0AhIYZ-?wbVNz3Z_;v12pCd>$0TxNxWcqvL#IWGrQ)F{D7Zit>yZFb(*Pkbo%U^Z!AeOX-K(yliMyADH-Lr)>*P3ne~8moOG zyClOfaSlKHy~{_@jKt+EU9Kk+W4X9CKa1j!y4nf`XZkyFcFKoC%D>^x84T)InDNvp z_1fchOq6avTu#l=5Hg93B=Ogf<9IwgrP2wn1(~`{Z=P#gSPvKL0-w zNi||Ps*G=M?SM=Oj4ctbwT3*E{m|{=Yrvs$<003AXGiv}=U+LPI=+u)pdV%A>oLzVdAWXCK+tb)qiilUDN^c zeFT)CYas1AlLjKife9X-(F*KT;=f`G-f05Hf~dfdgMIpoiy!M6MRn|SpLyMn06c2_ z*W<=MMo9iivs}qMycXMf%#!h&+jlC1)|)wKzT%6-3o5fr_Q~Oyeb8A%r~W3B5;BxT z=B|4k1y#j%_yarA7`HN;W`Hs*%s{35TNt$~3DIp2KeX^(j zeyS9JNepY;D{Jf|3fWk%^Nzp$xw$WmM@SARx#doe(r-|X!2G`zZei>C(blv+^wnbe?AC zU1?iTD#g+9Fo}}Zdig7SE24Mv+9~cqxH&)GO!Ox`$Wm<{4H{r!hDO+xdTEBDGFs(L z=(MY1>snSzM6Zvw;t^~sbEBn;ycIQ0)3r*XLZ|(*lo^)83xgTcx`klmhr$;)pQ#k* zlSB#*IU*QpXTGEnxSb81kOl||eqB*#_3j_l-WK^JS!x4rs8KQEDI=>afB&A0U23JH z{z#0EE7wRxFX0`g;U;<4fbkh^BDQXU<_j5i**B46HjF`xP>16ckkrhZ9i~oG=Il$q zMzc`H`bgz6{)`tLbbq}5Rff9e#mh{*9>I#l6|F4NrT!4XTJ?I(_p5H*(XeYAxjJlP zyqd!!>eWG6?vbB~anm45atAP>FP2q9f%^Ox%-`J;pW_f9et47C%)_5ll*;^6x&I%D z@iXZId}yMd9J}IJhTdJ1&1;l+vdkDL_e+C`SyMMcbLVIhFWYQ+_o?N^D>Omg=xDEf zTwy7iVgYvISxsg@z2%z1|LP&c=#Q~`I7nNjwqwUcq6mVL`rD$9Y*j}k&(Cn&ENS35 zZFk`biueLw-K|`wcE~G18$t1DTUeKVI@;@kUioi}I_3i_{r`l^4gt^}1O(sAn0=`^ zT03!xT3n|Gi#Kv9N~UGj28NSYt7Wt-RI`)zvA@09?8OX^MpIs?IwP@4?Q$yH~v zW~Fy8d2&v*C)%24SZtnikpF-+I{}?Sc;tUxcR7>1#r#|fscpi+wlS64+_t^`OBQhA z8XF^wP+9LUWq&7O1uRX)u+egIOHlCU7htBXg>=jZS2|DR8>u`3`Bez~4`+MoT~ZS} zTe-cgb6N)esU{42USmRKQlrmh7u=yyXZ{#lcVv;X#JUZlcv=E~iA??*Pf&}<34(b4X(eD4IiVz=yY%T_XmW?xV=eku+LIX~f1Lv;9y=lPPI z5*+JC>D}?zl7HEklstbt!Tema|EoZVC;w~Y>ig!_$Z;FlNMH_s|KjpPWdZSrj}LtJMn``ZW2&D6&g5n2g+%noceIXNHUuTMKgt(CP0o*6 z)^Dl)Fhdq~PUeLW7;a$ZgZ+0ll+s2K(jb;Jzn-mB3`E`oaU$C_iOFmx!E`ou1flw! zpZ)-bH;C9d+A#IlOy>^ws1(KYWXqmBN{y~r8N*(qeFSr{M|^&L=a7>}kv0t{mgCS(&^5`)UMsB*>OA8J-9- z`dO*3|4X6J>9#Ri7mr@_Y^|%_`KV2-uS;ab5=~7lq{A_Cg=s-4p}s(ZuIWWF+ra)R`gtjx;ySy1qns>wHl52bIr=x=zv z)Q#9G+|(nX5%`!tnm9Y72g;LWnn`4SV|%o$m;Hm1CU7a+WF%n~hze^B$>lkIPTp08 zt&ofBSf$r{^@~ZpT>C6LVP|~EXcd=#T*NY&6=)`Pr1|B;B<22d)t2ynPS%VFZik~K zjno!~_mM^!3Q{nM-&fYKaZK*bnD@0H&K-UF zrF-AoI8G6Hd#69f4g8>ZEsqm;xUGF@jdGUG#7mNQj(tpy(?Nr;3#t?@rN!nS62^vq ze>j{8762$hJ(-`0njW|XF@~{XJ6vaF(#m*a66dhnWK4TKRp7GW-jTIJzJi^N%j}}~ z%1My%4Qx}c-6@dPVy;@J9B<0V@3ggWOAFb;pxc0i4XJ|`@daC;O(ZmL?cgDQq z;gw&yL{XCsZsJjycxy6nhEuaK-NDF=mTJczzW8mx+GGj?Ev%R!@$U+T(9)p~6}AD+)E#ls>AW(tgRNB94c?@Lpz4wjM*x`=1bm*YON_ylvV zqg{=X`V<2r?(MnKrltMyQb#pImJ6Vx7~Z7#7=z!P-~M}Xn#v@mfNhq1LyW0r=S3n9 zN0)&K(d#c?SN~FvH`4eyx4tp(uPVMjU(Z}(KE6Un6AcSQ^2^B>k*63OsVNT*=jFa7 zOILG9<;JSuMtK@SmG@Y=!X0U1$WpUF>!N<#$IfOlTGPcy+w_Wo?WaVyQ@7;v^;X}< z-kp!yiT#uBr$gH?K)pd5`n#_*U#AW+QL?AoPQHWzL8_8Jy*oHIzE(9WI$u&-J7aFF zoy*EhEuM2Poji)R=q$iI`hC$zvYPaEqPqF&4Z&uw0RO+n(*I1cpl0#sIE8xZl&l^h zgA@1gA3k?GJHWC6Zqz>BcFJl24x=uVLi=dT4gB3fAt=nrbVmf~!oaHdos|+!yp0u& z!%gf^gtz3S1PoR8s@5rbzjc@l#|Jo=I9DTly_HLjro{n~tKNufe^yAkyMK!TGC`w? zP9SVAE>1>={1l)O}o;UWn?!SMl%HXbO1Dd-91&d=&YCWF1`$c?m*V( z-U_&hr3-0}O+w0p%2$FKnqwXGwYD@5vESDbqr*S2-EM>79MNal!XQ@g`sgzeLo=~H=x z2CDEVV$#)K*rB{L(CS!j7@N%*BkMTgPDgdyR%a|b_rxygK;jBs5s_G|@ z!<^JzpOKrRee=ZRlUL*p=m)Q|4JHovOsOOdQ;0y2A#H;^i-aMlr%cL^`JT38pSD{S z_Pi4`tMiQ&`6F^(-*=yu$aMKz8of#1MbbM$wSy4a$?X>GzJ86ZM2y6j7H@+Q*qC_+ z{x*yq{opMSQ4TXo#ZlaxPK0Mt78#9{amO#9il>F>3WI$An#G%DNusPab2xUc7mYNP zdeb^5c6SenapA1H*+<+Vd* zRCl$&zkbHU!^kOGX0)-tGx@&0uzR#bGs&MR575Px`$p!rKF7w5zT;8o`kL72{oglh zguL(v{dSU&IfFI2t95$C)C>W}r({hFQXPmAY~{HfL^8;+yq~)<1mtlfm$$b(aC|B5TeRS!^mJ=WS z)V!T z(w8xw>}xMJ#EXOVs%XSZ1k%P*G6--dc)Lo&fj$s`^D;P09bc}o2SkeuZE76^JJRB%tC*?m9PPl%gMN{_hGh7#{zNwiOwFb# zm6gEH$l;CzDN1?$CgDN0Tq*HpSoF#C8>(e5Mg2k3kK>N^XhSZzmu3$hSMtkbvu{cU zOWCfSqF#tO$adWvMW9lvX6JE2=FP?*`RUz~Of!l^eTc~#XsSRuy2tZTiyE9x+UK~D zA^MXP^;|QNmt;6lkGk8KM5&J$2oCAT!s5MpU#)u?`N4iYQ9+W~6qY&{KfK90bHTzp zJ9o@rXe7uGQ9H)1zy?WFR}}kb9f#DsdITCj%jOhtA5trE-lhCs`#E&6>PG(h{%uU# zfow83uJH!NX{)4RV4M4Z1@F?kLv>{zgyZS`t1AA$c;sH~;#J^%(M#o*G@r_EisN z7ODB;*qR-Jy%Zv$8{IPPgmlMmiUOVmYE@5sjcf2Z-`#3@I&V)zWI%10N zR5IefTRD9D^C*hlRJt}_^gKU)rCRZ_KZP2z1>CO7} z@UF&_+_RAj^Aj1e8J81EZlpejRs)z4%i9kFOWRH54a(Idw=M%CR@pOWhaFjee<+B( zN>g}7uHkla4)5slMo*>C1_V`yGQ&cXrUm?kY%&F{lV0K|j9<;F?1Zf|p2}~>US388 z+oB>AwY8gQ(WX1L8MuX8A3=(Z4_j%T?&b^uweO9&j@<*ZR91SG^g`zINXDYzxZ8~@ zuYP9NIUA?oRrm!%F5bptyLYp`bRMNUC)!8SQ7|)1Hj2&VH09oS$RFSkG?WGeT@_!*urF7yVg8K)wHoH4r zyg$&6+dMyNVD=;s-ZRwb& zHXR&N>~|a1%}UDj09#@Jg2@_Mw!MecNT*_)*Nn58L9FS5u2x; zYR6Uc0ZJHUf)slclhy`HI6c+*1`NH{eo)ef&{X#NBl+p1HADl3oXsS&`4##aGgpaF z_uO=HA;lAPnoJO62jb7Xdi(JKbCvp~M8fE_fg;0vG>NAI(*L*ljt7bNp@(`@mIcyV z6QF!2Ngm%7;K79dQ$$LCmn#|G3F0{JOV|fP-=f2T4!ec`Ihr*{UWcurfwvZ>^NftZ zB46Gq5l%Z7#oU`F*BQ{FW~|8x@f_KurKAX#qT&#@wZ*Di`Mybl^li%hbL(y;TyrB_ zCA8v_e0@!Mwy{gzDZN2#NWwNe#|Z6m+C@Xu$w;myS>cuE+lIT%Uyde83Af6Wr;lm} z#8puZ5T9-`wv-%dGi{m!pPe~-|NITh03B!lCwc(HZlPw3KZ-+a1lEV<@E)ZQHnZ|){d2u+TJQe%<{i0&_{n6oMhsUH zwZt0q&(#s=<5U$t01fI=ClcpU()E@sRyQ9^VQFrFM-vdN=sm}cRHmR|@<4D1GuCLj z1NY0u)R0MOx*FU8N2K3n?l`6oB5V_aiF=prUa0DhbSMlIgXWP?pn8d`lgEc&zy2?j zL#GK0`qtBd3%kTHkU4Z?r6;q_&uUZ3Q|&*R-ca&t(wO(z@Tp(}>kDM#cng*5@8l-A zUX26{`(c8ZjhU8?Ku_)T_X5^SH`GSesGh2Z6!lr@eTsl&;h6~gCT32gb0HV_Va8h5S=|k z@x|=AqS7m6-8-eb!#4HUm-(}>AM{`Sm15qAm+3_n<6ly7ZS9>s{F|h`ObV8bN-eH> z<0gD))c7FFgsdBm(w4z#izgEs>KclQI+nOKGMaV3DZwQ*F*M!+EZ96l?>;>`i;aqXQPqYt?~U4$|I%Kw2O$?$bhLA`G`_2-F0h!;~_16u4v zD?e%q`_EMSrjy;s)<;6D>%Nd=iZ%$wKEo9{cycTeV>v4NF#A z94cjd=YLg?oQNGPO60}(`2$y4y!{PR%%6mGNw4k0*UV4{L1|^J`C@!UwRd-*sp9Pc zQ`*|>lKtJc+KndN8bdt4^+cspV!JrWfZr~gX1VBK5RB3G7!BCheRtHp;AKq+SBbi3 zwcoSxmP;ZYlv0cX^q@6xKE4?+mqFFf@-E~qEn(jNENhtdEYfwib!5@fK zwHdvAJ>!S&iE{QEjo=?VkM8QXm(3=lVa;$Ji0szqMu0Lr^(8&VAo48}Sh6ICT6=GP zmEr~&P0BGCh9Ahx;RTB$;UK^)5k!rF#wKuwB+LfbAVbn-@d%ZKA5Behr!WH4mI-cr z{l`{OyLP{1^!6SF7Z%k$WKLXG0rN3pSGRlJ-?-y+Ewl0B9!-L(JzP(j<)cF%XjWwiuv;d>2SClV+Vih7FslV~6mI}T4u_W?`^T4<{s_YK z!X4)nG!o{-1t8`c1S+z#-idzaJ-Dx+bom(ZzKp-!M@fbe_*?s*(w1#AYom~73pj#y znJ1%bZAlr$(?c&>0YkHqQ{jyed<-cG-gL7lQEWE^t?yYq@|Bs7728_>S$&1Is!cy7 zv$g?9+iu!H=1AUGpTBxgAGd!Wv+(r1y@)iDx^42P$d7d>t;+$3r`)G23NG6n!6!0s z;-TwIioljxN_a<3WVp#QH(Pl+vhs!`{ux@cHqr}^4FJ9XbVGiAAO8B|OY0L{`BV+M zy^9U@T-K^YxWh*mlnis%a8yHPfn4=LwttHeOTm@yKrTW55EH?oam7G7On!Cp_Pj+$`JG^Nc{_(VJb2IB`IwX=`pNFL}yPXyGBI4jm zs3S}*Aj^DCYS)C`m60sT>de8piaEXJPEd@#hvGwC{QA(}%N!t=0EhK>8Hfe=@jvL)ykg7HXj?cbByc+xkK(Kx5)Ek=6={jk{9d6Z!~d> zhs)jQ$1@9>X}5ynyZn3A`Ut&VZM8=h)ILDtsKjL3v!U0nMn40;Ts3%QsU!a2b6+QxmN}&a<-5w#Y+w z!HPi&Jx0MVVUZ+b3GmLL0n#5lkRi^MFc@rVjgKAjVAzNDQiks|{f}K>r@WCYP&p^E zlkywE+RojZ1}P*B@@<&dJHme|TG(lkmF-2La2SvmA%BH>T-Snwz&FG+D7*S z1F^mX#=wwymjw=a^Y9SbHHZ|zk!gNS;9W76i06eDkc9BGVlfWkKGXR2&EB1rUOd1u z7&um7Nu8rdWH<82`tIzp`r<<&w4e0cvmY+YzLGFHiFdjH&*i%4g(T zW0&gA1quU4iF8CIC9`pghd|V*Vg`i#LU$#!e(Y1f=~sDK%JIg=#|jU66+`~O@18J$ zZWwVu^3vf?7jY7>3uE9D5d4NlQGi{{eLE!Vvf;{k>XX`?{vBREgGUueH$g|M-?9RN#)`ICbZ zO16)a6lLIz#NQHPqKDC$Hv?~z7OKX|fG_nP);ApP-~LGs1P!IwBi6nC9ayBD@E;$_ zlqu=l)gaKXjJ<~7L3NiF2SJc}X8<8ht;Tnrbfb!lB9Te-uHMh`|AT^RmgvNyX%2|v zolEKw8I3hOT&%0cw+V~*Q|jGCnur^6p2U>M&#VK8S-S^OzMy{G#C2gU&qY*O6c{`q z?!orIr$R7)OsBFdxYEW0d{|V%E8gSrcUrL!0v`9r{W^T5SEU`c?|kcqab)nicr~eO zHg$E0aV5d$@NunH_1nZy%_?^S5<6c*_%#&O^T32`IA?R}+&;nmYt&B5`5k7swaFVL z7EI=TChXn3Yoi23_ek6&SdTo#Y*h;sO;5AuN^e$WE){-dEYit--*kzwX49rMHu}p1 zo&E8O(N14C`&}UedJ_P9%;mAW?q5LuX1PQL^lIELK=6x~S}T;Jc+pF!b*ADfivASb z894bJ@w0Bl9}J_RD0GRprogU1Ki)>S;0VN%lbID!`NIA2Ew|!4eu7uKs8gOVy^u>6 zpL^-m$I`^X){&+44P|_!8WY<6kCkUMXPfV0ygg@Rrsj0k4S(tX|ezGT#LHUekJ1+%8Cc zFD9OvI;pBUskeNr`eoS5r2`x2`{eE1C^YlWqF`v0^V&!oJ7Ol{{1)qN(!R~&r#BRN zROTPQiBJ!=QoUp;-A}|QX-!ld;TGt$MV;U=`!c%|kZ&P~a$8Mo+@e?(Iw* z=sO2C;aa9aI(M$%=G3pyn*~vO*fBx746Z2=X$Q6*bV+SX>M7XZvv45AkJ?d07 ztV%q6Mn}I5bJEy>RRP7p-oxKY33w52F8I>VmvqC>0+3TuP%Loaa@DqP8H*aE<~JUm zhpkW&d6k%;;c4ft;~*25Q6--`0|Wk;*K3x=@fJI77Nb5yUNlC^hSQtkWIC$*;Lld? zgmKs?b+Aq#kCs*!6Y8K!x6u4Bo*q*Ne*Vy5W~+S{)afZoTO45>R4(nurq9fPFYvMU zr@`5E_zGsjrs>5b$)_zAws4z4+3Y=~hrJ-Xnw>wS8l@f4(r6#5!KZxKKK(=H))|zY z6mWQL{V-EL$}Eg8OLNl$#Wx#9%$oUkDsh;Jd+ z^-j0DXP@0fUtpX~Xhz+?TH44y>Q@xv=~9rBkpL2eQ6$A2gulLM7#>&{m3uGH{OY?6 zYWBFU9vTbkQ8<74WK?tO+xWWGyLoJO$~X?T_WW?E?f_50No8D;kD>1;(O655DWkDB zS~5<{fZwafSe7vi7)Fx-?W~z(gu0!wziu6sHHdibi`0n7~XL&!Gv-5wE<6* zv_QB39YvY#TCi3U_Am0-h(-4l7zB%~U+Shbm<(@yR}sE%E7<1c8k7KhAs$y1o<&E} zOU_{*mG-qjwirLN0!#)hjm3DnWOCReG*HOp6kf5v*feNK3cvQSk} zZrM>@9KAF|wUY0qxcB33nTU|;aux5GPNyMafu0F|74cRaW%Kh-E{bzn^4BQ=PU-SGK67No>i2B^@@*@7A@(sI0tdMsPcdq()bh4od!_-l3b z?c=}Ll(z9#BIxfoLzU&82h#G=u$HCZFA{5WmZB<3Mg*7{fg$1T&z&-?b@%Nj7X0F! z41$rbzcF0vg_NHa(if2nMREgTZb=-280tV79wwgA*bSUJOqK&H#pubD4G+9Jb3+_-o4vsAFQo&wSS%T@zZ(0w0yOzf}NEt zlpnPJ%TlN5%koB_I0Dn4rGB^+PyGZls)#|1f>dxzj+YW3d>;=H{J!%VG9LVXo$}qu z=l(yMIsHYiQ1}WESgafm8)(1U$SS4HqE8%~fmP$y1jcV*z>tJstdz6)gG0vtJa*uj zM0RSN=>0B4=3LLU10?L)qG4(Gn8oSU`BDKQi?jmzN|U^iVfY073`x?9y)l8kc{yk* zz)AIy-XFR$H%L;}1=S7)f_voJ2&oPJMGi8MI11Nq=rQ>K_J&$d%9e48$wbW=IY3U) z7zZvWWb%K{f{1infBS@};Q(Pj-xwxHR&Qa?r7U2ib;+N=I5+pgDx95KFs)9= z_khSsS^yNaSfsZcm;W972UIs4!v%Cgk+o>(*J0%nFwcr!Yg5Kh>irJ7sEu#~A@ZFR zcv>HVsSKRL1`vGrQ!tbxulv>~MK5pJ755eA&RsyUzX_o25p1iE2N8AFE zQWtA?TUc}kc4|2|83Is|@Us`SrLKeElM(L;dy(Vgck@834!3PLS(um?tGO2k3=zyS zo_J-OE-1y#=B4^3n@8`{KVL+g{I|EAit9^xu5xb*Obcxdu)C_1SQdyS0kt|6 zL6`$>v?l8!J>XmMJ>Y>|^51UxZ{Rc_*V2NE{{8Y*uUBez@A-!;8(An3 z$f??>Z;kTPW#s>&D5}jb*ktg#g`t5T>s+gC&-aN0vdmU<1~qt0AyH7GzENJhsS8!SR3z{%x>&2afV)5Pqkf(tm13w(c>x@f~4^@<)4PaSx2`neOYi1k{p^#2E8 z+H^y0kYlpJp6&*_3$bik5+>B8QvefX;JPaZj=`LJit(FYb{i1^+Y{!7*U zFP{C4F$_bThc_+-{BsHoECIhE?6gQ44tkv|1~-a`-n&IG`{8p_-pX%jNlk{!`#ed* zOXxwrf-0iVQcXzv<7f#hS=FL|z=5#4A>Gyo8_XZc=8q17cta6on)@S!uMtlgRjsq&RdX4oYI8&84_D0cbCdy zgd8{#i{Zh##bYXx?RG~`RG^6_@AP#>quo3N9(0BW{<=MtzJ0&g7AKk2DzSxMPN%Iz z28@z}4~A7*YifUss)(Lz>mC@@>ZK7}b-$>KG_STv@)9xLbqod12GGPj7bd7K=Ki+o z8)r+7FSl%p+9+dg_UAvbe(mEdg}H=eN#0Mu__F?GMRwuWxEXG{cqumZ~ZR8zGepg#Caf{qai$|R1AoOK_aH%psqdof^;WSL3a z)2$>7KW+QX7vg16Tb=<0vjGxfda`eJC$%~1sF-n1iyi- zbqD$2D#MPnTic55{}&W6)5HFGDXf}OBpb2B0U=6@N1r1?#=7)$!1!?VsqMAem7EGb zF4#&w@<7@2Pbe-@USe@KC1W`W#e7bfr39LhKxY?B`UxBxsjn}K{hlZX>@$6Po`~QQ zAsk$OZLM8AcndRE0-bY5aX_rMc$?Lt;fbHD>>Y9(`0kbZP1_#dv?YgDq+ zK8?w9^Y$1i`Ryfp=d63sa#xvC>^!OcbycylWL6M)0(^cM+TuU3+EL(#t?anZcHxzX zy#>psNWxlOqPtJn@0sy#mYua6gA6k{O(86TNM!Qp76=MMRqcdcSh{ob!m(2x+)}55 zd}O7{P*CmHK!Vv|x=E9bV?cjr)O!Kn!EMoDx$pTqzZ`Ycw32HNgf#SGzY%=Z;KDi%V zrQ?57%%1U@_rF46@UQz)Z?BfNId62m7`Ts}vvjv6Dk99mFL?&aq{1xaw$j|bAWf?p z_SE#0Aanl`^=?p|>i6v#e%`X64s%gVR-!D19tR$`hk8gCy*wDSRDL*IVLlY#~jWqL>U- zSu4bR)N!a61~;Uxr2CUEw&8H;!@tTa)RW>fQsIPb3*{{Z)M*|UXPO{DAItw|8!Dwk zThEXC*3{{uqT)1GQLz5(KBLDi=C2c@OuLz5tiT3JzF$1*J$F0bNtF?l>8v7c&p+N? zHX_(AbilsbGcmaM2Go1+8!K=20S{oW0N=lFaC~f=P+@E?Ijhj zyJuy8;#Hl^FNo!I@s%=W1lD_%(KA=~0(AadZ?*(1I9!iC+s+$7;X9q;x(59TEGF}H9G-L2g7TsB& zR%04nOt!OeMU#gnIvybn1eCw^NmCNf9m&VN9?sz-699UCoCll}!%6@;UM#XKvlGUmxxrf>mLa_~H8{{73e*x6=*UXEXrd2ROXpo8N6C;?^+k7(E= zx42r?r6i{6EzvK~@k$66q^cvKV#Xg-ZgqyE>B%5mrpxk!2p2b)kp>JH>MscY>KiQc zEs9moTqvus;rfZ1Aj4~4aic=wFNK3GXWWx{DmaLP$yZk!;@j#?we`t!xDM zCz9Fa-Y7_NJyw2jhjp%+$muIs)tj*YYE{lb&+iT^RJdiof94lCh={CjSVW#ODgYzB znPhyWe@mZ!@_qwyaV_|9ryQ>JPs8Zq{@^P}WpL1@<5cvK6I#gnJRJKy1pXX#S-Mjt4y6@mS17PsR!|gAdDE{vYX2Hiy*`+@m$)2Ow)EnWz2`qSWt(~uvG<%8R8fKK%LjNOGG*%Ecsc-Z+j@=ekzS%BQ^v9Q zfiV1Kpq%NC_%*D9sYFqel;&YcqGU#x1TBw=i*@L{UqqqI%Ph2%j=kOmi~lM}w$F?I ziF1~S!t+E@*rZEOnPeAVfUYrW}&kg=}6Lp}Vjo3=~e=>R$;HPb_Zgvrf;E>5#uCK}Bo2 zX9BaOqv#&@_Ts#htgPSr3M@}@*Kx72 zDS9FqC5+I}0&P$x@MV|E04aqJ8WR&EZGY`iiez{89_{z=7S()(Nd2>^J#sK2x45(JA6 z;)bAabq>9U5q$HK06v@;dF|#vwJ|~9!m*M{%GtY&@%EQVZNiTUJQ@E++C=e0UwH-g zznJ|kD?-QfhL<80eulq_c`5{E(L5D;=9|UiF}&p&=rMS{NLl(^MPd|XS|L5AY1xCP zW5~DD1qGuIh7pMmC)pdZ$09m9B7@9X8a{mYx z2`cRUWwLDxTllFmrgSBO?)}`nlGC5!-uYRP>V&u;_z5_$B5BNocSWg}YV~9jv8`Gj zmwU6m@Tw3@_^Y&uXv7Vza{%PDd6-RIt)K75bWycesY%U(}fjy5w7frgwMM#oDf%3Imr5|SA_4Y7DBaI01Ac!1rj}ab{?O) zKIdMsKHR2iQ$>iAHNInKP0wCyd-bwiei0;4@leiUo8^;kv78?`IC4*JoGP@QQaeDA zgiGds;}+K-wo9H@Zur!Zy#iZR9lwo6W`YYB^B)&G_pQ?ki~m}M=Kjod!HsK-okT*d z3h{YD1`X3tQ-g^ppb0;0nYTazH+Zr2S~$MxC#BMRt6{lF1v}R(CR-AZxMZ{AL*v8m z?CIX*?9(!y5T-n4t9ypebl$B$)gePOzMq_h|pze+!2^K4U$`*gl`P=Hm%-3@fa|N=!>152oTCYe} z?g?IevN#7{z+NdUlOb=N)6HByQL-s=LWF+RtvQ!&Qsp|8q+pZngA`o@+QT4o0R z00qX%wcgKonT?(Pq??IK;2J^Def-PPP9oe~iwu&#^a)QRPhaB8N7#L*b!$Jf9b!Ur zA6rJMTh{8U4b62Dv8VIw9h+LO55P$M+pr{>Pw}w^7JAou!dX3ZPs12tp#3O}FGhjy zd9tbDUjI@NR(+Iyk>U~3`*ICmUG`gLna@v{d0G_u;KkdY^F>_7O(`q%7bEajw4y%< zS=3&d=k49Ma16_(6n&`rv9HYf4rs_TRFHYD;iD5TL-Ytzf(!53I-L zPZ02bh___wF|-mP%+n*YJM+5gx{)BvC4ry|Z4}{~kB=M`E*oJ_38(EQbXd&l%v`$F za^5Q{azi{XZM#H8QyjlZuuzqnAA^-$&qwe2#%UF0dO(1zWQ-GI?{?=FKX4bml{>6#WI(t`Viw19yS#5W{9OkD?nRFvToek^tkio1sf+hT)e)Y$nnl z4L|aql^1|Z)(GW3_P<-cX@}hjlW)oCgJ(%FV8^sG0A=N6^@Xo(LL;b=V)@YY4} zrKYw9jnRK*i}yfzD6+upoBdzESvX@8L4IGVn-6U344p_cfPLG*jSkg{V;Q3@A|{J$ zdzt%4CaQr3ulEz-;#VqH#Rpd<@_zOxqaM!*DM-QmukBE#WG#f^pUzA=x8joJr@YB5 z*I6TiTLA^_FLlsDbf4dK8|byNb(>+eNJAfQH-dXak;1%8V~lcbJXEIJuNVx(*1C^a zD?Y(s|Ktq8vqYFtnCVAm3cd7erV?wxV_@`ogzK->Ck8D%4IQXGreOW=Sd|2@L?Ae1# z0HG8k>{(1517JiWmGsww!dr0@!8%@O;m$~^$y`VyVd=>444aZCqA@pl|1LUV65Hhz zL4LSpw2tl(xpZAcxG}k45@2a`pHPF#E7%CS zB7webPybSL0d52|dBmyGd($l|3?DF5BO8^gqs^F+#eflG%e zdrspU4#=#qFFx46Gx>zvSeU3B4IOqL4swl78rY%d5jsW}h&m{e2LNPC_Y+x_zM*vs z`i*HDI9IWX%*2QHURmXyc9ELn7QUktMb7(e3g|`Bp6WQP0sh)%vb5DS-zN2#41PDU zK)ZJ&BE-Mi(^RyPRr-|KuRF7Dv|Y$s^%kG$H19j*qp#*s`maR%5QiSE;7(@trFv)7 zr1W@Wek;a$egCel{uo(YY=??!yV!Xj~`syLZc6C!)l!97M}_IQ6aWDU@6KHC6FNu?(P!Y-QC^Y-Q5EOcXxMpx8N|ihKsusBsjr&lW)C0 zaAwvyy?1w4S5?2blXt_eBlSt&;iWZGXz`#bFXT+*26xzR87Z=UBj&Tq-Q%!iz3dPF z{@_N(lw~@&0S6<`tga9L7yh!Z_3%smnBFEIK$~|!-3MA-T(JuPDN@J>C4Mse(Js+i zDDyLueM^VoxT8eBw3_LtF9B=Os76p0we>P$)t4nAfTuV^vj-H7`@*`t{^p)4u8KQW zN1y*^v_<#l%?swYmdytKudXzK2|O zcvrCyi!I4iY#n*2wtIp;m`ln?c(RdX|FRvBQiqMGC1FUk1#o_&^_0Aler&c7gSfQi z;&!Xsa`b$h3XHjmzJGq44@4ir41pK~NMF6h z`QAm9Okb?+Kz?ERz~3e@>94`jpKVgtofQEK8l}{fVuQr-A_E)5s*elUjZ2NOn$s`; zv`*Nyw|HXn7kfn{3zGat1JCvwJqrC&+;@fT&ydd@j`R$lBHbq*kcE^CD2@qPjBh+k zcvmtRz}UCs2H~{jf^Oyb(V*`@uBPNn&ga!Pxj|l#+=(ra#j!cngh?q$i7kz-@_YM+ ziexp;AUZxk!>-*;^wwHtu0K`1N%?}n7G_5}mvaBRO?ti)f3D^8oPC@2mYcQ(Km@$} zWZvq@+pIQZ%Ef&9huIY9#2f3eZO0{t?7Y}Bo84LaF1J43(e^gXF!XJ2{`T-J+wFx%eDn`R=GA}?rtDIy1Vx76U# z47QEp!Adc`DC72;D+@k?8*2w&W{rdU*>AFKDoBPmtEkQsKR_-NU7|X3|x-0~H zA4VIA_E_Y0&g`vhLcU#{pk*#pK&nJjARW=pC~tm2`i{}Y8z~$=d66H3sVNl0u47_( zu<#&oK4Gmjz-(}f>_14MpAQWeZZ4251n&oxW4nq}5NkrA2CvJDJt9AtKCs6E-JT+X zcC6$;$Og7#D&h&TO4_(FnD7~Lbqlt2jKdmOAki{?i<%L+fH%va*@qhB79=Zs|15uo z08~n3QN4eKz?n7qx>xhj{&3Q6hcsp0bfpHO*68ubcoR1QGj{aJuO`fI4dYFEjckSoGR~ZF;d{jBkM1K z*Gt5(h8*ZpM-cuy!UM#RR1Ltl{J)nC*G@Q>y1DI)2e~+qxf5`byz9R@ot562t%eJ< z2ffo1Diov6n@q7M45F{;_*atR9ZE68(e1T5zO-@HaI8yQCu5{3G&#pN6uw6@Wn_J+ z7kzz%tptO7tD{$@Zct=Y=769`^1|(CZX=LG9JZu>V(ta_(_zo|WELRjxN^puekuOz zazFdi;xXw3xVR5gx60kKogkk-*yx#>rzQgg(ME;V!I)G<39r`(nVs1%)lk zwL`O#c#zHhK1R2uVd%uy-C$bF3F!0ZcOyG z3`(p%kJh(h$cs$A0mN@@lr?Q@b@l2N78>*zDN&{U=oQe*I+Jc~>QHHZxxY7-h}EWh z2IbIv7gF8@+iWSOE2Ao(@!(PtIF2)>M}EVTjQ1cz6Z!+}H_FVodwKN= z|GV66!=CrRhns9ATOY1#vR->P?R@)Kp{6c>nl@qS(bIugIDW+*s^TVHx}pL>l@ths z8Y2__Z`?^f;g?c)&)?N(?+;g2gGZjIj=*bAO=jwR)lp^I5sCSZl`xgK%HN#i_XFdC ze#|NFbn*TF>DDeE9@xq1sd|D$n{tG&1$=ES>i+(=ZyV6_tUZZXWEvsuu}gQ`6NyNpm#w= zhlHckwcqNIfTlQJv+E7XeT{_$+*K@aDh))rzwt)@$@iG>tTm$31Q#kDGy2fR%s1^I zx`d}cX4j-=P&EamLXWX{Y2!Vc;3KHT7kr%XA6pqOTfCZ~;vH&>jp^}yjszI-)<+@X zMQy%DnZf5@FXK#?IAh4fj8$^0Pm+0?UPY55EuqHP|Dqgs(x~dw^+u0HvfnU<%+@s6i8(g58(g#bD}>+K;pkcRi-HL=CZA~convu0)6icZLs z)JJC07d3he4Mp$fKR9Pw0oppR`nr4?dNpCg^;u7>{XrMMN4vo=7a(X8c-jDYv>NmUv7~u7rl&Qpl z3wqyKNnjrZ>*}x~M3lCtk;9rLna+P7%Ki`$)&r>Tvj*~6D;|6~Sa7(h){ah1tP0L(Xb0Pff*v^be83VlbCMFZc9pEG@hGe?$g7 zW=j!Fq=VPph+1=Z_4{|_p6ee+YTwbHDQ1_v?>KilWk4zOEfp5pzV+qasBr#y{Vt-K-x&8a37WA1;_o5 zzPbucw*e(#h0`_&Y)^-*cq$Z%J)PBKZSQVFDFKw@LH~VZe~CMx8NI_Zw+|-{YUUNF z!|YmKbsfUYHVsNyx#Uo|hb1t}(HX|kP~4Ma;q14ux0pMKb{D0C4qy!@xn_iN$0S&N z<$iB%`n}aW`Sz&jeci?Eyou{4|L|3lnW#pdqFXl3W>)y+N1}Z0lpqGW%kg8x&t=VZ zFI{%uOs%hKZSB<@ob>XdYV-s_b+kq`&}fKOMll~IK`BfIoP+O4pVwF89lfppLY)b4 z%70o|0Y(t=olFe{4z%mHM_gVWg|0aq58B$>fN@z1dSKuYEaaT$$Q z(#S>*+eoe6)Wr(&qSzp?tJ%mbqledM8nDy)bMkc5cM?w>Fj0)2qD9o(Dq*><$Z6yM(j-Co_(#A2qr^Fn-knsXZ57x_8rC&8}KkZ|f|W7W}i$q3o~qM|FTHHREO& zcY0i(Y^z>MOxkWDis^(KVlls-?kEG3Lo~pUa9}0Y{L7aao2Lxs@pE}Kki{;@ljjxt zjSzwT<&N!y_v5ddCTH=_>uUA8$hn*T&pn(O*(BpI(=qxt`@3`AISHJeh1(im+;Wzo zJkEx)+3Yhze07?y65|PqFMTQ}xRl;jLhOx8wZ9*vdh8{Z!J8G%o=!L28*S>5dhRn} zMtI)F{OuCPq6Q$`Pp(r6%Q(7`kAcSe>@l`R{=z#piev-DFi}6GigmtjdX9w|4@PKD z;LOQ!2&vJO)g49@}l(3Fef9f4Eb`piHXGuiKcf+F7kNs)JFZx+%TiS^D;jbhYU*5GIG0pzy8` zqfD|Kz%EBLbh z1^h*jRMN#GsB}a!_w6v+5v2Q3>Jyi7Lwpr7t^X824vEQ(vRWQLE$+=MJ2i^b(VQi>S*^hAdC;cBBF_Xe-5dYFD!#%Bw#kaQ z>8>C{{gQu-@Pc)IyD$?L_(Ur-Fb8)qijZASjU__9E#^C^)5ORjcC>lAC;iI+Wu6EU zGi@0!^v7^R6^G+=w)hWNHb)7s{8rx_%>fjgKEr`@o46=>!yvcWT#(^xO?L=U*3Kaj zEhp<6e8~-%p1gP=)EMnZ%*);<8f_j7c5z^*l=P;-w4M1+rb?N>u1uRc9L>D$pu?|! zk@($YB6CqgZ;NS+U)$h8g_GEEDNoDm;}nq1);ZX#C<`5wh)Tjs-2B_hT5&Nnkq7lQ zSa=Pk@SB-$%jX_XJ;1xpeOZ2G@*1v9jb8iCmJR*bEg;ePaS{GBs;Qomv_HV)KSIT= zbNj2-aFPBocEqXo@IN;LtbruTPyp#X{bsB?nOY}aL8xyys^KUAchP}KUFoizMI1%AJ)3ekOJwbadYp)m9;)mv>*UOi4cj@C)t7}oc737|4-ku}e zSl|uikVthSRCs+~e`*OR{v)^A?8o%nNEDjgKwDk+4Uurc=5Zvi$aZu$PPMAjBUvFT z2pqx0LoZjgI&Y%%bMh`Vp&u6L)IE9Sc~8b*-!cy#E$QIFLP3%Vvtu=9oq)$-R9{MI zO94U6B!#uNu!<1w9e>`C zcVXM&oZ?}zGboYfr7g*Q<4 zwRNU@#>P5Ix1!Tl6#@n54hV{H*KS#<6AeSusc$B__hfRiD)9i zc7Tts>zCNv+FM7uZZzOgJR^|WuBUnOr@9MjL)7g0sbP&+)pB&0tL%hs>nJkyw!S~| z7S||SWxCN0^I5LjU&*s!KR4&d4QhRLXq$sy)Xud0a8P3;g=9O)?+|)S0m5?OT7+s; zLI6kwRAo(Xi@3k0N_A1Zy!M_)T6Q2&7G3|X^@od`fjyI6CiprRm0RH0?;I}?)o*ao zvXf@r>-hdvr~r0JVIEJYH@2RIM<`-B!UmR#p=^>}lIwWP?Je19yP_6K+xWD{=&+$V z_L(#S*I~Z4Zb<*azwLi*;vZNp_Gb955jW>px9-1aR)%=xx@E}kCE@Z@&fGPVDIcRB<=W4mdQ!rQJoD%Uy}mwfskpu zxu;yU`t&6{72e$A50Sy{SYWAVVR+r2$(KK#s15$Mh_U0CxF9H(bO+sKS;NrY5P8zP zR2_Cpaq-3<88iPCDuD;7$zJg8Z;}Q7CDHB4pitvMs_OY=WoQpR!7*^>uz62{vqK1k z0BfI60hG(m>HiHC0UKZx^)iBZ zXK8{P$@m#vl_~MW+#;kgW(k;OJVsDRsx8hzUM7G0w4SWbQX^fME=D0BsoZSjUcD9N z8VKSNe*TwTvD|k+%gz{?YFgwhzq}-Hfd5C&AxhYk-!2d~&P6D`ZFo%iRbiQT6xu@2 zpWr~11ULc-8Ej&_;nm`HVw=6P>+>HIQgJkbFKMEKbSz}6?@yPqW!|>quBG4lSUjMi z37qW8eKj&cY$et9G6B{u@p$QAFyRQ2jU^~8<|HB2=0WBO*_3tJRx&gznOqnso>VBbR2zIQyT2;OLA)(l$9J$YtaMkMIw}5QG zq0{l72%KO#G%73ptI zS#wDsT0LDISc_OQx{Yk()a>%U*KL<2sncVWPE4dMLuNZY58AC|xm-By5m}Ekn2mdQ z-{F5R{Mum5$r&*n4e#@Uogqqt2H1~)P)R2D3W)!7DDOi21k+f#MwFzJs1X3Ui!ndF z42A+QHR|tCw_TUHS7hJe$!oN^E5ubF=={D|-IQ7&9wb*1ifD8oZnyU0R-6tac%qw$0nBhGsRBf#+(R{z+f#9S#|ipPMCAHCyRSukVv%W}71UF*J}u(|AoJ zQWb;T3tGo%v1CztZU;LUn*Gpyi?Vw_CFDNYkQEN!za&S|>8SSd2g6!QsOX#r+)X)& z6fy&zE|ZOEOIyyLBhQ?8#Gkst9x|4LAt2s=2cs*D$KMZ$*4fxP+*K!t`jleALpv`W zdNjE52G#`_>qV9z-I~9&Ewmy1L&^x)k8IoZPu)sTdx?)ZoXI%406}o#fdhx+)x=*K z^R1xGNMB9-lrb*hdXS@0bn-M?(H_0~e(0|lwxw5b)I}Dxo$b@+Y7!g|$`@-fA>~@M ze&;-rsa0AiQ{fBt6(`DV5+mfw9{JQwNDce2A=hKD1nqyo63Us7WCJS!R^lto$fIJ+ z6*nHU#V=0(SS1S>lATCULH2g%(D@4-K8SA1%_KN9Y;oH32z~?=!>u!8Z;j1?ijn)M z|BOAOv_@7GabQZ8f9dEkGb@Br}M1-*c(u4}{oTZB!tI;mRV?&t)WwBG; zg*aA%)-=Qn5Aw{T6P!MXYIZsV%+7K5m>PrDH(_S)9v;oGyki*f<9!bFfA(3wMX(zh&gU&Z)Srm<)ny} zs-{PEvG+i!5siV^6hFgmR}vka>7bO#{~da2%EU%0Aq=!nO;H!J;@Up{F7@N5pA3a_ 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 IbxsLQ0GGx!?EnA( literal 0 HcmV?d00001 From aebe62f3b9f8ce913b188eba0a56d8d9778c9af6 Mon Sep 17 00:00:00 2001 From: zhangyu Date: Fri, 22 Apr 2022 18:55:50 +0800 Subject: [PATCH 04/25] =?UTF-8?q?feat=EF=BC=9A=20=E6=B7=BB=E5=8A=A0prometh?= =?UTF-8?q?ods=20=E8=81=94=E6=83=B3=E8=BE=93=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../page/dashboard/explore/CMTheme.tsx | 14 +- .../page/dashboard/explore/promqlInput.vue | 157 +++++++++--------- 2 files changed, 85 insertions(+), 86 deletions(-) diff --git a/nezha-fronted/src/components/page/dashboard/explore/CMTheme.tsx b/nezha-fronted/src/components/page/dashboard/explore/CMTheme.tsx index cb9051b71..312fa1134 100644 --- a/nezha-fronted/src/components/page/dashboard/explore/CMTheme.tsx +++ b/nezha-fronted/src/components/page/dashboard/explore/CMTheme.tsx @@ -120,15 +120,15 @@ export const baseTheme = EditorView.theme({ lineHeight: '1', marginRight: '10px', verticalAlign: 'top', - '&:after': { content: "'\\ea88'" }, - fontFamily: 'codicon', + '&:after': { content: "'\\e76f'" }, + fontFamily: 'nz-icon', paddingRight: '0', opacity: '1', color: '#007acc', }, '.cm-completionIcon-function, .cm-completionIcon-method': { - '&:after': { content: "'\\ea8c'" }, + '&:after': { content: "'\\e76f'" }, color: '#652d90', }, '.cm-completionIcon-class': { @@ -141,7 +141,7 @@ export const baseTheme = EditorView.theme({ '&:after': { content: "'𝑥'" }, }, '.cm-completionIcon-constant': { - '&:after': { content: "'\\eb5f'" }, + '&:after': { content: "'\\e76f'" }, color: '#007acc', }, '.cm-completionIcon-type': { @@ -154,14 +154,14 @@ export const baseTheme = EditorView.theme({ '&:after': { content: "'□'" }, }, '.cm-completionIcon-keyword': { - '&:after': { content: "'\\eb62'" }, + '&:after': { content: "'\\e76f'" }, color: '#616161', }, '.cm-completionIcon-namespace': { '&:after': { content: "'▢'" }, }, '.cm-completionIcon-text': { - '&:after': { content: "'\\ea95'" }, + '&:after': { content: "'\\e76f'" }, color: '#ee9d28', }, }); @@ -180,4 +180,4 @@ export const promqlHighlighter = HighlightStyle.define([ { tag: tags.brace }, { tag: tags.invalid, color: 'red' }, { tag: tags.comment, color: '#888', fontStyle: 'italic' }, -]); \ No newline at end of file +]); diff --git a/nezha-fronted/src/components/page/dashboard/explore/promqlInput.vue b/nezha-fronted/src/components/page/dashboard/explore/promqlInput.vue index 4aefd59ce..bef19dd49 100644 --- a/nezha-fronted/src/components/page/dashboard/explore/promqlInput.vue +++ b/nezha-fronted/src/components/page/dashboard/explore/promqlInput.vue @@ -420,6 +420,7 @@ import { lintKeymap } from '@codemirror/lint' import { baseTheme, promqlHighlighter } from './CMTheme.tsx' import { closeBrackets, closeBracketsKeymap } from '@codemirror/closebrackets' import { autocompletion, completionKeymap, CompletionContext, CompletionResult } from '@codemirror/autocomplete' +import { newCompleteStrategy } from 'codemirror-promql/dist/esm/complete' export default { name: 'promqlInput', @@ -459,7 +460,7 @@ export default { }, data () { return { - oldcCodeLength:'', + oldcCodeLength: '', newView: null, codeMirrorValue: [], dropDownVisible: false, @@ -537,22 +538,49 @@ export default { const self = this const promQL = new PromQLExtension().setComplete( { - remote: { - url: 'http://192.168.40.42:8080/prom', - fetchFn: this.fetchFn, - cache: { - initialMetricList: [ - 'ALERTS', - 'ALERTS_FOR_STATE', - 'alertmanager_alerts', - 'alertmanager_alerts_invalid_total', - 'alertmanager_alerts_received_total', - 'nz-agent' - ] + completeStrategy: query(newCompleteStrategy({ + remote: { + url: 'http://192.168.40.42:8080/prom', + fetchFn: this.fetchFn } - } + })) } ) + function query (CompleteStrategy) { + const obj = {} + obj.complete = CompleteStrategy + obj.queryHistory = [] + obj.promQL = function (context) { + return Promise.resolve(this.complete.promQL(context)).then((res) => { + console.log(res) + const { state, pos } = context + const tree = syntaxTree(state).resolve(pos, -1) + const start = res != null ? res.from : tree.from + + if (start !== 0) { + return res + } + + const historyItems = { + from: start, + to: pos, + options: this.queryHistory.map((q) => ({ + label: q.length < 80 ? q : q.slice(0, 76).concat('...'), + detail: 'past query', + apply: q, + info: q.length < 80 ? undefined : q + })), + span: /^[a-zA-Z0-9_:]+$/ + } + if (res !== null) { + historyItems.options = historyItems.options.concat(res.options) + } + // console.log(historyItems) + return historyItems + }) + } + return obj + } const dynamicConfigCompartment = new Compartment() const dynamicConfig = [ promqlHighlighter, @@ -622,92 +650,64 @@ export default { const view = new EditorView({ state: EditorViewstate, // parent: document.getElementById('editor') - parent: document.getElementById('editor'+self.index) + parent: document.getElementById('editor' + self.index) }) self.newView = view } else { - console.log('viewIsOk') + // console.log('viewIsOk') // const { from} = self.newView.state.selection.ranges[0] // const to = self.codeMirrorValue.length const to = self.oldcCodeLength const from = self.oldcCodeLength - console.log(from,to); + // console.log(from, to) self.newView.dispatch( self.newView.state.update({ effects: dynamicConfigCompartment.reconfigure(dynamicConfig), - changes:{from,to,insert:self.codeMirrorValue[self.index]} + changes: { from, to, insert: self.codeMirrorValue[self.index] } }) ) } }, newChange (val) { - console.log('newchange', val) - if(val){ + // console.log('newchange', val) + if (val) { this.oldcCodeLength = val.length - console.log(this.oldcCodeLength); + // console.log(this.oldcCodeLength) this.codeMirrorValue[this.index] = val this.expressionList[this.index] = val - console.log(this.codeMirrorValue); + // console.log(this.codeMirrorValue) this.metricKeyDown(val) - }else{ - this.oldcCodeLength = 0; + } else { + this.oldcCodeLength = 0 this.codeMirrorValue[this.index] = '' } }, newDoc (val) { - console.log('doc', val) - }, - getHint (val, params, b, c, d) { - if (params) { - console.log(val, params, b, c, d, 123123123) - console.log(JSON.stringify(params.body)) - return this.sendAjax('', params) - } else { - return this.sendAjax('http://192.168.44.61:10091/api/v1/series', {}) - } - - // this.$post('api/v1/series') + // console.log('doc', val) }, fetchFn (a, b) { + const params = {} + console.log(b) if (b) { - const form = new FormData() - console.log(b.body) - form.append('match[]', b.body.getAll('match[]')) - return this.$post(a, form) - } else { - return this.$get(a) - } - }, - sendAjax (url, body) { - // 构造表单数据 - return new Promise(resolve => { - const nowUrl = url - const formData = new FormData() - formData.append('username', 'johndoe') - formData.append('id', 123456) - // 创建xhr对象 - const xhr = { - ...new XMLHttpRequest(), - ...body - } - - // 设置xhr请求的超时时间 - xhr.timeout = 3000 - // 设置响应返回的数据格式 - xhr.responseType = '' - // 创建一个 post 请求,采用异步 - xhr.open('post', nowUrl, true) - xhr.setRequestHeader('Authorization', localStorage.getItem('nz-token')) - // 注册相关事件回调处理函数 - xhr.onload = function (e) { - if (this.status == 200 || this.status == 304) { - // alert(this.responseText) - resolve(JSON.parse(this.responseText)) + params['match[]'] = b.body.get('match[]') + params.start = b.body.get('start') + params.end = b.body.get('end') + a += '?match[]=' + b.body.get('match[]') + return fetch(a, { + ...b, + // body: JSON.stringify(params), + redirect: 'follow', + headers: { + Authorization: localStorage.getItem('nz-token'), + 'content-type':'application/x-www-form-urlencoded' } + }) + } + return fetch(a, { + ...b, + headers: { + Authorization: localStorage.getItem('nz-token') } - xhr.onerror = function (e) { console.log(e) } - // 发送数据 - xhr.send() }) }, closeDropdown () { @@ -792,7 +792,7 @@ export default { this.cascaderValue = '' }, metricChangeNew (value) { - console.log(value); + // console.log(value) if (!value) return this.insertText(value) this.dropDownVisible = false @@ -1088,16 +1088,15 @@ export default { } } }, - expressionList:{ + expressionList: { deep: true, immediate: true, handler (n, o) { - console.log(n,n[this.index]); - this.codeMirrorValue[this.index] = n[this.index]; - + // console.log(n, n[this.index]) + this.codeMirrorValue[this.index] = n[this.index] } - }, - + } + // codeMirrorValue:{ // deep:true, // imediate:true, From a7d47d8fbc5fa7493781609913f4ff6a089fb49c Mon Sep 17 00:00:00 2001 From: likexuan Date: Fri, 22 Apr 2022 19:13:14 +0800 Subject: [PATCH 05/25] NEZ-1830 fix : --- nezha-fronted/build/webpack.dev.conf.js | 2 +- nezha-fronted/build/webpack.prod.conf.js | 2 +- nezha-fronted/index.html | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/nezha-fronted/build/webpack.dev.conf.js b/nezha-fronted/build/webpack.dev.conf.js index 45b7911e6..cf74c1258 100644 --- a/nezha-fronted/build/webpack.dev.conf.js +++ b/nezha-fronted/build/webpack.dev.conf.js @@ -55,7 +55,7 @@ const devWebpackConfig = merge(baseWebpackConfig, { new webpack.NoEmitOnErrorsPlugin(), // https://github.com/ampedandwired/html-webpack-plugin new HtmlWebpackPlugin({ - favicon: './static/favicon.ico', + favicon: 'src/assets/img/favicon.ico', filename: 'index.html', template: 'index.html', inject: true diff --git a/nezha-fronted/build/webpack.prod.conf.js b/nezha-fronted/build/webpack.prod.conf.js index 396e1f024..1066b82f9 100644 --- a/nezha-fronted/build/webpack.prod.conf.js +++ b/nezha-fronted/build/webpack.prod.conf.js @@ -91,7 +91,7 @@ const webpackConfig = merge(baseWebpackConfig, { // you can customize output by editing /index.html // see https://github.com/ampedandwired/html-webpack-plugin new HtmlWebpackPlugin({ - favicon: './static/favicon.ico', + favicon: 'src/assets/img/favicon.ico', filename: config.build.index, template: 'index.html', hash: false, diff --git a/nezha-fronted/index.html b/nezha-fronted/index.html index f6e379b09..835362dc2 100644 --- a/nezha-fronted/index.html +++ b/nezha-fronted/index.html @@ -5,8 +5,7 @@ - - + Network Zodiac diff --git a/nezha-fronted/src/components/common/alert/alertMessageInfoTab.vue b/nezha-fronted/src/components/common/alert/alertMessageInfoTab.vue index e50b10ad7..b9347c7ec 100644 --- a/nezha-fronted/src/components/common/alert/alertMessageInfoTab.vue +++ b/nezha-fronted/src/components/common/alert/alertMessageInfoTab.vue @@ -40,8 +40,8 @@ From c3099e1d8a00dff8d0dea91b0384e1d3105e4f71 Mon Sep 17 00:00:00 2001 From: zhangyu Date: Tue, 26 Apr 2022 13:39:24 +0800 Subject: [PATCH 23/25] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=20=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E5=8C=BA=E9=97=B4=E9=80=89=E6=8B=A9=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=8D=95=E6=97=A5=E5=8E=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../css/components/common/timePicker.scss | 6 +++ .../myDatePicker/src/panel/date-range.vue | 43 +++++++++++++++++-- .../common/myDatePicker/src/picker.vue | 8 ++++ .../src/components/common/timePicker.vue | 1 + 4 files changed, 54 insertions(+), 4 deletions(-) diff --git a/nezha-fronted/src/assets/css/components/common/timePicker.scss b/nezha-fronted/src/assets/css/components/common/timePicker.scss index 6b42f61ce..f4e51bb53 100644 --- a/nezha-fronted/src/assets/css/components/common/timePicker.scss +++ b/nezha-fronted/src/assets/css/components/common/timePicker.scss @@ -308,3 +308,9 @@ } } } +.el-date-range-picker.el-picker-panel__body__only { + width: 324px; +} +.el-date-range-picker__content.el-date-range-picker__content__only{ + width: 100%; +} diff --git a/nezha-fronted/src/components/common/myDatePicker/src/panel/date-range.vue b/nezha-fronted/src/components/common/myDatePicker/src/panel/date-range.vue index a557e15a7..facc15492 100644 --- a/nezha-fronted/src/components/common/myDatePicker/src/panel/date-range.vue +++ b/nezha-fronted/src/components/common/myDatePicker/src/panel/date-range.vue @@ -5,7 +5,8 @@ class="el-picker-panel el-date-range-picker el-popper time-picker-popover__select-top" :class="[{ 'has-sidebar': $slots.sidebar || shortcuts, - 'has-time': showTime + 'has-time': showTime, + 'el-picker-panel__body__only': isOnly }, popperClass]">
@@ -17,7 +18,7 @@ :key="key" @click="handleShortcutClick(shortcut)">{{shortcut.text}}
-
+
@@ -84,7 +85,9 @@
-
+
+ + + +
{{ leftLabel }}
+
-
+