From b8f2797abfeb2faa62630cdfff2b376c8ed3ee9f Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Jan 2020 09:04:08 +0100 Subject: [PATCH 01/12] better behavior of note info widget in tight width --- package-lock.json | 2 +- src/public/javascripts/widgets/note_info.js | 29 ++++++++++++++------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1906e1c80..da0436f84 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "trilium", - "version": "0.39.0-beta", + "version": "0.39.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/public/javascripts/widgets/note_info.js b/src/public/javascripts/widgets/note_info.js index 1f71fd03d..db4a30f8c 100644 --- a/src/public/javascripts/widgets/note_info.js +++ b/src/public/javascripts/widgets/note_info.js @@ -1,18 +1,18 @@ import StandardWidget from "./standard_widget.js"; const TPL = ` - +
- - + + - - + + - - + + @@ -39,10 +39,19 @@ class NoteInfoWidget extends StandardWidget { const note = this.ctx.note; $noteId.text(note.noteId); - $dateCreated.text(note.dateCreated); - $dateModified.text(note.dateModified); + $dateCreated + .text(note.dateCreated) + .attr("title", note.dateCreated); + + $dateModified + .text(note.dateModified) + .attr("title", note.dateCreated); + $type.text(note.type); - $mime.text(note.mime).attr("title", note.mime); + + $mime + .text(note.mime) + .attr("title", note.mime); } eventReceived(name, data) { From f377a84fa12de5dc940ec909db807e67ff05e26a Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Jan 2020 09:21:42 +0100 Subject: [PATCH 02/12] hide/show button z-index tweak --- db/demo.tar | Bin 1244160 -> 1244160 bytes .../javascripts/dialogs/options/sync.js | 2 +- src/public/stylesheets/desktop.css | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/db/demo.tar b/db/demo.tar index 5ca9b7de21727633e5d88c2097cf24a0310bab01..bc8deb825159132afc779b45dc716b3168c1f0bf 100644 GIT binary patch delta 29957 zcmd6Qd3;;dmH%AD&f@o^*a{(g;wTF^WYN>|WU*V8E!*Nz^zJ+7d%kD6=iYbU^WG15?*ZOzlti@6r*=uY)_-d9=OQ_>yj2nxkk^@hTiwF`F7bX{|) z*WvfOUFwCA+-6?v=xJ#U4^%Y`4EW&3*Z83d%XEogs~L7R1?7=1kaY|sz_~>I$Ha^~ z@+esq&0myHc!X+Pe#1&OUV|-4+`eQ9BLM%7BuJ0w*GE6IcpG7iQpH~T=Za-$*$;Bt z@~$8}<|I40Sc0@)zb=}?Zzc?_*~!I@iSF00CcMR6-aIs26Kv^sPRSeB5Vt(|d$LS^ z(M5_R$I=$wIndWq)*-sfy=|UMo@2(To;$U47vUR++UnbDI!D{8YQmWzV*%K6Sb|E$ z69vVDZ|<@Lgr-riy-ajuCl^al<#sK*itt_bQd_m#+1=9CQ=7?LW*jwF`pk-a`RYSt zX|!PZDZ)?mSWCJaeU_fFI=ghs<#zcdFIggaS3JdAYKvW?*6zBV){2VE$gvL02$n#R zOS@ODmySP|C!czU6idhRobvH$;)vF)3a~h+dz};rFR%5JYozPfwD7i(+Mq}5b53_Q zi_+eYwsfS)07$JgaNr6Cgn+^oBwiMx#1y?@ZBWOMbI?kB@`g#WO}cSI58vHiSMGBO zqmz@B)zUX#ExJ7|oJ@c+L1ICP3|zQ|0hscZ$T>j(y}R%YmPzT2sS;_#XOQ+pt0di~ z$G8s9c zP`cxqBI)a|ZF z2Xu-Tz@!+kTn!nRAS(r=P+E8LZE5F~A-=Uc;;Njk>kD?*R{WpB9RrrDAp_jeBSlA{ zT!kWD(QYm4@%!p&nsuV!pwqNE`>FrSD$N-2!Ydo4kFF|`LLYMS(=U+gqes_zi1gf! zFQ&=6(>r_k(eaMq;o-5sU{78D1&Y*BMgDVo8$ z6#Jz8wq+cKLc{yEDY8@E^+VDVJv=i(cvoL2Kzws zV$fA1p3Q)BO4mQ#fE4F}c`;zQDzfMu*E~k}>WM(z@Kj^fNWCZWe+p|1SgwYQrfA{y zE*(EUG+Nu))>CC4bOxn&%T`K-t*e-F*f6r3X%D0$HJ357x%vZUQT+i&w)z7@43)uX z_SNo;eyU{60&2kPa zrqsOA2-F0`hRKquNPmxIsPW=b!)T^>tZjhDGCk_4ZgzOYoe`*IZmYjAn}G)ms41cx0rvw7b94*WcN2aq%#kDW0Nkz*9Ur+)gm|;a*)`n#F+SYRG6iv1;Z+wtGN2CIAo7>$F0i@OH2&8&>C_`we;@D&giobDTJT$2=#r|Cg;qM&~`}z z2?Iz3()IiQV{RawbuIRWu(eSnl zvZ0m%wh8HXBx2?5M^FAqv9dk-$m3SRk4^+jT0-HvaKp%1IS-u6E>#Bbu&_n&=_Vcv zWlnI6behBEL*elbPyN8zg8Cu?WuVY%So9=WE$uw8P&!d$kj&q@Mn3TzF-YsT)E~H0 zFXeysGHGw!V)>|vTqb>CV6kMrVUcwDz)I=Hukrk(*wH>wUp+JGD=n3LH?&Ii_g6)? z{#{WHFW4FcVSL8kD3!dlSIU2)P`csXU(VUElZL;$IlAN6$8yptiu^GOU?u7-^IgnxisE^RpZ zRJ=%?nB69sZ+mkt-O$WMU-*tYhcE95*lZ=0C6%2K|0Ssb7(gO*e*VuXH6U8>gWnUr zN~jOJitSdf$5VBYvx9*-Cp%)may4Y&i70pCBX(6ox20(h9sS9VeyHO;@MNQ>-qBM% zJ!8KBPdKpnsPM|&gf9#Cluh~@nx-Qol^4v+Am$Rp<-CNzbpj3^K*D^RgEMma8G7?B$#sh9@4?;oh?P ziJ6H>fAx7!=5xUt1D2~H1H5!e6W#kCdk8Pss~Q^0JWi*#XY`U}5eAURqL=?OK-<$5 z2mW=B^!+#YaOgCJd}JFjr9G#UW+7lg0_^Hxj~9QDzkqM`1qaI7y!9QmZNu3e#lR9& zxq-L7NBDlvu-!W_Q4_Se6+U7J!1-ge9o3 zO5ZVn++eGFx?-envSX}co)Vo#Fk}W6ja1SrSUfz0j(+r;ozO0}m(;YjP1cQs>RcB< zDI=aLef8Y|IN0S998RYYX{jG8nK!D_+M3B)xQ10TOu#h^AQ9Dtrox3#LnH8$0dwJ}&U6OkrHJT<29w1sdp-F5wgrQ_{lu}gk8mu$^&DkW`_n9?gn z;=K}8dio5^I4z|Wt{RK2wYR?Aa!wJIRx#usR?RR0*D!#1L@5nAQV;EINURD>)DDhz zxPzAj8wL==wn;j3CRf>$L;49nHqaaCw^<$IX1DVKLGlv|(a(a~TckIDudL(`0Sen-GBbxnO(BRTEI|#!*5#yk0pI8zYaJZyw2j%URoMx~5>&yZt4KFJJL74$7Q4Hq z!$Xct{V6k!_NOwpj-2M*C7olDuBPEeSCx~VZHAWz7R$wjWQ}~|+hm>m!wqC3UpD0_ z4?AndN*bo>VT>phS{J2`u~ifgcb564Dr?Q6DyQ(}IdVEe;y_)g(>CQDYoKEkI1+d@ zVIX9t2HSu+XN;iHdTJy2koQbX^mbJaRF2eCRnX(oyX9MNBn#!|ZveaGP2{tTU37q- z?h~$)|G0y!=dnH7S?iG!a!5YWOgQ<(7Sh3&IP61pqwS6wOI4#b0IXRoePFmjer_vy zkkLL*-AQ8>OmEmQWH4O8#?cBuP3GkMB9g0obOrg8jx~!PuqpUMuik#)W@6ba+l+WRtHEQuKk#jX4UVe8y1|Hf(3ZJDNM{X} zpjz{4H~BFvI$DR@O8RF+v9x9~YiqD<)*39HI&G8E*-PL-5sIm%dDmfSOj3`lrBw}q ziWQ)y)C0+7Lor(_h5kl&^}LcCC9VBM)?;Afce6}rToFiF=x zy;d&#EytoR+Pg|Z1I^>rzAowLkFRJy>taid(6kOSrHx$^629w|P0BN28Yax^ zJ{O9aq-IA`Dl-^BoEZgP^w|Q(S%*G%dEBU4iDw z+QG3}w^_(K29fA-#wHUZp2pyz+Xx(X#rbef)hVrJs6bdZg9@%;0Lg@eN722FQ}zBS zAyjbz$Y8`%GFI;;Z^6@_h7yM`V)568Cgyt*p2oLeP+B5PjCj!cH2N>~`3-Mmy;=Ik3nYh5JQ@OwZVtN0P{Nk&moFD46 zH#C=xn`>O&ou#GIz3?X8 zuzUUkcWI*?LMyFixQ2BzsNfm~kSMX=e3%RozH)4O$XnV}JX&8p-;>9*$kO97G2$sB z|F)m}7vXDqdm8GSBG&%)w&Dxm2Sz;AI{ZoU)s%BNnRigLv31T;LZ(Xz`8Nm2513Dh zWLf~?Pmajy0>XU4((r`dC<^cxE&AA?Oau^txcwrNjC zX-_C~ieZT;u1r{h+WEitR|LM4fsesvCm2gm1t0ipavvNJ^!M3Xe32%LORURIFqS|C z%ZLAt{E-E$?oGg}(~tA$FzvuR5t@b}$UCeNaR*lz@erZ(;PHR+^{u@%6U7#DXQeCS zkqBm-8YPpTB^*8N)fO7*A8PdUdZsdSge4$ka3CrvK_!3D-;;d8_qNmo#qN-+xzgdt zPB50B3V!@4vYzlgWp&okwxD}*%vYP8U@SouT=IDWFY7b~OFD-;8{O8Pwt-9u!;Dj@ z{N5MH!|=Rftl3{{Z>XHK1e!Ag!xAu+Sb`dEuOB76JZS zB)2j@&l7HG^g&QzjR*-`!CDnqFpmO3?vm1)LD%R^OVBrOH=0&wCao!Y8ANam1Bg#b z^6^*5J96)r$zFc4-fs!?g=TEy?yj?)6Z2%ilo=I^OMdnkd1#}jMWZj!IWPq zq#IiJ+G_JaWNOk8aX2nMC`LPgl6RjV8zl3Ir80CkobupT$Qa>^ZIj|yhrK^E)|mEf z0}gQ)dsP6(4t)WiLm?v-RMLafm?Ht+H$ZSC`r1FE8IDoQ@4N@clIe?LC!bfJ1sWuS zOD}(86}(ZgySzX;dLmbO?d#+T0`K;Q>T1OD+IE+>Dcu_q7X~w<889o#aq?RoYl_f* zxpe&IwFZbAv>ulVDwb1Hl68hMnGcI|CJ*H!-y)Z%lDU+QV(Gk$ipPwCczA;Y<5NZD zW0oOpmPiFv8>OSoInpB~i{p&vDCTd|lNzPf#e*FK;qpjrYeX$#X}<`D%osq4YC;mE zXMeF?Uie+|0WY*RhU|`!-tJ-dxK_j9=hgDsUqbJWuVr1xkk$x70}NsDbmy;(e!xY6 z54e~J*Dmz9+lL}yVX8v@<||~mJkn2=XMB|_jn(P~OIi#mC>VTj4WSr6OIdRWy}Bot446QA22`1Gr6QYi*f|C)S3^dt3zWR8;EP$!^7B!WFI{)7Ui$a9cF2Wa zCD+PpUL+rzw-{bBQ(|e9tCeY5y`fOT@v*9@k)iJLNLkm2do;T_9ZOK>^sPT4zlQ@y z-NkNawYAgMCib%?rGISJYfI~ zG`NNV#Irzw$-M{o#D}Dw}h>TPS-EEEz>x9@rQ(;iP|0I+O z{Bzcxz#195O;~))6V_m{x3$GnTI%hsIww!0)e3B5y$m9_h5^Jg;B20-PW$^>>LOLH zP+wDa>3}7uo{-)IPfS>5$_5<86+_(>9?cVn-XtsJ!zW>q#@DiT2Ug1%Z^GhZ?ig!r z>#|gP1Ji)#oZOLCD^QO0GKkSs`!RNN!}tW%fPRgiJGGO$uyu_QI*J zmdfE$Z*zU?sJCYx=cbVgbYZzjA6#L?)4jDXouVrv+?LMk;Iw)(X-?72pn_`{K*GVW z0)aC?HgDrdYoDif+SZ*N%UA-&ZsN-e+1G2XO zzC~=d+AZ)cVvEh3_!hB3K4uIP`Qt13Mau3!ko-I}POw>Rg@0jJzgeu1>vTMk^$T^k z$3_Ss$!@jH8L>Dq0(4mft02a|d#sQpy4giZ1r|ZD+mjbJ>h==l4x^4+h=!OQ7Bpmu z?slT=U9IDpAvTKzOPS40-Y-~f@G0ilcbBRD1|oOAS8$cG=StmD9U5n`3)WOyw_{5L zhr?{fk|>g$IvxwLi*}$x`^d8bhgujUKssoMUqncXStM4o4H!$ZzLLnRuGNhrtX4Qu zjz`QAbkS~y?@cFeFVk6xEPj}`Q}(}?w=Fr$0w1PEe%ZtABg#E4-9l`Q!%hv311ZyC zH5Qu{o4SQNKwT{gRj9OTp8N0j?(bqlZ$MY99J(T23@7GOAb z)st~J9V{FOG^9c^=cW{MEH)UDyx&4(>#e$u7*6;`w?%{mNqWeqo5e<0)!XCl(-8I~ z5kfY=7rt$fSFDC$LIWLPvkKt3xR3$eY-vorcF}^O$D324Q(VvLs%~S3;QPHf7Tvwp zT?-WJuAGiF%rKl0-kjObGZ(FhDk?*<{xPScjTvHLU~bUeTiBAT6t*lJbg;uvZhd0m z>@;&R`N4CAXx1!QRP`7;gfX~Dr!+sgsQ7tihy}T%ck%2q>_z7O65YM7RZA4ts=TTq zW|$Qvt~W=}DVDOl&NwHuNKDo-2cf-WCM*Ho0V3|xL>v4_(L8J zUyE6EAWk(Er&CloDD80-giENP5N&qs(=zTsqI@EUJA+c+Vzt|u`@KZ2Ud-JXqk;-? zFj>EZW2&)Py*+M(hS12dB!~hk352_n$VHcPT}T74graK;_gSKRZYB3~1}0FEBx?=F zq?uW8pt(r{QJ4b4Lh~d^69uuE0bzAmQDAOiHCP-Ly=~T+7&Cv4Wk+`?VoAvO^#!8E=A_YpXa>zQxV$K*}682g;B# z)>hF@XJ3sfiI6h~tGEYa_d><73Sejwg_oOM7rUs&w9SEd(gH5X2AtV0qN=S~G0a#Y zI7Dh_+*zY3F%6DN>epNm=5X2wc8L4rkf*piiE>wjTY@JBo862u^E%xsBH!|$aj9Ii z8@o(!*yylic;m1W#FQyjlaViPyOZ-HvdtDtf=}8JC5GLt4b%SE1EiT9QMZrviN%Z~ zTr>Is#%NGtM!eF=RgoUz{ud_^%-@K*{Ye${k4=bHT)(xZ=^&SARlxOv%}#p=jSU(Z zUw)K(Fit8JVYT2n8+9vx%_aIKI?iIH*%bHhk)(gA602xObRFTKmHFpKjGTP=UvW3e z-QVCgu7q+D`#TxXn^Jjp2Tlyl-=E=@#IsYi&SpjIJjKm&$*6^Rp&^;X11eWb#yok` zKXCoYVHUH1TVO46zrrmn^|73?Bi3B;v*#Kt335>!uL;#LrOC7dKk-VQl| zE0M-$4!;l^VH0thAK?n1?0?F*T)u+m14&7c$+(Ns^IDq65>v37QNh!=GV+OPLbwLA-C90xG1;l;H}kivDF)339cs1W z?ATy15P9j9{GOOC>f%Yn^|6Sb9l{qawA+j`Uc@gUO5P#<&U(ZJSeqE~X?U?mCU5bV zrMxTh7Qc>ty`<_be!ZQ2ufr5EU0v+lZkje-Z7;U(*?ya8I1~<4cAKs?;WrzU$KT?A z6E9L4mtbfj8QF*oUNigyzlPq^G^DsI-ZJgKEB&eP}|6%2mL(}aFdpM(h2khXR4 zP|{S~txwDssw6!TeW^^5aX%yw6PwQXZU%2q#0e!ra0m&Bl7g-?b6O+4!9hcczJ)BiJ}lqZ8>+P{5J+eGgZ4?{@C5d%}U*4`s;9fL;C}06Gbv`sy% zS9|4nA+h7i`=tJUB7Y*t>8Y_!<;36WzlL>*B3P|VNhZ(?!bHuc#U2QdpBFuA14 z^y`Y0XTGF=9SgCEbcq%>?wEcnk+1j%JzLiC6n2bN1Dg>jYQC*szd+vb4Sl>=(hzXK z3NHynEBwdxOyP$)4mtCfem#*ld`lA&vj$pGlu6%CA(-)xcKbgux5GS*CfZbYe?P_D zY9AD5l&ap`TU{Dfc*JKxvk2n zH}!Xuga4ICZ)y-smI()|NZ!(G-70tnrczk>;$1>Xe~8GB8hKH9@g4ow<8cOZVEV`9 zh znueGi;1yJdR`7Qb`GIZR8U=Fj?YJEj2^fqDX@MazG17}x*vCp@&|qF>V5+$t7Qv}Q zR;COQ*o|Ad-MKb7gt7_!3$kZJ5(T{oTcPOU6^30zHk%ALp%{b)D1q}y*qS8@*=(4N zFG5teTXE64f>B@*YaaHU1dBEt}s~0!Q;k7a_DQu#j?H1Xp+0l zhAR;wU=GnQ7!oZ%6$U#S3AhS*U7t^sf?~sMIPa{Y1NA#GeJf?J%TR)}*wtaM*=PlhGyS^) z>g^8;7;mc^>~X66z!`TCd8g5MbJ8L3NCU5fmKkvf z!7M}zYFzyWqX4(_MvL5SGMHA_;?-AsN@IZqBm-wPQP!+AjxumW5!Lw(DdsqEJFv`n zH&OPPjEhiy&{+}X=#C_w)pTj@m;)%;uEe5Xn~{wIXi}2)?U)~rc@7?ipS46@CmKVT zUUfSu=_4kJV7_ALptoPk-VXC#(#0Al*RvQPaZqV3Wo>{wN#tUTf^voeSdHV&$tFsv zrOMceO)w{)oTzhIwei9DI+x}GL@~0WDFz@mLBPzM0H6@HNqhLc0+0N&d$@(l%dN&^ z@mWI6X;e8>O`S$OYeH|9TprTrfU^@6rltx0U}>`K#7zB{n5pp*0xrPXQuimu)0_T3 D*RUPG!nNj*_Leiwrr6AvgJ#bGzaK;iHfQ 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 diff --git a/src/public/javascripts/dialogs/options/sync.js b/src/public/javascripts/dialogs/options/sync.js index ee81668d7..23b2cdeff 100644 --- a/src/public/javascripts/dialogs/options/sync.js +++ b/src/public/javascripts/dialogs/options/sync.js @@ -12,7 +12,7 @@ const TPL = `
- +
diff --git a/src/public/stylesheets/desktop.css b/src/public/stylesheets/desktop.css index deae323c0..affa5d15a 100644 --- a/src/public/stylesheets/desktop.css +++ b/src/public/stylesheets/desktop.css @@ -407,7 +407,7 @@ body { position: fixed; bottom: 10px; right: 10px; - z-index: 100000; + z-index: 1000; } #right-pane { From 7793552443fd4f83e8f15e389ac1318c6778bd10 Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Jan 2020 10:05:03 +0100 Subject: [PATCH 03/12] fix display of show sidebar button --- src/views/sidebar.ejs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/sidebar.ejs b/src/views/sidebar.ejs index 55378a980..82f4f9ecf 100644 --- a/src/views/sidebar.ejs +++ b/src/views/sidebar.ejs @@ -1,5 +1,5 @@ - +
From d025cfee1bd9ec2edb57c3bae7a168549e1576d7 Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Jan 2020 13:22:07 +0100 Subject: [PATCH 04/12] empty note with just included note should be saved, closes #807 --- .../javascripts/services/note_detail_text.js | 14 +++++++++----- src/public/javascripts/services/utils.js | 6 +++++- src/public/stylesheets/style.css | 4 ++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/public/javascripts/services/note_detail_text.js b/src/public/javascripts/services/note_detail_text.js index 068cedd46..d81d5aed0 100644 --- a/src/public/javascripts/services/note_detail_text.js +++ b/src/public/javascripts/services/note_detail_text.js @@ -116,15 +116,19 @@ class NoteDetailText { } getContent() { - let content = this.textEditor.getData(); + const content = this.textEditor.getData(); // if content is only tags/whitespace (typically

 

), then just make it empty // this is important when setting new note to code - if (jQuery(content).text().trim() === '' && !content.includes("").html(html).text().trim().length === 0 && !html.toLowerCase().includes('").html(html).text().trim().length === 0 + && !html.includes(' Date: Sat, 4 Jan 2020 18:44:54 +0100 Subject: [PATCH 05/12] indent data notes --- src/services/backend_script_api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/backend_script_api.js b/src/services/backend_script_api.js index de0b29212..b5f9e72f1 100644 --- a/src/services/backend_script_api.js +++ b/src/services/backend_script_api.js @@ -204,7 +204,7 @@ function BackendScriptApi(currentNote, apiParams) { this.createDataNote = async (parentNoteId, title, content = {}) => await noteService.createNewNote({ parentNoteId, title, - content: JSON.stringify(content), + content: JSON.stringify(content, null, '\t'), type: 'code', mime: 'application/json' }); From 571772069a8c29f17929cf7c3105388260cbbc5d Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Jan 2020 19:22:16 +0100 Subject: [PATCH 06/12] force SQLite to choose particular index for attribute search since it sometimes led to very inefficient query plans --- src/services/build_search_query.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/services/build_search_query.js b/src/services/build_search_query.js index 40c422f57..165ca3c42 100644 --- a/src/services/build_search_query.js +++ b/src/services/build_search_query.js @@ -31,7 +31,8 @@ module.exports = function(filters, selectedColumns = 'notes.*') { // can match notes because @tag can be both "shopping" and "christmas" const alias = "attr_" + property + "_" + attrFilterId++; - joins[alias] = `LEFT JOIN attributes AS ${alias} ` + // forcing to use particular index since SQLite query planner would often choose something pretty bad + joins[alias] = `LEFT JOIN attributes AS ${alias} INDEXED BY IDX_attributes_noteId_index ` + `ON ${alias}.noteId = notes.noteId ` + `AND ${alias}.name = '${property}' AND ${alias}.isDeleted = 0`; From ca587cccf6b666672a43b60292b9ccac3ad563ad Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Jan 2020 19:34:01 +0100 Subject: [PATCH 07/12] book note type has automatically empty mime type --- src/services/notes.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/notes.js b/src/services/notes.js index d6a7052cf..e654a249d 100644 --- a/src/services/notes.js +++ b/src/services/notes.js @@ -48,7 +48,7 @@ function deriveMime(type, mime) { mime = 'text/plain'; } else if (['relation-map', 'search'].includes(type)) { mime = 'application/json'; - } else if (type === 'render') { + } else if (['render', 'book'].includes(type)) { mime = ''; } From fdb46f9329278e446319c4dcba14b2a75d01ed1e Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Jan 2020 20:10:30 +0100 Subject: [PATCH 08/12] fallback image saving without optimization will still compress image --- package-lock.json | 308 ++++++------------------------------------ package.json | 2 +- src/services/image.js | 18 +-- 3 files changed, 51 insertions(+), 277 deletions(-) diff --git a/package-lock.json b/package-lock.json index da0436f84..644412e5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -722,29 +722,29 @@ "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" }, "app-builder-bin": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.4.4.tgz", - "integrity": "sha512-Xib+wgdK+8zZhbZr5pma3pNB23Y4JRY5Yt6h8peou6MTFSQzXdIkqalh/ezy9SMLuS43S4b0s7jTVAmUs8WVmA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.4.3.tgz", + "integrity": "sha512-qMhayIwi3juerQEVJMQ76trObEbfQT0nhUdxZz9a26/3NLT3pE6awmQ8S1cEnrGugaaM5gYqR8OElcDezfmEsg==", "dev": true }, "app-builder-lib": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.1.0.tgz", - "integrity": "sha512-jDTfWsVS/MePO4FexqiSQcsWM9Yfr81ETIYbmVbKmW05o0dn9k1DvMOMoLb0kTLQpW+pWBVvGMAOPfk68HnBrg==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-21.2.0.tgz", + "integrity": "sha512-aOX/nv77/Bti6NymJDg7p9T067xD8m1ipIEJR7B4Mm1GsJWpMm9PZdXtCRiMNRjHtQS5KIljT0g17781y6qn5A==", "dev": true, "requires": { "7zip-bin": "~5.0.3", "@develar/schema-utils": "~2.1.0", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "22.1.0", - "builder-util-runtime": "8.4.0", + "builder-util": "21.2.0", + "builder-util-runtime": "8.3.0", "chromium-pickle-js": "^0.2.0", "debug": "^4.1.1", - "ejs": "^2.7.1", - "electron-publish": "22.1.0", + "ejs": "^2.6.2", + "electron-publish": "21.2.0", "fs-extra": "^8.1.0", - "hosted-git-info": "^3.0.0", + "hosted-git-info": "^2.7.1", "is-ci": "^2.0.0", "isbinaryfile": "^4.0.2", "js-yaml": "^3.13.1", @@ -752,26 +752,11 @@ "minimatch": "^3.0.4", "normalize-package-data": "^2.5.0", "read-config-file": "5.0.0", - "sanitize-filename": "^1.6.3", + "sanitize-filename": "^1.6.2", "semver": "^6.3.0", "temp-file": "^3.3.4" }, "dependencies": { - "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true - }, - "hosted-git-info": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.2.tgz", - "integrity": "sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw==", - "dev": true, - "requires": { - "lru-cache": "^5.1.1" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -1381,16 +1366,16 @@ } }, "builder-util": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.1.0.tgz", - "integrity": "sha512-BPvpWvxQ5XOzm2WepIgmOAyo2IyaM/Bd1LJmeTYy5CtknNAtxgmAPQJfCHCikMKKQA4Obz/KYecXQiGpGJ2ThA==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-21.2.0.tgz", + "integrity": "sha512-Nd6CUb6YgDY8EXAXEIegx+1kzKqyFQ5ZM5BoYkeunAlwz/zDJoH1UCyULjoS5wQe5czNClFQy07zz2bzYD0Z4A==", "dev": true, "requires": { "7zip-bin": "~5.0.3", - "@types/debug": "^4.1.5", - "app-builder-bin": "3.4.4", + "@types/debug": "^4.1.4", + "app-builder-bin": "3.4.3", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "8.4.0", + "builder-util-runtime": "8.3.0", "chalk": "^2.4.2", "debug": "^4.1.1", "fs-extra": "^8.1.0", @@ -1439,9 +1424,9 @@ } }, "builder-util-runtime": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.4.0.tgz", - "integrity": "sha512-CJB/eKfPf2vHrkmirF5eicVnbDCkMBbwd5tRYlTlgud16zFeqD7QmrVUAOEXdnsrcNkiLg9dbuUsQKtl/AwsYQ==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.3.0.tgz", + "integrity": "sha512-CSOdsYqf4RXIHh1HANPbrZHlZ9JQJXSuDDloblZPcWQVN62inyYoTQuSmY3KrgefME2Sv3Kn2MxHvbGQHRf8Iw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -2424,122 +2409,6 @@ "sanitize-filename": "^1.6.2" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "app-builder-bin": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.4.3.tgz", - "integrity": "sha512-qMhayIwi3juerQEVJMQ76trObEbfQT0nhUdxZz9a26/3NLT3pE6awmQ8S1cEnrGugaaM5gYqR8OElcDezfmEsg==", - "dev": true - }, - "app-builder-lib": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-21.2.0.tgz", - "integrity": "sha512-aOX/nv77/Bti6NymJDg7p9T067xD8m1ipIEJR7B4Mm1GsJWpMm9PZdXtCRiMNRjHtQS5KIljT0g17781y6qn5A==", - "dev": true, - "requires": { - "7zip-bin": "~5.0.3", - "@develar/schema-utils": "~2.1.0", - "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.9", - "builder-util": "21.2.0", - "builder-util-runtime": "8.3.0", - "chromium-pickle-js": "^0.2.0", - "debug": "^4.1.1", - "ejs": "^2.6.2", - "electron-publish": "21.2.0", - "fs-extra": "^8.1.0", - "hosted-git-info": "^2.7.1", - "is-ci": "^2.0.0", - "isbinaryfile": "^4.0.2", - "js-yaml": "^3.13.1", - "lazy-val": "^1.0.4", - "minimatch": "^3.0.4", - "normalize-package-data": "^2.5.0", - "read-config-file": "5.0.0", - "sanitize-filename": "^1.6.2", - "semver": "^6.3.0", - "temp-file": "^3.3.4" - }, - "dependencies": { - "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "builder-util": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-21.2.0.tgz", - "integrity": "sha512-Nd6CUb6YgDY8EXAXEIegx+1kzKqyFQ5ZM5BoYkeunAlwz/zDJoH1UCyULjoS5wQe5czNClFQy07zz2bzYD0Z4A==", - "dev": true, - "requires": { - "7zip-bin": "~5.0.3", - "@types/debug": "^4.1.4", - "app-builder-bin": "3.4.3", - "bluebird-lst": "^1.0.9", - "builder-util-runtime": "8.3.0", - "chalk": "^2.4.2", - "debug": "^4.1.1", - "fs-extra": "^8.1.0", - "is-ci": "^2.0.0", - "js-yaml": "^3.13.1", - "source-map-support": "^0.5.13", - "stat-mode": "^0.3.0", - "temp-file": "^3.3.4" - } - }, - "builder-util-runtime": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.3.0.tgz", - "integrity": "sha512-CSOdsYqf4RXIHh1HANPbrZHlZ9JQJXSuDDloblZPcWQVN62inyYoTQuSmY3KrgefME2Sv3Kn2MxHvbGQHRf8Iw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "sax": "^1.2.4" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "electron-publish": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-21.2.0.tgz", - "integrity": "sha512-mWavuoWJe87iaeKd0I24dNWIaR+0yRzshjNVqGyK019H766fsPWl3caQJnVKFaEyrZRP397v4JZVG0e7s16AxA==", - "dev": true, - "requires": { - "bluebird-lst": "^1.0.9", - "builder-util": "~21.2.0", - "builder-util-runtime": "8.3.0", - "chalk": "^2.4.2", - "fs-extra": "^8.1.0", - "lazy-val": "^1.0.4", - "mime": "^2.4.4" - } - }, "iconv-lite": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.0.tgz", @@ -2548,27 +2417,6 @@ "requires": { "safer-buffer": ">= 2.1.2 < 3" } - }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true - }, - "stat-mode": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.3.0.tgz", - "integrity": "sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -2748,32 +2596,26 @@ } }, "electron-builder": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.1.0.tgz", - "integrity": "sha512-uu2W9BLG38D0i2PG6dHupmOYc+q/TRL+Ztf8xitqK+2Quq33PFbeN0ipfySuVEDg4I6whDRBOgxBEWwnUYqZZQ==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-21.2.0.tgz", + "integrity": "sha512-x8EXrqFbAb2L3N22YlGar3dGh8vwptbB3ovo3OF6K7NTpcsmM2zEoJv7GhFyX73rNzSG2HaWpXwGAtOp2JWiEw==", "dev": true, "requires": { - "app-builder-lib": "22.1.0", + "app-builder-lib": "21.2.0", "bluebird-lst": "^1.0.9", - "builder-util": "22.1.0", - "builder-util-runtime": "8.4.0", + "builder-util": "21.2.0", + "builder-util-runtime": "8.3.0", "chalk": "^2.4.2", "dmg-builder": "21.2.0", "fs-extra": "^8.1.0", "is-ci": "^2.0.0", "lazy-val": "^1.0.4", "read-config-file": "5.0.0", - "sanitize-filename": "^1.6.3", + "sanitize-filename": "^1.6.2", "update-notifier": "^3.0.1", - "yargs": "^14.0.0" + "yargs": "^13.3.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -2783,12 +2625,6 @@ "color-convert": "^1.9.0" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -2800,41 +2636,6 @@ "supports-color": "^5.3.0" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -2843,35 +2644,6 @@ "requires": { "has-flag": "^3.0.0" } - }, - "yargs": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.0.tgz", - "integrity": "sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^15.0.0" - } - }, - "yargs-parser": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, @@ -3191,14 +2963,14 @@ } }, "electron-publish": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.1.0.tgz", - "integrity": "sha512-jHjMCaL2dFU+iOq8wW568F59+DW1jFJGT3vc2xqm9iXyZ8gWlQ+NVve4bq9HZG7m4iNqWbGw9StmZcOzmIBxMQ==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-21.2.0.tgz", + "integrity": "sha512-mWavuoWJe87iaeKd0I24dNWIaR+0yRzshjNVqGyK019H766fsPWl3caQJnVKFaEyrZRP397v4JZVG0e7s16AxA==", "dev": true, "requires": { "bluebird-lst": "^1.0.9", - "builder-util": "~22.1.0", - "builder-util-runtime": "8.4.0", + "builder-util": "~21.2.0", + "builder-util-runtime": "8.3.0", "chalk": "^2.4.2", "fs-extra": "^8.1.0", "lazy-val": "^1.0.4", @@ -5449,9 +5221,9 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isbinaryfile": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.2.tgz", - "integrity": "sha512-C3FSxJdNrEr2F4z6uFtNzECDM5hXk+46fxaa+cwBe5/XrWSmzdG8DDgyjfX6/NRdBB21q2JXuRAzPCUs+fclnQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.3.tgz", + "integrity": "sha512-GQ9Gjhp3AsEbo8/L/pA+MYl/c4hRm5O/+uCkF4LMx1a556Wh4/d75H13qu9LldmhU4yKnlfNKBmEcCaze3b2Gw==", "dev": true }, "isexe": { @@ -9600,9 +9372,9 @@ "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" }, "temp-file": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.4.tgz", - "integrity": "sha512-qSZ5W5q54iyGnP8cNl49RE0jTJc5CrzNocux5APD5yIxcgonoMuMSbsZfaZy8rTGCYo0Xz6ySVv3adagZ8gffg==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.6.tgz", + "integrity": "sha512-7TPldi8QJqRlPIF/Y33mVvo8+xDfi6+aVTCK4CrCaLqCoaOnVtf3SA4hCU0T5nhYDdOC7erw7o2uWfvijlk4Ug==", "dev": true, "requires": { "async-exit-hook": "^2.0.1", diff --git a/package.json b/package.json index d334f6bc2..12d1b1e88 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ }, "devDependencies": { "electron": "6.0.12", - "electron-builder": "22.1.0", + "electron-builder": "21.2.0", "electron-packager": "14.1.1", "electron-rebuild": "1.8.8", "jsdoc": "3.6.3", diff --git a/src/services/image.js b/src/services/image.js index f7b892b67..96fa6cca7 100644 --- a/src/services/image.js +++ b/src/services/image.js @@ -75,14 +75,17 @@ async function saveImage(parentNoteId, uploadBuffer, originalName, shrinkImageSw } async function shrinkImage(buffer, originalName) { - const resizedImage = await resize(buffer); + // we do resizing with max (100) quality which will be trimmed during optimization step next + const resizedImage = await resize(buffer, 100); let finalImageBuffer; + const jpegQuality = await optionService.getOptionInt('imageJpegQuality'); + try { - finalImageBuffer = await optimize(resizedImage); + finalImageBuffer = await optimize(resizedImage, jpegQuality); } catch (e) { log.error("Failed to optimize image '" + originalName + "'\nStack: " + e.stack); - finalImageBuffer = resizedImage; + finalImageBuffer = await resize(buffer, jpegQuality); } // if resizing & shrinking did not help with size then save the original @@ -94,7 +97,7 @@ async function shrinkImage(buffer, originalName) { return finalImageBuffer; } -async function resize(buffer) { +async function resize(buffer, quality) { const imageMaxWidthHeight = await optionService.getOptionInt('imageMaxWidthHeight'); const image = await jimp.read(buffer); @@ -106,8 +109,7 @@ async function resize(buffer) { image.resize(jimp.AUTO, imageMaxWidthHeight); } - // we do resizing with max quality which will be trimmed during optimization step next - image.quality(100); + image.quality(quality); // when converting PNG to JPG we lose alpha channel, this is replaced by white to match Trilium white background image.background(0xFFFFFFFF); @@ -115,11 +117,11 @@ async function resize(buffer) { return image.getBufferAsync(jimp.MIME_JPEG); } -async function optimize(buffer) { +async function optimize(buffer, jpegQuality) { return await imagemin.buffer(buffer, { plugins: [ imageminMozJpeg({ - quality: await optionService.getOptionInt('imageJpegQuality') + quality: jpegQuality }), imageminPngQuant({ quality: [0, 0.7] From acb76e06306c26caa08ed6a19e14bf6a4a947d22 Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Jan 2020 21:24:39 +0100 Subject: [PATCH 09/12] added notification to empty book notes otherwise they look suspiciously empty --- src/public/javascripts/services/note_detail_book.js | 10 +++++++++- src/public/stylesheets/style.css | 8 +++++++- src/services/task_context.js | 6 ++++++ src/views/details/book.ejs | 4 ++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/public/javascripts/services/note_detail_book.js b/src/public/javascripts/services/note_detail_book.js index 6fad28878..2a6d9bea8 100644 --- a/src/public/javascripts/services/note_detail_book.js +++ b/src/public/javascripts/services/note_detail_book.js @@ -43,6 +43,7 @@ class NoteDetailBook { this.$zoomInButton = this.$component.find('.book-zoom-in-button'); this.$zoomOutButton = this.$component.find('.book-zoom-out-button'); this.$expandChildrenButton = this.$component.find('.expand-children-button'); + this.$help = this.$component.find('.note-detail-book-help'); this.$zoomInButton.on('click', () => this.setZoom(this.zoomLevel - 1)); this.$zoomOutButton.on('click', () => this.setZoom(this.zoomLevel + 1)); @@ -105,6 +106,7 @@ class NoteDetailBook { async render() { this.$content.empty(); + this.$help.hide(); if (this.isAutoBook()) { const $addTextLink = $('here').on('click', () => { @@ -124,7 +126,9 @@ class NoteDetailBook { } async renderIntoElement(note, $container) { - for (const childNote of await note.getChildNotes()) { + const childNotes = await note.getChildNotes(); + + for (const childNote of childNotes) { const childNotePath = this.ctx.notePath + '/' + childNote.noteId; const {type, renderedContent} = await noteContentRenderer.getRenderedContent(childNote); @@ -152,6 +156,10 @@ class NoteDetailBook { $container.append($card); } + + if (childNotes.length === 0) { + this.$help.show(); + } } /** @return {boolean} true if this is "auto book" activated (empty text note) and not explicit book note */ diff --git a/src/public/stylesheets/style.css b/src/public/stylesheets/style.css index 9ba8c9505..3deaeebf6 100644 --- a/src/public/stylesheets/style.css +++ b/src/public/stylesheets/style.css @@ -594,7 +594,7 @@ table.promoted-attributes-in-tooltip td, table.promoted-attributes-in-tooltip th padding: 10px; } -.note-detail-render-help { +.note-detail-render-help, .note-detail-book-help { margin: 50px; padding: 20px; } @@ -971,4 +971,10 @@ a.external:not(.no-arrow):after, a[href^="http://"]:not(.no-arrow):after, a[href .include-note.ck-placeholder::before { /* remove placeholder in otherwise empty note */ content: '' !important; +} + +.alert-warning { + color: var(--main-text-color) !important; + background-color: var(--accented-background-color) !important; + border-color: var(--main-border-color) !important; } \ No newline at end of file diff --git a/src/services/task_context.js b/src/services/task_context.js index 4731fed44..db9474d83 100644 --- a/src/services/task_context.js +++ b/src/services/task_context.js @@ -14,6 +14,12 @@ class TaskContext { // progressCount is meant to represent just some progress - to indicate the task is not stuck this.progressCount = 0; this.lastSentCountTs = Date.now(); + + // just the fact this has been initialized is a progress which should be sent to clients + // this is esp. important when importing big files/images which take long time to upload/process + // which means that first "real" increaseProgressCount() will be called quite late and user is without + // feedback until then + this.increaseProgressCount(); } /** @return {TaskContext} */ diff --git a/src/views/details/book.ejs b/src/views/details/book.ejs index 2b843bacd..60085228f 100644 --- a/src/views/details/book.ejs +++ b/src/views/details/book.ejs @@ -13,5 +13,9 @@ title="Zoom Out">
+
+ This note of type Book doesn't have any child notes so there's nothing to display. See wiki for details. +
+
\ No newline at end of file From 2150619d62ea35b0b6177d33325b481fb94c4f67 Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Jan 2020 21:53:49 +0100 Subject: [PATCH 10/12] activateNewNote does not reload whole tree anymore --- docs/backend_api/entities_note.js.html | 2 +- docs/backend_api/services_backend_script_api.js.html | 2 +- docs/frontend_api/FrontendScriptApi.html | 2 +- docs/frontend_api/services_frontend_script_api.js.html | 4 ++-- src/public/javascripts/services/frontend_script_api.js | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/backend_api/entities_note.js.html b/docs/backend_api/entities_note.js.html index 9b6acb3a0..491a86100 100644 --- a/docs/backend_api/entities_note.js.html +++ b/docs/backend_api/entities_note.js.html @@ -553,7 +553,7 @@ class Note extends Entity { const attributes = await this.loadOwnedAttributesToCache(); for (const attribute of attributes) { - if (attribute.type === type && (value === undefined || value === attribute.value)) { + if (attribute.type === type && attribute.name === name && (value === undefined || value === attribute.value)) { attribute.isDeleted = true; await attribute.save(); diff --git a/docs/backend_api/services_backend_script_api.js.html b/docs/backend_api/services_backend_script_api.js.html index 8c76aa124..673fb043a 100644 --- a/docs/backend_api/services_backend_script_api.js.html +++ b/docs/backend_api/services_backend_script_api.js.html @@ -232,7 +232,7 @@ function BackendScriptApi(currentNote, apiParams) { this.createDataNote = async (parentNoteId, title, content = {}) => await noteService.createNewNote({ parentNoteId, title, - content: JSON.stringify(content), + content: JSON.stringify(content, null, '\t'), type: 'code', mime: 'application/json' }); diff --git a/docs/frontend_api/FrontendScriptApi.html b/docs/frontend_api/FrontendScriptApi.html index bcb2edccb..4197e7611 100644 --- a/docs/frontend_api/FrontendScriptApi.html +++ b/docs/frontend_api/FrontendScriptApi.html @@ -807,7 +807,7 @@
- Activates newly created note. Compared to this.activateNote() also refreshes tree. + Activates newly created note. Compared to this.activateNote() also makes sure that frontend has been fully synced.
diff --git a/docs/frontend_api/services_frontend_script_api.js.html b/docs/frontend_api/services_frontend_script_api.js.html index d45ca3336..460941ea9 100644 --- a/docs/frontend_api/services_frontend_script_api.js.html +++ b/docs/frontend_api/services_frontend_script_api.js.html @@ -86,13 +86,13 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte }; /** - * Activates newly created note. Compared to this.activateNote() also refreshes tree. + * Activates newly created note. Compared to this.activateNote() also makes sure that frontend has been fully synced. * * @param {string} notePath (or noteId) * @return {Promise<void>} */ this.activateNewNote = async notePath => { - await treeService.reload(); + await ws.waitForMaxKnownSyncId(); await treeService.activateNote(notePath, noteDetailService.focusAndSelectTitle); }; diff --git a/src/public/javascripts/services/frontend_script_api.js b/src/public/javascripts/services/frontend_script_api.js index 06bc5e839..a141c8f19 100644 --- a/src/public/javascripts/services/frontend_script_api.js +++ b/src/public/javascripts/services/frontend_script_api.js @@ -58,13 +58,13 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte }; /** - * Activates newly created note. Compared to this.activateNote() also refreshes tree. + * Activates newly created note. Compared to this.activateNote() also makes sure that frontend has been fully synced. * * @param {string} notePath (or noteId) * @return {Promise} */ this.activateNewNote = async notePath => { - await treeService.reload(); + await ws.waitForMaxKnownSyncId(); await treeService.activateNote(notePath, noteDetailService.focusAndSelectTitle); }; From 3b8b4da149fbc1b17d09253693823f5135a55f2e Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Jan 2020 21:59:28 +0100 Subject: [PATCH 11/12] task context progress fixes --- src/services/task_context.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/services/task_context.js b/src/services/task_context.js index db9474d83..9c4c354b0 100644 --- a/src/services/task_context.js +++ b/src/services/task_context.js @@ -12,8 +12,8 @@ class TaskContext { this.data = data; // progressCount is meant to represent just some progress - to indicate the task is not stuck - this.progressCount = 0; - this.lastSentCountTs = Date.now(); + this.progressCount = -1; // we're incrementing immediatelly + this.lastSentCountTs = 0; // 0 will guarantee first message will be sent // just the fact this has been initialized is a progress which should be sent to clients // this is esp. important when importing big files/images which take long time to upload/process From f0dfe7d5527c60cd2867963e2aa607e9a3e3ead0 Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 Jan 2020 22:01:20 +0100 Subject: [PATCH 12/12] release 0.39.4 --- package.json | 2 +- src/services/build.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 12d1b1e88..fe109a1c8 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "trilium", "productName": "Trilium Notes", "description": "Trilium Notes", - "version": "0.39.3", + "version": "0.39.4", "license": "AGPL-3.0-only", "main": "electron.js", "bin": { diff --git a/src/services/build.js b/src/services/build.js index 79af4b055..a7fd163b3 100644 --- a/src/services/build.js +++ b/src/services/build.js @@ -1 +1 @@ -module.exports = { buildDate:"2020-01-02T10:43:41+01:00", buildRevision: "cb79f2c7eb51904537307f4ffc1135a7383da29f" }; +module.exports = { buildDate:"2020-01-04T22:01:20+01:00", buildRevision: "3b8b4da149fbc1b17d09253693823f5135a55f2e" };
Note ID:Note ID:
Created:Created:
Modified:Modified:
Type: