diff --git a/app/pages/charts.vue b/app/pages/charts.vue index f8ed085..19de222 100644 --- a/app/pages/charts.vue +++ b/app/pages/charts.vue @@ -34,23 +34,23 @@ const isGlobalStats = computed(() => { }); const isRevenueStats = computed(() => { - return ["revenue"].includes( - projectType.value, - ); + return ["revenue"].includes(projectType.value); }); const isGroupData = computed(() => { - return time.value === 'current' && !isGlobalStats.value && !isRevenueStats.value; -}) + return ( + time.value === "current" && !isGlobalStats.value && !isRevenueStats.value + ); +}); const url = computed(() => { if (isGlobalStats.value) { return "/api/stats/time/global"; } - if (isRevenueStats.value) { - return "/api/stats/time/revenue"; - } + if (isRevenueStats.value) { + return "/api/stats/time/revenue"; + } return time.value === "current" ? "/api/stats/projects" diff --git a/bun.lockb b/bun.lockb index 3987696a5032b089d5368960a7535466a4fb32ad..d4c846708e8bdf4d8a25c74e4b616ed93b7fe6de 100755 GIT binary patch delta 4516 zcmbO|L1OL%i3xg&U*0ZVXQYv#Y1e7t#V5+Y?vRE=Q~GUR{o>wFJ1v6DWP3OI8%hbf zGcq#BGB7kKF)=a-GB7lhPo5~HE@;fi$RNVN&>+FW$iUCQ(2zU%q?CMOHY+0o4+BF( zQE72TA_D_MVnt?tF#`jGF&iU;00TpVDjOpM9|J>!3>zZ@Cj&!+Bs(Jm7f5$zZmMod z5(5`I#I(EY5Os;gm3hh8nI(y=5Oqr@drGU<&*Frb*2f94?E@D?^&KvVn{pW#7=#%Z z8a{F}GH^36G_>(Bg85}U5Pcau5cN?|dLu8y^n%Q^N(Kf727exizAAMFuzpt_i2Qv% zMh0F62Brq<$seV~4TS|D))izHC6=TXGvro*G&3+f6@X|j$w%j1vZJiLV7xdaxO~JR!C^JIP*&WtP6lFgTCr|w zMM+WO9~rPG8zkKrz){353^8lJEF{o!Q%f@PQ;HeRa6{}`FUQCr$H36gH~FHhIityB zPPuSJ9tDV6DJWg6!pI=Rz|c^VnOB)wk(&Hta-*ESrGYvmVTr0UGDtHpH2hU#WRPHB zXn3v$388apj0}i%bfE7BO^l+149Gz z`7&iR;$k-?UMp@DaDVV*gs0y86n z4_FSw%VB0@FkoP4V3}MPV9q&*nUTSQfuVtEa-oYkMV>5Zj;x>T60#i zFfuqWFf=euF0?o2+{psb$~M`s+?@9%3q&gm0|Nuguqv`LGB`}uO}FMO z2eH5weY7)Y+&=xK0HZzQtLd78jP{Jq(=!Db?OA)+7#Un9>pEL=USMNnumUSC%rj?H zo~|jxXwR51JyVF$o^v`oBZC{*5g!}PSzoh*^yKDQbLw+I9KbNS@Sr(k`t(d;Mtjcn z9E=P$V1o=J%^6=$e<{pp&!{+EQ-sl;GnA8&!4e!~hR)`U->0tx2_|tdGC0BnITv#w zDdGIb1qny)$si5Z(^rZz+B3FJe+i=gOxF}+wC9}3!^q$VvCrO|^EnU1FxJT*?aVnf zcp*{52Il4PGBUU_Ff{Ok3}fBR%gA6e8RU)cypT|3nr!G}&Z*AF$Y2MF=VCsX-#`iA4Id+e6C~=~%~|#M!RD>7;oygaBooLQ#?#X?B^m7*)u*qNWVGk3 z5MX3513R|xjs=GRBZCe^f4Vv62LXt^jFUHJnsZtSLKHHCk_BslAR~j_WL+O?&UJ!} z3|`=<*w}B*`9lz56(lJc2{AJ0f#nRH%sCUFJXWyFHw!T`gn;cbOfcsR5Qao3+vLJ9 zbH-`YSIRKjGhUwlQijo6x;O_MC+xj0{E)tuE%Ai$x%T#Xk9? zw>jr!5lDcrg3>uFzbHuS+dDQKqVQCE(42F!D9mSu+2)*gL5jexEVMUg6%_*|CQt&5 z6oVutCU6FtC5A0PUf7gP#zE1D`#b4Spt;U1?6C-7aq0X zkYi+UhZkCBFAW1dPoKsz%ks$$`2tdU{`*ckWMtjaf@-W>SpPKVJC_wTmsH$L^ zY}lne`N0lO4h4v3*ucqUEtJPN`D2$k=UoL@7;nr36*((48SNPpr@z!>v}c{5$jIO` z{jDaWHR~NkMg}(sQ%MQV%ur%v@PLSJP-0}Tf-qkp6c{KoGPpoQOO)Z-b}2J5IDthu z|0pvuSi`+!K7FMQqdjM<3Z#r+n7lF0ob!|lB!Iz5N{~sFk--xbksu#3FfiPioM5Xy zc|kEJiz*|7)#SHM)~v0nphDoSlMO=Xw<;rp7f6!PZ~96-MtfFYbw-BB>1*{Ety!0; zGctrin7`E-8T=tkFAYWpZwPa$1|vftg!xQ^k--Ed7lZ0aZuJg;KoH=c$ zKj?24{_{Z5Vb}TX^D6JNim={#VYhI7tNgiBZ?}njNj07+^mu>HM1{pp@3(kNj$Z2D zaQO=N6O-I(Mg|5(hJXD37#SGWGDAZgRMDlL-%~Nu)#!)RmT$q+7uf3mS-Aa(R#__V zRu}h-W!^IuxLnWhwbgnhY38bV^R&6~SFRaXLm3VRBx>AH3_RSMS6n^4cO#R8gI0x4 z+@VRfGacII{Zlekah=qk-+txfaZSGMuCY6IIPA@ul$iLp!(oIOzW8ho4Ugd8WO;y*2Tma$wrl*>mkz+kEj* zXGnG0<-c8Y2a~=RE4ZmQeeP2x`N<1xS+?geF;8J-bZuwkVBXHi!7_)1oiWZ(&q&X3 z`Vt-%Z)P(+!|9)RSkh(87#MQ%^V0KEk{GVC%RJ#&`KXbJG0sfS&_K^%dnqr=?DdSs z(*^gkNHV%l*WSyLE}g;%Y2a~`Kc3f?&f+A(7-y-}7$L2{#nT_|Wigh9wec6JyqsWcEbYz27-wjxXP{@qP(EFMA4|G4tht}R zb;*@wK99aKF~%9|8R!`^Fyv0(2vPuRsry{s`1|;ou6rO8^bE~R^$fD78}DcFWt5rT zxSvImQFZ!k5M?}l>wXqvX;{18zg%m+>BaT`z`6|dEEpIhr!ya5F=o6w-TVNHFXPhb ztp`|)rC|;KwR7y3HW|q3GBFw&>KTGOI&1pn11zqLtENjHWKk5hfp!SKr?ak_DRt(S z2&3V2--9fYoB>>r2I-yY`3G4frC}Y4r$@ef#W3xRK$!Po`r?Bu+Kj8FpFhYV$+&9z z%Y!V}8P7~Vc!))k@%HrFAnN1xuZLIy85ymoyB}fkWptfB^$3eGqyO}iAS!D5-y!0~9HXUM=%Hr?iw)3eXA zY-N<3u6T|`l96M&^*I(}Mu?m#tcw$z%y&(DPTY2=W&;KWSf_`5&crjy&CeD=WsDgZ zBBt*>$Ffx#*4fl&oIE}5bmA8##yBHALp?(a2Cz+HEXF1bb<>xhXGv%LGoAkeOFGm} z#{JVLUSN@A?3=zCM6I8G^a9ITjxF+#KF;(6X%>^|>n^g)k^UhM=@7D6u>EU)wQ>&B z1t#WZJk$T*V3A~$nqGg2MN-&A0TNMpPS@7QbcViRV$_(v`Vxx_quKNa`&i_rKfA=T zS=!KmAuT1d2vowJb+>rD;o@T-aAcY28BI@^<SfyEVCgJzKlH68*j2m;-xyLpTEf>X$tFIT{PS5wEx_vI2J}jJxe_k1_lOL|BL_g z^l9>T=NBMk&P|uS#Ud#U>##ljX`KB;nVAWp;P3RnTP%`{qSLcMl)?7aTP(~>hMS@N z_Uf-L5{j?3uiDQE>5v9aot}3=Hro6WC!}ln=-toVT3bGqJ)FMt4vRkH$LTNcu;|w> z;fHicZ--Vd316)sxt<>qnvLS2eE&sE?(OD>^zx5d#s}M%SzU*9xF2kp7JccU{G~o2 zhzs}JTx6)?`K?=nW(VrtXUt6^qU4F-1P)Ck|p_QEt6dCQ)@3L&4ewWpUk;%|t z`;&XD@0q73E@V~M{`nE>Rw;1lz4|X}Go#`3h0j*#7q)>px~jbFl8|XBpWzrpGa}v2E94X8Xtj0D!&y=l}o! delta 4530 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 diff --git a/package.json b/package.json index 2a18d78..bd9eebd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nuxt-app", - "version": "0.1.2", + "version": "0.2.0", "private": true, "type": "module", "scripts": { @@ -15,8 +15,8 @@ "lint:summary": "biome check --reporter summary" }, "dependencies": { - "chart.js": "^4.4.5", - "mongodb": "^6.9.0", + "chart.js": "^4.4.6", + "mongodb": "^6.10.0", "nuxt": "^3.13.2", "vue": "^3.5.12", "vue-chartjs": "^5.3.1", @@ -28,7 +28,7 @@ "@iconify-json/ic": "^1.2.1", "@iconify-json/mdi": "^1.2.1", "@iconify-json/ph": "^1.2.1", - "@nuxt/icon": "^1.5.6", + "@nuxt/icon": "^1.6.1", "@nuxtjs/tailwindcss": "^6.12.2", "@vueuse/nuxt": "^11.1.0", "nuxt-posthog": "^1.5.4" diff --git a/server/tasks/analyze.ts b/server/tasks/analyze.ts index 303f017..909be31 100644 --- a/server/tasks/analyze.ts +++ b/server/tasks/analyze.ts @@ -2,6 +2,7 @@ import consola from "consola"; import { updateGameVersions } from "~~/server/utils/processing/gameVersions/processing"; import { updateGlobalStats } from "~~/server/utils/processing/global/processing"; import { updateStatistics } from "~~/server/utils/processing/projects/processing"; +import { setLatestDate } from "~~/server/utils/storage"; export default defineTask({ meta: { @@ -15,6 +16,7 @@ export default defineTask({ await updateGameVersions(); await updateStatistics(); await updateGlobalStats(); + await setLatestDate(new Date()); console.timeEnd("finish analyze"); return { result: "Success" }; diff --git a/server/utils/export/revenue.ts b/server/utils/export/revenue.ts index d301b3a..2c98ca9 100644 --- a/server/utils/export/revenue.ts +++ b/server/utils/export/revenue.ts @@ -1,7 +1,7 @@ import type { GlobalStats } from "~~/server/utils/processing/global/types"; +import { getRevenue } from "~~/server/utils/processing/revenue"; import { getGlobalStats } from "~~/server/utils/storage"; import { dateToFormatted, keyToDate } from "~~/utils/date"; -import { getRevenue } from "~~/server/utils/processing/revenue"; export async function exportRevenueStatsOverTime(): Promise { const statsOverTime: StatExport = { diff --git a/server/utils/processing/projects/processing.ts b/server/utils/processing/projects/processing.ts index bc81412..49dd2fb 100644 --- a/server/utils/processing/projects/processing.ts +++ b/server/utils/processing/projects/processing.ts @@ -13,11 +13,7 @@ import type { ProjectStats, Version, } from "~~/server/utils/processing/projects/types"; -import { - getGameVersions, - setLatestDate, - setProjectStats, -} from "~~/server/utils/storage"; +import { getGameVersions, setProjectStats } from "~~/server/utils/storage"; type StatsDataType = Map< string, @@ -85,8 +81,6 @@ async function saveStats(stats: AllStats, type: ProjectTypes) { await setProjectStats(stats.exclusive.all, type, "all", true); await setProjectStats(stats.exclusive.minor, type, "minor", true); await setProjectStats(stats.exclusive.major, type, "major", true); - - await setLatestDate(new Date()); } async function getStatistics(type: ProjectTypes): Promise {