From 243e2fd1a178bfcdc5c25959329dc2b0a4ebce70 Mon Sep 17 00:00:00 2001 From: ahillbilly Date: Thu, 4 Jun 2026 15:34:48 +0100 Subject: [PATCH] Add partial prayer coverage status icon (#11) --- app/pages/research/[slug]/index.vue | 33 ++++++++++++++++----- public/assets/icons/Check-YellowCircle.png | Bin 0 -> 2588 bytes 2 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 public/assets/icons/Check-YellowCircle.png diff --git a/app/pages/research/[slug]/index.vue b/app/pages/research/[slug]/index.vue index 0e28e8ea..8c83a2c6 100644 --- a/app/pages/research/[slug]/index.vue +++ b/app/pages/research/[slug]/index.vue @@ -74,15 +74,29 @@ const adoptUrl = computed(() => { }) const infoOpen = ref(false) +const FULL_PRAYER_COVERAGE_COUNT = 144 + +type StatusIcon = 'done' | 'partial' | 'not-done' + +function getPrayerStatusIcon(peopleCommitted: number | null | undefined): StatusIcon { + const committed = Number(peopleCommitted ?? 0) + if (committed >= FULL_PRAYER_COVERAGE_COUNT) return 'done' + if (committed > 0) return 'partial' + return 'not-done' +} + +function getBinaryStatusIcon(done: boolean): StatusIcon { + return done ? 'done' : 'not-done' +} const statusItems = computed(() => { const u = uupg.value as UupgDetail return [ - { label: t('Prayer Status'), done: (u.people_committed ?? 0) > 0 }, - { label: t('Adoption Status'), done: (u.adopted_by_churches ?? 0) > 0 }, - { label: t('Cross-cultural workers present'), done: !!u.workers_long_term }, - { label: t('Work in local language & culture'), done: !!u.work_in_local_language }, - { label: t('Disciple & church multiplication'), done: !!u.disciple_and_church_multiplication } + { label: t('Prayer Status'), icon: getPrayerStatusIcon(u.people_committed) }, + { label: t('Adoption Status'), icon: getBinaryStatusIcon((u.adopted_by_churches ?? 0) > 0) }, + { label: t('Cross-cultural workers present'), icon: getBinaryStatusIcon(!!u.workers_long_term) }, + { label: t('Work in local language & culture'), icon: getBinaryStatusIcon(!!u.work_in_local_language) }, + { label: t('Disciple & church multiplication'), icon: getBinaryStatusIcon(!!u.disciple_and_church_multiplication) } ] }) @@ -100,7 +114,7 @@ const progressItems = computed(() => { const prayerCoveragePercent = computed(() => { const committed = (uupg.value as UupgDetail)?.people_committed ?? 0 - return Math.min(100, (Number(committed) / 144) * 100) + return Math.min(100, (Number(committed) / FULL_PRAYER_COVERAGE_COUNT) * 100) }) const mapSrc = computed(() => { @@ -194,10 +208,15 @@ const mapSrc = computed(() => { class="status-item" > + 7&!AI~B`UpOPkI+Z3#Fm9O*&?s9jJ#wyEZJFXSujFGLW+n634}B#i9 zLti*ocUjQmfFwmvu`r0DE87-LO-}=oAu#6c@ae`GjB~ke|1kgzNY3^cD)XCHw<31BtI8Rn3qpNj4>5@eX9k zL>w$2IX$eR=Ku>xPE5$bp<_jC3KCs7rVcCO9ukJT6OhPH%9k`o^?SzVAYo`l91p>) z_8u!5o!Nrq0wnYv=uB!063$@p^}RLslRnm+}}uq`Dt zpt6QvGmu=qdUZvkDK-m`F#jMIY{du3>EpA^KZv?zVkYQB`-FZ{Jd$=>I}L)I+xt}& ziv%E~$I4e#91?&KD^LJJfT9fvK!`Oc03krpf}~yMr21#2F;bukRvd~C9gm}+f90|iL;(b||VHV*k)x=0x z%_0xx)sJ5^ub)5J{nz?x*VygvGzfAJ$A|Z?n#1SccfV@DaxH;`cNCI)K+Zj(XA%Ax z7uk@oH;eQIvVZ>g`Ac(?_@PLctdrhAlt5V}M-sX$8U`5(WdHp2@>|KDdzuVMyX4Cb zU$RT+5ym`%P}V7t@M0Yj1<3yS=j~6;@85r}x;LR0A!0xdmxu+RtWzMN7a`Gs?4M9u z5vZk1V{bDFw=^Hxef7 z0hhYRpks`q;w#=oI}EV#8EK+ny{Q{)0&5RdsQQ?kXfB>Z9CKdK;0R$i&lXqUq0}z08Ox~Ha0|X!)lXq@K z0SG`kD(|dp0R$i&m3LOQ00NNnnQ*@rKmgLQ!o^jlh7zjI0Lh*?%fCi4^aY*(8NUo{ zdShca-y9;auLmGy0Qm%o`Kvg?mT;jLR06~=kln=)=8(L*{YKMvYJm6#va6MtLUPFg zBEffq1H>PY|B+ZJB=$LBXB`SaK$7K*cBWT}0mL_u-923Dk&HQ`o$=+A0PzWA7qv*j z1pM#q52L@N1lM2!q#z(_k;LA5q5aDO2uM`yP15?M0R$v!Ht%Vyp}cwV6d)kcwYyal z6wNR21c*W;;ls_fyEQBZ00bbWkVuTlC5w#!0g0JO>z}`U4G@4_l54RyTWMI;$ysa! zh}p<&aMZNynF9(yK+^l5R7qbrKtSTA!KC=&0pcR7Y{z%CH<%CaUq!8<0K`p}SuTRG z(qLj08v)`I$-1OD$hl|iYmWiqF0%N zJV0FLW^dyok|yIuN1y=2K(0<9$@VfIj}u>jxXR)bl5Foz^!V;SfVfI^3Q5-U?mz*E z=1Tj6NSeZr@&be$&qq!n*#HF~%ty{6S#T#VKnl;a3rQvQ!%=Jmh^G3;NhB?l8=wHB z(5x;+vXcBkJ)ZCbh`puXE+m!o4@*@ZAR2~RCy_`Gxh$WL2Z*nsRu__$^bbw35g^h- ztu7>$h94X#0FfMOokh}Qy4mqkC_DhkaSCw=l7*IEf?^{;auyK#Aep4PAOa`=(YjZw z7m_CN6{r*&0iq=Hu}CUyzf|c^0Fr0Iele0pXlHO&!WBONA+dM-jzKcl_zRX+l?O=t z!&UnmQAQ)tQh_fS3PAEM`wm4?YyD-t7aIX0*NgN*qPaKmT$KliY%ekdiQ3*IKnd?X z1PF=Qi}XgKxi|4vYz(V+G-ml;WGIrk<`2LFl%cPqBk_BYK}fXLO}xD70U)}1kugYS z+CL17Re6BOSJ$H<(YU9}IuwA&@6k$uMAZ&q%f&{3`&AskW8!;8plEbh>wYSb|jXz)$jB2*<*kJBrg(+D_(tyjR3J-QCEY+ zD-?kES?X1R#3Gb)#YTYm2O@&RB9zz9pWK_wb1zmIK*W$(ghI*$B8mhk!~zg;BtRkB zfv7-o0Of`TK_u!RCXiUH%#$*Js6ui8WlaNNFP5fusS1g;+gC`E?d~&e?NKF?gI7E- zp)YHKKGoP3)gn2V&@)ddVE!S!f@Ky7^OPcnSGD#ws2&N!FW1AX%0k;SgQSHry;c5} zEt2nMMUZq~f=91H?*S5e6?zYl#G9+IrA2QxT9$VYYgjdb34?xUIpLB!7 y2A)|vtXUrPKKpEY&KnN@?6OVW{vBXQl>Y!w=bH@I%K_E^0000