diff --git a/data/tables/bridge-language-reach.json b/data/tables/bridge-language-reach.json index a829d939a..66d9b7531 100644 --- a/data/tables/bridge-language-reach.json +++ b/data/tables/bridge-language-reach.json @@ -8,7 +8,7 @@ "groups_with_no_way_in": 0, "a_bridge_is_not_their_own_language": "Every group counted here still has NOTHING in its own language. This table ranks the second-best answer, and the word bridge travels with every row.", "three_kinds": "CURATED — checked for those groups. CANDIDATE — computed from published CLDR data about what the country speaks, which is a fact about the country and not about these people. SIGNED — SUN, a constructed signed language that has to be learned. Never summed.", - "the_map_link_shows_languages_not_groups": "The map filters by ISO 639-3, and these rows count GROUPS, so the link shows every Doxa group speaking the languages this bridge's groups speak — more than the row counts. Mandarin: 36 groups, 30 languages, 55 groups drawn; Akha: 33 and 57. The extra groups also have nothing; they are offered a different bridge because they are in a different country. Both numbers ship so the map and the row cannot contradict each other silently. An exact per-group filter would be a change to the map's URL contract.", + "the_map_link_names_the_peoples": "The link uses ?groups=, which filters the map by PEOPLE GROUP, so it shows exactly the groups this row counts. Written first with ?codes=, which filters by language, it drew 55 pins for Mandarin's 36-group row and 57 for Akha's 33 — those extra groups also have nothing but belong to a different row. The map gained the per-group filter rather than the column gaining an excuse.", "links": "No new link enters the map here. A bridge language's resources are the ones the pin index already carries for that ISO code, already proved by the verification record." }, "columns": [ @@ -78,7 +78,7 @@ "type": "number" }, { - "title": "Their languages on the map", + "title": "These peoples on the map", "field": "map_url", "type": "link" } @@ -97,9 +97,9 @@ "film_url": "", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=aen,afg,asf,asp,bfi,bqn,csf,csx,dse,dsl,esl,fsl,gsg,gss,gus,hks,icl,ise,isr,jls,lbs,lgs,lso,lsy,mdl,mzy,nsl,pgz,pks,qae,qao,qbh,qbj,qbn,qbt,qcd,qcm,qcy,qer,qfa,qfj,qga,qge,qgm,qiq,qki,qkm,qkp,qkw,qmv,qnh,qns,qom,qqa,qry,qsm,qso,qsr,qsz,qtp,sdl,sqk,sqs,swl,szs,tsm,xms,ysl,ysm", + "map_url": "../resources-map/index.html?groups=deaf-afghans,deaf-algerians,deaf-angolans,deaf-armenians,deaf-arubans,deaf-azerbaijanis,deaf-bahrainis,deaf-beninese,deaf-bhutanese,deaf-bissau-guineans,deaf-bosnians,deaf-british-virgin-islanders,deaf-bruneians,deaf-bulgarians,deaf-burmese,deaf-cambodians,deaf-cameroonians,deaf-central-africans,deaf-christmas-islanders,deaf-cocos-islanders,deaf-comorans,deaf-congolese-congo,deaf-congolese-democratic-republic-of-the-congo,deaf-cubans,deaf-curacaoan,deaf-cypriots,deaf-djiboutians,deaf-emiratis,deaf-eritreans,deaf-faroese,deaf-fijians,deaf-french-polynesians,deaf-gabonese,deaf-gambians,deaf-georgians,deaf-gibraltarians,deaf-greeks,deaf-guadeloupeans,deaf-guernsey-islanders,deaf-guineans,deaf-guyanese,deaf-hong-kong,deaf-i-kiribati,deaf-icelanders,deaf-iraqis,deaf-israelis,deaf-ivoirians,deaf-jamaicans,deaf-jersey-islanders,deaf-koreans,deaf-kosovar,deaf-kuwaitis,deaf-laotians,deaf-libyans,deaf-liechtensteiners,deaf-luxembourgers,deaf-macao,deaf-mahorais,deaf-maldivans,deaf-maltese,deaf-marshallese,deaf-mauritians,deaf-micronesians,deaf-monacans,deaf-montserratians,deaf-moroccans,deaf-mozambicans,deaf-new-caledonians,deaf-ni-vanuatu,deaf-norfolk-islanders,deaf-omanis,deaf-pakistanis,deaf-palestinian-arabs,deaf-papua-new-guineans,deaf-qataris,deaf-sahrawis,deaf-saint-barth,deaf-saint-helenians,deaf-sammarinese,deaf-samoan,deaf-santomeans,deaf-saudi-arabians,deaf-solomon-islanders,deaf-somalis,deaf-sri-lankans,deaf-sudanese,deaf-surinamers,deaf-svalbardians,deaf-swazis,deaf-swedes,deaf-tongans,deaf-wallisians,deaf-yemenis", "their_languages": 69, - "map_shows_groups": 116 + "map_shows_groups": 93 }, { "language": "Arabic, Standard", @@ -114,9 +114,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/arabic-modern-standard", "training_url": "https://zume.training/ar", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=abv,acx,aju,ayh,gdq,hoh,hss,jbn,shv,siz,sqt,ssh,zum", + "map_url": "../resources-map/index.html?groups=arab-bahraini-sunni,arabic-shihhi,batahira,hadrami-arabs,harasi,hobyot-oman,hobyot-yemen,jerba,jibbali,kumzari,mahra,moroccan-jews,shihuh,siwa-imazighen,socotran", "their_languages": 13, - "map_shows_groups": 32 + "map_shows_groups": 15 }, { "language": "Chinese, Mandarin", @@ -131,9 +131,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/mandarin-taiwan", "training_url": "https://zume.training/zhcn", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=aib,aih,bbh,bgk,bwn,bxu,cuu,ers,giq,gqu,hmh,huo,kaf,lbt,lkc,muq,nmy,nru,peh,srh,sxg,tct,tiz,und,wmg,wuh,ymx,yne,yrn,zhd", + "map_url": "../resources-map/index.html?groups=ai-cham,ainu-china,bit-china,bugan,buryat,cai,eastern-xiangxi-miao,ersu,gao,guaigun,hagei,hongjin-tai,hu,huishui-miao,kucong,lati-china,liang-e,luzu,manyak,minyak,mosuo,naju,namuyi,northern-muji,rao,sanda,sarikoli-tajiks,shixing,tongren-bonan,wenma-zhuang,wunai,wutun,ya,yanghuang,yerong,yunnan-mongol", "their_languages": 30, - "map_shows_groups": 55 + "map_shows_groups": 36 }, { "language": "Arabic, Sudanese", @@ -148,9 +148,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/arabic-sudanese-spoken", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=aft,daj,fuj,kcp,kec,kko,mei,ras,sjg,tag,tbr,wll,wrn,yul", + "map_url": "../resources-map/index.html?groups=afitti,binga,dajo,dar-fur-daju,erenga,fungor,kajakaja,kanga,karko,keiga,kimr,kufa-lima,midob,tagale,tagoy,talasa,tingal,tukum,tumale,tumtum,wali,warnang", "their_languages": 14, - "map_shows_groups": 29 + "map_shows_groups": 22 }, { "language": "Somali", @@ -165,7 +165,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/somali", "training_url": "https://zume.training/so", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=dbr,gex,jii,tqq,xma", + "map_url": "../resources-map/index.html?groups=dabarre,garre,jiiddu,mushungulu,tunni", "their_languages": 5, "map_shows_groups": 5 }, @@ -182,9 +182,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/arabic-chadian-spoken", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=bdo,btf,bvf,bvo,ckq,fni,glc,jeu,klf,kou,kth,mes,mou,msv,mub,mvu,sbj,sjg,trj,vkj,xmj,zna", + "map_url": "../resources-map/index.html?groups=berguid,bernde,bolgo-dugag,bon-gula,boor,fanya,gula,jegu,kajakse,karanga,kendeje,koke,kujarge,majera-chad,marfa,maslam,mesmedje,mogum,mubi,sungor,surbakhal,torom", "their_languages": 22, - "map_shows_groups": 28 + "map_shows_groups": 22 }, { "language": "French", @@ -199,9 +199,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/french", "training_url": "https://zume.training/fr", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=dba,dek,jia,kke,nml,shz,xmj", + "map_url": "../resources-map/index.html?groups=bangi-me,dek,jina,konkabay,majera-cameroon,ndemli,syenara-senufo", "their_languages": 7, - "map_shows_groups": 8 + "map_shows_groups": 7 }, { "language": "Indonesian", @@ -216,9 +216,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/indonesian-yesus", "training_url": "https://zume.training/id", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=abf,alo,amv,asl,bls,bna,bsb,bvt,coa,dok,ges,goq,gzn,hik,htu,kns,kvh,kvp,kxd,kyi,lcd,lcq,lhn,ltu,mnq,mqi,ttg,udj", + "map_url": "../resources-map/index.html?groups=abai-sungai,ambelau,asilulu,balaesan,bati,bisayan-tutong,bonerate,cocos-malays,dondo,gane,geser-gorom,gorap,hitu,kedayan,kensiu,kiput,komfana,komodo,lahanan,larike-wakasihu,latu,lola,luhu,mairiri,mendriq,seit-kaitetu,tutung,ujir", "their_languages": 28, - "map_shows_groups": 34 + "map_shows_groups": 28 }, { "language": "Swahili", @@ -233,9 +233,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/swahili-kenya", "training_url": "https://zume.training/swa", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=kcn,kcu,ndt,sbm,tbm,yul", + "map_url": "../resources-map/index.html?groups=kami,ndunga,nubi,sagara,tagbo,yulu-binga", "their_languages": 6, - "map_shows_groups": 10 + "map_shows_groups": 6 }, { "language": "Akha", @@ -250,9 +250,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/akha", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=bgk,bgl,hld,hnu,khf,kuf,kyp,mra,oog,pho,pnx,scb,slt,tct,tgr,tyh,tyj,uan,und,xhv", + "map_url": "../resources-map/index.html?groups=bit-laos,bo,chut-laos,halang-doan,hung,katu-adek,katu-dark-kang,katu-hanna,katu-triew,khua,khuen,kuan,laoseng,mlabri,o-du,phongku,phongset,phunoi-laos,pong,pong-phen,pong-poong,pong-puang,pong-seng,sida,sila-laos,tai-he,tai-khang,tai-laan,tai-men,tayten,thai-ae,thai-toum,tong", "their_languages": 20, - "map_shows_groups": 57 + "map_shows_groups": 33 }, { "language": "Arabic, Libyan", @@ -267,9 +267,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/arabic-libyan", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=jbn", + "map_url": "../resources-map/index.html?groups=nefusa-imazighen,zuara", "their_languages": 1, - "map_shows_groups": 4 + "map_shows_groups": 2 }, { "language": "Russian", @@ -284,7 +284,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/russian", "training_url": "https://zume.training/ru", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=akv,ani,bph,cji,khv,kpt,kva,tin,xdq", + "map_url": "../resources-map/index.html?groups=akhwakh,andi,bagvalal,botlikh,chamalal,kaitag,karata,khwarshi,tindi", "their_languages": 9, "map_shows_groups": 9 }, @@ -301,7 +301,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/tamazight-central-atlas", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=cnu,kcy", + "map_url": "../resources-map/index.html?groups=belbali,chenoua", "their_languages": 2, "map_shows_groups": 2 }, @@ -318,7 +318,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/japanese", "training_url": "https://zume.training/ja", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=okn,rys,tkn,yoi,yox", + "map_url": "../resources-map/index.html?groups=oki-no-erabu,toku-no-shima,yaeyama,yonaguni,yoron", "their_languages": 5, "map_shows_groups": 5 }, @@ -335,7 +335,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/ale-gawwada", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=hoz,lgn,sbf,sze", + "map_url": "../resources-map/index.html?groups=begi-mao,opuua-shita,seze,shabo", "their_languages": 4, "map_shows_groups": 4 }, @@ -352,9 +352,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/shimaore", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=buc", + "map_url": "../resources-map/index.html?groups=bushi", "their_languages": 1, - "map_shows_groups": 3 + "map_shows_groups": 1 }, { "language": "Tigrinya, Eritrea", @@ -369,9 +369,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/tigrinya-eritrea", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=nrb", + "map_url": "../resources-map/index.html?groups=nara", "their_languages": 1, - "map_shows_groups": 2 + "map_shows_groups": 1 }, { "language": "Moore", @@ -386,7 +386,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/moore", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=kqg,seq", + "map_url": "../resources-map/index.html?groups=khe,senara-senufo", "their_languages": 2, "map_shows_groups": 2 }, @@ -403,7 +403,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/hausa", "training_url": "https://zume.training/ha", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=tda", + "map_url": "../resources-map/index.html?groups=tagdal", "their_languages": 1, "map_shows_groups": 1 }, @@ -420,7 +420,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/urdu", "training_url": "https://zume.training/ur", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=btv,dml,gwf,ush,xka", + "map_url": "../resources-map/index.html?groups=bateri,damel,gowro,kalkoti,ushojo", "their_languages": 5, "map_shows_groups": 5 }, @@ -437,7 +437,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/bemba", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=ttl", + "map_url": "../resources-map/index.html?groups=totela", "their_languages": 1, "map_shows_groups": 1 }, @@ -454,7 +454,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/farsi-western", "training_url": "https://zume.training/fa", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=bsg,kgn,soj", + "map_url": "../resources-map/index.html?groups=bashkardi,northern-tati,soi", "their_languages": 3, "map_shows_groups": 3 }, @@ -471,9 +471,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/hausa", "training_url": "https://zume.training/ha", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=gwb,ibr,jmi,mew,tgd,vkz", + "map_url": "../resources-map/index.html?groups=gwa,ibuoro,jimi,koro-zuba,maha,tsagu", "their_languages": 6, - "map_shows_groups": 4 + "map_shows_groups": 6 }, { "language": "Vietnamese", @@ -488,9 +488,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/vietnamese", "training_url": "https://zume.training/vi", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=laq,lbt,lha,phh,scb,slt,tsl", + "map_url": "../resources-map/index.html?groups=chut-vietnam,laha,lati-vietnam,phula,pu-peo,sila-vietnam,tsun-lao", "their_languages": 7, - "map_shows_groups": 11 + "map_shows_groups": 7 }, { "language": "English", @@ -505,9 +505,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/english", "training_url": "https://zume.training/en", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=bdj,bqk,njl,nyr", + "map_url": "../resources-map/index.html?groups=banda-mbres,bari-bai,ngalgulgule,wandya", "their_languages": 4, - "map_shows_groups": 6 + "map_shows_groups": 4 }, { "language": "Portuguese", @@ -522,7 +522,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/portuguese-portugal", "training_url": "https://zume.training/pt", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=nye", + "map_url": "../resources-map/index.html?groups=nyengo", "their_languages": 1, "map_shows_groups": 1 }, @@ -539,7 +539,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/dzongkha", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=bro,goe,luk,neh,ole,tgf", + "map_url": "../resources-map/index.html?groups=brokkat,chali,gongduk,lunape,nyenpa,ole", "their_languages": 6, "map_shows_groups": 6 }, @@ -556,9 +556,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/telugu", "training_url": "https://zume.training/te", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=anq,kbg,kyw,mjp,nbt,nkd,oon,std", + "map_url": "../resources-map/index.html?groups=jadupetia,jarawas,khamba,koiren,malai-pandaram,na,onge,sentinelese", "their_languages": 8, - "map_shows_groups": 11 + "map_shows_groups": 8 }, { "language": "Thai", @@ -573,9 +573,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/thai", "training_url": "https://zume.training/th", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=pho", + "map_url": "../resources-map/index.html?groups=phunoi-thailand", "their_languages": 1, - "map_shows_groups": 4 + "map_shows_groups": 1 }, { "language": "Nepali", @@ -590,9 +590,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/nepali", "training_url": "https://zume.training/ne", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=gyo,phj,tsk", + "map_url": "../resources-map/index.html?groups=gyasumdoba,pahari-nagarkotis,tseku", "their_languages": 3, - "map_shows_groups": 4 + "map_shows_groups": 3 }, { "language": "Hebrew (modern)", @@ -607,7 +607,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/hebrew", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=lsd", + "map_url": "../resources-map/index.html?groups=kurdistani-jews", "their_languages": 1, "map_shows_groups": 1 }, @@ -624,7 +624,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/burmese-common", "training_url": "https://zume.training/my", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=dnu", + "map_url": "../resources-map/index.html?groups=danau", "their_languages": 1, "map_shows_groups": 1 }, @@ -641,9 +641,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/portuguese-portugal", "training_url": "https://zume.training/pt", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=adw,asn,atr,avv,awt,pto,swx,txi,und,unk,urp,urz,xmo,xor", + "map_url": "../resources-map/index.html?groups=amundava,arawete,asurini-xingu,ava-canoeiro,enawen-naw,korubo,morerebi,sapanawas,suruwaha,txikao,uncontacted-of-bararati,uncontacted-of-cumina,uncontacted-of-madeirinha,uncontacted-of-mapuera,uncontacted-of-parauari,uncontacted-of-rio-liberdade,uncontacted-of-rio-tapirape,uncontacted-of-serra-do-taquaral,uncontacted-of-teles-pires,uraparaquara,uru-pa-in,waimiri-atroari,zoe", "their_languages": 14, - "map_shows_groups": 30 + "map_shows_groups": 23 }, { "language": "Spanish", @@ -658,7 +658,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/spanish-latin-american", "training_url": "https://zume.training/es", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=cbb,cby,mbn,tbn", + "map_url": "../resources-map/index.html?groups=cabiyari,carabayo,eastern-tunebo,macaguan", "their_languages": 4, "map_shows_groups": 4 }, @@ -675,7 +675,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/spanish-latin-american", "training_url": "https://zume.training/es", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=hug", + "map_url": "../resources-map/index.html?groups=huachipaire", "their_languages": 1, "map_shows_groups": 1 } diff --git a/documentation/README-embed-gospel-resources.md b/documentation/README-embed-gospel-resources.md index ff06c2e55..8f5710169 100644 --- a/documentation/README-embed-gospel-resources.md +++ b/documentation/README-embed-gospel-resources.md @@ -9,11 +9,12 @@ again, so every parameter below is a promise kept by a gate style="width:100%;height:600px;border:0" title="Gospel access"> ``` -## The five addresses +## The six addresses | Address | What the reader gets | |---|---| | `?codes=` | Only those languages' people groups, framed on them. Shows `74 / 2,107`, and that count is the button back to the whole map. | +| `?groups=` | Exactly those **people groups**, by doxa.life's own slug, framed on them. Use this when your list is peoples rather than languages: a language filter shows every group speaking it, which for one bridge language was 55 pins against a list of 36. | | `?country=` | That country's sheet open, framed on its groups. The country's own name also works (`?country=India`). | | `?code=` | The people group's sheet, with its resources. `&name=` and `&country=` disambiguate when a language has many groups. | | `?view=zero` | The groups with **nothing found** — the question this map exists for. `?view=gap` is the same view. | diff --git a/internal/check-gospel-embed-contract.mjs b/internal/check-gospel-embed-contract.mjs index e16a02a8a..00dc3c6b7 100644 --- a/internal/check-gospel-embed-contract.mjs +++ b/internal/check-gospel-embed-contract.mjs @@ -97,6 +97,27 @@ try { else console.log(` ok ?codes=${CODES.join(',')}`.padEnd(34) + `notice "${a.notice}"`) } + /* 1b — ?groups= names the PEOPLES, where ?codes= names their languages. The reach table's rows + count groups, and a language filter drew 55 pins for a 36-group row; this is the filter that + makes a row and the map agree, so it is asserted on exact equality, not on "some pins". */ + const slugs = drawn.filter((r) => r.slug).slice(0, 3).map((r) => r.slug) + if (slugs.length < 3) fails.push('fewer than 3 slugs in the roster — the ?groups= arm would pass vacuously') + else { + const g = await read(page, `?groups=${slugs.join(',')}`) + if (!g.mounted) fails.push('?groups: the leaf did not mount') + else if (!g.notice) fails.push('?groups: no partner-list notice rendered') + else { + const n = nums(g.notice) + if (n[0] !== slugs.length || n[1] !== total) fails.push(`?groups: notice reads "${g.notice}" — expected ${slugs.length} / ${total}`) + else console.log(` ok ?groups=${slugs.join(',').slice(0, 22)}`.padEnd(34) + `notice "${g.notice}"`) + } + /* A slug nobody has must match NOTHING, not everything — the failure that would quietly turn a + partner's 40-group embed into the whole roster. */ + const none = await read(page, '?groups=not-a-people-anywhere') + if (none.mounted && none.notice && nums(none.notice)[0] !== 0) fails.push(`?groups=: notice reads "${none.notice}" — an unknown slug must match 0`) + else console.log(' ok ?groups='.padEnd(34) + 'matches nothing') + } + /* 2 — a country, with no pin */ const b = await read(page, '?country=IND') if (!b.mounted) fails.push('?country: the leaf did not mount') @@ -161,7 +182,7 @@ try { for (const f of fails) console.error(` ${f}`) process.exit(1) } - console.log(`EMBED-CONTRACT: PASS — ${matched} of ${total} pins for a three-code link; a country opens from its ISO3 alone and an unknown one is ignored; a province deep-links into the table with its diacritics folded and an unknown one matches nothing; ?view=zero still renders.`) + console.log(`EMBED-CONTRACT: PASS — ${matched} of ${total} pins for a three-code link and exactly 3 for a three-SLUG link, with an unknown slug matching none; a country opens from its ISO3 alone and an unknown one is ignored; a province deep-links into the table with its diacritics folded and an unknown one matches nothing; ?view=zero still renders.`) } finally { try { await browser?.close() } catch (_) {} try { srv?.close?.() } catch (_) {} diff --git a/plugin-designs/gospel-resources/resources-map.vue b/plugin-designs/gospel-resources/resources-map.vue index 09f39a8f8..f5c14f5f1 100644 --- a/plugin-designs/gospel-resources/resources-map.vue +++ b/plugin-designs/gospel-resources/resources-map.vue @@ -232,7 +232,7 @@ const linkVerify = ref(null) const pgLoading = ref(false) const pgErr = ref(null) const selectedGroup = ref(null) // set = the people-group detail is showing -const pinRows = shallowRef([]) // [name, lat, lng, iso3, code, population, tier] +const pinRows = shallowRef([]) // [name, lat, lng, iso3, code, population, tier, slug] const doxaTotal = ref(0) // every group on Doxa's roster, placed or not const doxaUnplaced = ref(0) // on the roster, no coordinates in this build yet const doxaByCountry = shallowRef({}) @@ -329,9 +329,23 @@ const linkCodes = (() => { return new Set(raw.split(',').map((c) => c.trim().toLowerCase()).filter((c) => /^[a-z]{3}$/.test(c))) } catch { return new Set() } })() -const linkActive = ref(linkCodes.size > 0) +/* ═══ ?groups= — THESE PEOPLES, NOT THE LANGUAGES THEY SPEAK ══════════════════════════════════ + * ?codes= answers "show me these languages", which is what a partner's list usually is. It is the + * WRONG filter for a list of peoples, and the reach table measured the gap: its Mandarin row counts + * 36 groups, those 36 speak 30 codes, and 55 Doxa groups speak those 30 — so a ?codes= link from a + * 36-group row drew 55 pins. The extra groups are real and also have nothing; they simply belong to + * a different row. Naming the peoples by slug makes the row and the map agree exactly. + * The slug is doxa.life's own, carried from the roster, so nothing here invents an identifier. */ +const linkSlugs = (() => { + try { + const raw = new URLSearchParams(window.location.search).get('groups') || '' + return new Set(raw.split(',').map((c) => c.trim().toLowerCase()).filter(Boolean)) + } catch { return new Set() } +})() +const linkActive = ref(linkCodes.size > 0 || linkSlugs.size > 0) +const inLinkList = (r) => (linkSlugs.size ? linkSlugs.has(r[7]) : linkCodes.has(r[4])) const linkMatched = computed(() => (linkActive.value - ? pinRows.value.reduce((n, r) => n + (linkCodes.has(r[4]) ? 1 : 0), 0) + ? pinRows.value.reduce((n, r) => n + (inLinkList(r) ? 1 : 0), 0) : 0)) /* THE WAY BACK. A reader who arrives on a partner's embed is looking at somebody else's forty @@ -1160,8 +1174,10 @@ async function load() { const tierByCode = pinData.tiers || {} pinRows.value = roster .filter((r) => r.mapped && r.lat != null && r.lng != null) + /* [7] is the SLUG, carried so a link can name these peoples exactly rather than naming the + languages they speak. It costs nothing: the roster already has it, from doxa.life. */ .map((r) => [r.name, r.lat, r.lng, r.iso3, r.iso639_3 || '', r.population || 0, - tierByCode[r.iso639_3] ?? r.tier ?? 0]) + tierByCode[r.iso639_3] ?? r.tier ?? 0, r.slug || '']) pinCount.value = pinRows.value.length doxaUnplaced.value = doxaTotal.value - pinCount.value @@ -1337,7 +1353,7 @@ function pinFC() { type: 'Feature', // hnr is baked so the filter stays a GL-side predicate like the others: recomputing it // per toggle would re-upload 12,379 features to answer a yes/no already known here. - properties: { i, tier: p[6], color: PIN_COLOR[p[6]], rim: PIN_RIM[p[6]], hnr: hnrFor(p[4]), lc: linkCodes.has(p[4]) }, + properties: { i, tier: p[6], color: PIN_COLOR[p[6]], rim: PIN_RIM[p[6]], hnr: hnrFor(p[4]), lc: inLinkList(p) }, geometry: { type: 'Point', coordinates: [p[2], p[1]] }, } } @@ -1618,7 +1634,7 @@ onMounted(async () => { /* The link clause lives in setPinFilter, and nothing has called it yet at first paint — so without this the partner's list would be baked into the features and ignored. */ if (linkActive.value) setPinFilter(pinFilter.value) - fitToPins(map, linkActive.value ? (r) => linkCodes.has(r[4]) : null) + fitToPins(map, linkActive.value ? inLinkList : null) openFromUrl() } if (typeof map.isStyleLoaded === 'function' && map.isStyleLoaded()) draw() diff --git a/plugin-designs/gospel-resources/scripts/build-bridge-reach-table.mjs b/plugin-designs/gospel-resources/scripts/build-bridge-reach-table.mjs index 853675f1e..78177f507 100644 --- a/plugin-designs/gospel-resources/scripts/build-bridge-reach-table.mjs +++ b/plugin-designs/gospel-resources/scripts/build-bridge-reach-table.mjs @@ -54,7 +54,7 @@ for (const r of zero) { else if (r.deaf_bridge) { code = 'SUN'; name = r.deaf_bridge; kind = 'signed' } else { noWayIn++; continue } const key = `${kind}|${code}` - if (!agg.has(key)) agg.set(key, { code, language: name, kind, groups: 0, people: 0, countries: new Set(), nobody_praying: 0, biggest: [], reached: new Set() }) + if (!agg.has(key)) agg.set(key, { code, language: name, kind, groups: 0, people: 0, countries: new Set(), nobody_praying: 0, biggest: [], reached: new Set(), slugs: new Set() }) const a = agg.get(key) a.groups++ a.people += r.population || 0 @@ -64,6 +64,12 @@ for (const r of zero) { /* The OWN languages of the groups this bridge reaches — the map's ?codes= filter joins on exactly that, so the row can put those peoples on the map instead of describing them. */ if (/^[a-z]{3}$/.test(String(r.iso639_3 || ''))) a.reached.add(r.iso639_3) + /* The PEOPLES themselves, by doxa.life's slug — what ?groups= takes. The access table has no + slug column, so it is read off the prayer URL, which doxa.life's own API built from that slug. + Measured before relying on it: all 369 of these rows carry a pray_url. Never constructed from + the name — a slug this build invented could name somebody else's people. */ + const slug = String(r.pray_url || '').split('/').pop().split('?')[0] + if (slug) a.slugs.add(slug) } const c = (code) => codes[code] || {} @@ -88,23 +94,20 @@ const rows = [...agg.values()].map((a) => ({ film_url: a.code === 'SUN' ? '' : (c(a.code).f || ''), training_url: a.code === 'SUN' ? '' : (c(a.code).z || ''), still_nothing_of_their_own: true, - /* ═══ FROM THE TABLE BACK TO THE MAP, AND WHAT THE LINK ACTUALLY SHOWS ═════════════════════ - * A row saying "36 peoples" that cannot show you which 36 is a statistic, so this reuses the - * partner-embed address: ?codes= filters the map to a list of ISO 639-3 codes. - * - * ⚠ BUT THE MAP FILTERS BY LANGUAGE AND THIS ROW COUNTS GROUPS, so the two do not match and the - * link must not pretend they do. Mandarin's 36 groups speak 30 codes, and 55 Doxa groups speak - * those 30 — the extra 19 also have nothing, and they are offered a DIFFERENT bridge because - * they are in a different country. Measured: Akha claims 33 and its link shows 57. So the count - * ships beside the link, the column is named for languages rather than peoples, and the meta - * says why. An exact group-level filter is a change to the map's URL contract, not something to - * fake here by labelling a language filter as a people filter. + /* ═══ FROM THE TABLE BACK TO THE MAP, EXACTLY THESE PEOPLES ════════════════════════════════ + * First written with ?codes=, which filters by LANGUAGE, and it contradicted its own row: + * Mandarin's 36 groups speak 30 codes and 55 Doxa groups speak those 30, so a 36-group row drew + * 55 pins (Akha 33 drew 57, SUN 93 drew 116). The extra groups are real and also have nothing — + * they belong to a different row. Rather than relabel the column to excuse the mismatch, the map + * learned ?groups=, which names the peoples by doxa.life's own slug. Row and map now agree by + * construction, and `map_shows_groups` is computed from the same roster the map draws so the + * claim stays falsifiable rather than assumed. * * The field is named *_url because that is what makes DataTable render it as a link — a naming - * convention, not a type declaration, which is worth knowing before renaming it. */ - map_url: a.reached.size ? `../resources-map/index.html?codes=${[...a.reached].sort().join(',')}` : '', + * convention, not a type declaration, worth knowing before renaming it. */ + map_url: a.slugs.size ? `../resources-map/index.html?groups=${[...a.slugs].sort().join(',')}` : '', their_languages: a.reached.size, - map_shows_groups: allByCode(a.reached), + map_shows_groups: a.slugs.size, })).sort((x, y) => y.people_with_nothing - x.people_with_nothing) if (noWayIn) console.log(`note: ${noWayIn} group(s) with nothing have no way in recorded — they are absent from this table, not counted as zero`) @@ -126,12 +129,11 @@ writeSnapshot( three_kinds: 'CURATED — checked for those groups. CANDIDATE — computed from published CLDR ' + 'data about what the country speaks, which is a fact about the country and not about these ' + 'people. SIGNED — SUN, a constructed signed language that has to be learned. Never summed.', - the_map_link_shows_languages_not_groups: 'The map filters by ISO 639-3, and these rows count ' + - 'GROUPS, so the link shows every Doxa group speaking the languages this bridge\'s groups ' + - 'speak — more than the row counts. Mandarin: 36 groups, 30 languages, 55 groups drawn; Akha: ' + - '33 and 57. The extra groups also have nothing; they are offered a different bridge because ' + - 'they are in a different country. Both numbers ship so the map and the row cannot contradict ' + - 'each other silently. An exact per-group filter would be a change to the map\'s URL contract.', + the_map_link_names_the_peoples: 'The link uses ?groups=, which filters the map by ' + + 'PEOPLE GROUP, so it shows exactly the groups this row counts. Written first with ?codes=, ' + + 'which filters by language, it drew 55 pins for Mandarin\'s 36-group row and 57 for Akha\'s ' + + '33 — those extra groups also have nothing but belong to a different row. The map gained the ' + + 'per-group filter rather than the column gaining an excuse.', links: 'No new link enters the map here. A bridge language\'s resources are the ones the pin ' + 'index already carries for that ISO code, already proved by the verification record.', }, @@ -149,7 +151,7 @@ writeSnapshot( { title: 'Training', field: 'training_url', type: 'link' }, { title: 'Languages they speak', field: 'their_languages', type: 'number' }, { title: 'Groups the map link shows', field: 'map_shows_groups', type: 'number' }, - { title: 'Their languages on the map', field: 'map_url', type: 'link' }, + { title: 'These peoples on the map', field: 'map_url', type: 'link' }, ], rows, }, null, 1)}\n`, diff --git a/public/dx-maps/assets/tables/bridge-language-reach.json b/public/dx-maps/assets/tables/bridge-language-reach.json index a829d939a..66d9b7531 100644 --- a/public/dx-maps/assets/tables/bridge-language-reach.json +++ b/public/dx-maps/assets/tables/bridge-language-reach.json @@ -8,7 +8,7 @@ "groups_with_no_way_in": 0, "a_bridge_is_not_their_own_language": "Every group counted here still has NOTHING in its own language. This table ranks the second-best answer, and the word bridge travels with every row.", "three_kinds": "CURATED — checked for those groups. CANDIDATE — computed from published CLDR data about what the country speaks, which is a fact about the country and not about these people. SIGNED — SUN, a constructed signed language that has to be learned. Never summed.", - "the_map_link_shows_languages_not_groups": "The map filters by ISO 639-3, and these rows count GROUPS, so the link shows every Doxa group speaking the languages this bridge's groups speak — more than the row counts. Mandarin: 36 groups, 30 languages, 55 groups drawn; Akha: 33 and 57. The extra groups also have nothing; they are offered a different bridge because they are in a different country. Both numbers ship so the map and the row cannot contradict each other silently. An exact per-group filter would be a change to the map's URL contract.", + "the_map_link_names_the_peoples": "The link uses ?groups=, which filters the map by PEOPLE GROUP, so it shows exactly the groups this row counts. Written first with ?codes=, which filters by language, it drew 55 pins for Mandarin's 36-group row and 57 for Akha's 33 — those extra groups also have nothing but belong to a different row. The map gained the per-group filter rather than the column gaining an excuse.", "links": "No new link enters the map here. A bridge language's resources are the ones the pin index already carries for that ISO code, already proved by the verification record." }, "columns": [ @@ -78,7 +78,7 @@ "type": "number" }, { - "title": "Their languages on the map", + "title": "These peoples on the map", "field": "map_url", "type": "link" } @@ -97,9 +97,9 @@ "film_url": "", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=aen,afg,asf,asp,bfi,bqn,csf,csx,dse,dsl,esl,fsl,gsg,gss,gus,hks,icl,ise,isr,jls,lbs,lgs,lso,lsy,mdl,mzy,nsl,pgz,pks,qae,qao,qbh,qbj,qbn,qbt,qcd,qcm,qcy,qer,qfa,qfj,qga,qge,qgm,qiq,qki,qkm,qkp,qkw,qmv,qnh,qns,qom,qqa,qry,qsm,qso,qsr,qsz,qtp,sdl,sqk,sqs,swl,szs,tsm,xms,ysl,ysm", + "map_url": "../resources-map/index.html?groups=deaf-afghans,deaf-algerians,deaf-angolans,deaf-armenians,deaf-arubans,deaf-azerbaijanis,deaf-bahrainis,deaf-beninese,deaf-bhutanese,deaf-bissau-guineans,deaf-bosnians,deaf-british-virgin-islanders,deaf-bruneians,deaf-bulgarians,deaf-burmese,deaf-cambodians,deaf-cameroonians,deaf-central-africans,deaf-christmas-islanders,deaf-cocos-islanders,deaf-comorans,deaf-congolese-congo,deaf-congolese-democratic-republic-of-the-congo,deaf-cubans,deaf-curacaoan,deaf-cypriots,deaf-djiboutians,deaf-emiratis,deaf-eritreans,deaf-faroese,deaf-fijians,deaf-french-polynesians,deaf-gabonese,deaf-gambians,deaf-georgians,deaf-gibraltarians,deaf-greeks,deaf-guadeloupeans,deaf-guernsey-islanders,deaf-guineans,deaf-guyanese,deaf-hong-kong,deaf-i-kiribati,deaf-icelanders,deaf-iraqis,deaf-israelis,deaf-ivoirians,deaf-jamaicans,deaf-jersey-islanders,deaf-koreans,deaf-kosovar,deaf-kuwaitis,deaf-laotians,deaf-libyans,deaf-liechtensteiners,deaf-luxembourgers,deaf-macao,deaf-mahorais,deaf-maldivans,deaf-maltese,deaf-marshallese,deaf-mauritians,deaf-micronesians,deaf-monacans,deaf-montserratians,deaf-moroccans,deaf-mozambicans,deaf-new-caledonians,deaf-ni-vanuatu,deaf-norfolk-islanders,deaf-omanis,deaf-pakistanis,deaf-palestinian-arabs,deaf-papua-new-guineans,deaf-qataris,deaf-sahrawis,deaf-saint-barth,deaf-saint-helenians,deaf-sammarinese,deaf-samoan,deaf-santomeans,deaf-saudi-arabians,deaf-solomon-islanders,deaf-somalis,deaf-sri-lankans,deaf-sudanese,deaf-surinamers,deaf-svalbardians,deaf-swazis,deaf-swedes,deaf-tongans,deaf-wallisians,deaf-yemenis", "their_languages": 69, - "map_shows_groups": 116 + "map_shows_groups": 93 }, { "language": "Arabic, Standard", @@ -114,9 +114,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/arabic-modern-standard", "training_url": "https://zume.training/ar", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=abv,acx,aju,ayh,gdq,hoh,hss,jbn,shv,siz,sqt,ssh,zum", + "map_url": "../resources-map/index.html?groups=arab-bahraini-sunni,arabic-shihhi,batahira,hadrami-arabs,harasi,hobyot-oman,hobyot-yemen,jerba,jibbali,kumzari,mahra,moroccan-jews,shihuh,siwa-imazighen,socotran", "their_languages": 13, - "map_shows_groups": 32 + "map_shows_groups": 15 }, { "language": "Chinese, Mandarin", @@ -131,9 +131,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/mandarin-taiwan", "training_url": "https://zume.training/zhcn", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=aib,aih,bbh,bgk,bwn,bxu,cuu,ers,giq,gqu,hmh,huo,kaf,lbt,lkc,muq,nmy,nru,peh,srh,sxg,tct,tiz,und,wmg,wuh,ymx,yne,yrn,zhd", + "map_url": "../resources-map/index.html?groups=ai-cham,ainu-china,bit-china,bugan,buryat,cai,eastern-xiangxi-miao,ersu,gao,guaigun,hagei,hongjin-tai,hu,huishui-miao,kucong,lati-china,liang-e,luzu,manyak,minyak,mosuo,naju,namuyi,northern-muji,rao,sanda,sarikoli-tajiks,shixing,tongren-bonan,wenma-zhuang,wunai,wutun,ya,yanghuang,yerong,yunnan-mongol", "their_languages": 30, - "map_shows_groups": 55 + "map_shows_groups": 36 }, { "language": "Arabic, Sudanese", @@ -148,9 +148,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/arabic-sudanese-spoken", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=aft,daj,fuj,kcp,kec,kko,mei,ras,sjg,tag,tbr,wll,wrn,yul", + "map_url": "../resources-map/index.html?groups=afitti,binga,dajo,dar-fur-daju,erenga,fungor,kajakaja,kanga,karko,keiga,kimr,kufa-lima,midob,tagale,tagoy,talasa,tingal,tukum,tumale,tumtum,wali,warnang", "their_languages": 14, - "map_shows_groups": 29 + "map_shows_groups": 22 }, { "language": "Somali", @@ -165,7 +165,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/somali", "training_url": "https://zume.training/so", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=dbr,gex,jii,tqq,xma", + "map_url": "../resources-map/index.html?groups=dabarre,garre,jiiddu,mushungulu,tunni", "their_languages": 5, "map_shows_groups": 5 }, @@ -182,9 +182,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/arabic-chadian-spoken", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=bdo,btf,bvf,bvo,ckq,fni,glc,jeu,klf,kou,kth,mes,mou,msv,mub,mvu,sbj,sjg,trj,vkj,xmj,zna", + "map_url": "../resources-map/index.html?groups=berguid,bernde,bolgo-dugag,bon-gula,boor,fanya,gula,jegu,kajakse,karanga,kendeje,koke,kujarge,majera-chad,marfa,maslam,mesmedje,mogum,mubi,sungor,surbakhal,torom", "their_languages": 22, - "map_shows_groups": 28 + "map_shows_groups": 22 }, { "language": "French", @@ -199,9 +199,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/french", "training_url": "https://zume.training/fr", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=dba,dek,jia,kke,nml,shz,xmj", + "map_url": "../resources-map/index.html?groups=bangi-me,dek,jina,konkabay,majera-cameroon,ndemli,syenara-senufo", "their_languages": 7, - "map_shows_groups": 8 + "map_shows_groups": 7 }, { "language": "Indonesian", @@ -216,9 +216,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/indonesian-yesus", "training_url": "https://zume.training/id", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=abf,alo,amv,asl,bls,bna,bsb,bvt,coa,dok,ges,goq,gzn,hik,htu,kns,kvh,kvp,kxd,kyi,lcd,lcq,lhn,ltu,mnq,mqi,ttg,udj", + "map_url": "../resources-map/index.html?groups=abai-sungai,ambelau,asilulu,balaesan,bati,bisayan-tutong,bonerate,cocos-malays,dondo,gane,geser-gorom,gorap,hitu,kedayan,kensiu,kiput,komfana,komodo,lahanan,larike-wakasihu,latu,lola,luhu,mairiri,mendriq,seit-kaitetu,tutung,ujir", "their_languages": 28, - "map_shows_groups": 34 + "map_shows_groups": 28 }, { "language": "Swahili", @@ -233,9 +233,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/swahili-kenya", "training_url": "https://zume.training/swa", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=kcn,kcu,ndt,sbm,tbm,yul", + "map_url": "../resources-map/index.html?groups=kami,ndunga,nubi,sagara,tagbo,yulu-binga", "their_languages": 6, - "map_shows_groups": 10 + "map_shows_groups": 6 }, { "language": "Akha", @@ -250,9 +250,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/akha", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=bgk,bgl,hld,hnu,khf,kuf,kyp,mra,oog,pho,pnx,scb,slt,tct,tgr,tyh,tyj,uan,und,xhv", + "map_url": "../resources-map/index.html?groups=bit-laos,bo,chut-laos,halang-doan,hung,katu-adek,katu-dark-kang,katu-hanna,katu-triew,khua,khuen,kuan,laoseng,mlabri,o-du,phongku,phongset,phunoi-laos,pong,pong-phen,pong-poong,pong-puang,pong-seng,sida,sila-laos,tai-he,tai-khang,tai-laan,tai-men,tayten,thai-ae,thai-toum,tong", "their_languages": 20, - "map_shows_groups": 57 + "map_shows_groups": 33 }, { "language": "Arabic, Libyan", @@ -267,9 +267,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/arabic-libyan", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=jbn", + "map_url": "../resources-map/index.html?groups=nefusa-imazighen,zuara", "their_languages": 1, - "map_shows_groups": 4 + "map_shows_groups": 2 }, { "language": "Russian", @@ -284,7 +284,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/russian", "training_url": "https://zume.training/ru", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=akv,ani,bph,cji,khv,kpt,kva,tin,xdq", + "map_url": "../resources-map/index.html?groups=akhwakh,andi,bagvalal,botlikh,chamalal,kaitag,karata,khwarshi,tindi", "their_languages": 9, "map_shows_groups": 9 }, @@ -301,7 +301,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/tamazight-central-atlas", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=cnu,kcy", + "map_url": "../resources-map/index.html?groups=belbali,chenoua", "their_languages": 2, "map_shows_groups": 2 }, @@ -318,7 +318,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/japanese", "training_url": "https://zume.training/ja", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=okn,rys,tkn,yoi,yox", + "map_url": "../resources-map/index.html?groups=oki-no-erabu,toku-no-shima,yaeyama,yonaguni,yoron", "their_languages": 5, "map_shows_groups": 5 }, @@ -335,7 +335,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/ale-gawwada", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=hoz,lgn,sbf,sze", + "map_url": "../resources-map/index.html?groups=begi-mao,opuua-shita,seze,shabo", "their_languages": 4, "map_shows_groups": 4 }, @@ -352,9 +352,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/shimaore", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=buc", + "map_url": "../resources-map/index.html?groups=bushi", "their_languages": 1, - "map_shows_groups": 3 + "map_shows_groups": 1 }, { "language": "Tigrinya, Eritrea", @@ -369,9 +369,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/tigrinya-eritrea", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=nrb", + "map_url": "../resources-map/index.html?groups=nara", "their_languages": 1, - "map_shows_groups": 2 + "map_shows_groups": 1 }, { "language": "Moore", @@ -386,7 +386,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/moore", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=kqg,seq", + "map_url": "../resources-map/index.html?groups=khe,senara-senufo", "their_languages": 2, "map_shows_groups": 2 }, @@ -403,7 +403,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/hausa", "training_url": "https://zume.training/ha", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=tda", + "map_url": "../resources-map/index.html?groups=tagdal", "their_languages": 1, "map_shows_groups": 1 }, @@ -420,7 +420,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/urdu", "training_url": "https://zume.training/ur", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=btv,dml,gwf,ush,xka", + "map_url": "../resources-map/index.html?groups=bateri,damel,gowro,kalkoti,ushojo", "their_languages": 5, "map_shows_groups": 5 }, @@ -437,7 +437,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/bemba", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=ttl", + "map_url": "../resources-map/index.html?groups=totela", "their_languages": 1, "map_shows_groups": 1 }, @@ -454,7 +454,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/farsi-western", "training_url": "https://zume.training/fa", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=bsg,kgn,soj", + "map_url": "../resources-map/index.html?groups=bashkardi,northern-tati,soi", "their_languages": 3, "map_shows_groups": 3 }, @@ -471,9 +471,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/hausa", "training_url": "https://zume.training/ha", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=gwb,ibr,jmi,mew,tgd,vkz", + "map_url": "../resources-map/index.html?groups=gwa,ibuoro,jimi,koro-zuba,maha,tsagu", "their_languages": 6, - "map_shows_groups": 4 + "map_shows_groups": 6 }, { "language": "Vietnamese", @@ -488,9 +488,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/vietnamese", "training_url": "https://zume.training/vi", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=laq,lbt,lha,phh,scb,slt,tsl", + "map_url": "../resources-map/index.html?groups=chut-vietnam,laha,lati-vietnam,phula,pu-peo,sila-vietnam,tsun-lao", "their_languages": 7, - "map_shows_groups": 11 + "map_shows_groups": 7 }, { "language": "English", @@ -505,9 +505,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/english", "training_url": "https://zume.training/en", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=bdj,bqk,njl,nyr", + "map_url": "../resources-map/index.html?groups=banda-mbres,bari-bai,ngalgulgule,wandya", "their_languages": 4, - "map_shows_groups": 6 + "map_shows_groups": 4 }, { "language": "Portuguese", @@ -522,7 +522,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/portuguese-portugal", "training_url": "https://zume.training/pt", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=nye", + "map_url": "../resources-map/index.html?groups=nyengo", "their_languages": 1, "map_shows_groups": 1 }, @@ -539,7 +539,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/dzongkha", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=bro,goe,luk,neh,ole,tgf", + "map_url": "../resources-map/index.html?groups=brokkat,chali,gongduk,lunape,nyenpa,ole", "their_languages": 6, "map_shows_groups": 6 }, @@ -556,9 +556,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/telugu", "training_url": "https://zume.training/te", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=anq,kbg,kyw,mjp,nbt,nkd,oon,std", + "map_url": "../resources-map/index.html?groups=jadupetia,jarawas,khamba,koiren,malai-pandaram,na,onge,sentinelese", "their_languages": 8, - "map_shows_groups": 11 + "map_shows_groups": 8 }, { "language": "Thai", @@ -573,9 +573,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/thai", "training_url": "https://zume.training/th", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=pho", + "map_url": "../resources-map/index.html?groups=phunoi-thailand", "their_languages": 1, - "map_shows_groups": 4 + "map_shows_groups": 1 }, { "language": "Nepali", @@ -590,9 +590,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/nepali", "training_url": "https://zume.training/ne", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=gyo,phj,tsk", + "map_url": "../resources-map/index.html?groups=gyasumdoba,pahari-nagarkotis,tseku", "their_languages": 3, - "map_shows_groups": 4 + "map_shows_groups": 3 }, { "language": "Hebrew (modern)", @@ -607,7 +607,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/hebrew", "training_url": "", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=lsd", + "map_url": "../resources-map/index.html?groups=kurdistani-jews", "their_languages": 1, "map_shows_groups": 1 }, @@ -624,7 +624,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/burmese-common", "training_url": "https://zume.training/my", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=dnu", + "map_url": "../resources-map/index.html?groups=danau", "their_languages": 1, "map_shows_groups": 1 }, @@ -641,9 +641,9 @@ "film_url": "https://jesusfilm.org/watch/jesus/portuguese-portugal", "training_url": "https://zume.training/pt", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=adw,asn,atr,avv,awt,pto,swx,txi,und,unk,urp,urz,xmo,xor", + "map_url": "../resources-map/index.html?groups=amundava,arawete,asurini-xingu,ava-canoeiro,enawen-naw,korubo,morerebi,sapanawas,suruwaha,txikao,uncontacted-of-bararati,uncontacted-of-cumina,uncontacted-of-madeirinha,uncontacted-of-mapuera,uncontacted-of-parauari,uncontacted-of-rio-liberdade,uncontacted-of-rio-tapirape,uncontacted-of-serra-do-taquaral,uncontacted-of-teles-pires,uraparaquara,uru-pa-in,waimiri-atroari,zoe", "their_languages": 14, - "map_shows_groups": 30 + "map_shows_groups": 23 }, { "language": "Spanish", @@ -658,7 +658,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/spanish-latin-american", "training_url": "https://zume.training/es", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=cbb,cby,mbn,tbn", + "map_url": "../resources-map/index.html?groups=cabiyari,carabayo,eastern-tunebo,macaguan", "their_languages": 4, "map_shows_groups": 4 }, @@ -675,7 +675,7 @@ "film_url": "https://jesusfilm.org/watch/jesus/spanish-latin-american", "training_url": "https://zume.training/es", "still_nothing_of_their_own": true, - "map_url": "../resources-map/index.html?codes=hug", + "map_url": "../resources-map/index.html?groups=huachipaire", "their_languages": 1, "map_shows_groups": 1 } diff --git a/public/dx-maps/doxa-maps-spa/manifest.json b/public/dx-maps/doxa-maps-spa/manifest.json index 11de7c41a..600b19c05 100644 --- a/public/dx-maps/doxa-maps-spa/manifest.json +++ b/public/dx-maps/doxa-maps-spa/manifest.json @@ -578,7 +578,7 @@ "bundle": "gospel-resources", "scriptUrl": "./gospel-resources/gospel-resources.js", "output": "dx-maps/gospel-resources/gospel-resources.js", - "integrity": "sha384-S1+u/8akrnXr9na9ytGvmEyVdNQSISjhL0qeWyfWccKiSpA8ynv70Dn0yscVGlUJ", + "integrity": "sha384-4Sf2kC/v3ea3FRq5yUtn2m6hW1rZm4gUwFeIIqC6CF6l+qX+MXco1hyFBUMpXptX", "elements": [ "gospel-resources-map" ], @@ -598,7 +598,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -612,7 +612,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -626,7 +626,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } }, { @@ -640,7 +640,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -654,7 +654,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } } ] diff --git a/public/dx-maps/gospel-resources/charts/index.html b/public/dx-maps/gospel-resources/charts/index.html index 41e9328ca..2d55b1fc1 100644 --- a/public/dx-maps/gospel-resources/charts/index.html +++ b/public/dx-maps/gospel-resources/charts/index.html @@ -32,7 +32,7 @@ - + - + - + - + - + \n\n" + "script": "\n\n" } }, { @@ -612,7 +612,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -626,7 +626,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } }, { @@ -640,7 +640,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -654,7 +654,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } } ]