[{"data":1,"prerenderedAt":1745},["ShallowReactive",2],{"navigation-nl":3,"content-urls":13,"pagesContext-nl-2":153,"pagesContext-nl-3":179,"authorsContext-nl-jeroenbach":199,"postsContext-nl-3-undefined":216},[4,7,10],{"label":5,"to":6},"Blog","\u002Fposts",{"label":8,"to":9},"Portfolio","\u002Fnl\u002Fcontent\u002F20-portfolio",{"label":11,"to":12},"Over","\u002Fnl\u002Fcontent\u002F30-over",{"page":14,"blogPost":76,"blog":152},{"1":15,"10":32,"20":42,"30":52,"404":63},{"en":16,"nl":26,"de":29},{"title":17,"path":18,"stem":19,"contentId":20,"url":21,"dateModified":22,"slug":23,"locale":24,"type":25},"Home","\u002Fcontent\u002Fhome","content\u002F1.home",1,"","2025-11-02T18:00:00",null,"en","page",{"title":17,"path":18,"stem":19,"contentId":20,"url":27,"dateModified":22,"slug":23,"locale":28,"type":25},"\u002Fnl","nl",{"title":17,"path":18,"stem":19,"contentId":20,"url":30,"dateModified":22,"slug":23,"locale":31,"type":25},"\u002Fde","de",{"en":33,"nl":38,"de":40},{"title":5,"path":34,"stem":35,"contentId":36,"url":6,"dateModified":37,"slug":23,"locale":24,"type":25},"\u002Fcontent\u002Fposts","content\u002F10.posts",10,"2025-10-26T18:00:00",{"title":5,"path":34,"stem":35,"contentId":36,"url":39,"dateModified":37,"slug":23,"locale":28,"type":25},"\u002Fnl\u002Fposts",{"title":5,"path":34,"stem":35,"contentId":36,"url":41,"dateModified":37,"slug":23,"locale":31,"type":25},"\u002Fde\u002Fposts",{"en":43,"nl":49,"de":50},{"title":8,"path":44,"stem":45,"contentId":46,"url":47,"dateModified":48,"slug":23,"locale":24,"type":25},"\u002Fcontent\u002Fportfolio","content\u002F20.portfolio",20,"\u002Fcontent\u002F20-portfolio","2026-07-12T18:00:00",{"title":8,"path":44,"stem":45,"contentId":46,"url":9,"dateModified":48,"slug":23,"locale":28,"type":25},{"title":8,"path":44,"stem":45,"contentId":46,"url":51,"dateModified":48,"slug":23,"locale":31,"type":25},"\u002Fde\u002Fcontent\u002F20-portfolio",{"en":53,"nl":59,"de":60},{"title":54,"path":55,"stem":56,"contentId":57,"url":58,"dateModified":48,"slug":23,"locale":24,"type":25},"About","\u002Fcontent\u002Fabout","content\u002F30.about",30,"\u002Fcontent\u002F30-about",{"title":11,"path":55,"stem":56,"contentId":57,"url":12,"dateModified":48,"slug":23,"locale":28,"type":25},{"title":61,"path":55,"stem":56,"contentId":57,"url":62,"dateModified":48,"slug":23,"locale":31,"type":25},"Über mich","\u002Fde\u002Fcontent\u002F30-uber-mich",{"en":64,"nl":70,"de":73},{"title":65,"path":66,"stem":67,"contentId":68,"url":69,"dateModified":22,"slug":23,"locale":24,"type":25},"Page not found","\u002Fcontent\u002Fpage-not-found","content\u002F404.page-not-found",404,"\u002Fcontent\u002F404-page-not-found",{"title":71,"path":66,"stem":67,"contentId":68,"url":72,"dateModified":22,"slug":23,"locale":28,"type":25},"Pagina niet gevonden","\u002Fnl\u002Fcontent\u002F404-pagina-niet-gevonden",{"title":74,"path":66,"stem":67,"contentId":68,"url":75,"dateModified":22,"slug":23,"locale":31,"type":25},"Seite nicht gefunden","\u002Fde\u002Fcontent\u002F404-seite-nicht-gefunden",{"1":77,"2":91,"3":106,"4":123,"5":138},{"en":78,"nl":85,"de":88},{"title":79,"path":80,"stem":81,"contentId":20,"dateModified":82,"slug":23,"url":83,"locale":24,"type":84},"Mastering Conditional Property Types with Vue 3.3 Generics","\u002Fposts\u002F1","posts\u002F1","2025-05-27T11:30:00","\u002Fposts\u002F1-mastering-conditional-property-types-with-vue-3_3-generics","blogPost",{"title":86,"path":80,"stem":81,"contentId":20,"dateModified":82,"slug":23,"url":87,"locale":28,"type":84},"Conditionele Property Types beheersen met Vue 3.3 Generics","\u002Fnl\u002Fposts\u002F1-conditionele-property-types-beheersen-met-vue-3_3-generics",{"title":89,"path":80,"stem":81,"contentId":20,"dateModified":82,"slug":23,"url":90,"locale":31,"type":84},"Bedingte Property-Typen mit Vue 3.3 Generics meistern","\u002Fde\u002Fposts\u002F1-bedingte-property-typen-mit-vue-3_3-generics-meistern",{"en":92,"nl":99,"de":102},{"title":93,"path":94,"stem":95,"contentId":96,"dateModified":97,"slug":23,"url":98,"locale":24,"type":84},"Ditching the Cookie Banners: Run Plausible Analytics on Azure Kubernetes","\u002Fposts\u002F2","posts\u002F2",2,"2025-10-04T13:00:00","\u002Fposts\u002F2-ditching-the-cookie-banners:-run-plausible-analytics-on-azure-kubernetes",{"title":100,"path":94,"stem":95,"contentId":96,"dateModified":97,"slug":23,"url":101,"locale":28,"type":84},"Afscheid van Cookie Banners: Draai Plausible Analytics op Azure Kubernetes","\u002Fnl\u002Fposts\u002F2-afscheid-van-cookie-banners:-draai-plausible-analytics-op-azure-kubernetes",{"title":103,"path":94,"stem":95,"contentId":96,"dateModified":97,"slug":104,"url":105,"locale":31,"type":84},"Abschied von Cookie-Bannern: Plausible Analytics auf Azure Kubernetes betreiben","plausible-analytics-azure-kubernetes-ohne-cookie-banner","\u002Fde\u002Fposts\u002F2-plausible-analytics-azure-kubernetes-ohne-cookie-banner",{"en":107,"nl":115,"de":119},{"title":108,"path":109,"stem":110,"contentId":111,"dateModified":112,"slug":113,"url":114,"locale":24,"type":84},"Track how many people read your articles, using Plausible.io, Vue.js and Azure functions","\u002Fposts\u002F3","posts\u002F3",3,"2025-08-03T15:45:00","track-article-reads-plausible-vue-azure-functions","\u002Fposts\u002F3-track-article-reads-plausible-vue-azure-functions",{"title":116,"path":109,"stem":110,"contentId":111,"dateModified":112,"slug":117,"url":118,"locale":28,"type":84},"Volg hoeveel mensen je artikelen lezen, met Plausible.io, Vue.js en Azure functions","artikel-lezingen-volgen-plausible-vue-azure-functions","\u002Fnl\u002Fposts\u002F3-artikel-lezingen-volgen-plausible-vue-azure-functions",{"title":120,"path":109,"stem":110,"contentId":111,"dateModified":112,"slug":121,"url":122,"locale":31,"type":84},"Verfolgen Sie, wie viele Menschen Ihre Artikel lesen, mit Plausible.io, Vue.js und Azure Functions","artikel-aufrufe-verfolgen-plausible-vue-azure-functions","\u002Fde\u002Fposts\u002F3-artikel-aufrufe-verfolgen-plausible-vue-azure-functions",{"en":124,"nl":131,"de":134},{"title":125,"path":126,"stem":127,"contentId":128,"dateModified":129,"slug":23,"url":130,"locale":24,"type":84},"Deploy a production-ready Kubernetes Cluster on Azure with Terraform","\u002Fposts\u002F4","posts\u002F4",4,"2025-12-06T21:00:00","\u002Fposts\u002F4-deploy-a-production-ready-kubernetes-cluster-on-azure-with-terraform",{"title":132,"path":126,"stem":127,"contentId":128,"dateModified":129,"slug":23,"url":133,"locale":28,"type":84},"Implementeer een productie-klaar Kubernetes Cluster op Azure met Terraform","\u002Fnl\u002Fposts\u002F4-implementeer-een-productie-klaar-kubernetes-cluster-op-azure-met-terraform",{"title":135,"path":126,"stem":127,"contentId":128,"dateModified":129,"slug":136,"url":137,"locale":31,"type":84},"Einen produktionsreifen Kubernetes-Cluster auf Azure mit Terraform bereitstellen","produktionsreifer-kubernetes-cluster-azure-terraform","\u002Fde\u002Fposts\u002F4-produktionsreifer-kubernetes-cluster-azure-terraform",{"en":139,"nl":146,"de":149},{"title":140,"path":141,"stem":142,"contentId":143,"dateModified":144,"slug":23,"url":145,"locale":24,"type":84},"Array to Map conversion in Typescript, with type safety","\u002Fposts\u002F5","posts\u002F5",5,"2025-09-29T21:00:00","\u002Fposts\u002F5-array-to-map-conversion-in-typescript-with-type-safety",{"title":147,"path":141,"stem":142,"contentId":143,"dateModified":144,"slug":23,"url":148,"locale":28,"type":84},"Array naar Map conversie in Typescript, met type veiligheid","\u002Fnl\u002Fposts\u002F5-array-naar-map-conversie-in-typescript-met-type-veiligheid",{"title":150,"path":141,"stem":142,"contentId":143,"dateModified":144,"slug":23,"url":151,"locale":31,"type":84},"Array zu Map Konvertierung in TypeScript, mit Typsicherheit","\u002Fde\u002Fposts\u002F5-array-zu-map-konvertierung-in-typescript-mit-typsicherheit",{},{"id":154,"title":155,"body":156,"canonicalUrl":23,"company":23,"contentId":96,"dateModified":23,"datePublished":23,"description":162,"draft":165,"enableProse":165,"excludeFromNavigation":165,"extension":166,"imageAlt":23,"imageUrl":23,"meta":167,"navigation":173,"partial":173,"path":174,"seo":175,"slug":23,"stem":176,"url":177,"__hash__":178},"pages_nl\u002Fcontent\u002F_footer.md","Over Jeroen Bach",{"type":157,"value":158,"toc":163},"minimark",[159],[160,161,162],"p",{},"Ontworpen in Figma en gebouwd met Vue.js, Nuxt.js en Tailwind CSS.\nGedeployed via Cloudflare Pages en Cloudflare Workers, met de API draaiend op Azure Kubernetes Service.\nWebsite analytics worden aangedreven door Plausible Analytics, ook gedeployed met Azure Kubernetes Service.",{"title":21,"searchDepth":96,"depth":96,"links":164},[],false,"md",{"readingTime":168},{"text":169,"minutes":170,"time":171,"words":172},"1 min read",0.195,11700,39,true,"\u002Fcontent\u002F_footer",{"title":155,"description":162},"content\u002F_footer","\u002Fnl\u002Fcontent\u002F2-over-jeroen-bach","-_jtzbgYrOFwHBLw8WNObSEpfLuvgv2JeDexX9a0kgE",{"id":180,"title":181,"body":182,"canonicalUrl":23,"company":23,"contentId":111,"dateModified":23,"datePublished":23,"description":186,"draft":165,"enableProse":165,"excludeFromNavigation":165,"extension":166,"imageAlt":23,"imageUrl":23,"meta":189,"navigation":173,"partial":173,"path":194,"seo":195,"slug":23,"stem":196,"url":197,"__hash__":198},"pages_nl\u002Fcontent\u002F_footer-about.md","Footer About",{"type":157,"value":183,"toc":187},[184],[160,185,186],{},"Ik ben een Engineering Manager met 15 jaar ervaring in het combineren van hands-on engineering met people leadership.\nIk haal de meeste voldoening uit het creëren van de omstandigheden waarin een team het beste werk kan leveren.\nDeze blog is waar ik technieken en inzichten deel voor het bouwen van geweldige software, geïnspireerd door echte projecten.",{"title":21,"searchDepth":96,"depth":96,"links":188},[],{"readingTime":190},{"text":169,"minutes":191,"time":192,"words":193},0.28,16800,56,"\u002Fcontent\u002F_footer-about",{"description":186},"content\u002F_footer-about","\u002Fnl\u002Fcontent\u002F3-footer-about","_SX00JeouAxqL_ed2QQW6irzQ4vRWBBJyiAnWWAyVgA",{"id":200,"company":201,"extension":205,"fullName":206,"github":207,"homePage":208,"imageUrl":204,"linkedIn":209,"meta":210,"role":211,"stem":212,"twitter":213,"userName":214,"__hash__":215},"authors_nl\u002Fauteurs\u002Fjeroenbach.yaml",{"name":202,"url":203,"imageUrl":204},"Bach.Software","https:\u002F\u002Fbach.software","\u002FJEROEN-4238-SQUARE-zoom.jpeg","yaml","Jeroen Bach","https:\u002F\u002Fgithub.com\u002Fjeroenbach","https:\u002F\u002Fbach.software\u002Fpages\u002Fabout","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fjeroenbach\u002F",{},"Engineering Manager","auteurs\u002Fjeroenbach","https:\u002F\u002Fx.com\u002Fjeroenbach","jeroenbach","Q6kTMnWDSw1HcAbrD4xHxjqDOofHjl-qaYxGw-Ifpf8",{"id":217,"title":116,"authorName":214,"body":218,"canonicalUrl":23,"category":1716,"contentId":111,"dateModified":112,"datePublished":112,"description":1717,"draft":165,"excerpt":1718,"extension":166,"imageAlt":1730,"imagePosition":1731,"imageUrl":1732,"keywords":1733,"meta":1734,"navigation":173,"path":109,"readingTime":1735,"seo":1740,"slug":117,"stem":110,"url":118,"__hash__":1741,"author":1742},"posts_nl\u002Fposts\u002F3.md",{"type":157,"value":219,"toc":1710},[220,240,243,250,255,266,306,309,314,322,326,329,334,339,350,363,367,370,372,389,393,402,1682,1696,1700,1703,1706],[160,221,222,223,227,228,231,232,235,236,239],{},"In het vorige artikel heb je geleerd hoe je ",[224,225,226],"strong",{},"Plausible"," kunt instellen, een ",[224,229,230],{},"privacyvriendelijke"," en ",[224,233,234],{},"betaalbare"," analyseoplossing.\nIn dit artikel leer je hoe je Plausible kunt gebruiken om het ",[224,237,238],{},"leesgedrag"," van je bezoekers te verzamelen en bovenaan elk van je artikelen te tonen hoeveel mensen het hebben gelezen.",[160,241,242],{},"Informatie verzamelen over je bezoekers is geweldig, maar meer inzicht krijgen in hoeveel van hen je artikelen daadwerkelijk lezen is nog beter.\nOm dit te doen, moeten we de voortgang die je bezoeker maakt in een aantal fasen definiëren. Deze fasen zullen we later omzetten in doelen, die je gedetailleerde informatie geven over hoe goed je artikelen presteren.",[244,245],"post-image",{"alt":246,"caption":247,"css-class":248,"src":249},"Onze leesvoortgangsstappen gedefinieerd als doelen in Plausible","Hier zie je hoeveel mensen mijn eerste artikel hebben geopend, bekeken of gelezen","aspect-[735\u002F468]","posts\u002F3\u002Fplausibe-goals.png",[251,252,254],"h2",{"id":253},"leesgedrag-volgen","Leesgedrag volgen",[160,256,257,258,261,262,265],{},"We gebruiken een door Medium.com geïnspireerde ",[224,259,260],{},"\"leestijd\"",". ",[224,263,264],{},"Medium.com"," berekent de leestijd op basis van de gemiddelde leessnelheid van een volwassene (wat ongeveer 265 woorden per minuut is) en deelt het totale aantal woorden door dit getal.\nDus als je artikel 2650 woorden bevat, duurt het ongeveer 10 minuten voor je bezoekers om het te lezen. Bij het meten van de voortgang definiëren we een aantal stappen om de voortgang aan te geven, elk vertegenwoordigt een percentage van de totale leestijd:",[267,268,269,276,282,288,294,300],"ul",{},[270,271,272,275],"li",{},[224,273,274],{},"opened"," (0%): nog niet begonnen met lezen",[270,277,278,281],{},[224,279,280],{},"peeked"," (10%): snel door het artikel gescrold",[270,283,284,287],{},[224,285,286],{},"quarter-read"," (25%): begonnen met lezen, maar gestopt bij een kwart",[270,289,290,293],{},[224,291,292],{},"half-read"," (50%): halverwege gelezen",[270,295,296,299],{},[224,297,298],{},"three-quarter-read"," (75%): tussen halverwege of het hele artikel gelezen voor snelle lezers",[270,301,302,305],{},[224,303,304],{},"read"," (100%): je artikel met grote aandacht gelezen",[160,307,308],{},"Het is ook belangrijk om een aantal scenario's in gedachten te houden.",[310,311,313],"h4",{"id":312},"scenario-1-de-lezer-wordt-afgeleid-en-nu-staat-je-artikel-op-de-achtergrond","Scenario 1 => de lezer wordt afgeleid en nu staat je artikel op de achtergrond",[160,315,316,317,321],{},"Dit is gemakkelijk te verzachten, we kunnen een event listener gebruiken om wijzigingen in de zichtbaarheid van documenten te detecteren en de timer te stoppen: ",[318,319,320],"code",{},"document.addEventListener(\"visibilitychange\"",".",[310,323,325],{"id":324},"scenario-2-de-lezer-loopt-weg-van-de-computer","Scenario 2 => de lezer loopt weg van de computer",[160,327,328],{},"Dit is iets moeilijker te detecteren, maar een optie is om een andere indicator van 'lezen' bij te houden, namelijk het scrollen.\nDus naast de tijdsvoortgang volgen we ook de scrollvoortgang, en pas wanneer zowel de tijd als het scrollen een bepaald niveau bereiken, werken we de\nleesvoortgang bij naar de volgende status.",[160,330,331],{},[224,332,333],{},"Klik op de knop om te zien hoe je het doet bij het lezen van deze pagina",[335,336],"page-read-progress",{":reading-time":337,":word-count":338},"readingTime.time","readingTime.words",[160,340,341,342],{},"Om de leesvoortgang van je bezoekers te volgen, heb ik een handige composable geschreven die je hier kunt bekijken: ",[343,344,349],"a",{":target":345,"href":346,"rel":347},"\\_blank","https:\u002F\u002Fgithub.com\u002Fjeroenbach\u002Fbach.software\u002Fblob\u002Fmain\u002Fsrc\u002Fapp\u002Fcomposables\u002FuseReadProgress.ts",[348],"nofollow","useReadProgress.ts",[160,351,352,353,358,359,362],{},"Naarmate het lezen vordert en de status verandert, werken we Plausible bij met aangepaste events.\nHiervoor heb ik een andere composable geschreven, die je hier kunt bekijken: ",[343,354,357],{":target":345,"href":355,"rel":356},"https:\u002F\u002Fgithub.com\u002Fjeroenbach\u002Fbach.software\u002Fblob\u002Fmain\u002Fsrc\u002Fapp\u002Fcomposables\u002FuseReadProgressTracking.ts",[348],"useReadProgressTracking.ts",".\nHet zet de percentages van ",[318,360,361],{},"useReadProgress"," om in de gedefinieerde volgdoelen en stuurt tracking events naar Plausible.",[251,364,366],{"id":365},"maak-doelen-aan-voor-elke-stap-in-plausible","Maak doelen aan voor elke stap in Plausible",[160,368,369],{},"Wanneer je de bovenstaande stappen als doelen in Plausible definieert, kun je een mooie trechter zien voor elk van je artikelen en hoe ver je bezoekers ermee komen.",[244,371],{"alt":246,"caption":246,"css-class":248,"src":249},[160,373,374,375,378,379,382,383,385,386,388],{},"Om doelen in Plausible in te stellen, ga je naar ",[318,376,377],{},"Site Settings"," > ",[318,380,381],{},"Goals"," en voeg je een doel toe voor elk van de stappen (",[224,384,274],{},", ",[224,387,280],{},", etc).",[251,390,392],{"id":391},"je-paginastatistieken-lezen-uit-plausible-met-behulp-van-een-azure-function","Je paginastatistieken lezen uit Plausible, met behulp van een Azure Function",[160,394,395,396,401],{},"Plausible biedt een ",[343,397,400],{":target":345,"href":398,"rel":399},"https:\u002F\u002Fplausible.io\u002Fdocs\u002Fstats-api",[348],"Stats API"," die je kunt bevragen om bijvoorbeeld de statistieken van je aangemaakte doelen op te halen.\nZie het volgende codevoorbeeld, dat laat zien hoe je de API kunt bevragen.",[403,404,405,1127,1300],"code-group",{},[406,407,412],"pre",{"className":408,"code":409,"filename":410,"language":411,"meta":21,"style":21},"language-csharp shiki shiki-themes github-light github-dark","public async Task\u003CPageReads> GetPageReads(string url)\n{\n    using var scope = _logger.BeginScope(new Dictionary\u003Cstring, object> { { \"url\", url } });\n\n    var uri = new Uri(url);\n    var domain = uri.Host;\n    var relativeUrl = uri.PathAndQuery;\n\n    var payload = new\n    {\n        site_id = domain,\n        metrics = new[] { \"visitors\" }, \u002F\u002F Haal het unieke aantal leesevents op\n        date_range = \"all\",\n        filters = new[]{\n            new List\u003Cobject> { \"contains\", \"event:page\", new[] { relativeUrl } },\n            new List\u003Cobject> { \"is\", \"event:goal\", new[] {\"read\", \"three-quarter-read\", \"half-read\", \"quarter-read\", \"peeked\", \"opened\"} },\n        },\n        dimensions = new[] { \"event:goal\" },\n    };\n\n    var jsonPayload = JsonSerializer.Serialize(payload);\n    _logger.LogInformation(\"Payload: {jsonPayload}\", jsonPayload);\n\n    var response = await SendRequest(jsonPayload);\n    var responseContent = await response.Content.ReadAsStringAsync();\n    _logger.LogInformation(\"Response: {responseContent}\", responseContent);\n\n    var queryResult = JsonSerializer.Deserialize\u003CQueryResult>(responseContent);\n    if (queryResult == null)\n    {\n        throw new InvalidOperationException(\"Failed to deserialize the response content.\");\n    }\n\n    var resultsDict = queryResult.Results.ToDictionary(x => x.Dimensions.First(), x => x.Metrics.First());\n\n    return new PageReads\n    {\n        Read = resultsDict.GetValueOrDefault(\"read\"),\n        ThreeQuarterRead = resultsDict.GetValueOrDefault(\"three-quarter-read\"),\n        HalfRead = resultsDict.GetValueOrDefault(\"half-read\"),\n        QuarterRead = resultsDict.GetValueOrDefault(\"quarter-read\"),\n        Peeked = resultsDict.GetValueOrDefault(\"peeked\"),\n        Opened = resultsDict.GetValueOrDefault(\"opened\"),\n    };\n}\n","C#","csharp",[318,413,414,454,459,506,511,530,543,556,561,574,579,591,614,628,641,672,731,737,754,760,764,783,800,805,824,845,860,865,888,906,910,929,935,940,985,990,1001,1006,1027,1044,1062,1080,1098,1116,1121],{"__ignoreMap":21},[415,416,418,422,425,429,433,436,439,442,445,448,451],"span",{"class":417,"line":20},"line",[415,419,421],{"class":420},"szBVR","public",[415,423,424],{"class":420}," async",[415,426,428],{"class":427},"sScJk"," Task",[415,430,432],{"class":431},"sVt8B","\u003C",[415,434,435],{"class":427},"PageReads",[415,437,438],{"class":431},"> ",[415,440,441],{"class":427},"GetPageReads",[415,443,444],{"class":431},"(",[415,446,447],{"class":420},"string",[415,449,450],{"class":427}," url",[415,452,453],{"class":431},")\n",[415,455,456],{"class":417,"line":96},[415,457,458],{"class":431},"{\n",[415,460,461,464,467,470,473,476,479,481,484,487,489,491,493,496,499,503],{"class":417,"line":111},[415,462,463],{"class":420},"    using",[415,465,466],{"class":420}," var",[415,468,469],{"class":427}," scope",[415,471,472],{"class":420}," =",[415,474,475],{"class":431}," _logger.",[415,477,478],{"class":427},"BeginScope",[415,480,444],{"class":431},[415,482,483],{"class":420},"new",[415,485,486],{"class":427}," Dictionary",[415,488,432],{"class":431},[415,490,447],{"class":420},[415,492,385],{"class":431},[415,494,495],{"class":420},"object",[415,497,498],{"class":431},"> { { ",[415,500,502],{"class":501},"sZZnC","\"url\"",[415,504,505],{"class":431},", url } });\n",[415,507,508],{"class":417,"line":128},[415,509,510],{"emptyLinePlaceholder":173},"\n",[415,512,513,516,519,521,524,527],{"class":417,"line":143},[415,514,515],{"class":420},"    var",[415,517,518],{"class":427}," uri",[415,520,472],{"class":420},[415,522,523],{"class":420}," new",[415,525,526],{"class":427}," Uri",[415,528,529],{"class":431},"(url);\n",[415,531,533,535,538,540],{"class":417,"line":532},6,[415,534,515],{"class":420},[415,536,537],{"class":427}," domain",[415,539,472],{"class":420},[415,541,542],{"class":431}," uri.Host;\n",[415,544,546,548,551,553],{"class":417,"line":545},7,[415,547,515],{"class":420},[415,549,550],{"class":427}," relativeUrl",[415,552,472],{"class":420},[415,554,555],{"class":431}," uri.PathAndQuery;\n",[415,557,559],{"class":417,"line":558},8,[415,560,510],{"emptyLinePlaceholder":173},[415,562,564,566,569,571],{"class":417,"line":563},9,[415,565,515],{"class":420},[415,567,568],{"class":427}," payload",[415,570,472],{"class":420},[415,572,573],{"class":420}," new\n",[415,575,576],{"class":417,"line":36},[415,577,578],{"class":431},"    {\n",[415,580,582,585,588],{"class":417,"line":581},11,[415,583,584],{"class":431},"        site_id ",[415,586,587],{"class":420},"=",[415,589,590],{"class":431}," domain,\n",[415,592,594,597,599,601,604,607,610],{"class":417,"line":593},12,[415,595,596],{"class":431},"        metrics ",[415,598,587],{"class":420},[415,600,523],{"class":420},[415,602,603],{"class":431},"[] { ",[415,605,606],{"class":501},"\"visitors\"",[415,608,609],{"class":431}," }, ",[415,611,613],{"class":612},"sJ8bj","\u002F\u002F Haal het unieke aantal leesevents op\n",[415,615,617,620,622,625],{"class":417,"line":616},13,[415,618,619],{"class":431},"        date_range ",[415,621,587],{"class":420},[415,623,624],{"class":501}," \"all\"",[415,626,627],{"class":431},",\n",[415,629,631,634,636,638],{"class":417,"line":630},14,[415,632,633],{"class":431},"        filters ",[415,635,587],{"class":420},[415,637,523],{"class":420},[415,639,640],{"class":431},"[]{\n",[415,642,644,647,650,652,654,657,660,662,665,667,669],{"class":417,"line":643},15,[415,645,646],{"class":420},"            new",[415,648,649],{"class":427}," List",[415,651,432],{"class":431},[415,653,495],{"class":420},[415,655,656],{"class":431},"> { ",[415,658,659],{"class":501},"\"contains\"",[415,661,385],{"class":431},[415,663,664],{"class":501},"\"event:page\"",[415,666,385],{"class":431},[415,668,483],{"class":420},[415,670,671],{"class":431},"[] { relativeUrl } },\n",[415,673,675,677,679,681,683,685,688,690,693,695,697,700,703,705,708,710,713,715,718,720,723,725,728],{"class":417,"line":674},16,[415,676,646],{"class":420},[415,678,649],{"class":427},[415,680,432],{"class":431},[415,682,495],{"class":420},[415,684,656],{"class":431},[415,686,687],{"class":501},"\"is\"",[415,689,385],{"class":431},[415,691,692],{"class":501},"\"event:goal\"",[415,694,385],{"class":431},[415,696,483],{"class":420},[415,698,699],{"class":431},"[] {",[415,701,702],{"class":501},"\"read\"",[415,704,385],{"class":431},[415,706,707],{"class":501},"\"three-quarter-read\"",[415,709,385],{"class":431},[415,711,712],{"class":501},"\"half-read\"",[415,714,385],{"class":431},[415,716,717],{"class":501},"\"quarter-read\"",[415,719,385],{"class":431},[415,721,722],{"class":501},"\"peeked\"",[415,724,385],{"class":431},[415,726,727],{"class":501},"\"opened\"",[415,729,730],{"class":431},"} },\n",[415,732,734],{"class":417,"line":733},17,[415,735,736],{"class":431},"        },\n",[415,738,740,743,745,747,749,751],{"class":417,"line":739},18,[415,741,742],{"class":431},"        dimensions ",[415,744,587],{"class":420},[415,746,523],{"class":420},[415,748,603],{"class":431},[415,750,692],{"class":501},[415,752,753],{"class":431}," },\n",[415,755,757],{"class":417,"line":756},19,[415,758,759],{"class":431},"    };\n",[415,761,762],{"class":417,"line":46},[415,763,510],{"emptyLinePlaceholder":173},[415,765,767,769,772,774,777,780],{"class":417,"line":766},21,[415,768,515],{"class":420},[415,770,771],{"class":427}," jsonPayload",[415,773,472],{"class":420},[415,775,776],{"class":431}," JsonSerializer.",[415,778,779],{"class":427},"Serialize",[415,781,782],{"class":431},"(payload);\n",[415,784,786,789,792,794,797],{"class":417,"line":785},22,[415,787,788],{"class":431},"    _logger.",[415,790,791],{"class":427},"LogInformation",[415,793,444],{"class":431},[415,795,796],{"class":501},"\"Payload: {jsonPayload}\"",[415,798,799],{"class":431},", jsonPayload);\n",[415,801,803],{"class":417,"line":802},23,[415,804,510],{"emptyLinePlaceholder":173},[415,806,808,810,813,815,818,821],{"class":417,"line":807},24,[415,809,515],{"class":420},[415,811,812],{"class":427}," response",[415,814,472],{"class":420},[415,816,817],{"class":420}," await",[415,819,820],{"class":427}," SendRequest",[415,822,823],{"class":431},"(jsonPayload);\n",[415,825,827,829,832,834,836,839,842],{"class":417,"line":826},25,[415,828,515],{"class":420},[415,830,831],{"class":427}," responseContent",[415,833,472],{"class":420},[415,835,817],{"class":420},[415,837,838],{"class":431}," response.Content.",[415,840,841],{"class":427},"ReadAsStringAsync",[415,843,844],{"class":431},"();\n",[415,846,848,850,852,854,857],{"class":417,"line":847},26,[415,849,788],{"class":431},[415,851,791],{"class":427},[415,853,444],{"class":431},[415,855,856],{"class":501},"\"Response: {responseContent}\"",[415,858,859],{"class":431},", responseContent);\n",[415,861,863],{"class":417,"line":862},27,[415,864,510],{"emptyLinePlaceholder":173},[415,866,868,870,873,875,877,880,882,885],{"class":417,"line":867},28,[415,869,515],{"class":420},[415,871,872],{"class":427}," queryResult",[415,874,472],{"class":420},[415,876,776],{"class":431},[415,878,879],{"class":427},"Deserialize",[415,881,432],{"class":431},[415,883,884],{"class":427},"QueryResult",[415,886,887],{"class":431},">(responseContent);\n",[415,889,891,894,897,900,904],{"class":417,"line":890},29,[415,892,893],{"class":420},"    if",[415,895,896],{"class":431}," (queryResult ",[415,898,899],{"class":420},"==",[415,901,903],{"class":902},"sj4cs"," null",[415,905,453],{"class":431},[415,907,908],{"class":417,"line":57},[415,909,578],{"class":431},[415,911,913,916,918,921,923,926],{"class":417,"line":912},31,[415,914,915],{"class":420},"        throw",[415,917,523],{"class":420},[415,919,920],{"class":427}," InvalidOperationException",[415,922,444],{"class":431},[415,924,925],{"class":501},"\"Failed to deserialize the response content.\"",[415,927,928],{"class":431},");\n",[415,930,932],{"class":417,"line":931},32,[415,933,934],{"class":431},"    }\n",[415,936,938],{"class":417,"line":937},33,[415,939,510],{"emptyLinePlaceholder":173},[415,941,943,945,948,950,953,956,958,961,964,967,970,973,975,977,980,982],{"class":417,"line":942},34,[415,944,515],{"class":420},[415,946,947],{"class":427}," resultsDict",[415,949,472],{"class":420},[415,951,952],{"class":431}," queryResult.Results.",[415,954,955],{"class":427},"ToDictionary",[415,957,444],{"class":431},[415,959,960],{"class":427},"x",[415,962,963],{"class":420}," =>",[415,965,966],{"class":431}," x.Dimensions.",[415,968,969],{"class":427},"First",[415,971,972],{"class":431},"(), ",[415,974,960],{"class":427},[415,976,963],{"class":420},[415,978,979],{"class":431}," x.Metrics.",[415,981,969],{"class":427},[415,983,984],{"class":431},"());\n",[415,986,988],{"class":417,"line":987},35,[415,989,510],{"emptyLinePlaceholder":173},[415,991,993,996,998],{"class":417,"line":992},36,[415,994,995],{"class":420},"    return",[415,997,523],{"class":420},[415,999,1000],{"class":427}," PageReads\n",[415,1002,1004],{"class":417,"line":1003},37,[415,1005,578],{"class":431},[415,1007,1009,1012,1014,1017,1020,1022,1024],{"class":417,"line":1008},38,[415,1010,1011],{"class":431},"        Read ",[415,1013,587],{"class":420},[415,1015,1016],{"class":431}," resultsDict.",[415,1018,1019],{"class":427},"GetValueOrDefault",[415,1021,444],{"class":431},[415,1023,702],{"class":501},[415,1025,1026],{"class":431},"),\n",[415,1028,1029,1032,1034,1036,1038,1040,1042],{"class":417,"line":172},[415,1030,1031],{"class":431},"        ThreeQuarterRead ",[415,1033,587],{"class":420},[415,1035,1016],{"class":431},[415,1037,1019],{"class":427},[415,1039,444],{"class":431},[415,1041,707],{"class":501},[415,1043,1026],{"class":431},[415,1045,1047,1050,1052,1054,1056,1058,1060],{"class":417,"line":1046},40,[415,1048,1049],{"class":431},"        HalfRead ",[415,1051,587],{"class":420},[415,1053,1016],{"class":431},[415,1055,1019],{"class":427},[415,1057,444],{"class":431},[415,1059,712],{"class":501},[415,1061,1026],{"class":431},[415,1063,1065,1068,1070,1072,1074,1076,1078],{"class":417,"line":1064},41,[415,1066,1067],{"class":431},"        QuarterRead ",[415,1069,587],{"class":420},[415,1071,1016],{"class":431},[415,1073,1019],{"class":427},[415,1075,444],{"class":431},[415,1077,717],{"class":501},[415,1079,1026],{"class":431},[415,1081,1083,1086,1088,1090,1092,1094,1096],{"class":417,"line":1082},42,[415,1084,1085],{"class":431},"        Peeked ",[415,1087,587],{"class":420},[415,1089,1016],{"class":431},[415,1091,1019],{"class":427},[415,1093,444],{"class":431},[415,1095,722],{"class":501},[415,1097,1026],{"class":431},[415,1099,1101,1104,1106,1108,1110,1112,1114],{"class":417,"line":1100},43,[415,1102,1103],{"class":431},"        Opened ",[415,1105,587],{"class":420},[415,1107,1016],{"class":431},[415,1109,1019],{"class":427},[415,1111,444],{"class":431},[415,1113,727],{"class":501},[415,1115,1026],{"class":431},[415,1117,1119],{"class":417,"line":1118},44,[415,1120,759],{"class":431},[415,1122,1124],{"class":417,"line":1123},45,[415,1125,1126],{"class":431},"}\n",[406,1128,1133],{"className":1129,"code":1130,"filename":1131,"language":1132,"meta":21,"style":21},"language-json shiki shiki-themes github-light github-dark","{\n  \"site_id\": \"{{site_id}}\",\n  \"metrics\": [\"visitors\"],\n  \"date_range\": \"all\",\n  \"filters\": [\n    [\"contains\", \"event:page\", [\"{{relative_url}}\"]],\n    [\n      \"is\",\n      \"event:goal\",\n      [\n        \"read\",\n        \"three-quarter-read\",\n        \"half-read\",\n        \"quarter-read\",\n        \"peeked\",\n        \"opened\"\n      ]\n    ]\n  ],\n  \"dimensions\": [\"event:goal\"]\n}\n","JSON request","json",[318,1134,1135,1139,1152,1165,1177,1185,1205,1210,1217,1224,1229,1236,1243,1250,1257,1264,1269,1274,1279,1284,1296],{"__ignoreMap":21},[415,1136,1137],{"class":417,"line":20},[415,1138,458],{"class":431},[415,1140,1141,1144,1147,1150],{"class":417,"line":96},[415,1142,1143],{"class":902},"  \"site_id\"",[415,1145,1146],{"class":431},": ",[415,1148,1149],{"class":501},"\"{{site_id}}\"",[415,1151,627],{"class":431},[415,1153,1154,1157,1160,1162],{"class":417,"line":111},[415,1155,1156],{"class":902},"  \"metrics\"",[415,1158,1159],{"class":431},": [",[415,1161,606],{"class":501},[415,1163,1164],{"class":431},"],\n",[415,1166,1167,1170,1172,1175],{"class":417,"line":128},[415,1168,1169],{"class":902},"  \"date_range\"",[415,1171,1146],{"class":431},[415,1173,1174],{"class":501},"\"all\"",[415,1176,627],{"class":431},[415,1178,1179,1182],{"class":417,"line":143},[415,1180,1181],{"class":902},"  \"filters\"",[415,1183,1184],{"class":431},": [\n",[415,1186,1187,1190,1192,1194,1196,1199,1202],{"class":417,"line":532},[415,1188,1189],{"class":431},"    [",[415,1191,659],{"class":501},[415,1193,385],{"class":431},[415,1195,664],{"class":501},[415,1197,1198],{"class":431},", [",[415,1200,1201],{"class":501},"\"{{relative_url}}\"",[415,1203,1204],{"class":431},"]],\n",[415,1206,1207],{"class":417,"line":545},[415,1208,1209],{"class":431},"    [\n",[415,1211,1212,1215],{"class":417,"line":558},[415,1213,1214],{"class":501},"      \"is\"",[415,1216,627],{"class":431},[415,1218,1219,1222],{"class":417,"line":563},[415,1220,1221],{"class":501},"      \"event:goal\"",[415,1223,627],{"class":431},[415,1225,1226],{"class":417,"line":36},[415,1227,1228],{"class":431},"      [\n",[415,1230,1231,1234],{"class":417,"line":581},[415,1232,1233],{"class":501},"        \"read\"",[415,1235,627],{"class":431},[415,1237,1238,1241],{"class":417,"line":593},[415,1239,1240],{"class":501},"        \"three-quarter-read\"",[415,1242,627],{"class":431},[415,1244,1245,1248],{"class":417,"line":616},[415,1246,1247],{"class":501},"        \"half-read\"",[415,1249,627],{"class":431},[415,1251,1252,1255],{"class":417,"line":630},[415,1253,1254],{"class":501},"        \"quarter-read\"",[415,1256,627],{"class":431},[415,1258,1259,1262],{"class":417,"line":643},[415,1260,1261],{"class":501},"        \"peeked\"",[415,1263,627],{"class":431},[415,1265,1266],{"class":417,"line":674},[415,1267,1268],{"class":501},"        \"opened\"\n",[415,1270,1271],{"class":417,"line":733},[415,1272,1273],{"class":431},"      ]\n",[415,1275,1276],{"class":417,"line":739},[415,1277,1278],{"class":431},"    ]\n",[415,1280,1281],{"class":417,"line":756},[415,1282,1283],{"class":431},"  ],\n",[415,1285,1286,1289,1291,1293],{"class":417,"line":46},[415,1287,1288],{"class":902},"  \"dimensions\"",[415,1290,1159],{"class":431},[415,1292,692],{"class":501},[415,1294,1295],{"class":431},"]\n",[415,1297,1298],{"class":417,"line":766},[415,1299,1126],{"class":431},[406,1301,1304],{"className":1129,"code":1302,"filename":1303,"language":1132,"meta":21,"style":21},"{\n  \"results\": [\n    { \"metrics\": [68], \"dimensions\": [\"opened\"] },\n    { \"metrics\": [45], \"dimensions\": [\"peeked\"] },\n    { \"metrics\": [40], \"dimensions\": [\"quarter-read\"] },\n    { \"metrics\": [31], \"dimensions\": [\"half-read\"] },\n    { \"metrics\": [21], \"dimensions\": [\"three-quarter-read\"] },\n    { \"metrics\": [14], \"dimensions\": [\"read\"] }\n  ],\n  \"meta\": {},\n  \"query\": {\n    \"site_id\": \"{{site_id}}\",\n    \"metrics\": [\"visitors\"],\n    \"date_range\": [\"2025-01-20T00:00:00+01:00\", \"2025-08-02T23:59:59+02:00\"],\n    \"filters\": [\n      [\"contains\", \"event:page\", [\"{{relative_url}}\"]],\n      [\n        \"is\",\n        \"event:goal\",\n        [\n          \"read\",\n          \"three-quarter-read\",\n          \"half-read\",\n          \"quarter-read\",\n          \"peeked\",\n          \"opened\"\n        ]\n      ]\n    ],\n    \"dimensions\": [\"event:goal\"],\n    \"order_by\": [[\"visitors\", \"desc\"]],\n    \"include\": {},\n    \"pagination\": { \"offset\": 0, \"limit\": 10000 }\n  }\n}\n","JSON response",[318,1305,1306,1310,1317,1343,1364,1385,1406,1427,1449,1453,1461,1469,1480,1491,1508,1515,1532,1536,1543,1550,1555,1562,1569,1576,1583,1590,1595,1600,1604,1609,1620,1637,1644,1673,1678],{"__ignoreMap":21},[415,1307,1308],{"class":417,"line":20},[415,1309,458],{"class":431},[415,1311,1312,1315],{"class":417,"line":96},[415,1313,1314],{"class":902},"  \"results\"",[415,1316,1184],{"class":431},[415,1318,1319,1322,1325,1327,1330,1333,1336,1338,1340],{"class":417,"line":111},[415,1320,1321],{"class":431},"    { ",[415,1323,1324],{"class":902},"\"metrics\"",[415,1326,1159],{"class":431},[415,1328,1329],{"class":902},"68",[415,1331,1332],{"class":431},"], ",[415,1334,1335],{"class":902},"\"dimensions\"",[415,1337,1159],{"class":431},[415,1339,727],{"class":501},[415,1341,1342],{"class":431},"] },\n",[415,1344,1345,1347,1349,1351,1354,1356,1358,1360,1362],{"class":417,"line":128},[415,1346,1321],{"class":431},[415,1348,1324],{"class":902},[415,1350,1159],{"class":431},[415,1352,1353],{"class":902},"45",[415,1355,1332],{"class":431},[415,1357,1335],{"class":902},[415,1359,1159],{"class":431},[415,1361,722],{"class":501},[415,1363,1342],{"class":431},[415,1365,1366,1368,1370,1372,1375,1377,1379,1381,1383],{"class":417,"line":143},[415,1367,1321],{"class":431},[415,1369,1324],{"class":902},[415,1371,1159],{"class":431},[415,1373,1374],{"class":902},"40",[415,1376,1332],{"class":431},[415,1378,1335],{"class":902},[415,1380,1159],{"class":431},[415,1382,717],{"class":501},[415,1384,1342],{"class":431},[415,1386,1387,1389,1391,1393,1396,1398,1400,1402,1404],{"class":417,"line":532},[415,1388,1321],{"class":431},[415,1390,1324],{"class":902},[415,1392,1159],{"class":431},[415,1394,1395],{"class":902},"31",[415,1397,1332],{"class":431},[415,1399,1335],{"class":902},[415,1401,1159],{"class":431},[415,1403,712],{"class":501},[415,1405,1342],{"class":431},[415,1407,1408,1410,1412,1414,1417,1419,1421,1423,1425],{"class":417,"line":545},[415,1409,1321],{"class":431},[415,1411,1324],{"class":902},[415,1413,1159],{"class":431},[415,1415,1416],{"class":902},"21",[415,1418,1332],{"class":431},[415,1420,1335],{"class":902},[415,1422,1159],{"class":431},[415,1424,707],{"class":501},[415,1426,1342],{"class":431},[415,1428,1429,1431,1433,1435,1438,1440,1442,1444,1446],{"class":417,"line":558},[415,1430,1321],{"class":431},[415,1432,1324],{"class":902},[415,1434,1159],{"class":431},[415,1436,1437],{"class":902},"14",[415,1439,1332],{"class":431},[415,1441,1335],{"class":902},[415,1443,1159],{"class":431},[415,1445,702],{"class":501},[415,1447,1448],{"class":431},"] }\n",[415,1450,1451],{"class":417,"line":563},[415,1452,1283],{"class":431},[415,1454,1455,1458],{"class":417,"line":36},[415,1456,1457],{"class":902},"  \"meta\"",[415,1459,1460],{"class":431},": {},\n",[415,1462,1463,1466],{"class":417,"line":581},[415,1464,1465],{"class":902},"  \"query\"",[415,1467,1468],{"class":431},": {\n",[415,1470,1471,1474,1476,1478],{"class":417,"line":593},[415,1472,1473],{"class":902},"    \"site_id\"",[415,1475,1146],{"class":431},[415,1477,1149],{"class":501},[415,1479,627],{"class":431},[415,1481,1482,1485,1487,1489],{"class":417,"line":616},[415,1483,1484],{"class":902},"    \"metrics\"",[415,1486,1159],{"class":431},[415,1488,606],{"class":501},[415,1490,1164],{"class":431},[415,1492,1493,1496,1498,1501,1503,1506],{"class":417,"line":630},[415,1494,1495],{"class":902},"    \"date_range\"",[415,1497,1159],{"class":431},[415,1499,1500],{"class":501},"\"2025-01-20T00:00:00+01:00\"",[415,1502,385],{"class":431},[415,1504,1505],{"class":501},"\"2025-08-02T23:59:59+02:00\"",[415,1507,1164],{"class":431},[415,1509,1510,1513],{"class":417,"line":643},[415,1511,1512],{"class":902},"    \"filters\"",[415,1514,1184],{"class":431},[415,1516,1517,1520,1522,1524,1526,1528,1530],{"class":417,"line":674},[415,1518,1519],{"class":431},"      [",[415,1521,659],{"class":501},[415,1523,385],{"class":431},[415,1525,664],{"class":501},[415,1527,1198],{"class":431},[415,1529,1201],{"class":501},[415,1531,1204],{"class":431},[415,1533,1534],{"class":417,"line":733},[415,1535,1228],{"class":431},[415,1537,1538,1541],{"class":417,"line":739},[415,1539,1540],{"class":501},"        \"is\"",[415,1542,627],{"class":431},[415,1544,1545,1548],{"class":417,"line":756},[415,1546,1547],{"class":501},"        \"event:goal\"",[415,1549,627],{"class":431},[415,1551,1552],{"class":417,"line":46},[415,1553,1554],{"class":431},"        [\n",[415,1556,1557,1560],{"class":417,"line":766},[415,1558,1559],{"class":501},"          \"read\"",[415,1561,627],{"class":431},[415,1563,1564,1567],{"class":417,"line":785},[415,1565,1566],{"class":501},"          \"three-quarter-read\"",[415,1568,627],{"class":431},[415,1570,1571,1574],{"class":417,"line":802},[415,1572,1573],{"class":501},"          \"half-read\"",[415,1575,627],{"class":431},[415,1577,1578,1581],{"class":417,"line":807},[415,1579,1580],{"class":501},"          \"quarter-read\"",[415,1582,627],{"class":431},[415,1584,1585,1588],{"class":417,"line":826},[415,1586,1587],{"class":501},"          \"peeked\"",[415,1589,627],{"class":431},[415,1591,1592],{"class":417,"line":847},[415,1593,1594],{"class":501},"          \"opened\"\n",[415,1596,1597],{"class":417,"line":862},[415,1598,1599],{"class":431},"        ]\n",[415,1601,1602],{"class":417,"line":867},[415,1603,1273],{"class":431},[415,1605,1606],{"class":417,"line":890},[415,1607,1608],{"class":431},"    ],\n",[415,1610,1611,1614,1616,1618],{"class":417,"line":57},[415,1612,1613],{"class":902},"    \"dimensions\"",[415,1615,1159],{"class":431},[415,1617,692],{"class":501},[415,1619,1164],{"class":431},[415,1621,1622,1625,1628,1630,1632,1635],{"class":417,"line":912},[415,1623,1624],{"class":902},"    \"order_by\"",[415,1626,1627],{"class":431},": [[",[415,1629,606],{"class":501},[415,1631,385],{"class":431},[415,1633,1634],{"class":501},"\"desc\"",[415,1636,1204],{"class":431},[415,1638,1639,1642],{"class":417,"line":931},[415,1640,1641],{"class":902},"    \"include\"",[415,1643,1460],{"class":431},[415,1645,1646,1649,1652,1655,1657,1660,1662,1665,1667,1670],{"class":417,"line":937},[415,1647,1648],{"class":902},"    \"pagination\"",[415,1650,1651],{"class":431},": { ",[415,1653,1654],{"class":902},"\"offset\"",[415,1656,1146],{"class":431},[415,1658,1659],{"class":902},"0",[415,1661,385],{"class":431},[415,1663,1664],{"class":902},"\"limit\"",[415,1666,1146],{"class":431},[415,1668,1669],{"class":902},"10000",[415,1671,1672],{"class":431}," }\n",[415,1674,1675],{"class":417,"line":942},[415,1676,1677],{"class":431},"  }\n",[415,1679,1680],{"class":417,"line":987},[415,1681,1126],{"class":431},[160,1683,1684,1685,1690,1691],{},"Zie de volledige implementatie hier ",[343,1686,1689],{":target":345,"href":1687,"rel":1688},"https:\u002F\u002Fgithub.com\u002Fjeroenbach\u002Fbach.software\u002Fblob\u002Fd902b918933fdf2291dc896094b00ac13510e980\u002Fsrc\u002Fapi\u002FBach.Software.Infrastructure\u002FPlausibleAnalytics\u002FServices\u002FPlausibleService.cs#L35-L45",[348],"PlausibleService.cs","\nen het hele project hier ",[343,1692,1695],{":target":345,"href":1693,"rel":1694},"https:\u002F\u002Fgithub.com\u002Fjeroenbach\u002Fbach.software\u002Ftree\u002Fmain\u002Fsrc\u002Fapi",[348],"Bach.Software.API",[251,1697,1699],{"id":1698},"conclusie","Conclusie",[160,1701,1702],{},"Begrijpen hoe diep je publiek zich met je content bezighoudt is veel betekenisvoller dan alleen paginaweergaven tellen.\nMet slechts een paar regels code en de kracht van Plausible kun je nu nauwkeurig bijhouden of je lezers scannen of echt duiken in je content.\nDoor scrollgedrag en leestijd te combineren, kun je je redactionele strategie verfijnen en identificeren wat het meest resoneert.\nEn omdat het cookieloos is, sluit het aan bij moderne privacystandaarden zonder inzicht op te offeren.",[160,1704,1705],{},"Of je nu een solo-ontwikkelaar bent, een blogger, of een groter contentplatform beheert, deze aanpak geeft je diepgaande inzichten zonder de last van invasieve tracking.\nProbeer het uit op je volgende post, je zou verbaasd kunnen zijn over wat je lezers echt doen.",[1707,1708,1709],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":21,"searchDepth":96,"depth":96,"links":1711},[1712,1713,1714,1715],{"id":253,"depth":96,"text":254},{"id":365,"depth":96,"text":366},{"id":391,"depth":96,"text":392},{"id":1698,"depth":96,"text":1699},"Vue.js","Leer hoe je het leesgedrag van je bezoekers kunt volgen met Plausible.io, Vue.js en Azure Functions. Dit artikel behandelt het instellen van doelen in Plausible, het volgen van leesvoortgang en het analyseren van de betrokkenheid van bezoekers bij je content.",{"type":157,"value":1719},[1720],[160,1721,222,1722,227,1724,231,1726,235,1728,239],{},[224,1723,226],{},[224,1725,230],{},[224,1727,234],{},[224,1729,238],{},"Leestrechter van je bezoekers","object-top","\u002Fposts\u002F3\u002Fcover.jpeg",[1716,410],{},{"text":1736,"minutes":1737,"time":1738,"words":1739},"5 min read",4.58,274800,916,{"title":116,"description":1717},"FxBFus2lssKha7IOJ8HEZcm9Nlh48Uj5XDTAbjsHGSs",{"id":200,"company":1743,"extension":205,"fullName":206,"github":207,"homePage":208,"imageUrl":204,"linkedIn":209,"meta":1744,"role":211,"stem":212,"twitter":213,"userName":214,"__hash__":215},{"name":202,"url":203,"imageUrl":204},{},1786173072178]