├── .gitignore ├── README.md ├── package-lock.json ├── package.json ├── public ├── data │ ├── .~lock.data_district.csv# │ ├── data_district.csv │ ├── data_region.csv │ └── geo_lad2021.json ├── favicon.ico ├── global.css ├── img │ ├── bg-dark.jpg │ ├── ons-logo-black-en.svg │ ├── ons-logo-neg-en.svg │ ├── ons-logo-pos-en.svg │ ├── scroll-down-black.svg │ └── scroll-down-white.svg └── index.html ├── rollup.config.js ├── scripts └── setupTypeScript.js └── src ├── App.svelte ├── config.js ├── layout ├── Divider.svelte ├── Filler.svelte ├── Header.svelte ├── Media.svelte ├── ONSFooter.svelte ├── ONSHeader.svelte ├── Scroller.svelte └── Section.svelte ├── main.js ├── ui ├── Arrow.svelte ├── Em.svelte └── Toggle.svelte └── utils.js /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | /public/build/ 3 | 4 | .DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Scrollytelling Template 3 | 4 | A component-based rich media / scrollytelling template made with Svelte. ([View demo](https://onsvisual.github.io/svelte-scrolly)). 5 | 6 | The easiest way to build a project from this template is to clone it using [degit](https://github.com/Rich-Harris/degit), which just creates a local copy of the files (not a Git branch). You can also hack it live [here](https://svelte.dev/repl/58155faba1ea463eaf4d9ec6f3f95364?version=3.32.3). 7 | 8 | ## Getting started 9 | 10 | If you don't have **degit**, you can install it from NPM. 11 | 12 | ```bash 13 | npm install -g degit 14 | ``` 15 | 16 | Then run the following command to clone this template (replace `your-project` with a name for your project folder). 17 | 18 | ```bash 19 | degit ONSvisual/svelte-scrolly your-project 20 | ``` 21 | 22 | Next, open the folder and install the dependencies to get started. 23 | 24 | ```bash 25 | cd your-project 26 | npm install 27 | ``` 28 | 29 | You can then start a local development server to see live changes as you edit the template. It will run on and should update every time you save changes to a file. 30 | 31 | ```bash 32 | npm run dev 33 | ``` 34 | 35 | Finally. When you're done creating your project, you can compile it. (You'll find the compiled code in the `public` folder). 36 | 37 | ```bash 38 | npm run build 39 | ``` 40 | 41 | ## How to edit 42 | 43 | It should be possible to start hacking this template without knowing Svelte, but if you want to go further, it's worth working through their [tutorial](https://svelte.dev/tutorial). 44 | 45 | For the most part, you shouldn't need to edit anything outside of the `/src` folder. Most of the code you'll need to edit is contained in the `App.svelte` file, which contains all of the HTML structure and content, as well as some JS functions to initialise the interactive elements. You'll also probably need to edit `config.js`, and may want to add your own functions to `utils.js`. The rest of the source files are the components, which are unlikley to need editing. 46 | 47 | If you need to add images or data files for charts, maps, etc, you can put these directly into the `img` and `data` folder within the `/public` folder (where the compiled code will go). This folder also contains an `index.html` file, where you'll want to edit the title and meta tags. 48 | 49 | ## About the components 50 | 51 | #### <ONSHeader/> & <ONSFooter/> 52 | Minimal ONS-branded page headers and footers based on existing ONS templates. 53 | 54 | #### <Header/> 55 | A full height component for the top of the article, with an optional background image which can be static (as in the demo) or scroll with the text. 56 | 57 | #### <Section/> 58 | Unstyled component. Mostly for text content, but can take any HTML if needed. 59 | 60 | #### <Media/> 61 | Used to create DIVS for content within a responsive grid (for maps, charts, images etc). It also allows for full width media. See the default template for options. 62 | 63 | #### <Scroller/> 64 | This is a really important component that allows for dynamic scroll-triggered content with interactions coded in Javascript. It is coded by Rich Harris (the creator of Svelte), and is [documented here](https://github.com/sveltejs/svelte-scroller), but has been re-styled with CSS in this template (see notes below). 65 | 66 | #### <Filler/> 67 | This is for full screen captions etc, typically used to introduce an article or to provide a break/transition between sections. 68 | 69 | #### <Divider/> 70 | A horizontal divider that can be used between sections. You can also use it as a blank spacer by calling it with the `hr` parameter disabled, like this `` 71 | 72 | ## Other notes 73 | 74 | #### Theming and styling 75 | The demo has two built-in colour themes ("light" and "dark"), defined at the top of the `src/config.js` file. You can also add your own themes here. One theme is selected at the top of the `App.svelte` file, but can be overridden on individual components by adding a `theme` parameter. Eg. ``. 76 | 77 | The global styling for the template is contained in the `public/global.css` file. This shouldn't need to be edited, but you may want to make use of the classes that it contains. 78 | 79 | If you need to add component-specific styling within your project, you can do this by adding classes within the `` tags of the `App.svelte` file, or by using inline styles. 80 | 81 | #### Using the <Scroller/> component 82 | This component will take a bit of time to get your head around. Within each Scoller component you'll find two parent elements, `
` and `
`. The background div contains the full-screen map, chart or media that you are animating/manipulating, and the foreground slot contains a series of `
` elements, which contain the text captions. 83 | 84 | The essential thing to understand is that each section is automatically tracked and bound to an `index` value (in Javascript), starting from zero. In the demo, these indices are bound to an array, and each Scroller has an associated array of Javascript functions (there are two in the demo, `chartActions` and `mapActions`) that control the interactions for each caption. If there is no interaction for a particular caption, then it needs a `null` value in this array, or a repetion of the previous function (depending what interaction you need). 85 | 86 | The Scroller component has other features not used in the demo, including tracking the exact progress between captions, or within a whole Scroller section, which can be used for more complex continuous interactions (rather than step-based). All of the features are [documented here](https://github.com/sveltejs/svelte-scroller). -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@onsvisual/svelte-scrolly", 3 | "homepage": "http://onsvisual.github.io/svelte-scrolly", 4 | "version": "0.1.1", 5 | "scripts": { 6 | "build": "rollup -c", 7 | "dev": "rollup -c -w", 8 | "start": "sirv public", 9 | "deploy": "gh-pages -d public" 10 | }, 11 | "author": "Ahmad Barclay", 12 | "license": "MIT", 13 | "devDependencies": { 14 | "@babel/core": "^7.12.3", 15 | "@babel/plugin-syntax-dynamic-import": "^7.8.3", 16 | "@babel/plugin-transform-runtime": "^7.12.1", 17 | "@babel/preset-env": "^7.12.1", 18 | "@babel/runtime": "^7.12.1", 19 | "@onsvisual/svelte-charts": "latest", 20 | "@onsvisual/svelte-maps": "latest", 21 | "@rollup/plugin-commonjs": "^14.0.0", 22 | "@rollup/plugin-node-resolve": "^8.0.0", 23 | "@turf/bbox": "^6.5.0", 24 | "core-js": "3", 25 | "d3-dsv": "latest", 26 | "debounce": "^1.2.0", 27 | "gh-pages": "^3.1.0", 28 | "mapbox-gl": "1.13.1", 29 | "parse-color": "^1.0.0", 30 | "rollup": "^2.3.4", 31 | "rollup-plugin-babel": "^4.3.3", 32 | "rollup-plugin-livereload": "^2.0.0", 33 | "rollup-plugin-svelte": "^6.0.0", 34 | "rollup-plugin-terser": "^7.0.0", 35 | "svelte": "^3.0.0", 36 | "topojson-client": "^3.1.0" 37 | }, 38 | "dependencies": { 39 | "sirv-cli": "^1.0.0" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /public/data/.~lock.data_district.csv#: -------------------------------------------------------------------------------- 1 | ,ahmadbarclay,ahmads-mbp.home,23.11.2021 13:51,file:///Users/ahmadbarclay/Library/Application%20Support/LibreOffice/4; -------------------------------------------------------------------------------- /public/data/data_district.csv: -------------------------------------------------------------------------------- 1 | code,name,parent,area,density,age_med,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020 2 | E06000001,Hartlepool,E12000001,94,1001,41.6,90152,89993,90134,90317,90457,90781,90969,91379,91530,91773,92088,92261,92662,92606,92498,92845,93019,93242,93663,93836 3 | E06000002,Middlesbrough,E12000001,54,2622,36.2,141233,140090,139050,138451,138517,138169,138190,137885,137273,137667,138368,138726,138911,138991,139310,140326,140639,140545,140980,141285 4 | E06000003,Redcar and Cleveland,E12000001,245,560,45.3,139159,138520,138565,138643,138177,137621,136940,136512,135867,135383,135164,134976,134960,135102,135324,135496,136005,136718,137150,137228 5 | E06000004,Stockton-on-Tees,E12000001,205,963,41,183795,184940,185699,185687,186350,187270,187937,189039,189978,190902,191824,192487,193433,194423,195128,195958,196487,197213,197348,197419 6 | E06000005,Darlington,E12000001,197,544,43.2,97894,98474,98911,99343,100287,101509,102632,103694,104355,105028,105584,105503,105726,105877,105998,106327,106347,106566,106803,107402 7 | E06000006,Halton,E12000002,79,1641,41,118559,118788,119178,119960,120396,121275,122040,122907,123636,124802,125722,125781,126074,126501,126719,127306,127595,128432,129410,129759 8 | E06000007,Warrington,E12000002,181,1159,42.6,191202,191615,191987,191837,192992,194603,196559,198187,200057,201309,202709,203795,205165,206681,207781,208973,209704,209547,210014,209397 9 | E06000008,Blackburn with Darwen,E12000002,137,1095,36.6,138453,139538,140429,141418,142145,143110,143942,144902,146197,146966,147657,147854,147763,147416,147856,148462,148772,148942,149696,150030 10 | E06000009,Blackpool,E12000002,35,3968,43.5,142270,142164,142658,143143,143688,143733,143644,142921,142578,142753,142080,142037,141603,140898,140162,139983,139870,139305,139446,138381 11 | E06000010,"Kingston upon Hull, City of",E12000003,72,3620,35.9,249913,249463,250604,253049,255159,255497,255761,256746,256079,256174,256123,257012,257188,257414,258587,260035,260673,260645,259778,259126 12 | E06000011,East Riding of Yorkshire,E12000003,2404,143,49.5,314854,318633,321869,325117,327268,328587,330865,332464,332748,333599,334673,335901,336072,337242,336756,337804,338061,339614,341173,343201 13 | E06000012,North East Lincolnshire,E12000003,193,827,42.7,157951,158003,158373,158542,158725,158610,158589,158708,158689,158951,159735,159788,159963,160019,159971,159828,159826,159821,159563,159364 14 | E06000013,North Lincolnshire,E12000003,847,204,44.5,152964,154240,156196,158211,159679,161163,162801,164519,165572,166539,167516,168351,168716,169213,169843,170807,171294,172005,172292,172748 15 | E06000014,York,E12000003,272,776,37.6,181291,182088,183960,186643,188214,188977,189770,190768,192398,195070,197783,199567,202113,203654,205784,206920,208163,209893,210618,211012 16 | E06000015,Derby,E12000004,78,3291,37.2,230726,231979,232827,234501,236470,238110,239917,241865,243980,247035,248943,250582,251312,252313,253875,256203,257034,257174,257302,256814 17 | E06000016,Leicester,E12000004,73,4827,31.7,282757,285295,288648,294127,301543,306548,311303,315473,319708,324912,329627,332067,334631,338491,344036,349513,353540,355218,354224,354036 18 | E06000017,Rutland,E12000004,382,106,47.9,34598,35295,35559,35623,36115,36510,37110,37478,37417,37670,37581,37096,37791,38263,38352,38949,39474,39697,39927,40476 19 | E06000018,Nottingham,E12000004,75,4518,29.7,268939,271769,275547,279624,284834,286459,288164,290783,294808,299753,303899,308463,310657,314385,318936,324779,329209,331069,332900,337098 20 | E06000019,"Herefordshire, County of",E12000005,2180,89,47.7,174885,175258,175648,176033,176587,178103,179930,181791,182367,182865,183619,185197,186389,187737,188522,189532,191041,192107,192801,193615 21 | E06000020,Telford and Wrekin,E12000005,290,625,39.6,158573,159401,159848,160603,161535,162710,163368,164089,164889,165641,166831,167811,168642,169768,171677,173727,175768,177799,179854,181322 22 | E06000021,Stoke-on-Trent,E12000005,93,2746,37.9,240422,239955,240031,241078,241481,243069,243697,245509,245869,247381,248719,249792,250194,250956,251746,253659,255378,255833,256375,256622 23 | E06000022,Bath and North East Somerset,E12000009,346,568,37.7,169158,169819,170361,170585,171274,171204,172635,173565,173360,174267,175538,177196,179460,181241,184287,186946,188678,192106,193282,196357 24 | E06000023,"Bristol, City of",E12000009,110,4248,32.4,390049,389735,391454,395743,405407,408428,411901,414822,418990,423044,428074,433043,438386,443791,450640,455966,459252,463405,463377,465866 25 | E06000024,North Somerset,E12000009,374,577,46.1,188840,189718,191323,192776,194745,197028,199498,200853,201711,202967,203091,204454,206182,208185,209941,211747,212834,213919,215052,215574 26 | E06000025,South Gloucestershire,E12000009,497,579,40.7,245985,247755,249176,251226,253178,255258,256640,257970,259730,261471,263417,266193,268951,270994,273952,276677,279027,282644,285093,287816 27 | E06000026,Plymouth,E12000009,80,3292,38.8,240954,242550,243390,244037,247516,249178,251237,252488,253116,254227,256589,257744,258592,260512,261386,262355,263070,263100,262100,262839 28 | E06000027,Torbay,E12000009,63,2166,49.6,129965,130521,131238,131937,132178,131857,132172,132070,131641,131443,131193,131480,132201,133264,133791,134406,135247,135780,136264,136218 29 | E06000030,Swindon,E12000009,230,969,40.5,180129,182110,184368,186390,189684,192345,196942,201521,204371,206939,209709,211918,214028,215991,217584,218580,220363,221996,222193,222881 30 | E06000031,Peterborough,E12000006,343,590,37.1,157439,158794,160778,163485,167220,169887,172443,176027,178963,181762,184457,186596,188371,190493,193657,196735,198914,201041,202259,202626 31 | E06000032,Luton,E12000006,43,4925,34.8,185889,185631,185016,183563,185392,187312,189742,192084,195449,199583,203641,205498,207404,210173,213581,215914,214658,214109,213052,213528 32 | E06000033,Southend-on-Sea,E12000006,42,4386,42.1,160362,161159,161437,161488,162645,163776,165429,168150,170013,172122,174274,175091,176236,178367,179234,180606,181808,182463,183125,182773 33 | E06000034,Thurrock,E12000006,164,1071,36.9,143297,144728,145977,147056,148556,150206,151741,153633,155003,156585,158268,159837,161305,163822,166040,168428,170394,172525,174341,175531 34 | E06000035,Medway,E12000008,194,1441,38.4,249704,250262,251159,251459,252098,253478,255824,258224,260230,262738,264885,268130,270689,273212,275176,276957,277616,277855,278556,279142 35 | E06000036,Bracknell Forest,E12000008,109,1135,39.6,109650,109490,109475,109189,109487,109896,110702,111455,111916,112893,113696,115089,116543,117997,119205,119730,120377,121676,122549,124165 36 | E06000037,West Berkshire,E12000008,704,225,43.8,144494,143913,144297,145147,146492,148107,150056,152024,153039,153943,154148,154704,156031,156633,157460,158576,158473,158527,158450,158465 37 | E06000038,Reading,E12000008,40,3969,35.1,144684,143915,144070,144590,146940,148321,149678,151460,152326,154296,155339,156795,158621,160268,161701,162701,163075,163203,161780,160337 38 | E06000039,Slough,E12000008,33,4596,35.3,120577,120927,120869,120833,122874,125200,127991,131453,134742,137800,140713,141820,142672,144340,146038,147736,148768,149112,149539,149577 39 | E06000040,Windsor and Maidenhead,E12000008,197,770,42.6,133541,133631,134201,135066,136446,138012,139743,141345,142424,143988,145098,145742,146278,147476,148277,149689,150140,150906,151422,151273 40 | E06000041,Wokingham,E12000008,179,972,41.6,150334,149445,148794,149008,149598,150548,152144,153191,154165,154650,154943,156658,158065,159414,161200,163087,164980,167979,171119,173945 41 | E06000042,Milton Keynes,E12000008,309,876,38.3,212707,215061,217597,219521,223462,227225,231033,235625,240178,245450,249895,252773,256376,260225,263181,266240,267521,268607,269457,270203 42 | E06000043,Brighton and Hove,E12000008,83,3522,35.3,249949,249743,249846,249847,252863,255564,258161,262019,265584,269495,272952,275724,277991,280650,284073,287173,288155,290395,290885,291738 43 | E06000044,Portsmouth,E12000008,40,5315,34.2,188043,188476,190283,193483,196318,195964,194907,196036,198983,202700,205433,206517,206670,208037,210538,213335,214718,215133,214905,214692 44 | E06000045,Southampton,E12000008,50,5070,32.3,219539,220459,221989,223589,226655,226698,227223,228447,230017,233085,235870,238519,239858,242106,246054,250377,252359,252796,252520,252872 45 | E06000046,Isle of Wight,E12000008,380,375,51,132925,133908,134783,135891,137179,137727,138289,138675,138361,138364,138392,138826,138555,139332,139763,140264,140984,141538,141771,142296 46 | E06000047,County Durham,E12000001,2226,240,43.1,493678,493538,493931,495147,497218,499348,502960,505617,507311,510628,512994,514261,515923,517573,519347,521776,523662,526980,530094,533149 47 | E06000049,Cheshire East,E12000002,1166,332,46.6,352104,353348,355529,357354,359807,362049,365003,367160,368023,369051,370736,372383,373006,374606,375722,377303,378846,380790,384152,386667 48 | E06000050,Cheshire West and Chester,E12000002,920,374,44.6,322154,322657,324378,325496,327169,328358,329364,329353,329116,329553,329526,330224,331069,332272,333949,335724,337986,340502,343071,343823 49 | E06000051,Shropshire,E12000005,3197,102,48.2,283254,284901,286913,288810,291523,294531,297633,300473,302069,304523,307108,308416,309085,310774,312227,314392,317459,320274,323136,325415 50 | E06000052,Cornwall,E12000009,3545,162,47.9,499937,504644,508579,511810,515098,517984,521957,524973,526365,529794,533760,538249,541734,545961,550283,555057,561349,565968,569578,573299 51 | E06000053,Isles of Scilly,E12000009,16,136,48.8,2140,2170,2155,2210,2210,2264,2293,2333,2251,2228,2224,2279,2265,2292,2335,2331,2259,2242,2224,2226 52 | E06000054,Wiltshire,E12000009,3255,155,45.1,433508,438386,442633,445632,448670,453041,458840,464007,466711,470199,474319,476914,479911,484560,488487,492240,496043,498064,500024,504070 53 | E06000055,Bedford,E12000006,476,367,40.7,148113,149589,150684,151308,151747,152346,153107,154164,154808,156535,157840,159369,161553,163999,166376,168814,169912,171623,173292,174687 54 | E06000056,Central Bedfordshire,E12000006,716,411,40.9,234006,236297,238547,240444,242062,244351,246803,249035,250329,252460,255644,259591,263793,267846,272421,276731,280030,283606,288648,294096 55 | E06000057,Northumberland,E12000001,5020,65,48.8,307363,308499,309448,310140,310752,311375,312960,314057,314489,315463,316278,316489,316389,316832,316453,317444,319030,320274,322434,323820 56 | E06000058,"Bournemouth, Christchurch and Poole",E12000009,162,2449,42.8,346829,348717,348483,348506,351616,353901,359462,363158,366948,373760,379441,382788,385178,388358,390889,394009,395638,395784,395331,396989 57 | E06000059,Dorset,E12000009,2491,152,51.4,346596,350487,353367,355305,357679,359806,363069,364085,363567,364317,365897,366966,368555,369485,371636,373288,375051,376484,378508,379791 58 | E06000060,Buckinghamshire,E12000008,1565,350,42.3,479131,478768,480164,482126,485526,489348,493501,496371,498813,502820,506550,510983,515533,520900,527114,533056,535918,540059,543973,547060 59 | E06000061,North Northamptonshire,E12000004,987,355,41.5,285093,287657,290977,293506,297012,301168,306155,309747,312196,314555,317959,321483,324009,327856,331763,336991,341841,345477,348228,350448 60 | E06000062,West Northamptonshire,E12000004,1377,295,40.7,345893,349123,351689,353110,357438,362435,365907,368454,371268,373456,376008,378848,381646,385495,390404,395461,399368,402145,405050,406733 61 | E07000008,Cambridge,E12000006,41,3073,29.8,109941,109543,111317,112167,117217,116654,115454,116183,116746,120219,122725,122601,123024,123735,125105,124635,124919,125758,124798,125063 62 | E07000009,East Cambridgeshire,E12000006,651,138,43.8,73411,74328,77447,75996,77224,78429,79923,81035,82357,83303,84245,85220,85942,87045,87783,88189,88858,89362,89840,90172 63 | E07000010,Fenland,E12000006,546,187,45.1,83687,84676,86296,87983,88968,90647,92713,93653,94404,95135,95461,95975,96617,97591,98814,99636,100776,101491,101850,102080 64 | E07000011,Huntingdonshire,E12000006,906,198,43.6,157189,158476,159626,162654,162822,163896,164764,166346,167052,168352,170039,171206,172147,173883,175334,176095,176979,177352,177963,178985 65 | E07000012,South Cambridgeshire,E12000006,902,178,43.3,130476,131893,134057,135645,137420,139264,141484,143591,145679,147890,149842,150906,151188,152932,154488,156020,156705,157519,159086,160904 66 | E07000026,Allerdale,E12000002,1242,79,48.6,93544,93816,94559,94846,95035,95279,95880,96186,96377,96301,96444,96269,96269,96532,96756,97099,97213,97527,97761,97831 67 | E07000027,Barrow-in-Furness,E12000002,78,857,45,71960,71340,70914,70845,70545,70267,70034,69844,69776,69429,69056,68471,67936,67769,67676,67532,67099,67137,67049,66726 68 | E07000028,Carlisle,E12000002,1038,105,45.3,100764,101721,102777,104412,105562,106707,107293,107178,106966,106985,107475,107925,107992,108059,108109,108388,108274,108387,108678,108524 69 | E07000029,Copeland,E12000002,732,93,47.3,69251,69095,69273,69750,69899,70329,70677,70789,70662,70629,70627,70309,70052,69866,69688,69306,68689,68424,68183,68041 70 | E07000030,Eden,E12000002,2142,25,51.3,49879,50276,50878,51393,51698,51891,52211,52427,52595,52678,52502,52687,52657,52649,52576,52642,52779,52881,53253,53754 71 | E07000031,South Lakeland,E12000002,1535,68,51.6,102397,102433,102928,103672,104301,104340,104684,104492,104410,104143,103713,103544,103593,103501,103776,103826,104321,104532,105088,104905 72 | E07000032,Amber Valley,E12000004,265,485,46.2,116560,117265,117898,118421,119152,120038,120436,121170,121532,122081,122521,122798,123592,124050,124188,124802,125898,126678,128147,128829 73 | E07000033,Bolsover,E12000004,160,507,43.9,71887,72527,73343,73601,73844,74347,74822,75058,75224,75691,76029,76480,76774,77231,77917,78225,79098,79530,80562,81305 74 | E07000034,Chesterfield,E12000004,66,1589,44.7,98832,99256,99929,100545,101277,101674,102027,102609,103037,103417,103788,103788,104066,104331,104463,104527,104579,104628,104900,104930 75 | E07000035,Derbyshire Dales,E12000004,792,91,51.5,69418,69392,69368,69536,69509,69526,69850,70450,70705,71030,71104,71386,71372,71420,71301,71477,71849,71977,72325,72422 76 | E07000036,Erewash,E12000004,110,1052,43.9,110126,110250,110080,110068,110102,109979,110184,110809,111283,111739,112249,112833,113246,114155,114684,115112,115314,115490,115371,115332 77 | E07000037,High Peak,E12000004,539,172,46.4,89400,89323,89185,89261,89627,90050,90553,90858,91047,91063,90982,91160,91172,91417,91523,91720,92063,92221,92666,92633 78 | E07000038,North East Derbyshire,E12000004,276,371,47.9,96927,96916,97127,97532,97666,97740,98067,98261,98474,98832,99100,99347,99306,99383,99661,100450,100780,101125,101462,102216 79 | E07000039,South Derbyshire,E12000004,338,324,41.9,81738,83480,85312,86506,87832,89295,90655,92023,93015,94095,94915,95934,97111,98395,99345,100421,102385,104493,107261,109516 80 | E07000040,East Devon,E12000009,814,182,51.3,125713,126562,127170,128444,129797,130641,132023,132594,132378,132666,133272,134430,135046,136518,138380,140271,142265,144317,146284,148080 81 | E07000041,Exeter,E12000009,47,2835,33.4,111180,110636,111064,110697,112970,113128,114109,114167,114419,115712,117063,119040,121030,123018,125679,127522,128916,130428,131405,133333 82 | E07000042,Mid Devon,E12000009,913,91,46.8,69887,70651,71472,72607,73323,74138,75599,76406,76981,77391,77936,78382,78706,79272,79582,79880,80623,81695,82311,83290 83 | E07000043,North Devon,E12000009,1086,90,48.4,87674,88477,89570,90433,91146,91744,92355,92775,93046,93293,93976,93845,93839,94027,94162,94643,95440,96110,97145,98170 84 | E07000044,South Hams,E12000009,887,99,51.7,81929,82058,81994,82085,82489,82985,83363,83516,83368,83516,83563,83703,84112,84435,84886,84834,85340,86221,87004,87946 85 | E07000045,Teignbridge,E12000009,674,200,49.6,121167,121810,122424,122964,123460,123508,124066,124396,124451,124359,124271,125047,126088,127432,128903,129917,131437,132844,134163,135039 86 | E07000046,Torridge,E12000009,984,70,51.1,59129,59774,60663,61479,61954,62615,63100,63501,63477,63686,63973,64769,65127,65657,66312,67022,67821,68143,68267,68719 87 | E07000047,West Devon,E12000009,1160,48,51.7,48889,49972,49698,50118,50481,50833,51711,52566,52868,53285,53655,53886,53982,54343,54502,54742,55329,55528,55796,56139 88 | E07000061,Eastbourne,E12000008,44,2340,46.3,89836,90829,92163,93772,95500,96532,97616,98361,98228,98510,99308,99901,100363,101340,102204,103003,103251,103160,103745,103324 89 | E07000062,Hastings,E12000008,30,3106,43.7,85392,85873,86596,86854,87419,87516,88024,88722,89293,89623,90173,90377,90906,91360,91937,92903,92813,92855,92661,92554 90 | E07000063,Lewes,E12000008,292,354,48.2,92247,92901,93227,93794,93832,94162,94782,95455,96114,97079,97584,98695,99626,100428,100898,101631,102257,102744,103268,103525 91 | E07000064,Rother,E12000008,509,190,53.4,85471,86174,86718,87183,87684,88221,89262,90120,90123,90578,90729,91065,91232,92370,93192,93966,94997,95656,96080,96716 92 | E07000065,Wealden,E12000008,833,195,49.2,140184,141150,142444,143404,144084,145094,146207,146539,146612,147861,149415,151050,152777,155005,156790,158054,158941,160175,161475,162733 93 | E07000066,Basildon,E12000006,110,1705,39.3,165895,166743,167089,167825,168927,169951,170908,172423,173084,173788,174971,176538,178498,180676,181951,183768,184479,185862,187199,187558 94 | E07000067,Braintree,E12000006,612,250,43.6,132482,134272,135767,137426,139160,140921,142344,143894,144589,145972,147514,148375,149150,150076,150530,151233,151677,151561,152604,153091 95 | E07000068,Brentwood,E12000006,153,504,43.2,68483,68779,69234,69895,70542,71040,71346,71941,72663,73301,73841,74142,74734,75914,76403,76769,76575,76550,77021,77242 96 | E07000069,Castle Point,E12000006,45,2026,46.9,86673,86866,87237,87207,87462,87576,87776,88020,88122,88115,87964,88219,88594,88912,89184,89752,89814,90070,90376,90524 97 | E07000070,Chelmsford,E12000006,339,530,41.8,157269,158686,160360,162505,163570,163879,164381,165047,166208,167441,168491,169379,170311,171590,172719,174197,176194,177079,178388,179549 98 | E07000071,Colchester,E12000006,328,601,37.8,156016,156055,157164,158652,162038,163847,165674,167927,169027,171679,173614,176185,177993,180973,184916,187633,190098,192523,194706,197200 99 | E07000072,Epping Forest,E12000006,339,390,42.6,120972,121482,121404,121495,121735,122530,122877,123365,123820,124189,124880,125997,126989,128451,129274,129923,130576,131137,131689,132175 100 | E07000073,Harlow,E12000006,31,2858,37.7,78799,78340,78128,78019,78354,78722,79165,79913,80710,81490,82177,82814,83438,84619,85335,85867,86191,86594,87067,87280 101 | E07000074,Maldon,E12000006,358,183,49.4,59589,59750,59996,60303,60662,60993,61398,61660,61815,61845,61720,61946,62217,62801,62824,63418,63975,64425,64926,65401 102 | E07000075,Rochford,E12000006,167,524,46.2,78650,79325,79513,80100,80815,81490,82264,83056,83094,83415,83333,83895,83955,84809,85192,85708,86209,86981,87368,87627 103 | E07000076,Tendring,E12000006,336,438,51.1,138802,139318,139909,140340,140325,140423,140523,140421,139593,139058,138062,138395,139037,140395,141790,143353,144705,145803,146561,147353 104 | E07000077,Uttlesford,E12000006,641,145,43.8,68969,69529,70278,70865,71580,72929,74232,75505,76778,78620,80032,81199,82680,84066,85205,86289,87684,89179,91284,92759 105 | E07000078,Cheltenham,E12000009,47,2490,41,110024,109775,109282,109763,110948,111637,112511,112971,113967,114901,115645,116058,115788,116379,116592,117217,117128,117090,116306,116043 106 | E07000079,Cotswold,E12000009,1165,78,49.4,80387,80475,81212,81795,82205,82597,83202,83016,82765,82614,83180,83624,84266,84920,85548,86121,87509,89022,89862,90264 107 | E07000080,Forest of Dean,E12000009,526,166,48.5,80057,80125,80729,81091,81482,81733,82004,82099,81994,81896,82200,82716,82953,83682,84576,85411,85957,86543,86791,87107 108 | E07000081,Gloucester,E12000009,41,3199,39.4,109947,110593,111545,112583,113876,115296,117225,118394,119348,120660,121921,123405,124535,125686,127169,128355,129083,129285,129128,129709 109 | E07000082,Stroud,E12000009,461,263,46.8,108060,108229,108840,109477,110122,110509,111069,111375,111853,112491,113074,113407,114094,115274,116774,117472,118130,119019,119964,120903 110 | E07000083,Tewkesbury,E12000009,414,233,44.4,76524,77248,77673,77932,78275,78930,79404,79755,80553,81535,82269,83006,84323,85798,86868,88518,90332,92599,95019,96624 111 | E07000084,Basingstoke and Deane,E12000008,634,280,41.4,152874,153641,154833,155737,157499,158765,160183,162036,164135,166364,168550,170691,172050,173374,174340,175226,175337,175729,176582,177760 112 | E07000085,East Hampshire,E12000008,514,241,47.4,109369,109606,109561,109960,110482,111131,112296,113172,114261,115350,116010,116574,117401,117985,118694,118705,119392,120681,122308,123838 113 | E07000086,Eastleigh,E12000008,80,1701,42,116257,116430,116696,117066,118089,119436,120596,121312,122377,124240,125852,126759,127759,128867,128977,129546,130498,131819,133584,135520 114 | E07000087,Fareham,E12000008,74,1567,47,108152,108451,108545,108473,108077,108397,109399,110205,110832,111382,111931,112888,113873,114663,115182,115818,116219,116339,116233,116338 115 | E07000088,Gosport,E12000008,25,3337,42.8,76676,76831,77585,78099,78646,79579,80627,81730,81961,82307,82669,83272,83542,84346,84757,85492,85509,85283,84838,84679 116 | E07000089,Hart,E12000008,215,453,43.9,83590,84238,85180,86367,87519,88874,89866,90566,90986,91276,91662,92224,92959,93680,94395,94882,95465,96293,97073,97608 117 | E07000090,Havant,E12000008,56,2267,46,116886,117173,117346,117362,117542,117824,118282,119039,119394,120105,120783,121285,121671,122345,123122,123891,125065,125813,126220,126339 118 | E07000091,New Forest,E12000008,752,239,51.2,169506,170595,171256,171769,172423,173269,174048,174548,175432,176323,176789,177480,178186,179014,179275,179529,179590,179753,180086,179649 119 | E07000092,Rushmoor,E12000008,39,2417,39.2,90892,89877,89727,89358,90040,91065,91891,92589,92572,93397,94354,94806,94897,95228,95166,96091,95817,95142,94599,94387 120 | E07000093,Test Valley,E12000008,628,203,45.1,109965,110387,111271,112049,112811,113530,114433,115101,115251,115814,116698,117341,118805,119835,121352,122823,123957,125169,126160,127163 121 | E07000094,Winchester,E12000008,661,191,43.7,107264,107844,108515,109179,109947,110628,111820,113267,114505,115789,116820,118074,119037,120290,121734,123100,123879,124295,124859,125925 122 | E07000095,Broxbourne,E12000006,51,1897,40.3,87203,87700,87817,87805,88800,89684,90833,91630,92395,93085,93702,94595,95107,95837,96311,96881,96762,96876,97279,97592 123 | E07000096,Dacorum,E12000006,212,732,40.9,137843,138118,138413,138403,138633,138973,139527,140802,142205,143651,145298,146728,148075,149515,151069,152445,153316,154280,154763,155457 124 | E07000098,Hertsmere,E12000006,101,1043,40.9,94466,94295,94419,93788,94302,95225,96252,97642,98637,99402,100379,100895,101449,102540,103157,103705,104031,104205,104919,105471 125 | E07000099,North Hertfordshire,E12000006,375,356,42.5,117051,117959,119148,120092,120757,121890,122974,124391,125269,126286,127494,128302,129231,130902,131611,132655,133321,133214,133570,133463 126 | E07000102,Three Rivers,E12000006,89,1058,42,82905,83448,83946,83963,84305,84466,85282,86205,87096,87573,87921,88804,89566,90525,91797,92676,92641,93045,93323,93966 127 | E07000103,Watford,E12000006,21,4509,37.3,80398,80185,80644,81097,82138,82145,82899,84776,86472,88574,90653,91940,93905,95553,96348,96577,96675,96767,96577,96623 128 | E07000105,Ashford,E12000008,581,226,42.3,103024,104377,105636,107264,109409,111459,113286,114556,115694,116975,118405,120128,121684,123159,124047,125871,127527,129281,130032,131018 129 | E07000106,Canterbury,E12000008,309,540,38.1,135381,136483,138608,140578,141918,143490,145197,146073,146396,148653,150600,153223,154941,157044,159663,162502,164100,164553,165394,166762 130 | E07000107,Dartford,E12000008,73,1568,37.4,85956,86403,87011,88277,89990,91174,92242,93946,95266,96337,97604,98851,100399,102010,103531,105117,107516,109709,112606,114051 131 | E07000108,Dover,E12000008,315,376,46.7,104646,104883,105784,106878,107475,107904,109041,109848,110061,111072,111718,111798,112490,113292,113446,114572,115803,116969,118131,118514 132 | E07000109,Gravesham,E12000008,99,1080,39.8,95791,95448,95569,95907,96884,97574,98496,99394,100188,101076,101766,102559,103383,104802,105715,106215,106121,106385,106939,106890 133 | E07000110,Maidstone,E12000008,393,440,41.5,139116,140338,141246,142242,143353,145307,147741,149723,151594,153739,155764,157368,159230,161510,164019,165719,167730,169955,171826,173132 134 | E07000111,Sevenoaks,E12000008,369,329,44.3,109242,109105,109280,110045,111266,112500,113132,113298,113754,114509,115351,116306,116889,117625,118165,119011,119429,120293,120750,121387 135 | E07000112,Folkestone and Hythe,E12000008,357,317,47.6,96345,97205,98540,99949,101509,102469,103902,104782,105716,106962,108199,108611,108767,109324,109838,111024,111427,112578,112996,113320 136 | E07000113,Swale,E12000008,373,404,41.1,123123,124172,125348,125890,126516,127568,129721,131720,133030,134980,136324,137794,139274,140901,142465,144917,146694,148519,150082,151015 137 | E07000114,Thanet,E12000008,104,1365,45.3,126750,127675,128140,128782,129301,129601,130637,131750,132337,133508,134402,135687,136792,138526,139822,140828,141337,141819,141922,141458 138 | E07000115,Tonbridge and Malling,E12000008,240,552,42.4,107771,108673,109494,110441,111719,113536,115469,116967,118459,120054,121087,122030,123171,124583,125779,127305,128891,130508,132153,132571 139 | E07000116,Tunbridge Wells,E12000008,331,359,43.5,104049,104206,104390,105131,105877,107052,108927,111251,112774,114040,115246,115796,116094,116525,116610,117357,118061,118054,118724,118939 140 | E07000117,Burnley,E12000002,111,807,39.9,89521,88842,88282,87923,87624,87646,87256,87328,87027,86902,87032,87091,86829,87194,87262,87496,87705,88527,88920,89344 141 | E07000118,Chorley,E12000002,203,586,43.5,100559,101142,102003,102778,103279,103807,104362,105396,105682,106443,107591,109075,110531,111623,112963,114266,115772,116821,118216,118870 142 | E07000119,Fylde,E12000002,166,490,50.9,73340,73658,74212,74667,74841,74824,75305,75230,75441,75610,76098,76073,76548,77140,77490,78153,78863,79770,80780,81211 143 | E07000120,Hyndburn,E12000002,73,1111,39.9,81495,81233,81408,81280,81311,81491,81453,81176,81003,80876,80549,80160,79953,80150,80113,80392,80410,80815,81043,81133 144 | E07000121,Lancaster,E12000002,567,261,39.1,134049,133628,134635,135472,136764,136682,136235,135812,136013,137120,137823,139317,139835,140172,140787,141723,142487,144246,146038,148119 145 | E07000122,Pendle,E12000002,169,544,39.9,89277,88830,88559,88330,88312,88788,88819,89005,89287,89234,89576,89541,89973,89655,89925,90515,90696,91405,92112,92145 146 | E07000123,Preston,E12000002,142,1013,35.3,130372,131110,132685,134410,136200,137784,138470,138443,137956,138831,140054,140456,140002,139907,140685,141023,141346,141818,143135,144147 147 | E07000124,Ribble Valley,E12000002,583,106,48.2,54053,54659,55400,56054,56358,56664,56986,57158,57004,57218,57292,57606,57878,58105,58519,58864,59504,60057,60888,62026 148 | E07000125,Rossendale,E12000002,138,517,42.5,65647,65556,65729,65623,65872,66199,66623,67063,67479,67824,68053,68332,68698,69104,69418,69787,70365,70895,71482,71432 149 | E07000126,South Ribble,E12000002,113,982,44.7,103949,104522,105149,105578,105753,106512,107128,107830,108609,108846,109181,108999,108964,109116,109685,110136,110400,110527,110788,111086 150 | E07000127,West Lancashire,E12000002,347,330,44.6,108480,108750,109273,109588,109806,110308,110720,110666,110583,110763,110617,110911,111216,111845,112482,113061,113881,113949,114306,114496 151 | E07000128,Wyre,E12000002,282,401,50.1,105800,106444,107246,107760,108188,108435,108475,108245,108057,107912,107692,107809,108167,108594,109546,110002,110426,111223,112091,113067 152 | E07000129,Blaby,E12000004,130,781,42.8,90361,91225,91592,91664,91721,92266,92741,93341,93511,93935,94132,94608,95105,95836,96458,97562,98977,100421,101526,101950 153 | E07000130,Charnwood,E12000004,279,675,38.3,153554,153431,153664,154740,155768,157153,158667,160509,162330,164346,165876,168370,169993,172548,175167,177378,180387,182643,185851,188416 154 | E07000131,Harborough,E12000004,592,161,46.3,76818,78226,79118,79860,80486,81492,82593,83417,84132,84849,85699,86368,87426,87935,89144,90251,91461,92499,93807,95537 155 | E07000132,Hinckley and Bosworth,E12000004,297,382,45.1,100202,100482,101210,101953,102431,102996,103450,104179,104473,104734,105328,105956,106527,107560,108603,109881,111370,112423,113136,113666 156 | E07000133,Melton,E12000004,481,107,48,47875,48080,48429,48618,48605,48724,49153,49287,49481,50077,50495,50785,50868,51012,50956,50967,50873,51100,51209,51394 157 | E07000134,North West Leicestershire,E12000004,279,375,43.9,85678,86842,87794,88845,89623,90406,91476,92283,92728,93165,93670,93985,94716,95731,97098,98436,100109,102126,103611,104809 158 | E07000135,Oadby and Wigston,E12000004,24,2436,42.4,55791,55779,56161,56454,56218,56519,56475,56220,55600,55186,55979,56110,56282,56060,55984,55991,57035,57056,57015,57313 159 | E07000136,Boston,E12000004,364,195,41.8,55802,56391,56975,58090,58551,59770,61036,62176,63399,64475,64615,64855,65831,66454,66876,67709,68488,69366,70173,70837 160 | E07000137,East Lindsey,E12000004,1767,80,52.8,130654,132144,133218,134889,135473,135960,136939,137466,137140,137251,136683,136651,136799,137722,138068,138743,139718,140741,141727,142030 161 | E07000138,Lincoln,E12000004,36,2803,33.1,85584,85669,86405,87746,88603,89433,89873,90207,90813,92188,93085,94535,95371,95910,96641,97385,98438,99039,99299,100049 162 | E07000139,North Kesteven,E12000004,922,128,46.3,94378,96898,98593,99943,100710,102275,103844,105495,106456,107478,108518,109311,109935,111197,112186,113644,115230,115985,116915,118149 163 | E07000140,South Holland,E12000004,750,128,46.5,76714,77918,79299,80832,81696,83158,84506,85957,86987,87905,88390,88546,89184,90382,91245,92527,93295,93980,95019,95857 164 | E07000141,South Kesteven,E12000004,943,152,46.8,124877,125485,126209,127129,127665,128966,130196,131218,132188,133144,134125,135212,136612,138339,139376,140900,141662,141853,142424,143225 165 | E07000142,West Lindsey,E12000004,1156,83,48.5,79631,81075,82498,83786,84626,85852,87345,88261,88616,89364,89352,90074,90791,91882,92958,93903,94340,94869,95667,96186 166 | E07000143,Breckland,E12000006,1305,108,47.1,121585,122222,123247,123944,125493,126551,127797,128938,129431,129932,131009,131857,132995,134287,135698,137123,138602,139329,139968,141255 167 | E07000144,Broadland,E12000006,552,239,48.2,118814,119391,120333,121039,121637,122412,123242,123387,123819,124483,124740,125173,125499,125956,126626,127402,128535,129464,130783,131931 168 | E07000145,Great Yarmouth,E12000006,174,569,46.2,90945,91437,92526,93316,94113,94545,95211,95924,96414,97063,97424,97555,97736,98127,98615,98992,99417,99370,99336,99198 169 | E07000146,King's Lynn and West Norfolk,E12000006,1440,105,48.2,135565,136831,138272,139621,140959,142790,144274,145551,146428,147134,147936,148579,149187,150214,151261,151797,151945,151811,151383,151245 170 | E07000147,North Norfolk,E12000006,966,109,54.7,98495,98723,99121,99374,99638,99907,100338,100887,100556,100780,101664,101829,102079,102872,103252,103587,104067,104552,104837,105167 171 | E07000148,Norwich,E12000006,39,3644,33.3,122366,122376,122963,123857,125630,126805,126949,128034,129219,130923,132158,133867,135118,136587,138097,139865,140353,141137,140573,142177 172 | E07000149,South Norfolk,E12000006,908,158,46.3,110848,112483,113665,114539,115420,116052,117134,118774,120488,122611,124495,125987,127682,129345,131199,132965,135471,138017,140880,143066 173 | E07000163,Craven,E12000003,1177,49,51,53706,53770,54060,54412,54888,55086,55395,55586,55326,55398,55459,55492,55594,55750,55826,56343,56604,56832,57142,57338 174 | E07000164,Hambleton,E12000003,1311,70,50.3,84168,84844,85336,85598,85972,86995,87748,88482,88645,89096,89602,89794,89997,89915,90074,90591,90718,91134,91594,91932 175 | E07000165,Harrogate,E12000003,1308,124,47.8,151467,151549,151821,152518,153673,154270,155068,155843,156511,157531,158683,159396,159679,159631,159916,159768,160044,160533,160831,161545 176 | E07000166,Richmondshire,E12000003,1319,41,44.5,47067,47798,48465,49399,50351,51003,51626,52125,52440,52877,53287,53808,53897,52812,52565,53876,53699,53244,53730,53732 177 | E07000167,Ryedale,E12000003,1507,37,50.8,50910,50847,51196,51613,51948,51851,52078,52100,52157,51949,51893,52157,52334,52848,53332,53861,54311,54920,55380,55629 178 | E07000168,Scarborough,E12000003,816,133,50.4,106221,107246,107862,108548,108753,108728,108813,109015,108943,109014,108735,108662,108330,108152,108089,108157,108370,108736,108757,108737 179 | E07000169,Selby,E12000003,599,153,44.5,76555,77132,77390,77871,78416,79366,80519,81828,82374,83163,83547,84199,84893,85622,86215,86942,87887,89106,90620,91697 180 | E07000170,Ashfield,E12000004,110,1171,41.9,111477,112488,113048,114105,115020,115704,116301,116971,117875,118566,119522,120120,121546,122490,123577,124513,126164,127151,127918,128337 181 | E07000171,Bassetlaw,E12000004,638,185,45.8,107843,108451,109276,110017,110488,110876,111314,112106,112563,112924,113003,113235,113704,114256,114689,115212,116304,116839,117459,118280 182 | E07000172,Broxtowe,E12000004,80,1431,42.9,107481,107832,107822,108085,108290,108254,108272,108730,109217,109252,109749,110568,111077,111534,111837,112116,112718,113272,114033,114627 183 | E07000173,Gedling,E12000004,120,985,43.9,111812,111943,111684,111847,111919,111699,111924,112293,112688,113066,113741,114061,114974,115815,116142,116746,117128,117786,117896,118239 184 | E07000174,Mansfield,E12000004,77,1426,42.1,98065,98367,99250,99706,100413,101347,102139,103269,103711,104120,104551,104812,105334,105972,106780,107880,108576,108841,109313,109351 185 | E07000175,Newark and Sherwood,E12000004,651,189,45.5,106351,106954,108359,109776,110553,111534,112471,113309,113914,114596,114982,115851,116878,117859,118695,119848,120965,121566,122421,123127 186 | E07000176,Rushcliffe,E12000004,409,297,43.6,105780,106546,106987,107430,107832,108413,108909,109393,110137,111121,111248,111520,112910,113690,114497,115168,115996,117671,119184,121416 187 | E07000177,Cherwell,E12000008,589,258,41.5,131988,132586,133977,134947,135876,137159,138120,139440,140301,141337,142252,142936,143822,144520,145554,146635,147602,149161,150503,151846 188 | E07000178,Oxford,E12000008,46,3324,28.6,135509,136625,139917,141593,145383,144513,144188,144433,145478,147907,150245,151477,152406,154664,154716,155292,154582,154327,152457,151584 189 | E07000179,South Oxfordshire,E12000008,679,212,44.4,128307,128754,128920,129359,130050,130676,131626,132611,133466,133915,134961,135722,136328,137477,138177,139156,139767,140504,142057,143782 190 | E07000180,Vale of White Horse,E12000008,578,239,42.5,115772,115565,116134,116475,117390,118209,118994,119284,120026,120823,121891,122710,123497,124621,126534,128653,131227,133732,136007,137910 191 | E07000181,West Oxfordshire,E12000008,714,156,44.7,95701,95961,97083,98038,98869,100316,102166,103016,103824,104706,105442,107164,107945,108095,108609,108748,109266,109800,110643,111758 192 | E07000187,Mendip,E12000009,739,157,47.3,103964,104634,105158,105798,106339,106833,107755,108567,108604,109006,109406,110050,110326,111091,112056,113131,113513,114881,115587,116288 193 | E07000188,Sedgemoor,E12000009,564,219,47,106030,107051,107785,108765,109698,110712,112102,112885,112934,113786,114919,116067,117441,118959,120141,121345,122178,122791,123178,123446 194 | E07000189,South Somerset,E12000009,959,176,48.1,151059,152165,153463,154967,156485,157420,158956,160171,160678,160871,162113,163038,164006,164834,165510,166526,167216,167861,168345,168696 195 | E07000192,Cannock Chase,E12000005,79,1287,42.4,92165,93000,93751,94179,94772,94991,95391,95999,96514,96898,97582,97932,98106,98508,98490,98513,99126,100109,100762,101484 196 | E07000193,East Staffordshire,E12000005,387,312,41.8,103938,104487,106065,106800,107609,108466,109776,111191,112033,112979,113858,114487,114940,115720,116196,116937,117552,118574,119754,120923 197 | E07000194,Lichfield,E12000005,331,319,46.6,93229,93679,94467,95580,96307,97432,98528,99490,100012,100424,100911,101175,101716,102062,102566,102831,103507,103965,104756,105637 198 | E07000195,Newcastle-under-Lyme,E12000005,211,614,41.8,122015,122165,122657,123076,123170,123191,123526,123213,123073,123351,123878,124104,125184,125978,126863,128126,128963,129490,129441,129610 199 | E07000196,South Staffordshire,E12000005,407,276,48.1,105942,106013,106300,106300,106428,106655,107144,107501,107561,108050,108318,108443,110323,110688,110712,111173,111890,112126,112436,112369 200 | E07000197,Stafford,E12000005,598,230,45.5,120712,121409,122447,123224,124361,125620,127055,128320,129041,130001,130895,131554,131984,132044,132220,133664,134764,135880,137280,137858 201 | E07000198,Staffordshire Moorlands,E12000005,576,171,49,94555,94927,94997,94980,95342,95888,96295,96604,96781,96987,97209,97239,97488,97838,98011,98176,98496,98397,98435,98427 202 | E07000199,Tamworth,E12000005,31,2491,41.3,74596,74519,74544,74424,74724,75078,75407,75824,76255,76582,76895,77105,77096,77032,77108,77010,76527,76678,76696,76864 203 | E07000200,Babergh,E12000006,594,156,49.1,83538,84112,85066,85622,85957,86698,86916,87260,87411,87467,87901,88088,88704,89413,89900,90250,90794,91401,92036,92735 204 | E07000202,Ipswich,E12000006,40,3442,38.5,117156,117818,119210,121175,124028,124753,125471,127387,129320,131729,133729,135065,135604,136429,137694,138515,138480,137532,136913,135979 205 | E07000203,Mid Suffolk,E12000006,871,120,48,87015,87684,88274,89492,90795,92070,93817,94603,95250,96244,97076,97789,98431,99596,100251,100720,101543,102493,103895,104857 206 | E07000207,Elmbridge,E12000008,95,1444,43.4,122709,123784,124990,125677,127286,128763,129756,129908,129991,130937,131428,132184,133499,134833,135398,136085,136379,136626,136795,137215 207 | E07000208,Epsom and Ewell,E12000008,34,2377,41.7,67077,67554,67738,68386,69172,70028,71337,72514,73106,74278,75191,75839,76906,77988,78459,78999,79451,79928,80627,81003 208 | E07000209,Guildford,E12000008,271,555,37.1,129774,129297,128763,128575,129043,130673,131656,132401,133584,135547,137580,139338,140657,142551,145056,146845,147777,147889,148998,150352 209 | E07000210,Mole Valley,E12000008,258,339,47.6,80283,80498,81233,81498,81808,82319,83219,84256,84732,85413,85637,86096,86761,86871,86978,87258,87128,87253,87245,87547 210 | E07000211,Reigate and Banstead,E12000008,129,1156,41.8,126661,126272,126665,127222,127760,129190,131224,132857,134934,136741,138375,139772,140928,142858,143794,145284,146383,147757,148748,149243 211 | E07000212,Runnymede,E12000008,78,1157,37.4,78053,77649,77550,76948,77018,77169,78330,78694,79373,80283,80501,81878,83094,83906,84992,86370,86882,88000,89424,90327 212 | E07000213,Spelthorne,E12000008,45,2225,42,90404,90292,90225,90127,90571,91512,92425,93182,94001,94848,95852,96737,97371,97941,98419,98869,99120,99334,99844,99873 213 | E07000214,Surrey Heath,E12000008,95,938,44.1,80309,80358,80938,81631,82321,83284,84214,84345,85142,85843,86378,86700,87134,87814,88385,88705,88765,88874,89305,89204 214 | E07000215,Tandridge,E12000008,248,357,44.2,79332,78906,79002,79050,79373,80027,80983,81543,82099,82756,83178,83642,84616,85340,85914,86527,87297,87496,88129,88542 215 | E07000216,Waverley,E12000008,345,367,45.3,115668,115573,116024,116230,116357,117038,118098,119012,120106,120957,121754,122081,122783,123359,124011,124593,125010,125610,126328,126556 216 | E07000217,Woking,E12000008,64,1572,41.5,89893,89289,89646,89798,91072,92838,94397,95530,96597,98201,99493,99779,100387,100634,100976,101421,101129,101167,100793,100008 217 | E07000218,North Warwickshire,E12000005,284,230,45.6,61788,61825,61749,61769,61894,61920,61839,61968,62124,62066,62089,62206,62119,62448,62765,63193,64069,64850,65264,65452 218 | E07000219,Nuneaton and Bedworth,E12000005,79,1651,41.2,119239,119625,120541,120668,121048,121787,122661,123868,124330,124759,125409,125867,126118,126309,126603,127674,128659,128902,129883,130373 219 | E07000220,Rugby,E12000005,351,315,41,87520,88653,89050,89998,91321,93051,94748,96434,97662,99035,100496,101030,101819,103189,104455,105291,106350,107194,108935,110650 220 | E07000221,Stratford-on-Avon,E12000005,978,135,48.2,111551,112258,112992,113483,114823,116708,118478,119666,119826,120191,120824,120794,121253,121779,122438,123345,125202,127580,130098,132402 221 | E07000222,Warwick,E12000005,283,512,39.7,126095,128330,130724,132719,134567,135593,136655,137448,138189,138115,137736,138423,138208,138725,138893,139488,140282,142484,143753,144909 222 | E07000223,Adur,E12000008,42,1526,45.8,59714,60050,59993,59961,59821,60337,60564,60721,61023,61216,61334,61970,62605,63266,63526,63621,63721,63869,64301,64187 223 | E07000224,Arun,E12000008,221,729,50,140998,142385,143458,145149,145985,146750,147725,148458,148891,149467,149811,151556,153013,154653,155798,157287,158657,159827,160758,161123 224 | E07000225,Chichester,E12000008,786,155,49.6,106494,106990,107512,108157,108773,109686,110603,111796,112474,113411,113995,114899,115800,116261,117784,119125,120192,120750,121129,121508 225 | E07000226,Crawley,E12000008,45,2501,37.8,100440,99195,98712,98887,99703,100746,101610,102827,103843,105478,107053,108234,108953,109874,110887,111546,111664,112448,112409,112474 226 | E07000227,Horsham,E12000008,530,274,46.4,122272,122694,123798,124920,125949,127190,128294,129073,129790,130916,131540,132267,133173,134507,136258,138523,140142,142217,143791,145474 227 | E07000228,Mid Sussex,E12000008,334,455,43.9,127397,127713,128623,129461,130503,132061,133976,135734,137209,138897,140188,141260,142983,144664,145969,147540,148345,149716,151022,152142 228 | E07000229,Worthing,E12000008,33,3405,45.4,97661,98236,98787,99452,100064,100632,101511,102369,102809,103769,104998,105774,106413,107287,108303,109246,109632,110025,110570,110727 229 | E07000234,Bromsgrove,E12000005,217,464,45.5,87904,89021,89984,90516,91046,91734,92563,93097,93444,93507,93732,94281,94806,95519,95800,96770,97594,98662,99881,100569 230 | E07000235,Malvern Hills,E12000005,577,138,50.9,72171,72655,72885,73166,73425,73748,74020,74192,74141,74542,74706,75090,75560,76224,76136,76555,77165,78113,78698,79445 231 | E07000236,Redditch,E12000005,54,1577,40.3,78779,79069,79466,79654,80110,81077,81762,82713,83102,83570,84318,84444,84505,84505,84821,85088,85204,84989,85261,85568 232 | E07000237,Worcester,E12000005,33,3013,39.1,93369,93446,93873,93843,94470,95024,95532,96416,97117,97655,98679,99622,100363,100739,100985,101927,102314,101891,101222,100265 233 | E07000238,Wychavon,E12000005,664,198,48.4,113081,113453,113914,114258,114696,115451,116141,116229,116499,116863,117074,117777,118906,120007,121709,123144,125378,127340,129433,131084 234 | E07000239,Wyre Forest,E12000005,195,518,47,96929,96830,97149,97223,97585,97666,98017,98143,97993,97943,98048,98087,98473,98999,99599,100007,100715,101062,101291,101139 235 | E07000240,St Albans,E12000006,161,926,41.2,129168,130407,131180,131284,131951,133293,134338,136088,137858,139511,141248,142137,143458,145208,146188,147025,147095,147373,148452,149317 236 | E07000241,Welwyn Hatfield,E12000006,130,956,35.8,97550,98136,99198,100470,103202,105096,106694,107442,108434,109630,110727,111661,113375,115341,117784,121007,122274,122746,123043,123893 237 | E07000242,East Hertfordshire,E12000006,476,319,42.7,129145,130029,130264,130456,131065,132078,133421,134843,135980,136922,138155,139405,140932,142781,144488,146130,147080,148105,149748,151786 238 | E07000243,Stevenage,E12000006,26,3393,38.4,79794,80110,80308,80008,80330,80352,80734,81615,82253,83007,84247,84824,85520,85993,86579,87285,87739,87754,87845,88104 239 | E07000244,East Suffolk,E12000006,1261,199,49.6,227736,228974,230868,233329,235651,237032,239249,240139,239877,239932,239946,240392,241426,242179,243264,245003,246913,248249,249461,250373 240 | E07000245,West Suffolk,E12000006,1035,171,41.9,154468,155991,157990,159469,161406,162408,163691,164959,166325,168604,171481,171468,171679,174882,176625,176687,179248,178881,179045,177302 241 | E07000246,Somerset West and Taunton,E12000006,1188,131,48.2,137654,139282,140384,141129,141816,142287,143337,144045,144376,144946,145143,146042,146597,147319,148759,150444,152288,153866,155115,155421 242 | E08000001,Bolton,E12000002,140,2062,38.9,261302,262367,263814,264511,265016,266816,268319,270497,273049,275168,277296,279084,280271,280788,281828,283536,284813,285372,287550,288248 243 | E08000002,Bury,E12000002,99,1917,40.4,180655,181084,181405,180999,181028,181809,182713,183000,183885,184755,185422,186150,186468,187287,187788,188503,189628,190108,190990,190708 244 | E08000003,Manchester,E12000002,116,4805,30.3,422915,428221,436727,444925,455745,463749,470538,477408,483784,492598,502902,510501,513665,518834,529809,541319,545501,547627,552858,555741 245 | E08000004,Oldham,E12000002,142,1669,37.3,218537,218455,218490,218988,219288,220033,220723,221907,222811,223807,225157,225734,226966,228182,230197,232349,233759,235623,237110,237628 246 | E08000005,Rochdale,E12000002,158,1414,38.2,206440,206697,207528,207286,207200,207845,208393,209666,210248,210758,211929,211947,212137,212976,214314,216350,218459,220001,222412,223659 247 | E08000006,Salford,E12000002,97,2703,34.7,216978,216310,217312,217921,219536,221931,223468,226782,228948,231837,234487,236946,238674,241539,245186,248121,251332,254408,258834,262697 248 | E08000007,Stockport,E12000002,126,2334,42.3,284557,283502,282932,282368,281195,280498,280953,281477,282263,282614,283253,283766,284890,286388,288169,289821,291045,291775,293423,294197 249 | E08000008,Tameside,E12000002,103,2202,40.1,213087,213211,213470,213667,213474,214187,214750,216360,217417,218774,219727,220201,220545,220696,221507,223109,224119,225197,226493,227117 250 | E08000009,Trafford,E12000002,106,2240,40.9,210172,211062,213031,214129,215430,217369,219359,220939,223065,225234,227091,228308,230146,232319,232975,234210,235493,236370,237354,237579 251 | E08000010,Wigan,E12000002,188,1758,42,301453,302305,303846,304958,306143,308023,309403,311971,314363,316296,318122,318740,319810,321114,322244,323526,324650,326088,328662,330712 252 | E08000011,Knowsley,E12000002,87,1762,39.2,151238,150506,149795,149216,148900,148788,148188,147822,147070,146398,145903,145942,146091,146429,147262,148001,148560,149571,150862,152452 253 | E08000012,Liverpool,E12000002,112,4475,34.8,441858,443784,444960,448091,452278,453055,453582,454468,457523,461403,465656,470191,471789,474569,480873,487605,491549,494814,498042,500474 254 | E08000013,St. Helens,E12000002,136,1328,42.8,176826,176295,175997,175738,175361,175199,174970,175106,175272,175203,175405,176124,176221,177191,177592,178480,179331,180049,180585,181095 255 | E08000014,Sefton,E12000002,157,1762,46.5,282884,280866,279913,278853,276957,275852,275085,274735,274153,273820,273969,273798,273372,273856,274089,274853,274589,275396,276410,275899 256 | E08000015,Wirral,E12000002,161,2015,44.4,315004,315050,315371,315130,314925,315350,315670,316711,317771,319078,319837,320389,320670,321503,321700,322216,322796,323235,324011,324336 257 | E08000016,Barnsley,E12000003,329,754,42.3,218124,218851,220165,221227,222618,224419,225989,227754,228973,230066,231865,233762,235811,237971,239855,241847,243341,245199,246866,248071 258 | E08000017,Doncaster,E12000003,568,551,41.2,286900,288647,290111,290850,292174,293990,296215,298388,300184,301299,302468,302920,303693,304398,305496,307374,308940,310542,311890,312785 259 | E08000018,Rotherham,E12000003,287,925,41.8,248349,249610,250886,251722,252675,253638,254180,255271,256313,256893,257716,258424,258817,260256,260929,262142,263375,264671,265411,264984 260 | E08000019,Sheffield,E12000003,368,1601,35.3,513102,514201,515339,519640,525721,527629,529905,534035,538385,544613,551756,557276,560199,563463,569177,574050,577789,582506,584853,589214 261 | E08000021,Newcastle upon Tyne,E12000001,113,2704,32.1,266241,267001,266862,266884,269608,270258,271577,271649,273422,276681,279092,281893,285821,288340,290764,293713,295842,300196,302820,306824 262 | E08000022,North Tyneside,E12000001,82,2537,43.3,192003,192739,193037,193195,194120,195365,196470,197964,199017,200164,201206,201444,202167,202857,202725,203575,204473,205985,207913,208871 263 | E08000023,South Tyneside,E12000001,64,2346,43.2,152793,152210,151181,150265,149585,148887,148642,148626,148509,148468,148164,148311,148384,148572,148495,149194,149555,150265,150976,151133 264 | E08000024,Sunderland,E12000001,137,2022,42.1,284601,283037,281528,280113,279199,278370,277834,276812,276209,275980,275330,275764,276089,276782,276813,277307,277249,277417,277705,277846 265 | E08000025,Birmingham,E12000005,268,4259,32.7,984642,990384,996356,1002376,1014650,1020843,1029021,1038980,1050072,1061074,1074283,1085198,1092190,1101521,1112950,1128077,1137123,1141374,1141816,1140525 266 | E08000026,Coventry,E12000005,99,3846,32,302804,301295,300665,298174,298386,300129,301429,305186,307393,311674,316915,322504,328423,335018,344288,353215,360149,366785,371521,379387 267 | E08000027,Dudley,E12000005,98,3291,41.9,305052,305645,305585,306171,307004,307846,308686,310377,311088,312206,313261,313570,314357,315653,316331,317558,319419,320626,321596,322363 268 | E08000028,Sandwell,E12000005,86,3846,36.8,284594,285637,287135,288849,290447,292516,294603,298358,302303,306181,309042,311245,313980,316289,319101,322631,325460,327378,328450,329042 269 | E08000029,Solihull,E12000005,178,1220,42.9,199574,200028,200536,201153,201557,202351,203170,204778,205470,206329,206856,207450,209140,210227,210834,212166,213933,214909,216374,217487 270 | E08000030,Walsall,E12000005,104,2758,38.3,253333,254287,255352,256702,258172,259454,260939,263034,264774,266834,269524,270844,271955,273933,275880,278887,281293,283378,285478,286716 271 | E08000031,Wolverhampton,E12000005,69,3808,37.8,238016,239088,239851,240567,241647,242889,243910,245349,246016,247640,249852,251076,251708,253250,255106,258017,259926,262008,263357,264407 272 | E08000032,Bradford,E12000003,366,1480,36.7,470753,475184,479166,484650,491361,495658,501357,507323,512392,518002,523115,524386,525936,527567,529879,532539,534800,537173,539776,542128 273 | E08000033,Calderdale,E12000003,364,581,42.4,192379,193201,193968,194980,196270,197761,199275,200960,202078,203049,204170,205200,206136,207042,207832,209069,209454,210082,211455,211439 274 | E08000034,Kirklees,E12000003,409,1080,39.9,388980,392118,394486,397530,400724,404266,407974,411807,414785,418339,422970,425346,427831,429998,432855,435236,437145,438727,439787,441290 275 | E08000035,Leeds,E12000003,552,1448,35.1,715609,716380,717592,723042,735054,736204,738560,741665,743885,747571,750683,757566,760894,765430,773213,781087,784846,789194,793139,798786 276 | E08000036,Wakefield,E12000003,339,1038,41.4,315380,316306,317469,318037,318765,320318,321650,323288,324467,325595,326433,327890,329847,331720,334017,337094,340790,345038,348312,351592 277 | E08000037,Gateshead,E12000001,142,1419,41.5,191178,191559,192115,192317,192857,193615,194934,196078,197481,198731,200349,200272,200098,200781,201724,202628,202419,202508,202055,201950 278 | E09000001,City of London,E12000007,3,3785,36.1,7359,7280,7115,7118,7131,7254,7607,7429,7472,7338,7412,6612,6031,6139,6687,7246,7654,8706,9721,10938 279 | E09000002,Barking and Dagenham,E12000007,36,5931,32.7,165654,166357,166210,165610,166275,167157,169031,172452,177580,182838,187029,190663,194576,198650,203101,208182,210711,211998,212906,214107 280 | E09000003,Barnet,E12000007,87,4599,37.7,319481,320552,321802,323723,327541,330801,334837,339212,345829,351438,357538,363777,368301,373745,378778,384774,387803,392140,395869,399007 281 | E09000004,Bexley,E12000007,61,4115,39,218757,219123,220016,220917,222391,223280,224625,226652,228146,230711,232774,234308,236816,240016,242387,245095,246124,247258,248287,249301 282 | E09000005,Brent,E12000007,43,7580,36,269620,269871,268323,268335,270939,276504,283273,290901,298118,304785,312245,314593,317112,320101,323443,326427,329102,330795,329771,327753 283 | E09000006,Bromley,E12000007,150,2216,41.1,296218,296668,297253,297307,299421,300963,302625,304968,306924,308560,310554,314039,318167,321602,325303,327580,329391,331096,332336,332752 284 | E09000007,Camden,E12000007,22,12834,34,202567,203972,204254,207341,211088,211032,211520,210273,212924,214725,220087,224809,230486,236022,243837,249162,253361,262226,270029,279516 285 | E09000008,Croydon,E12000007,86,4493,37.9,335112,335415,335919,337134,339052,340449,344029,349308,352763,357951,364815,369189,373628,377073,380070,383301,384837,385346,386710,388563 286 | E09000009,Ealing,E12000007,56,6128,37.4,307276,309242,308108,310073,312774,315329,318671,324022,329966,334073,339314,340332,342108,342997,344285,344802,342736,341982,341806,340341 287 | E09000010,Enfield,E12000007,81,4127,36.7,277266,280745,281835,282217,284779,287429,291534,297443,301971,307648,313935,317257,320317,324409,328738,332127,332705,333869,333794,333587 288 | E09000011,Greenwich,E12000007,47,6109,35.3,217460,221476,224303,227190,230494,233990,236535,239748,243672,249171,255483,259986,264097,268853,274542,279139,282849,286186,287942,289034 289 | E09000012,Hackney,E12000007,19,14752,33.7,207246,210961,212405,213581,216512,220193,224480,231041,236622,241739,247182,252212,257436,263112,268626,273239,275929,279665,281120,280941 290 | E09000013,Hammersmith and Fulham,E12000007,16,11189,35.4,169374,171989,171510,172083,173292,174675,176472,177088,180116,180842,182445,182117,181421,181679,182183,181783,182998,185426,185143,183544 291 | E09000014,Haringey,E12000007,30,8997,36.4,221251,224474,225027,226472,229271,233174,236793,244459,249805,252742,255540,257898,261033,264398,268251,272078,271224,270624,268647,266357 292 | E09000015,Harrow,E12000007,50,5000,38.4,210044,212336,213728,216267,221109,223632,226355,229567,233495,237451,240499,241978,243004,245149,246818,248697,248880,250149,251160,252338 293 | E09000016,Havering,E12000007,112,2320,39.2,224717,225054,225248,225769,226990,228198,229789,231793,234127,236234,237927,239742,242142,246030,249375,253371,256039,257810,259552,260651 294 | E09000017,Hillingdon,E12000007,116,2671,36.5,245616,247063,248054,248691,251430,254387,256981,261051,265665,269465,275499,281179,285996,291368,296056,299899,302343,304824,306870,309014 295 | E09000018,Hounslow,E12000007,56,4856,36.8,215976,216888,216498,219440,223776,228126,233454,237907,243366,249236,254927,258518,261275,264030,266412,268270,269100,270782,271523,271767 296 | E09000019,Islington,E12000007,15,16699,31.9,179387,180118,180899,180831,183477,185283,188636,192089,196704,200129,206285,211273,215855,221405,227507,232055,235000,239142,242467,248115 297 | E09000020,Kensington and Chelsea,E12000007,12,12939,40.3,162199,163827,165268,165752,168375,165245,162883,162579,161893,160463,158251,156912,157141,157830,158589,156773,155741,156197,156129,156864 298 | E09000021,Kingston upon Thames,E12000007,37,4808,37.7,149045,149642,149683,151055,152489,153667,154485,156027,157307,158648,160436,163200,165657,168433,171609,173703,174609,175470,177507,179142 299 | E09000022,Lambeth,E12000007,27,12005,33.7,273372,273041,272195,274262,277620,280524,284964,289126,294050,297650,304481,309366,312700,316637,320736,323063,324048,325917,326034,321813 300 | E09000023,Lewisham,E12000007,35,8687,35.6,254336,253662,251936,252455,254930,257976,261188,266508,270418,272525,276938,280705,284956,290284,294999,298903,301307,303536,305842,305309 301 | E09000024,Merton,E12000007,38,5487,37.7,191106,190561,189298,188908,190583,192520,194260,195859,198136,199136,200543,202047,203637,204598,205965,206706,206052,206186,206548,206453 302 | E09000025,Newham,E12000007,36,9815,32.7,249411,255282,256224,254434,253798,257994,266285,276478,286447,299171,310460,316295,321465,328066,336254,344533,347996,352005,353134,355266 303 | E09000026,Redbridge,E12000007,56,5420,36.1,241893,244273,247412,248774,251560,255590,259965,265452,270435,275088,281395,284625,288850,293853,297928,301328,301785,303858,305222,305658 304 | E09000027,Richmond upon Thames,E12000007,57,3452,41.6,174311,175441,177182,179312,181508,182520,182421,182927,184394,186304,187527,188971,191138,193315,194124,195187,195680,196904,198019,198141 305 | E09000028,Southwark,E12000007,29,11082,33.9,256712,256269,255242,257257,261811,267553,272626,276973,281120,283777,288717,293440,298663,302818,308434,311655,314232,317256,318830,320017 306 | E09000029,Sutton,E12000007,44,4737,39.8,181461,181265,181267,181094,182103,182882,184174,185860,188167,189321,191123,193476,195787,197954,199870,201945,203243,204525,206349,207707 307 | E09000030,Tower Hamlets,E12000007,20,16791,31.9,201090,207031,208651,211154,213382,218400,225251,231893,240495,248520,256012,263624,273616,284596,293828,300943,307964,317705,324745,331969 308 | E09000031,Waltham Forest,E12000007,39,7136,35.6,222015,223776,224115,225002,226747,230731,235665,242098,248140,254009,259742,262456,265650,267801,270671,274222,275505,276700,276983,276940 309 | E09000032,Wandsworth,E12000007,34,9624,34.3,271742,274917,276828,278615,283229,287538,291440,294305,299347,302620,307710,309497,313091,316536,319477,321497,323257,326474,329677,329735 310 | E09000033,Westminster,E12000007,21,12561,36.3,203329,208100,211009,214557,223132,222829,220619,218673,216980,217187,219582,223737,225306,229899,238047,241974,244796,255324,261317,269848 311 | N09000001,Antrim and Newtownabbey,N92000002,571,252,39.8,128760,129502,130356,131067,132350,133216,134756,136122,137422,138044,138651,139157,139536,139966,140467,141032,141697,142492,143504,143756 312 | N09000002,"Armagh City, Banbridge and Craigavon",N92000002,1338,162,38.3,176014,177357,178954,180828,183933,187196,190505,193603,196203,198202,200298,202398,203757,205711,207797,210260,211898,214090,216205,217232 313 | N09000003,Belfast,N92000002,138,2487,36.2,328695,328471,327176,326268,325483,325985,327383,330052,331763,333489,333895,333962,335133,336830,338907,339579,340220,341877,343542,342560 314 | N09000004,Causeway Coast and Glens,N92000002,1986,73,41.5,131374,132827,134152,135209,136340,137438,138375,139004,139616,140107,140907,141434,141699,142303,143148,143525,143920,144246,144838,144943 315 | N09000005,Derry City and Strabane,N92000002,1251,121,38.3,143810,144280,144629,145041,145447,145855,146742,147496,148053,148148,148191,148619,148632,149198,149473,150142,150497,150679,151284,151109 316 | N09000006,Fermanagh and Omagh,N92000002,2864,41,40.1,105751,106663,107332,107923,108586,109344,110345,111494,111998,112919,113501,114230,114365,114992,115311,115799,116289,116835,117397,117337 317 | N09000007,Lisburn and Castlereagh,N92000002,506,290,40.6,124585,124757,125001,125764,127043,128185,129179,130584,132386,133909,135280,136311,136808,138627,140205,141181,142640,144381,146002,146452 318 | N09000008,Mid and East Antrim,N92000002,1059,132,42.4,127452,128281,129181,129925,130980,132021,133270,134169,134774,135157,135365,135838,135997,136642,137145,137821,138152,138773,139274,139443 319 | N09000009,Mid Ulster,N92000002,1831,81,37,119112,120214,121324,122645,124885,127662,131088,133595,135408,137221,139011,140357,141329,142895,144002,145389,146427,147392,148528,148953 320 | N09000010,"Newry, Mourne and Down",N92000002,1682,108,38.4,153726,154984,156395,158460,160453,162723,165634,168019,169652,171119,172276,173691,174829,175403,176369,177816,178996,180012,181368,181669 321 | N09000011,Ards and North Down,N92000002,566,286,44.4,149559,150198,150424,150912,152233,153488,154406,155014,156058,156518,156943,157637,157640,157931,158797,159593,160098,160864,161725,162056 322 | S12000005,Clackmannanshire,S92000003,159,322,45.2,48070,48140,48140,48670,49160,49540,50600,51190,51290,51330,51500,51280,51280,51190,51360,51350,51450,51400,51540,51290 323 | S12000006,Dumfries and Galloway,S92000003,6426,23,50,147780,147670,147860,148690,149620,149780,150370,151010,151160,151100,151410,150840,150280,149960,149670,149520,149200,148790,148860,148290 324 | S12000008,East Ayrshire,S92000003,1262,96,44.9,120310,119920,119860,120210,120280,120450,120950,121590,122110,122410,122690,122730,122430,122130,122060,122200,121940,121840,122010,121600 325 | S12000010,East Lothian,S92000003,679,159,44.8,90180,91050,91640,92170,92730,93850,95560,97470,98340,99140,99920,100860,101390,102090,103050,104090,104840,105790,107090,107900 326 | S12000011,East Renfrewshire,S92000003,174,551,43.7,89410,89930,89870,89790,89880,89750,89840,89870,89980,90410,90810,91040,91530,92410,92940,93810,94760,95170,95530,96060 327 | S12000013,Na h-Eileanan Siar,S92000003,3056,9,49.9,26450,26350,26430,26650,26930,27060,27210,27280,27420,27600,27690,27560,27400,27250,27070,26900,26950,26830,26720,26500 328 | S12000014,Falkirk,S92000003,297,540,43.6,145270,145930,146800,148300,150130,151090,152320,153290,154210,155140,156250,156800,157160,157690,158460,159380,160130,160340,160890,160560 329 | S12000017,Highland,S92000003,25653,9,47,208920,209760,211640,214560,218060,220780,224000,226980,228750,230730,232730,232890,232930,233080,234110,234770,235180,235540,235830,235430 330 | S12000018,Inverclyde,S92000003,160,480,46.3,84150,83730,83300,82690,82680,82320,82110,82000,81670,81510,81220,80690,80340,79890,79500,79160,78760,78150,77800,77060 331 | S12000019,Midlothian,S92000003,354,263,41.6,80950,80870,80280,80230,80050,80000,80370,81540,81900,82360,83450,84240,84710,86220,87390,88610,90090,91340,92460,93150 332 | S12000020,Moray,S92000003,2238,43,45.7,87000,87690,88830,89380,90100,90780,91440,92830,93170,93690,93470,92930,94360,94770,95510,96070,95780,95520,95820,95710 333 | S12000021,North Ayrshire,S92000003,885,152,46.9,135820,135890,136310,136500,136690,136790,137420,137910,137830,137790,138090,137570,136940,136480,136130,135890,135790,135280,134740,134250 334 | S12000023,Orkney Islands,S92000003,991,23,48.3,19220,19340,19540,19830,20070,20340,20580,20740,20940,21220,21420,21530,21560,21580,21670,21850,22000,22190,22270,22400 335 | S12000026,Scottish Borders,S92000003,4732,24,49.4,106950,107530,108400,109460,110250,110860,112200,113360,113590,113690,113880,113720,113880,114040,114030,114530,115020,115270,115510,115240 336 | S12000027,Shetland Islands,S92000003,1467,16,44.5,21960,22000,21960,22090,22250,22210,22350,22480,22790,23060,23240,23210,23200,23220,23200,23200,23080,22990,22920,22870 337 | S12000028,South Ayrshire,S92000003,1222,92,49.3,112160,111690,111550,111840,112030,112100,112380,112610,112490,112600,112980,112920,112870,112530,112400,112470,112680,112550,112610,112140 338 | S12000029,South Lanarkshire,S92000003,1772,181,44.2,302340,302780,303480,305670,306850,308450,310380,311320,312180,313180,313900,314330,314810,315300,316230,317100,318170,319020,320530,320820 339 | S12000030,Stirling,S92000003,2186,43,42.5,86200,86630,87090,86910,87510,88090,88430,88540,88690,89550,90330,91010,91230,91520,92830,93750,94000,94330,94210,94080 340 | S12000033,Aberdeen City,S92000003,186,1234,37.6,211910,210680,209280,207820,208690,209620,212460,214020,217020,219730,222460,224910,227070,228920,230350,229840,228800,227560,228670,229060 341 | S12000034,Aberdeenshire,S92000003,6313,41,44.4,226940,228830,231250,234690,237570,241180,244390,246840,249020,251430,253650,255560,257770,260530,261960,262190,261800,261470,261210,260780 342 | S12000035,Argyll and Bute,S92000003,6907,12,50,91300,91020,90930,90580,90350,90870,90790,89910,89450,88620,88930,86910,88050,87650,86890,87130,86810,86260,85870,85430 343 | S12000036,City of Edinburgh,S92000003,263,2003,36.7,449020,447490,445290,445870,449480,452060,456040,458520,463240,469940,477940,482630,487460,492610,498810,507170,513210,518500,524930,527620 344 | S12000038,Renfrewshire,S92000003,261,686,42.7,172850,172300,171560,171470,171430,171270,171860,172640,173020,173700,174700,174300,173890,174230,174560,175930,176830,177790,179100,179390 345 | S12000039,West Dunbartonshire,S92000003,159,556,43.3,93320,93040,92470,91970,91530,91420,91370,91190,91080,90800,90610,90340,89800,89710,89590,89860,89610,89130,88930,88340 346 | S12000040,West Lothian,S92000003,428,430,41.2,159030,160370,161690,163540,165010,167110,169470,171380,173040,174090,175300,176010,176160,177200,178550,180130,181310,182140,183100,183820 347 | S12000041,Angus,S92000003,2181,53,47.4,108370,108810,108710,110170,111340,112500,113540,114490,114830,115410,116200,116220,116290,116740,116900,116520,116280,116040,116200,115820 348 | S12000042,Dundee City,S92000003,60,2489,37.1,145460,144370,144070,143100,143600,143370,143700,144290,145170,146060,147200,147780,148100,148130,148210,148270,148710,148750,149320,148820 349 | S12000045,East Dunbartonshire,S92000003,174,623,46.3,108250,107350,107000,106540,106040,105590,105050,104940,104960,104920,105000,105880,105840,106710,106960,107540,108130,108330,108640,108750 350 | S12000047,Fife,S92000003,1325,282,43.9,349770,350740,351350,353050,355450,357260,358750,360050,361410,362610,365300,366210,366900,367250,368080,370330,371410,371910,373550,374130 351 | S12000048,Perth and Kinross,S92000003,5286,29,47.3,134950,135130,135960,136900,138060,139390,141140,143130,144370,145600,146850,147740,147770,148930,149930,150680,151100,151290,151950,151910 352 | S12000049,Glasgow City,S92000003,175,3640,35.7,578710,576450,572260,569560,569240,568480,571760,576200,581620,586500,593060,595070,596520,599640,606340,615070,621020,626410,633120,635640 353 | S12000050,North Lanarkshire,S92000003,470,726,41.6,321180,322520,323700,325400,327140,328740,331170,333290,335160,336280,337720,337890,337780,338000,338260,339390,339960,340180,341370,341140 354 | W06000001,Isle of Anglesey,W92000004,712,99,48.6,67806,67879,68140,68753,69095,69388,69700,69916,69884,69833,69913,70037,70073,70141,69936,69665,69794,69961,70043,70440 355 | W06000002,Gwynedd,W92000004,2535,49,43.0,116844,117344,118022,118721,118641,119070,119398,119746,120344,121155,121523,122007,121653,121897,122635,123323,123742,124178,124560,125171 356 | W06000003,Conwy,W92000004,1126,105,50.0,109674,110624,111248,112272,112374,113004,113778,114371,114623,114682,115326,115553,115912,116420,116450,116820,116863,117181,117203,118184 357 | W06000004,Denbighshire,W92000004,837,116,46.6,93070,93478,93872,94010,93978,93983,94530,94739,94444,94152,93919,94053,94518,94837,94836,94984,95159,95330,95696,96664 358 | W06000005,Flintshire,W92000004,440,357,43.8,148629,148947,149176,149681,149890,150125,150816,151501,151985,152080,152666,152776,153223,153819,154085,154626,155155,155593,156100,156847 359 | W06000006,Wrexham,W92000004,504,270,42.5,128540,128595,128914,129005,129249,130311,131263,132371,133295,134009,135070,135498,135801,135953,135418,135408,135571,136126,135957,136055 360 | W06000008,Ceredigion,W92000004,1785,41,46.8,75417,75500,75581,75775,75485,75342,75326,74971,74642,75217,75293,75932,75789,75133,74211,73665,73076,72992,72695,72895 361 | W06000009,Pembrokeshire,W92000004,1618,78,48.5,113058,114146,115147,116428,117204,118278,119640,121134,121563,121974,122613,123135,123375,123826,123671,124237,124711,125055,125818,126751 362 | W06000010,Carmarthenshire,W92000004,2370,80,46.6,173652,174628,176133,177487,178229,179504,181314,182517,182846,183004,183961,184332,184669,184968,185247,185754,186452,187568,188771,190073 363 | W06000011,Swansea,W92000004,378,653,39.9,223463,224755,226350,228176,229347,230793,232460,234139,235601,237311,238691,239460,240108,240966,242316,244462,245480,246466,246993,246563 364 | W06000012,Neath Port Talbot,W92000004,441,327,43.2,134380,134931,136233,137144,137670,138323,138957,139481,139537,139638,139880,140081,139867,140453,140946,141678,142090,142906,143315,144386 365 | W06000013,Bridgend,W92000004,251,588,42.9,128735,129741,131032,131947,132893,134164,135949,137175,137783,138471,139410,139769,140536,141287,142259,143408,144288,144876,147049,147539 366 | W06000014,Vale of Glamorgan,W92000004,331,409,43.7,119277,120279,120980,122101,122877,123642,124732,125713,126162,126435,126679,126998,127436,128009,127980,128891,130690,132165,133587,135295 367 | W06000015,Cardiff,W92000004,141,2620,33.6,310088,312021,313246,317099,321001,323766,328196,332790,337656,341402,345442,348724,352146,354829,357496,361168,362756,364248,366903,369202 368 | W06000016,Rhondda Cynon Taf,W92000004,424,570,40.6,231910,231795,232361,233971,234070,234493,234471,234724,234743,234459,234373,235612,236166,236871,237378,238179,239127,240131,241264,241873 369 | W06000018,Caerphilly,W92000004,277,655,41.7,169546,170776,171363,172361,172777,173741,174987,176259,177159,178101,178782,179014,179230,179933,180168,180453,180795,181019,181075,181731 370 | W06000019,Blaenau Gwent,W92000004,109,644,42.8,70000,69452,69228,69242,69188,69610,69685,69820,69850,69798,69812,69806,69764,69653,69547,69630,69609,69713,69862,70020 371 | W06000020,Torfaen,W92000004,126,754,41.9,90912,90700,90719,90516,90644,90820,90974,91094,91199,91060,91190,91346,91362,91549,91767,91994,92264,93049,93961,94832 372 | W06000021,Monmouthshire,W92000004,849,112,49.2,84984,85417,86605,87829,88611,89090,89592,90109,90557,91016,91508,91737,92249,92540,92805,93276,93590,94142,94590,95164 373 | W06000022,Newport,W92000004,190,822,38.7,137642,138727,139121,139316,139617,140557,141376,142744,143753,144803,145785,146275,146741,147119,147958,149478,151485,153302,154676,156447 374 | W06000023,Powys,W92000004,5181,26,50.6,126398,127145,128295,129568,130210,131037,131982,132865,133090,132878,133071,133015,132786,132777,132730,132337,132515,132447,132435,133030 375 | W06000024,Merthyr Tydfil,W92000004,111,542,40.4,56207,55996,55955,56020,56259,56627,57173,57688,58156,58493,58851,58907,59008,59056,59247,59714,59953,60183,60326,60424 376 | -------------------------------------------------------------------------------- /public/data/data_region.csv: -------------------------------------------------------------------------------- 1 | "code","name","area","density","age_med",2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020 2 | "E12000001","North East",8581,312,41.7,2540090,2540600,2540461,2540502,2547127,2552568,2562045,2569312,2575441,2586868,2596441,2602387,2610563,2618736,2624579,2636589,2644727,2657909,2669941,2680763 3 | "E12000002","North West",14108,522,40.3,6772985,6784880,6814660,6840369,6870021,6901585,6929277,6958547,6986156,7019921,7055961,7084470,7103488,7133026,7175178,7223961,7258627,7292093,7341196,7367456 4 | "E12000003","Yorkshire-Humber",15404,359,40.2,4976643,5000111,5026314,5063199,5108408,5134016,5164138,5198675,5223344,5254788,5288212,5316897,5337940,5360117,5390211,5425370,5450130,5479615,5502967,5526350 5 | "E12000004","East Midlands",15624,311,41.4,4189622,4221753,4255080,4291476,4329112,4366676,4404774,4441125,4471653,4507071,4537448,4567798,4598548,4637369,4677425,4725390,4771666,4804149,4835928,4865583 6 | "E12000005","West Midlands",12998,459,39.6,5280727,5301243,5325475,5346376,5380687,5415521,5451924,5496240,5528007,5565866,5608667,5642763,5675030,5713439,5755032,5810773,5860706,5900757,5934037,5961929 7 | "E12000006","East",19116,328,41.8,5400463,5432688,5474133,5508564,5562653,5606294,5653534,5708350,5751443,5807402,5862418,5905914,5951934,6017250,6075970,6129005,6168432,6201214,6236072,6269161 8 | "E12000007","London",1572,5727,35.8,7322403,7376671,7394817,7432730,7519009,7597825,7693473,7812161,7942594,8061495,8204407,8308833,8417458,8539398,8666930,8769659,8825001,8908081,8961989,9002488 9 | "E12000008","South East",19072,483,41.9,8023449,8045192,8087924,8133100,8202896,8270861,8351391,8426399,8490922,8577771,8652784,8724928,8793154,8874005,8949392,9030347,9080825,9133625,9180135,9217265 10 | "E12000009","South West",23836,237,44.1,4943364,4976129,5006653,5038284,5086121,5119840,5170537,5205044,5226821,5261270,5300831,5339739,5377702,5423278,5471610,5516973,5559316,5599735,5624696,5659143 11 | "N92000002","Northern Ireland",13793,137,39.2,1688838,1697534,1704924,1714042,1727733,1743113,1761683,1779152,1793333,1804833,1814318,1823634,1829725,1840498,1851621,1862137,1870834,1881641,1893667,1895510 12 | "S92000003","Scotland",77901,70,42.1,5064200,5066000,5068500,5084300,5110200,5133100,5170000,5202900,5231900,5262200,5299900,5313600,5327700,5347600,5373000,5404700,5424800,5438100,5463300,5466000 13 | "W92000004","Wales",20737,153,42.4,2910232,2922876,2937721,2957422,2969309,2985668,3006299,3025867,3038872,3049971,3063758,3074067,3082412,3092036,3099086,3113150,3125165,3138631,3152879,3169586 14 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ONSvisual/svelte-scrolly/89552ebdd901c899799f8960d52e730a0fa65882/public/favicon.ico -------------------------------------------------------------------------------- /public/global.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); 2 | 3 | /* GLOBALS */ 4 | 5 | html, body { 6 | position: relative; 7 | width: 100%; 8 | height: 100%; 9 | } 10 | 11 | body { 12 | color: #222; 13 | background-color: #fff; 14 | margin: 0; 15 | padding: 0; 16 | -webkit-box-sizing: border-box; 17 | box-sizing: border-box; 18 | font-family: "Open Sans", "Helvetica Neue", "Arial", sans-serif; 19 | font-size: 21px; 20 | line-height: 1.5; 21 | word-wrap: break-word; 22 | } 23 | 24 | /* COMPONENTS */ 25 | 26 | a { 27 | color: #206095; 28 | } 29 | 30 | a:hover { 31 | color: #323132; 32 | } 33 | 34 | label { 35 | display: block; 36 | } 37 | 38 | input, button, select, textarea { 39 | font-family: inherit; 40 | font-size: inherit; 41 | -webkit-padding: 0.4em 0; 42 | padding: 0.4em; 43 | margin: 0 0 0.5em 0; 44 | -webkit-box-sizing: border-box; 45 | box-sizing: border-box; 46 | border: 1px solid #ccc; 47 | border-radius: 2px; 48 | } 49 | 50 | input:disabled { 51 | color: #ccc; 52 | } 53 | 54 | button { 55 | color: #333; 56 | background-color: #f4f4f4; 57 | outline: none; 58 | } 59 | 60 | button:disabled { 61 | color: #999; 62 | } 63 | 64 | button:not(:disabled):active { 65 | background-color: #ddd; 66 | } 67 | 68 | button:focus { 69 | border-color: #666; 70 | } 71 | 72 | header, section, nav, footer, figure, caption { 73 | display: -webkit-box; 74 | display: -ms-flexbox; 75 | display: flex; 76 | -webkit-box-pack: center; 77 | -ms-flex-pack: center; 78 | justify-content: center; 79 | background-position: center; 80 | background-repeat: no-repeat; 81 | background-size: cover; 82 | margin: 0; 83 | padding: 0; 84 | } 85 | 86 | footer { 87 | margin: 60px 0 0 0; 88 | } 89 | 90 | h1 { 91 | font-size: 54px; 92 | line-height: 1.3; 93 | margin: 30px 0 0 0; 94 | } 95 | 96 | h2 { 97 | font-size: 30px; 98 | margin: 40px 0 -20px 0; 99 | } 100 | 101 | h3 { 102 | font-size: 22px; 103 | margin: 40px 0 -10px 0; 104 | } 105 | 106 | p { 107 | margin: 30px 0 0 0; 108 | } 109 | 110 | img { 111 | max-width: 100%; 112 | height: auto; 113 | vertical-align: middle; 114 | } 115 | 116 | blockquote { 117 | margin: 30px 0 6px 0; 118 | font-size: 30px; 119 | color: #777; 120 | } 121 | 122 | small { 123 | font-size: 14px; 124 | } 125 | 126 | /* CLASSES */ 127 | 128 | .col-full { 129 | width: 100%; 130 | } 131 | 132 | .col-wide { 133 | width: 100%; 134 | max-width: 980px; 135 | margin: 0 24px; 136 | } 137 | 138 | .col-medium { 139 | width: 100%; 140 | max-width: 680px; 141 | margin: 0 24px; 142 | } 143 | 144 | .col-narrow { 145 | width: 100%; 146 | max-width: 540px; 147 | margin: 0 24px; 148 | } 149 | 150 | .height-full { 151 | min-height: 100vh; 152 | } 153 | 154 | .center { 155 | text-align: center; 156 | } 157 | 158 | .middle { 159 | height: 100%; 160 | display: -webkit-box; 161 | display: -ms-flexbox; 162 | display: flex; 163 | -webkit-box-orient: vertical; 164 | -webkit-box-direction: normal; 165 | -ms-flex-direction: column; 166 | flex-direction: column; 167 | -webkit-box-pack: center; 168 | -ms-flex-pack: center; 169 | justify-content: center; 170 | } 171 | 172 | .caption { 173 | margin-top: 8px; 174 | text-align: left; 175 | font-size: 14px; 176 | color: #777; 177 | } 178 | 179 | .inset-medium { 180 | max-width: 680px; 181 | margin-left: auto !important; 182 | margin-right: auto !important; 183 | } 184 | 185 | .inset-narrow { 186 | max-width: 480px; 187 | margin-left: auto !important; 188 | margin-right: auto !important; 189 | } 190 | 191 | .text-big { 192 | font-size: 30px; 193 | margin: 20px 0; 194 | } 195 | 196 | .text-small { 197 | font-size: 14px; 198 | } 199 | 200 | .text-indent { 201 | margin-left: 30px; 202 | } 203 | 204 | .text-shadow { 205 | text-shadow: 0 0 8px #000; 206 | } 207 | 208 | .text-bold { 209 | font-weight: bold; 210 | } 211 | 212 | .text-muted { 213 | color: #777; 214 | } 215 | 216 | .mt { 217 | margin-top: 72px; 218 | } 219 | 220 | .mb { 221 | margin-bottom: 40px; 222 | } 223 | 224 | .em { 225 | padding: 1px 4px 1px 4px; 226 | /* border-radius: 5px; */ 227 | font-weight: bold; 228 | white-space: nowrap; 229 | } 230 | 231 | .em-muted { 232 | background-color: #777; 233 | color: #fff; 234 | } 235 | 236 | /* SCROLL-SPECIFIC ELEMENTS */ 237 | 238 | svelte-scroller-background-container { 239 | pointer-events: all !important; 240 | } 241 | 242 | [slot="foreground"] section { 243 | padding: 100vh 0 100vh 0; 244 | } 245 | 246 | [slot="foreground"] section + section { 247 | padding: 0 0 100vh 0; 248 | } 249 | 250 | [slot="foreground"] section div { 251 | padding: 12px; 252 | position: relative; 253 | } 254 | 255 | [slot="foreground"] section div::before { 256 | content: ""; 257 | position: absolute; 258 | top: 0; 259 | left: 0; 260 | width: 100%; 261 | height: 100%; 262 | background-color: #fff; 263 | opacity: 0.8; 264 | z-index: -1; 265 | } 266 | 267 | [slot="foreground"] section div p { 268 | margin: 0; 269 | } 270 | 271 | [slot="foreground"] section div p + p { 272 | margin-top: 30px; 273 | } 274 | 275 | [slot="foreground"] section div h2, 276 | [slot="foreground"] section div h3 { 277 | margin: 10px 0 20px 0; 278 | } 279 | 280 | @media (min-width: 992px) { 281 | .splitscreen svelte-scroller-background { 282 | width: calc(100% - 480px) !important; 283 | min-width: 65%; 284 | margin: 0 0 0 auto; 285 | } 286 | .splitscreen [slot="foreground"] section div::before { 287 | opacity: 0; 288 | } 289 | .splitscreen [slot="foreground"] section { 290 | width: 480px; 291 | max-width: 35%; 292 | margin: 0 auto 0 0; 293 | background-color: #fff; 294 | } 295 | .splitscreen [slot="foreground"] .col-medium { 296 | width: 100%; 297 | margin: 0; 298 | padding: 0 30px; 299 | } 300 | } -------------------------------------------------------------------------------- /public/img/bg-dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ONSvisual/svelte-scrolly/89552ebdd901c899799f8960d52e730a0fa65882/public/img/bg-dark.jpg -------------------------------------------------------------------------------- /public/img/ons-logo-black-en.svg: -------------------------------------------------------------------------------- 1 | 2 | Office for National Statistics 3 | 4 | -------------------------------------------------------------------------------- /public/img/ons-logo-neg-en.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/img/ons-logo-pos-en.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/img/scroll-down-black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/img/scroll-down-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | ONS Scrollytelling Template 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import svelte from 'rollup-plugin-svelte'; 2 | import resolve from '@rollup/plugin-node-resolve'; 3 | import commonjs from '@rollup/plugin-commonjs'; 4 | import livereload from 'rollup-plugin-livereload'; 5 | import { terser } from 'rollup-plugin-terser'; 6 | import babel from 'rollup-plugin-babel'; 7 | 8 | const production = !process.env.ROLLUP_WATCH; 9 | 10 | function serve() { 11 | let server; 12 | 13 | function toExit() { 14 | if (server) server.kill(0); 15 | } 16 | 17 | return { 18 | writeBundle() { 19 | if (server) return; 20 | server = require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], { 21 | stdio: ['ignore', 'inherit', 'inherit'], 22 | shell: true 23 | }); 24 | 25 | process.on('SIGTERM', toExit); 26 | process.on('exit', toExit); 27 | } 28 | }; 29 | } 30 | 31 | export default [ 32 | { 33 | input: 'src/main.js', 34 | output: { 35 | sourcemap: true, 36 | format: 'iife', 37 | name: 'app', 38 | file: 'public/build/bundle.js' 39 | }, 40 | plugins: [ 41 | svelte({ 42 | // enable run-time checks when not in production 43 | dev: !production, 44 | // we'll extract any component CSS out into 45 | // a separate file - better for performance 46 | css: css => { 47 | css.write('bundle.css'); 48 | } 49 | }), 50 | resolve({ 51 | browser: true, 52 | dedupe: ['svelte'] 53 | }), 54 | commonjs(), 55 | 56 | // In dev mode, call `npm run start` once 57 | // the bundle has been generated 58 | !production && serve(), 59 | 60 | // Watch the `public` directory and refresh the 61 | // browser on changes when not in production 62 | !production && livereload('public'), 63 | 64 | // If we're building for production (npm run build 65 | // instead of npm run dev), minify 66 | production && terser() 67 | ], 68 | watch: { 69 | clearScreen: false 70 | } 71 | }, 72 | { 73 | // Output legacy code bundle for ES5 / IE11 / Chromium 59 support 74 | input: 'src/main.js', 75 | output: { 76 | sourcemap: true, 77 | format: 'iife', 78 | name: 'app', 79 | file: 'public/build/bundle.legacy.js' 80 | }, 81 | plugins: [ 82 | svelte({ 83 | dev: false, 84 | //output in legacy mode ES5 compatible) to support IE11 85 | legacy: true 86 | }), 87 | resolve({ 88 | browser: true, 89 | dedupe: ['svelte'] 90 | }), 91 | commonjs(), 92 | 93 | // compile to ES 2015 in oder to support IE11 & Chromium 59+ 94 | babel({ 95 | extensions: ['.js', '.mjs', '.html', '.svelte'], 96 | runtimeHelpers: true, 97 | exclude: [ 98 | 'node_modules/@babel/**', 99 | 'node_modules/core-js/**', 100 | 'node_modules/mapbox-gl/**' 101 | ], 102 | presets: [ 103 | [ 104 | '@babel/preset-env', 105 | { 106 | targets: { 107 | ie: '11', 108 | chrome: '59', 109 | }, 110 | useBuiltIns: 'usage', 111 | corejs: 3 112 | } 113 | ] 114 | ], 115 | plugins: [ 116 | '@babel/plugin-syntax-dynamic-import', 117 | [ 118 | '@babel/plugin-transform-runtime', 119 | { 120 | useESModules: true 121 | } 122 | ] 123 | ] 124 | }), 125 | terser() 126 | ], 127 | watch: { 128 | clearScreen: false 129 | } 130 | } 131 | ].slice(0, production ? 2 : 1); -------------------------------------------------------------------------------- /scripts/setupTypeScript.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | 3 | /** This script modifies the project to support TS code in .svelte files like: 4 | 5 | 8 | 9 | As well as validating the code for CI. 10 | */ 11 | 12 | /** To work on this script: 13 | rm -rf test-template template && git clone sveltejs/template test-template && node scripts/setupTypeScript.js test-template 14 | */ 15 | 16 | const fs = require("fs") 17 | const path = require("path") 18 | const { argv } = require("process") 19 | 20 | const projectRoot = argv[2] || path.join(__dirname, "..") 21 | 22 | // Add deps to pkg.json 23 | const packageJSON = JSON.parse(fs.readFileSync(path.join(projectRoot, "package.json"), "utf8")) 24 | packageJSON.devDependencies = Object.assign(packageJSON.devDependencies, { 25 | "svelte-check": "^1.0.0", 26 | "svelte-preprocess": "^4.0.0", 27 | "@rollup/plugin-typescript": "^6.0.0", 28 | "typescript": "^3.9.3", 29 | "tslib": "^2.0.0", 30 | "@tsconfig/svelte": "^1.0.0" 31 | }) 32 | 33 | // Add script for checking 34 | packageJSON.scripts = Object.assign(packageJSON.scripts, { 35 | "validate": "svelte-check" 36 | }) 37 | 38 | // Write the package JSON 39 | fs.writeFileSync(path.join(projectRoot, "package.json"), JSON.stringify(packageJSON, null, " ")) 40 | 41 | // mv src/main.js to main.ts - note, we need to edit rollup.config.js for this too 42 | const beforeMainJSPath = path.join(projectRoot, "src", "main.js") 43 | const afterMainTSPath = path.join(projectRoot, "src", "main.ts") 44 | fs.renameSync(beforeMainJSPath, afterMainTSPath) 45 | 46 | // Switch the app.svelte file to use TS 47 | const appSveltePath = path.join(projectRoot, "src", "App.svelte") 48 | let appFile = fs.readFileSync(appSveltePath, "utf8") 49 | appFile = appFile.replace(" 243 | 244 | 245 | 246 |
247 |

This is the title of the article

248 |

249 | This is a short text description of the article that might take up a couple of lines 250 |

251 |

252 | DD MMM YYYY 253 |

254 |

255 | 256 |

257 |
258 | Scroll to begin 259 |
260 |
261 | 262 | 263 |

264 | This is a large, left-aligned text caption 265 |

266 |
267 | 268 |
269 |

This is a section title

270 |

271 | This is a short paragraph of text to demonstrate the standard "medium" column width, font size and line spacing of the template. 272 |

273 |

274 | This is a second short paragraph of text to demonstrate the size of the paragraph spacing in the template. 275 |

276 |
277 | "This is an example of a large embedded quotation."—A. Person 278 |
279 |
280 | 281 | 282 | 283 |
284 |

Embedded charts or media

285 |

286 | Below is an embedded chart. It is set to the same width as the column, "medium" (680px), but could also be "narrow" (540px), "wide" (980px) or "full" width. All options are responsive to fit the width of narrow screens. 287 |

288 |
289 | 290 | {#if data.region.indicators} 291 | 295 |
296 | a.pop - b.pop)} 298 | xKey="pop" yKey="name" 299 | snapTicks={false} 300 | xFormatTick={d => (d / 1e6)} xSuffix="m" 301 | height={350} padding={{top: 0, bottom: 15, left: 140, right: 0}} 302 | area={false} title="Population by region/nation, 2020"/> 303 |
304 |
305 | {/if} 306 | 307 | 308 | 309 |
310 |

Gridded charts or media

311 |

312 | Below is a grid that can contain charts or any other kind of visual media. The grid can fit in a medium, wide or full-width column, and the media width itself can be narrow (min 200px), medium (min 300px), wide (min 500px) or full-width. The grid is responsive, and will re-flow on smaller screens. 313 |

314 |
315 | 316 | {#if data.region.timeseries && data.region.indicators} 317 | 322 | {#each [...data.region.indicators].sort((a, b) => b.pop - a.pop) as region} 323 |
324 | (d / 1e6)} ySuffix="m" 330 | height={200} padding={{top: 0, bottom: 20, left: 30, right: 15}} 331 | selected={region.code} 332 | area={false} title={region.name}/> 333 |
334 | {/each} 335 |
336 | {/if} 337 | 338 | 339 | 340 |
341 |

This is a dynamic chart section

342 |

343 | The chart below will respond to the captions as you scroll down. The "Scroller" component is 344 | set to "splitscreen" mode, which means the captions will be on the left side on larger screens. 345 |

346 |

347 | The interactions are via Javascript functions that are called when each caption scrolls into view. 348 |

349 |
350 | 351 | 352 |
353 |
354 |
355 | {#if data.district.indicators && metadata.region.lookup} 356 |
357 | ({...d, parent_name: metadata.region.lookup[d.parent].name}))} 360 | colors={explore ? ['lightgrey'] : colors.cat} 361 | {xKey} {yKey} {zKey} {rKey} idKey="code" labelKey="name" 362 | r={[3,10]} 363 | xScale="log" 364 | xTicks={[10, 100, 1000, 10000]} xFormatTick={d => d.toLocaleString()} 365 | xSuffix=" sq.km" 366 | yFormatTick={d => d.toLocaleString()} 367 | legend={zKey != null} labels 368 | select={explore} selected={explore ? selected : null} on:select={doSelect} 369 | hover {hovered} on:hover={doHover} 370 | highlighted={explore ? chartHighlighted : []} 371 | colorSelect="#206095" colorHighlight="#999" overlayFill 372 | {animation}/> 373 |
374 | {/if} 375 |
376 |
377 |
378 | 379 |
380 |
381 |
382 |

383 | This chart shows the area in square kilometres of each local authority district in the UK. Each circle represents one district. The scale is logarithmic. 384 |

385 |
386 |
387 |
388 |
389 |

390 | The radius of each circle shows the total population of the district. 391 |

392 |
393 |
394 |
395 |
396 |

397 | The vertical axis shows the density of the district in people per hectare. 398 |

399 |
400 |
401 |
402 |
403 |

404 | The colour of each circle shows the part of the country that the district is within. 405 |

406 |
407 |
408 |
409 |
410 |

Select a district

411 |

Use the selection box below or click on the chart to select a district. The chart will also highlight the other districts in the same part of the country.

412 | {#if geojson} 413 |

414 | 415 | 423 |

424 | {/if} 425 |
426 |
427 |
428 |
429 | 430 | 431 | 432 |
433 |

This is a full-width chart demo

434 |

435 | Below is an example of a media grid where the column with is set to "full". This allows for full width images and charts. 436 |

437 |

438 | 439 |

440 |
441 | 442 | 447 |
448 | {#if data.district.timeseries} 449 | (d/1e6).toFixed(1)} ySuffix="m" 456 | select {selected} on:select={doSelect} 457 | hover {hovered} on:hover={doHover} 458 | highlighted={chartHighlighted} 459 | colorSelect="#206095" colorHighlight="#999" 460 | area={false} title="Mid-year population by district, 2001 to 2020" 461 | labels labelKey="name"/> 462 | {/if} 463 |
464 |
465 | 466 | 467 | 468 |
469 |

This is a dynamic map section

470 |

471 | The map below will respond to the captions as you scroll down. The scroller is not set to splitscreen, so captions are placed over the map on any screen size. 472 |

473 |
474 | 475 | {#if geojson && data.district.indicators} 476 | 477 |
478 |
479 |
480 | 481 | 487 | 503 | ${data.district.indicators.find(d => d.code == hovered)[mapKey].toLocaleString()} ${units[mapKey]}` : '' 505 | }/> 506 | 507 | 520 | 521 | 522 |
523 |
524 |
525 | 526 |
527 |
528 |
529 |

530 | This map shows population density by district. Districts are coloured from least dense to most dense. You can hover to see the district name and density. 531 |

532 |
533 |
534 |
535 |
536 |

537 | The map now shows median age, from youngest to oldest. 538 |

539 |
540 |
541 |
542 |
543 | 544 | {#each [[...data.district.indicators].sort((a, b) => b.age_med - a.age_med)[0]] as district} 545 |

546 | The map is now zoomed on {district.name}, the district with the oldest median age, {district.age_med} years. 547 |

548 | {/each} 549 |
550 |
551 |
552 |
553 |

Select a district

554 |

Use the selection box below or click on the map to select and zoom to a district.

555 | {#if geojson} 556 |

557 | 558 | 566 |

567 | {/if} 568 |
569 |
570 |
571 |
572 | {/if} 573 | 574 | 575 | 576 |
577 |

How to use this template

578 |

579 | You can find the source code and documentation on how to use this template in this Github repo. 580 |

581 |
582 | 583 | 584 | 585 | 623 | -------------------------------------------------------------------------------- /src/config.js: -------------------------------------------------------------------------------- 1 | // CORE CONFIG 2 | export const themes = { 3 | 'light': { 4 | 'text': '#222', 5 | 'muted': '#777', 6 | 'pale': '#f0f0f0', 7 | 'background': '#fff' 8 | }, 9 | 'dark': { 10 | 'text': '#fff', 11 | 'muted': '#bbb', 12 | 'pale': '#333', 13 | 'background': '#222' 14 | }, 15 | 'lightblue': { 16 | 'text': '#206095', 17 | 'muted': '#707070', 18 | 'pale': '#f0f0f0', 19 | 'background': 'rgb(188, 207, 222)' 20 | } 21 | } 22 | 23 | // DEMO-SPECIFIC CONFIG 24 | 25 | export const colors = { 26 | seq: ['rgb(234, 236, 177)', 'rgb(169, 216, 145)', 'rgb(0, 167, 186)', 'rgb(0, 78, 166)', 'rgb(0, 13, 84)'], 27 | cat: ['#206095', '#A8BD3A', '#003C57', '#27A0CC', '#118C7B', '#F66068', '#746CB1', '#22D0B6', 'lightgrey'] 28 | } 29 | 30 | export const units = { 31 | 'density': 'sq.km', 32 | 'age_med': 'years' 33 | } -------------------------------------------------------------------------------- /src/layout/Divider.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 |
11 | {#if hr} 12 |
13 | {:else} 14 |
15 | {/if} 16 |
17 |
18 | 19 | 27 | 28 | -------------------------------------------------------------------------------- /src/layout/Filler.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 19 | 20 |
21 |
22 | 23 |
24 |
-------------------------------------------------------------------------------- /src/layout/Header.svelte: -------------------------------------------------------------------------------- 1 | 24 | 25 | 34 | 35 |
36 |
37 |
38 | 39 |
40 |
41 |
-------------------------------------------------------------------------------- /src/layout/Media.svelte: -------------------------------------------------------------------------------- 1 | 86 | 87 | {#if nogrid} 88 |
89 |
90 |
91 | 92 |
93 |
94 |
95 | {:else} 96 |
97 |
98 |
99 | 100 |
101 |
102 |
103 | {/if} 104 | {#if caption} 105 | 106 |
107 |
{@html caption}
108 |
109 | 110 | {/if} 111 | 112 | 139 | -------------------------------------------------------------------------------- /src/layout/ONSFooter.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 44 | 45 | -------------------------------------------------------------------------------- /src/layout/ONSHeader.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 25 | 26 | -------------------------------------------------------------------------------- /src/layout/Scroller.svelte: -------------------------------------------------------------------------------- 1 | 66 | 67 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | -------------------------------------------------------------------------------- /src/layout/Section.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 | 11 |
12 |
-------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import App from './App.svelte'; 2 | 3 | var app = new App({ 4 | target: document.body 5 | }); 6 | 7 | export default app; 8 | -------------------------------------------------------------------------------- /src/ui/Arrow.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | {#if center} 12 |
13 | 14 | {:else} 15 | 16 | {/if} 17 | 18 | -------------------------------------------------------------------------------- /src/ui/Em.svelte: -------------------------------------------------------------------------------- 1 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/ui/Toggle.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | 10 | 11 |
12 | 13 | -------------------------------------------------------------------------------- /src/utils.js: -------------------------------------------------------------------------------- 1 | import { csvParse, autoType } from 'd3-dsv'; 2 | import { feature } from 'topojson-client'; 3 | 4 | // CORE FUNCTIONS 5 | export function setColors(themes, theme) { 6 | for (let color in themes[theme]) { 7 | document.documentElement.style.setProperty('--' + color, themes[theme][color]); 8 | } 9 | } 10 | 11 | export function getMotion() { 12 | let mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)"); // Check if browser prefers reduced motion 13 | return !mediaQuery || mediaQuery.matches ? false : true; // return true for motion, false for no motion 14 | } 15 | 16 | // DEMO-SPECIFIC FUNCTIONS 17 | export async function getData(url) { 18 | let response = await fetch(url); 19 | let string = await response.text(); 20 | let data = await csvParse(string, autoType); 21 | return data; 22 | } 23 | 24 | export async function getTopo(url, layer) { 25 | let response = await fetch(url); 26 | let json = await response.json(); 27 | let geojson = await feature(json, layer); 28 | return geojson; 29 | } 30 | 31 | export function getColor(value, breaks, colors) { 32 | let color; 33 | let found = false; 34 | let i = 1; 35 | while (found == false) { 36 | if (value <= breaks[i]) { 37 | color = colors[i - 1]; 38 | found = true; 39 | } else { 40 | i ++; 41 | } 42 | } 43 | return color ? color : 'lightgrey'; 44 | } 45 | 46 | export function getBreaks(vals) { 47 | let len = vals.length; 48 | let breaks = [ 49 | vals[0], 50 | vals[Math.floor(len * 0.2)], 51 | vals[Math.floor(len * 0.4)], 52 | vals[Math.floor(len * 0.6)], 53 | vals[Math.floor(len * 0.8)], 54 | vals[len - 1] 55 | ]; 56 | return breaks; 57 | } --------------------------------------------------------------------------------