From 18e63d7d275922e11f004ccda08823ddb9adc9cf Mon Sep 17 00:00:00 2001 From: leoho2fi Date: Fri, 26 Apr 2024 15:47:58 +0800 Subject: [PATCH] report style update --- public/temp/AR04_Cost and Expense Report.xlsx | Bin 12817 -> 12852 bytes .../temp/AR05_Project Completion Report.xlsx | Bin 12445 -> 12469 bytes ...port with Outstanding Un-billed Hours.xlsx | Bin 12670 -> 12694 bytes .../Report/ReportSearchBox/SearchBox.tsx | 22 ++++++++-------- .../Report/ReportSearchBox2/SearchBox2.tsx | 22 ++++++++-------- .../Report/ReportSearchBox3/SearchBox3.tsx | 24 +++++++++--------- .../Report/ReportSearchBox4/SearchBox4.tsx | 22 ++++++++-------- .../Report/ReportSearchBox5/SearchBox5.tsx | 24 +++++++++--------- .../Report/ReportSearchBox6/SearchBox6.tsx | 22 ++++++++-------- 9 files changed, 68 insertions(+), 68 deletions(-) diff --git a/public/temp/AR04_Cost and Expense Report.xlsx b/public/temp/AR04_Cost and Expense Report.xlsx index a414e1afcda8192ce80e8ffcf809f49378b80ceb..3ce7f5955778e1d59746c115ddac596386b13d8d 100644 GIT binary patch delta 4021 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 delta 3965 zcmY+HXEYlO)W;LVrl?taZ&7=+NTX;pHnlfJjM}Lc)Tljz7O^WzRc*ERh#Iw?nnls7 zU9%eD?fZOqpYz^N_niO#+%NZ>`@8=}=M3lCMN$;;<%XLdF#s??4glN&002l&aIlXb z!qLYEA%*nvtTy%XDN~}mj+iEp4Fo5`BS~fhn7#&NFPdhLH-#F#83k6DgT@xHkD3;5 zBAgg9gBnz}+Ts~r?63clm7S!1Rn#2l(qX{M=7SaL(!fIUF)Y>3^YTzqG6=^zMj2Qh z6qC>PY*_j9RlphE=M}qD;S-EHJK*z3rG?mBT(jg!=0BRYM>z_$4c|+JD6!vgIq!?# zqzjf;)p(NeuGUZ>#yB5{O!Thp%71e2JE_5@EJl%A(t}Q2aF)u&bC=4`r-iSb zoSm+uNS0<;G4Y#=(OuF7{lwzysPt@9&vBYPD?#QCsr#8F1uv3Y^MrPp<7CHgTr8v; zT?1J>m#qxMip{)zY2x0?D2e^fiVcINQLSZfFTQnR+Ea1*^6N2vhv$bX@b(A+Rc&M< zr#bank@8J*#r3=Tow|+87cWzk3GGhN5B4KtdN^4hab;$A@K?#H7{bSutant%KxO`LB%@z@QR2>S`cw>}tf%Sh&`;OroAHQTw)fVM@lU2(qU!+}|+) zRm;MrP<=Ry46;5@x4EBI%V9W?KgGul1yp;WPTl`Cc)!-$?jqTH^DZI8!;{<++qTdvHCYhCb?^6LuDriE*Y)?pUCuK$;JVUm?t~ere8q|LxcI{D`QUatDxYBva<waTwCjkIH(V*+7rBK`yFAeI5EH9)>npO%^HX=<`Cp?Xd zXRh%zaB`h&x_2bj8^1CB>Z!6_OS<$OGF~66{9^i9LDi*IYjY~vlln<|aYRm!OzBF* za>|Hhx4n-qXOI=ANej}h#P)9=rz-sOPnn2JK)=A(nO3#}$@lHoC-~#|DQUh&mk_%f zxZFn;_w&&ez@!Oo*r<?`T6J^S4V?ZqiY3he`+PSJkvheO8 z71#dqLv9zmThd+xKIowJC{{MC=}T1Cez?BUD{UzvpWE0yehfEiDF{EgTF>2f4P#I) z9Z_i-inokmCXa!tQ^yp=a=RWhj4XQx(4sd|H{CL(`LZACF=sGWN}{ICH$53%(K@Nn z!+Q0c*QaM(OHXUy!J!T<;z>y8au*cHTd4r%aPh&_5~k{vK?Qh>x*lt(U^CU zA3OY~ZOhnps|!NaZXLT1j#Tt|s8v_e>5#}r4*?|X8jl20K#>kH%_6Wjo36NsbK0tl%q+(sDIvf!;PJyF-KumB;VC=EZYMTMS4Gl zk|x2O30dX`iOPKf7Ln%61A(~apF?s(vuqw8YwhX^{@^pYm}D-Y3b`cc2sS)iz65{& z%h{WozpTBv(bS)U5ksi2veR$X-hVjg7s?Zks*C2Cc#$gj9I+ZCfPfkw{z zBVl)VUsBybf^Df@g1GaY`>x@E;Yr2rdElNm5?7rkhmJz=vU#GkZ>ZWJlMJdaW`5jP zSg6xThz%%;xOWXKIll}3vdD@1x|yJ7NM4#SU;4ZyQu%mo@qw)?I_$+kT=#psQtm*Z z`U94KuT~@d04b#1QQ)u2@455XZbYVdmZ)zX_W^PKaw>dtsBZ_jbJ?>F6-*JapNMg7}bhiqyxT<0aAt)xrYKMia#Oz5n=HY@gOefBAhiGfZ7T

PuWVq4HZpitf85MYMG^Q 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 delta 3713 zcmZ9PXE+-Q7srDnRu#2UyF|=}+ABuQn6+tZlOi@XszmKoLC`9#t!i(o_Et4ZX`*JS zmNrBwYP`MoKF@vM=RF_JhciB%^Zd^LG&??btiyvbHpe9XJ#qkG91H-^0|0;!Pw`+M zf3%a24;migw}kI4$p78a5zR7a%KQbG_;PVMD8ib$UVse= zh*9-_JPEe%&Z{YHx7Q8D0t#lSCsJNH&CiLggXRPq)&w-OO<87pOsntO3LBX{_w!C# zJV1#1(~9VIXeG>rNqqJfhVbZHvUNz`VHgbXi0qosEWOhd)k#@X@U5$c6P8TF%gV>L zSx+`t?yxslk(mVd*A3IS*<`YtxT3EN!Oc@LVD8N595YP{e72yL9hM2W{Kd4gipOo6H*}Bsfec>HF_RLy4m2Wmf~}pJ2DH!22qLA zEHoEpw1cZVk+Hm7IA1C;4E0^zFnzDEixyzdt-1)&3VP!FMNWewtc99zc%T31HqYl){ifF}7*~;b>LA4uo>&N? zh2u;G`r5mwl~3j>WMn%k2#=`S@yDko3F6 z8PhAbX_|`y6R1~^v_Io*YkB0CN|+SYYl%vo1?x)14m-wuKU|a*=&PMt4u&s^$z*?E z3BgIOIVP?(EUv$HVeM;U0TsPYgqTQi`6k!zEf?&kAY35@bK@^+DROFSffi~A2mr9a zNnN^z`Fo|~h=Si$HM<1up{p7(6;p-ZQ57G8-pEc+TQ{%2lLg6s?pP1i)?6E2cYP1ZGCN@H@Y5O*wZ z-@N3_OhCHrP#3A+N)c)UBuc7yZ6|O|=p@R=PVd$Ty}P?U&9PU6r5{JxY3TL$~X5@UNJ!(Gl{9M9J)p^ z>=V8OO?Ju&et*~%SWjZ3(61;cQ*wNwceZF7~Xeu(>%vUAwS32T8#B&KuSF2$!4 zvTl)!~PnXcq-tBW(4Pjr%xs99g!SW4!AEcadf0qDg)E;HLCHA;dZuJ+~wKz)=D zSa+ZgL8ZTjd&9Vn`LPu7(tr(B787Z_xi9|kc`AhshS>hZ-Oex_q1qjNucnFSq;_+< zzg52|>bIy>{25&DqYg+_(HlQDT>JH;B}|P_ zH%(2SO3&3v(GkJUX2#UT`teY9VYTdY$LG?wUc|s*S7h)QKKXP3VSA^~8A$*XjcXB$ zy>zpU_cJOp0|qmoewjZ~3n2CQY-wur@?rCqrHKgN<7s zLZPU*JS$m^{&6__{)iXsN@8>nqfmcH76sN^igBF(z`#XS+nRC3{&fpg>3APch)6RK ztgZ|bq4vN4Ul~f!ySC-l17*mU*E@RqQ91EIFxg&Of%ZyR35T+0cBrlc z0|Py^2e2#N>v)b*DkdjUCxw4tkiVHU@OCtpq#6@bl6za z^?@?k49Js0*{6lFx+qWCl=B%CqtMBa0r{I=z8IEfbxCLbq2DCrYQl?}u=g1dta)ag zO;M}C;kCR+C6#&(~)mlUhPcnOtS_Io^?I5}}!)TU9O+RbEmx8!Od$B&q<)t}yn zl>g3K6HD~yQ)3vg-&mk5FDokgOwN}OAw+cusu_hTq`Vnk!kgxIah$%#b~|E%P%Rw= zfo+41BQ=|%uj0uoNTrIsANtFzi8N2mH$E@hWxcw0^YMYn-LaDRp?>nbbJ$O{4%ZXy z(R6oZgTj6+uWiW=*s~gSa;QQnSifywkf$B)e!^Bs+CU=Wz^)}%t=YDjxJLzN(f-2F zOtTJ~v$vims-alyLtimQWHdXTmtLa)How^l+IH*Tm|EmHbyWDmZBnTU_?wu?j00ed z&<%A5I1m7!U<3f@{?P>ifuWwR0e`820qgNpf-FN9+m;elJNm#GiRQ?N7HWwExZetF zRjX~%{HQ53Q?T_ok54TXabV6I9)FmoK_6bg=e1mVUeUAgf;*5li1pheafLPJ}k6YWdMS3+tUC*4w z=ooq{7V`98L-0Xa<9>-1v|T-yP&9BoXrU-7sF?w>k%c!mB?RP6!5JM<{EpVBcq-xa zkjA^#SH;@(uR`x zd)YBV`}6y`7AQDeIgq@^(nxOyrKRfxv|kZ)ne`~Hd^e}Ke8s?0d+3S5(53*u0uJeN zJiV?z$E?|AE0a_aJVaL{vG(jx=&k%lUmAnrZXUN|`M`LRad*V&mq~1X#P8$oWsC`$ z*8EDl$ELDOfyNRXj-dvs(cx(fDBSgP>@I{{KXNA0SkFfiV~y!no@KU4+O4+^1$Suf z)b!%zT0L_`=mRGnPIVOz^1vVXq&=e|?h+!Dn(h#j-;V}e%G9Cfw=$O69|=L{itut5 z28OdLYlT4|T4~ZyR6Th6T3$r->4#m*+AxO$gMzGW4CoGrXSFZ0;p>rW`9Uvl zxqHWHGY-ZA*Fibsb5#D--i zoTYxs3}}yfb5%?F+QbQWn$AQBd9T*eMqeLm$`n`UTV(j=5^U&eN${+b<*IXBhOr$I zm!y*z1f(pTFyNOQv`ERUe95gfSn({V4aMO?5lUOV9Zj1WkDeWjZtLu9BYbjz+!ou? zbH&4^xg91{s&vrkKvg1V2wP7cE$MQkFjj>9*>A){Bi&!SYk91#oQg}EOZDoiW{}AF zZL{FIVmt9MVb)jh9%deH{Yj}vc~x}QdeF;UL8TUq{ReU52`^qf+-0I<8MS2*v6U`= zBFF!bt2_D{cVOv`ehBtM1n`Y4pfIEEVD3#=G#Ryz;mGYvPkhKAkd&4C?&E8eEfDEp6|V2yHp}M} z@IIn6N!jYjbX#_t=cmh6?iyqNEr4xbu!`?t9LA*^SUVl*rr_D~`Ee|BbH+L8Bh^1EIZO3*8y-W-GoR z`x`4YoDXP$g|2s<8^weK$uRc%{SwTB%b;$J(Xb~?zt=B$QHu1((}6^je6GDFBpI4! zyz^dOYWn06zvlcy;aBivC)9@1Qd7 z9_A7!AP;-$+(s5>VXP@wvVv&9=Qe<-QVW69Z*4dq^PR5WcPKe)EVKX{*|a%t1S<}5 zHGqf%OW}1|K2_Tf%&`QB3MOWGzVb=XT-~klYWV^&#yo$Dcka0F*PjCEX~y^TP@nM2 zp=Ob7N+{8(-gUDmjIQX5SuoL;mz*aysCV)$;pqIDeUTV!S{mAzX0Y#ORLsGS!=iSz zFih2=BkzweiF;5eP9im6%`ZT)i;H10vT8j1n5)6(A7odHSW-~``^w=i!Hvki;qJh% zbNnlO82|vtAB_LkxNyaAEiyFjD;&o0|FHjWl{ijBT#+mR=PIsFKEj1N;CnLWOUd;{RLJ6SDH8l($LoJ3 F{sS-T%v1mX diff --git a/public/temp/AR06_Project Completion Report with Outstanding Un-billed Hours.xlsx b/public/temp/AR06_Project Completion Report with Outstanding Un-billed Hours.xlsx index 419bd2e45ac75ed8a2d1048027ae33e96fb3c124..e6f1f3511e19867ed6ad3ebd7ac484dbda820132 100644 GIT binary patch delta 3738 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 E06F&;FaQ7m delta 3723 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 jKMnhHU^@T-0FM8Q_{V<2!4x#({ const formattedDate = date.replace(/-/g, '/'); // Change format to YYYY/MM/DD XLSX.utils.sheet_add_aoa(worksheet, [[formattedDate]], { origin: cellAddress }); - // Calculate the maximum length of content in each column and set column width - const colWidths: number[] = []; - - const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1, defval: "", blankrows: true }) as (string | number)[][]; - jsonData.forEach((row: (string | number)[]) => { - row.forEach((cell: string | number, index: number) => { - const valueLength = cell.toString().length; - colWidths[index] = Math.max(colWidths[index] || 0, valueLength); - }); - }); - // Style for cell A1: Font size 16 and bold if (worksheet['A1']) { worksheet['A1'].s = { @@ -195,6 +184,17 @@ function SearchBox({ lastRowOfFirstTable++; } + // Calculate the maximum length of content in each column and set column width + const colWidths: number[] = []; + + const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1, defval: "", blankrows: true }) as (string | number)[][]; + jsonData.forEach((row: (string | number)[]) => { + row.forEach((cell: string | number, index: number) => { + const valueLength = cell.toString().length; + colWidths[index] = Math.max(colWidths[index] || 0, valueLength); + }); + }); + // Apply calculated widths to each column, skipping column A worksheet['!cols'] = colWidths.map((width, index) => { if (index === 0) { diff --git a/src/components/Report/ReportSearchBox2/SearchBox2.tsx b/src/components/Report/ReportSearchBox2/SearchBox2.tsx index 7e3d6e9..7c524af 100644 --- a/src/components/Report/ReportSearchBox2/SearchBox2.tsx +++ b/src/components/Report/ReportSearchBox2/SearchBox2.tsx @@ -140,17 +140,6 @@ function SearchBox({ const formattedDate = date.replace(/-/g, '/'); // Change format to YYYY/MM/DD XLSX.utils.sheet_add_aoa(worksheet, [[formattedDate]], { origin: cellAddress }); - // Calculate the maximum length of content in each column and set column width - const colWidths: number[] = []; - - const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1, defval: "", blankrows: true }) as (string | number)[][]; - jsonData.forEach((row: (string | number)[]) => { - row.forEach((cell: string | number, index: number) => { - const valueLength = cell.toString().length; - colWidths[index] = Math.max(colWidths[index] || 0, valueLength); - }); - }); - // Style for cell A1: Font size 16 and bold if (worksheet['A1']) { worksheet['A1'].s = { @@ -195,6 +184,17 @@ function SearchBox({ lastRowOfFirstTable++; } + // Calculate the maximum length of content in each column and set column width + const colWidths: number[] = []; + + const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1, defval: "", blankrows: true }) as (string | number)[][]; + jsonData.forEach((row: (string | number)[]) => { + row.forEach((cell: string | number, index: number) => { + const valueLength = cell.toString().length; + colWidths[index] = Math.max(colWidths[index] || 0, valueLength); + }); + }); + // Apply calculated widths to each column, skipping column A worksheet['!cols'] = colWidths.map((width, index) => { if (index === 0) { diff --git a/src/components/Report/ReportSearchBox3/SearchBox3.tsx b/src/components/Report/ReportSearchBox3/SearchBox3.tsx index b4a252d..aafa7d0 100644 --- a/src/components/Report/ReportSearchBox3/SearchBox3.tsx +++ b/src/components/Report/ReportSearchBox3/SearchBox3.tsx @@ -139,18 +139,7 @@ function SearchBox({ const date = new Date().toISOString().split('T')[0]; // Format YYYY-MM-DD const formattedDate = date.replace(/-/g, '/'); // Change format to YYYY/MM/DD XLSX.utils.sheet_add_aoa(worksheet, [[formattedDate]], { origin: cellAddress }); - - // Calculate the maximum length of content in each column and set column width - const colWidths: number[] = []; - - const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1, defval: "", blankrows: true }) as (string | number)[][]; - jsonData.forEach((row: (string | number)[]) => { - row.forEach((cell: string | number, index: number) => { - const valueLength = cell.toString().length; - colWidths[index] = Math.max(colWidths[index] || 0, valueLength); - }); - }); - + // Style for cell A1: Font size 16 and bold if (worksheet['A1']) { worksheet['A1'].s = { @@ -195,6 +184,17 @@ function SearchBox({ lastRowOfFirstTable++; } + // Calculate the maximum length of content in each column and set column width + const colWidths: number[] = []; + + const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1, defval: "", blankrows: true }) as (string | number)[][]; + jsonData.forEach((row: (string | number)[]) => { + row.forEach((cell: string | number, index: number) => { + const valueLength = cell.toString().length; + colWidths[index] = Math.max(colWidths[index] || 0, valueLength); + }); + }); + // Apply calculated widths to each column, skipping column A worksheet['!cols'] = colWidths.map((width, index) => { if (index === 0) { diff --git a/src/components/Report/ReportSearchBox4/SearchBox4.tsx b/src/components/Report/ReportSearchBox4/SearchBox4.tsx index 1ac6e7e..bc18492 100644 --- a/src/components/Report/ReportSearchBox4/SearchBox4.tsx +++ b/src/components/Report/ReportSearchBox4/SearchBox4.tsx @@ -140,17 +140,6 @@ function SearchBox({ const formattedDate = date.replace(/-/g, '/'); // Change format to YYYY/MM/DD XLSX.utils.sheet_add_aoa(worksheet, [[formattedDate]], { origin: cellAddress }); - // Calculate the maximum length of content in each column and set column width - const colWidths: number[] = []; - - const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1, defval: "", blankrows: true }) as (string | number)[][]; - jsonData.forEach((row: (string | number)[]) => { - row.forEach((cell: string | number, index: number) => { - const valueLength = cell.toString().length; - colWidths[index] = Math.max(colWidths[index] || 0, valueLength); - }); - }); - // Style for cell A1: Font size 16 and bold if (worksheet['A1']) { worksheet['A1'].s = { @@ -195,6 +184,17 @@ function SearchBox({ lastRowOfFirstTable++; } + // Calculate the maximum length of content in each column and set column width + const colWidths: number[] = []; + + const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1, defval: "", blankrows: true }) as (string | number)[][]; + jsonData.forEach((row: (string | number)[]) => { + row.forEach((cell: string | number, index: number) => { + const valueLength = cell.toString().length; + colWidths[index] = Math.max(colWidths[index] || 0, valueLength); + }); + }); + // Apply calculated widths to each column, skipping column A worksheet['!cols'] = colWidths.map((width, index) => { if (index === 0) { diff --git a/src/components/Report/ReportSearchBox5/SearchBox5.tsx b/src/components/Report/ReportSearchBox5/SearchBox5.tsx index 2b0b7db..c28a0a3 100644 --- a/src/components/Report/ReportSearchBox5/SearchBox5.tsx +++ b/src/components/Report/ReportSearchBox5/SearchBox5.tsx @@ -139,18 +139,7 @@ function SearchBox({ const date = new Date().toISOString().split('T')[0]; // Format YYYY-MM-DD const formattedDate = date.replace(/-/g, '/'); // Change format to YYYY/MM/DD XLSX.utils.sheet_add_aoa(worksheet, [[formattedDate]], { origin: cellAddress }); - - // Calculate the maximum length of content in each column and set column width - const colWidths: number[] = []; - - const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1, defval: "", blankrows: true }) as (string | number)[][]; - jsonData.forEach((row: (string | number)[]) => { - row.forEach((cell: string | number, index: number) => { - const valueLength = cell.toString().length; - colWidths[index] = Math.max(colWidths[index] || 0, valueLength); - }); - }); - + // Style for cell A1: Font size 16 and bold if (worksheet['A1']) { worksheet['A1'].s = { @@ -195,6 +184,17 @@ function SearchBox({ lastRowOfFirstTable++; } + // Calculate the maximum length of content in each column and set column width + const colWidths: number[] = []; + + const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1, defval: "", blankrows: true }) as (string | number)[][]; + jsonData.forEach((row: (string | number)[]) => { + row.forEach((cell: string | number, index: number) => { + const valueLength = cell.toString().length; + colWidths[index] = Math.max(colWidths[index] || 0, valueLength); + }); + }); + // Apply calculated widths to each column, skipping column A worksheet['!cols'] = colWidths.map((width, index) => { if (index === 0) { diff --git a/src/components/Report/ReportSearchBox6/SearchBox6.tsx b/src/components/Report/ReportSearchBox6/SearchBox6.tsx index 4e7c82d..322644f 100644 --- a/src/components/Report/ReportSearchBox6/SearchBox6.tsx +++ b/src/components/Report/ReportSearchBox6/SearchBox6.tsx @@ -140,17 +140,6 @@ function SearchBox({ const formattedDate = date.replace(/-/g, '/'); // Change format to YYYY/MM/DD XLSX.utils.sheet_add_aoa(worksheet, [[formattedDate]], { origin: cellAddress }); - // Calculate the maximum length of content in each column and set column width - const colWidths: number[] = []; - - const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1, defval: "", blankrows: true }) as (string | number)[][]; - jsonData.forEach((row: (string | number)[]) => { - row.forEach((cell: string | number, index: number) => { - const valueLength = cell.toString().length; - colWidths[index] = Math.max(colWidths[index] || 0, valueLength); - }); - }); - // Style for cell A1: Font size 16 and bold if (worksheet['A1']) { worksheet['A1'].s = { @@ -198,6 +187,17 @@ function SearchBox({ // Insert the first data form into the worksheet at the desired location XLSX.utils.sheet_add_aoa(worksheet, firstTableData, { origin: { c: 0, r: lastRowOfFirstTable } }); + // Calculate the maximum length of content in each column and set column width + const colWidths: number[] = []; + + const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1, defval: "", blankrows: true }) as (string | number)[][]; + jsonData.forEach((row: (string | number)[]) => { + row.forEach((cell: string | number, index: number) => { + const valueLength = cell.toString().length; + colWidths[index] = Math.max(colWidths[index] || 0, valueLength); + }); + }); + // Apply calculated widths to each column, skipping column A worksheet['!cols'] = colWidths.map((width, index) => { if (index === 0) {