diff --git a/.eslintrc.js b/.eslintrc.js index 6fd3391a..1fb343b1 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -9,7 +9,7 @@ module.exports = { ], plugins: ['react', 'import', /* 'jsx-a11y', */ '@emotion'], parserOptions: { - ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features sourceType: 'module', // Allows for the use of imports }, rules: { diff --git a/README.md b/README.md index 21f18928..d59794e0 100644 --- a/README.md +++ b/README.md @@ -156,6 +156,9 @@ Here a full configuration for the maps. name: 'Number of Primary Schools', // name of indicator as will appear in dropdown, tooltips and legend description: 'Description Goes Here!', // a brief description of the indicator - appears above the legend. url: '', // data source URL - CSV, JSON or API endpoint that returns JSON data + dataID: '', // data source ID - to fetch indicator data from API. The url property has precedence over dataID property + schoolLocationUrl: '', // school geolocation data source URL - CSV or JSON. Takes precedence over schoolLocationdataID if both are set. + schoolLocationdataID: '', // data source dataID to be used for fetching data via an API endpoint. yearRange: [2016, 2021], // max and min year range - use to generate years for the year filter. colours: ['#faa2c1', '#f06595', '#d6336c'], // a list of hex colours for each range of data range: [5, 10, 15, 20], // groups values into sepecified ranges e.g < 5, 5 - 10, 10 - 15, 15 - 20, > 20 - the specified colours map to these ranges and highlight different values on the map. diff --git a/assets/core.js b/assets/core.js index 225f064d..f2b0fccd 100644 --- a/assets/core.js +++ b/assets/core.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{103:function(e,t,n){},104:function(e,t,n){"use strict";n.r(t);var a,r=n(1),o=n(9),i=n(107),c=n(11),s=n.n(c),l=n(15),u=n(0),d=n.n(u),f=n(3),p=n.n(f),b=n(4),m=n(19),g=n(10),h=n.n(g),v=m.a.div(a||(a=Object(b.a)(["\n color: red;\n font-size: 11px;\n position: relative;\n padding: 5px 5px 5px 0px;\n display: block;\n"]))),y=function(e){var t=Object(u.useState)(""),n=t[0],a=t[1],r=function(t){t?"maxSelectedOptions"===t.type&&a(e.selectErrorMessage):a("")};return d.a.createElement("div",{className:h()(e.className)},d.a.Children.map(e.children,(function(e){return d.a.isValidElement(e)?d.a.cloneElement(e,{onError:r}):e})),n?d.a.createElement(v,{className:"data-selector--wrapper"},n):null)};y.propTypes={selectErrorMessage:p.a.string,children:p.a.node,className:p.a.string};var O=y,j=n(25),w=n(26),x=n(47),C={control:function(e){return Object.assign({},e,{borderColor:"#ddd",borderRadius:"none",boxShadow:"none",":hover":{borderColor:"#357ba5"},":active":{borderColor:"#357ba5"}})},menu:function(e){return Object.assign({},e,{color:"#443e42",backgroundColor:"#FFFFFF"})},option:function(e,t){return Object.assign({},e,{fontSize:"14px",":hover":{backgroundColor:"#4e9ac6",color:"#ffffff"},backgroundColor:t.isSelected?"#357ba5":"transparent"})},singleValue:function(e){return Object.assign({},e,{fontSize:"14px"})},multiValue:function(e){return Object.assign({},e,{fontSize:"14px"})},multiValueLabel:function(e,t){return t.data.isCloseable?e:Object.assign({},e,{paddingRight:6})},multiValueRemove:function(e,t){return t.data.isCloseable?e:Object.assign({},e,{display:"none"})},input:function(e){return Object.assign({},e,{fontSize:"14px"})},indicatorsContainer:function(e){return Object.assign({},e,{pointerEvents:"none"})}},S=function(e){var t=e.label,n=e.onError,a=e.maxSelectedOptions,o=e.defaultValue,i=e.singleSelectOptions,c=e.className,s=Object(w.a)(e,["label","onError","maxSelectedOptions","defaultValue","singleSelectOptions","className"]),l=Object(u.useState)(o),d=l[0],f=l[1];Object(u.useEffect)((function(){s.onChange&&s.onChange(d),n&&n()}),[d]),Object(u.useEffect)((function(){s.value&&f(s.value)}),[s.value]);return Object(r.c)("div",{className:h()("labelled-data-selector--wrapper",c)},Object(r.c)("label",null,Object(r.c)("b",null,t)),Object(r.c)(x.a,Object(j.a)({},s,{value:d,onChange:function(e){if(s.isMulti)if(e.length){var t=e.findIndex((function(e){return i.find((function(t){return t.value===e.value}))}));s.isMulti&&e.length>1&&-1!==t?f(0===t?e.slice(1):[e[t]]):a&&e.length>a?n&&n({type:"maxSelectedOptions",message:"Only up to "+a+" selections allowed"}):f(e)}else f(o);else f(e)},css:{marginRight:"25px"},styles:C,isClearable:"undefined"!==s.isClearable?s.isClearable:d.length>1})))};S.propTypes={label:p.a.string,options:p.a.array,maxSelectedOptions:p.a.number,onChange:p.a.func,onError:p.a.func,defaultValue:p.a.array,singleSelectOptions:p.a.array,isMulti:p.a.bool,isClearable:p.a.bool,className:p.a.string,value:p.a.array},S.defaultProps={maxSelectedOptions:2,singleSelectOptions:[]};var E=S,L=n(106),N=n(39);function k(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return P(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return P(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0;return function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n"+e.title+""}}}},color:H.rainbow,xAxis:{axisLine:{show:!0,lineStyle:{color:"#ddd"}},axisLabel:{fontFamily:"Geomanist Regular,sans-serif",fontSize:13,color:"#32313f"},splitLine:{show:!1},nameTextStyle:{color:"#32313f",fontFamily:"Geomanist Regular,sans-serif"}},yAxis:{axisLabel:{fontFamily:"Geomanist Regular,sans-serif",fontSize:13,color:"#32313f"},axisLine:{show:!1,lineStyle:{color:"#ddd"}},axisTick:{show:!1},splitLine:{show:!1},nameTextStyle:{color:"#32313f",fontFamily:"Geomanist Regular,sans-serif"}},axisPointer:{type:"none"},grid:{top:10},textStyle:{fontFamily:"Geomanist Regular,sans-serif"}},K=n(24),X=n.n(K),$=function(){return d.a.createElement("div",{className:"no-data"},"No Data")},Q=function(e,t,n){var a=e.slice();return t.forEach((function(t,r){void 0===a[r]?a[r]=n.cloneUnlessOtherwiseSpecified(t,n):n.isMergeableObject(t)?a[r]=X()(e[r],t,n):-1===e.indexOf(t)&&a.push(t)})),a},ee=function(e,t){if(void 0===t&&(t={}),Array.isArray(t.yearRange)&&t.yearRange.length){var n=T(t.yearRange);return t.excludeYears?n.filter((function(e){return!t.excludeYears.includes(e)})).map((function(e){return""+e})):n.map((function(e){return""+e}))}var a=t.mapping&&t.mapping.year;if(!a)return[];var r=Array.from(new Set(e.map((function(e){return Number(e[a])})))).sort((function(e,t){return e-t}));return t.excludeYears?r.filter((function(e){return!t.excludeYears.includes(e)})).map((function(e){return""+e})):r.map((function(e){return e.toString()}))},te=function(e,t,n){var a=e.reduce((function(e,a){return a[n.mapping.series]===t?e+Number(G(a[n.mapping.value])):e}),0);return n.aggregator&&"sum"!==n.aggregator&&"avg"===n.aggregator?a/e.filter((function(e){return e[n.mapping.series]===t})):a},ne=function(e,t,n){var a,r=e.series,o=e.mapping,i=!(a=e.type)||["bar-stacked","column-stacked"].includes(a)?"bar":"area"===a?"line":a;if("pie"!==i){var c=!e.type||["area","bar-stacked","column-stacked"].includes(e.type)?"district-stack":void 0,s=r.map((function(a,l){return{name:a,type:i,stack:c,areaStyle:"area"===e.type?{}:void 0,smooth:!0,emphasis:{focus:"series",label:{show:!0,formatter:function(e){return I(e.value)}}},symbol:"circle",label:{show:c&&l===r.length-1,fontFamily:"Geomanist Regular,sans-serif",position:"top",formatter:function(e){for(var t=0,n=0;n0})))))};ce.propTypes={rows:p.a.arrayOf(p.a.array)};var se=ce,le=n(48),ue=function(e,t){void 0===t&&(t=[]);var n=e.url,a=e.yearRange,r=e.dataID,o=Object(le.a)(n||e.className||r,Object(l.a)(s.a.mark((function t(){var a;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e.data||!Array.isArray(e.data)){t.next=2;break}return t.abrupt("return",e.data);case 2:if(!n&&!r){t.next=5;break}return a=n?A:F,t.abrupt("return",a(n||r).then((function(t){return e.filters?B(t,e.filters):t})));case 5:return t.abrupt("return",[]);case 6:case"end":return t.stop()}}),t)})))),i=o.data,c=o.error,d=Object(u.useState)(t),f=d[0],p=d[1];if(c)return{data:[],years:[]};var b=Object(u.useMemo)((function(){return i?(a&&a.length,ee(i,e)):[]}),[i]);return{data:Object(u.useMemo)((function(){return i&&i.length?f.length?f.reduce((function(e,t){return"all"===t.value?e:U(e,t.dataProperty,t.value)}),i):i:[]}),[i,f]),years:b,filters:f,setFilters:p,updateFilter:function(e,t){f&&f.length&&p(f.map((function(n){return n.dataProperty===e?Object.assign({},n,{value:t}):n})))}}},de=function(e){return e.show?d.a.createElement("div",{className:h()("button-group",e.className)},d.a.createElement("button",{type:"button",className:h()("button button-sm button-outline",{active:"chart"===e.activeButton}),onClick:e.onClickChart},"Chart"),d.a.createElement("button",{type:"button",className:h()("button button-sm button-outline",{active:"table"===e.activeButton}),onClick:e.onClickTable},"Table")):null};de.propTypes={show:p.a.bool,onClickChart:p.a.func,onClickTable:p.a.func,activeButton:p.a.string,className:p.a.string},de.defaultProps={activeButton:"chart"};var fe=de,pe=function(e){var t=ue(e.config),n=t.data,a=t.years,r=t.setFilters,o=t.updateFilter,i=Object(u.useState)("chart"),c=i[0],s=i[1],l=Object(u.useState)(e.config.type||"bar"),f=l[0],p=l[1];Object(u.useEffect)((function(){var t,n,a,o,i;r((t=e.config,n=e.subCounty,a=t.mapping,o=t.selectors,i=[],a.subCounty&&n&&i.push({dataProperty:a.subCounty,value:"all"}),o&&o.forEach((function(e){i.push({dataProperty:e.dataProperty,value:e.defaultValue?e.defaultValue.value:"all"})})),i))}),[]),Object(u.useEffect)((function(){var t=e.subCounty,n=e.config;t&&n.mapping.subCounty&&o(n.mapping.subCounty,e.subCounty)}),[e.subCounty]);return d.a.createElement(d.a.Fragment,null,d.a.createElement("div",{className:h()("spotlight-banner data-selector--wrapper dicharts--actions",{"align-left":!e.config.selectors})},e.config.selectors?d.a.createElement(D,{configs:e.config.selectors,onChange:function(e,t){o(e.dataProperty,t.value)}}):null,d.a.createElement(fe,{show:!!e.config.table,onClickChart:function(){return s("chart")},onClickTable:function(){return s("table")},activeButton:c}),"chart"===c&&e.config.typeOptions?d.a.createElement(Y,{options:e.config.typeOptions,onChange:p}):null),"chart"===c?d.a.createElement(re,Object(j.a)({className:h()({"dicharts--padding-top":!e.config.selectors})},e,{data:n,years:a,height:e.config.height,type:f})):null,"table"===c&&e.config.table?d.a.createElement(se,{rows:Z(e.config.table,n,e.subCounty)}):null)};pe.propTypes={config:p.a.object,subCounty:p.a.string},pe.defaultProps={subCounty:"all"};var be,me,ge=pe,he=function(e){(function(e){return e.className?e.series&&Array.isArray(e.series)?e.mapping?e.mapping.series?e.mapping.year?e.mapping.value?(e.mapping.subCounty||window.console.warn("Potentially invalid chart config: mapping.subCounty may be required!"),!0):(window.console.error("Invalid chart config: mapping.value is required!"),!1):(window.console.error("Invalid chart config: mapping.year is required!"),!1):(window.console.error("Invalid chart config: mapping.series is required!"),!1):(window.console.error("Invalid chart config: mapping is required!"),!1):(window.console.error(e.series?"Invalid chart config: Invalid series config - expected an array!":"Invalid chart config: Series is required!"),!1):(window.console.error("Invalid chart config: className is required!"),!1)})(e)&&window.DICharts.handler.addChart({className:e.className,echarts:{onAdd:function(t){Array.prototype.forEach.call(t,(function(t){t.classList.add("dicharts--dimensions"),t.parentElement.classList.add("auto-height");var n=new window.DICharts.Chart(t.parentElement);n.showLoading();var a="all",r=Object(o.createRoot)(t);r.render(d.a.createElement(ge,{config:e,subCounty:a})),window.DIState&&window.DIState.addListener((function(){var t=window.DIState.getState.subCounty;t&&t!==a&&(a=t,r.render(d.a.createElement(ge,{config:e,subCounty:a})))})),n.hideLoading()}))}}})},ve=function(){if(window.DIState){var e=[];window.DIState.addListener((function(){var t=window.DIState.getState.charts;t&&e.length!==t.length&&(e=t).forEach(he)}))}else window.console.log("State is not defined")},ye=n(14),Oe=n.n(ye),je=function(e){var t=e.map,n=e.show,a=e.onAdd,r=Object(w.a)(e,["map","show","onAdd"]);return t&&(t.getLayer(r.id)&&t.removeLayer(r.id),n&&(t.addLayer(r),a&&a(t,r.id))),null};je.defaultProps={show:!0},je.propTypes={map:p.a.object,show:p.a.bool,onAdd:p.a.func};var we={width:"100%",position:"absolute",top:0,bottom:0,background:"#F3F3F3"},xe=function(e){Oe.a.accessToken=e.accessToken;var t=Object(u.useRef)(null),n=Object(u.useState)(void 0),a=n[0],o=n[1];Object(u.useEffect)((function(){if(t&&t.current){var n=new Oe.a.Map(Object.assign({container:t.current},e.options));e.showNavigationControls&&n.addControl(new Oe.a.NavigationControl),n.on("load",(function(t){o(n),e.onLoad&&e.onLoad(n,t)}))}}),[]);return Object(r.c)("div",{ref:t,style:Object.assign({},we,e.style),css:Object(r.b)(be||(be=Object(b.a)(["\n background: ",";\n font-family: geomanist, sans-serif;\n "])),e.background)},u.Children.map(e.children,(function(e){return Object(u.isValidElement)(e)&&e.type===je?Object(u.cloneElement)(e,{map:a}):null})),Object(r.c)(r.a,{styles:Object(r.b)(me||(me=Object(b.a)(["\n div .mapboxgl-canary {\n background: red;\n }\n\n div .mapboxgl-popup {\n z-index: 400;\n max-width: 100% !important;\n }\n\n div .mapboxgl-popup-content {\n background-color: rgba(0, 0, 0, 0.9) !important;\n box-shadow: none !important;\n color: #ffffff !important;\n font-family: geomanist, sans-serif;\n -webkit-tap-highlight-color: black;\n opacity: 0.8;\n padding: 20px;\n }\n\n div .mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip {\n border-top-color: rgba(0, 0, 0, 0.9);\n opacity: 0.8;\n }\n\n div .mapboxgl-popup-content .mapBox-popup p {\n margin-bottom: 0;\n }\n\n div .mapboxgl-popup-content .mapboxgl-popup-close-button {\n color: #ffffff;\n font-size: 1.8rem;\n }\n "])))}))};xe.defaultProps={style:we,options:{minZoom:6,zoom:6.1},showNavigationControls:!0,background:"inherit"},xe.propTypes={accessToken:p.a.string,style:p.a.object,background:p.a.string,showNavigationControls:p.a.bool,onLoad:p.a.func,options:p.a.object,children:p.a.node,locationData:p.a.object};var Ce=n(29),Se=n(6),Ee=function(e,t){return t?t(e):e},Le=function(e,t){return t&&"number"==typeof t.value?(e.dataPrefix||"")+''+(n=t.value,void 0===a&&(a=1),(n>=1e12?(n/1e12).toFixed(a)+"tn":n>=1e9?(n/1e9).toFixed(a)+"bn":n>=1e6?(n/1e6).toFixed(a)+"m":n>=1e3?(n/1e3).toFixed(a)+"k":n>=0?""+n.toFixed(a):n<=-1e12?(n/1e12).toFixed(a)+"tn":n<=-1e9?(n/1e9).toFixed(a)+"bn":n<=-1e6?(n/1e6).toFixed(a)+"m":n<=1e3?(n/1e3).toFixed(a)+"k":""+n.toFixed(a))+"")+(e.dataSuffix||""):"No Data";var n,a},Ne=function(e){var t=e.geometry&&e.geometry.coordinates;return t?new ye.LngLat(t[0],t[1]):null},ke=function(e,t,n){var a=e.querySourceFeatures("composite",{sourceLayer:n.sourceLayer,filter:["in",n.nameProperty,Ee(t,n.formatter)]});return a&&a.length?function(e){if(Array.isArray(e)){var t=e.map((function(e){return Object(Ce.a)(e.geometry).geometry.coordinates}));return t.push(t[0]),Ne(Object(Ce.a)(Object(Se.f)([t])))}return Ne(Object(Ce.a)(e))}(a):null},Pe=function(e,t,n,a,r){return t.setLngLat(n).setHTML('\n
\n
\n '+a.toLowerCase()+"\n
\n "+(r?''+r+"":"")+"\n
\n ").addTo(e)},Ie=function(e,t,n){return t.find((function(t){var a=n?n(t.name):t.name;return e.toLowerCase()===(""+a).toLowerCase()}))},Te=Object(u.createContext)(),Fe=Object(u.createContext)(),Ae=n(43),_e=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={hasError:!1},n}Object(Ae.a)(t,e),t.getDerivedStateFromError=function(){return{hasError:!0}};var n=t.prototype;return n.componentDidCatch=function(e,t){window.console.log("Error Boundary:",e,t)},n.render=function(){return this.state.hasError?d.a.createElement("div",null,"Something went wrong! Please contact your administrator"):this.props.children},t}(u.Component);_e.propTypes={children:p.a.any};var De,ze=_e,Re=function(e,t){return e.find((function(e){return e.id===t}))},qe=function(e){return e.map((function(e){return{value:e.id,label:e.name}}))},Ve=function(e,t){var n=Re(e,t);return n?n.indicators.map((function(e){return{value:e.id,label:e.name}})):[]},Me=function(e,t,n){if(t&&n){var a=Re(e,t);if(!(a&&a.indicators&&a.indicators.length))return[];var r=a.indicators.find((function(e){return e.id===n}));if(r&&r.yearRange)return T(r.yearRange).filter((function(e){return r.excludeYears?!r.excludeYears.includes(e):e})).reverse().map((function(e){return{value:e,label:e}}))}return[]},Ue=function(e){var t=Object(u.useContext)(Fe),n=t.filterOptions,a=t.updateFilterOptions;return Object(u.useEffect)((function(){!n.topic&&e.length&&a({topic:e[0].id})}),[]),Object(u.useEffect)((function(){if(n.topic){var t=Re(e,n.topic),r=t&&t.indicators&&t.indicators.length?t.indicators[0]:null;r&&a({indicator:r.id})}}),[n.topic]),Object(u.useEffect)((function(){if(n.indicator){var t=Me(e,n.topic,n.indicator);t.length&&!t.find((function(e){return e.value===n.year}))&&a({year:t[0].value})}}),[n.indicator]),{topicOptions:qe(e||[]),indicatorOptions:Ve(e,n.topic),yearOptions:Me(e,n.topic,n.indicator)}},Be=function(){var e=Object(u.useContext)(Fe),t=e.filters,n=e.topics,a=e.filterOptions,o=e.updateFilterOptions,i=Ue(n),c=i.topicOptions,s=i.indicatorOptions,l=i.yearOptions,d=a.year,f=a.indicator,p=function(e,t,n){var a;if(Array.isArray(e)&&e.length)e[0].value!==n&&o(((a={})[t]=e[0].value,a));else if(e&&!Array.isArray(e)){var r;if(e.value!==n)o(((r={})[t]=e&&e.value,r))}};return Object(r.c)("form",{className:"form"},Object(r.c)("div",{className:h()("form-field","form-field--inline-block"),css:Object(r.b)(De||(De=Object(b.a)(["\n z-index: auto;\n margin-left: 5px;\n "])))},Object(r.c)(E,{label:t.topicLabel,options:c,defaultValue:[c[0]],classNamePrefix:"topic-selector",isClearable:!1,css:{minWidth:"100%"},onChange:function(e){return o({topic:e&&e.value})}}),s&&s.length?Object(r.c)(E,{label:t.indicatorLabel,options:s,value:[f&&s.find((function(e){return e.value===f}))||s[0]],classNamePrefix:"indicator-selector",isClearable:!1,css:{minWidth:"100%",marginTop:"1em"},onChange:function(e){return p(e,"indicator",f)}}):null,l&&l.length?Object(r.c)(E,{label:t.yearLabel,options:l,value:[d&&l.find((function(e){return e.value===d}))||l[0]],classNamePrefix:"year-selector",isClearable:!1,css:{minWidth:"100%",marginTop:"1em"},onChange:function(e){return p(e,"year",d)}}):null))},Ge=function(e){var t=e.children;return d.a.createElement("div",{className:"spotlight-legend","data-testid":"spotlight-legend"},u.Children.map(t,(function(e){return e})))};Ge.propTypes={children:p.a.any};var Ze=Ge,We=n(44),Ye=function(e){var t=e.children,n=e.className,a=e.bgColor,r=e.textColor,o=We(a);return d.a.createElement("span",{className:n,"data-testid":"spotlight-legend-item"},t,d.a.createElement("style",null,"\n span."+n+" {\n background-color: "+(a||"#D1CBCF")+" !important;\n color: "+(r||o.isLight()?"#000":"#FFF")+";\n }\n "))};Ye.propTypes={children:p.a.any,className:p.a.string,bgColor:p.a.string,textColor:p.a.string};var He=Ye,Je=function(){var e,t,n=Object(u.useContext)(Fe).activeIndicator;return d.a.createElement("div",{className:"spotlight__content"},d.a.createElement(ze,null,d.a.createElement(Be,null)),n?d.a.createElement(d.a.Fragment,null,d.a.createElement("div",{className:"spotlight__subheading"},n.name),n.description?d.a.createElement("p",{className:"spotlight__excerpt"},n.description):null,d.a.createElement(Ze,null,(e=n.range,t=n.colours,e&&t?e.map((function(n,a){return d.a.createElement(He,{className:"item-"+n,bgColor:t[a],key:n},0===a?"< "+e[0]:e[a-1]+"-"+n)})).concat([d.a.createElement(He,{className:"item-last",bgColor:t[t.length-1],key:e.length},"> "+e[e.length-1])]):null),d.a.createElement(He,null,"no data / not applicable"))):null)},Ke=n(45),Xe={type:"shapefile",style:"mapbox://styles/edwinmp/ck42rrx240t8p1cqpkhgy2g0m/draft",sourceLayer:"Uganda_Sub-Counties_2019-8w0zb5",layerName:"uganda-Sub-counties-2019-8w0zb5",center:[32.655221,1.344666],zoom:8,minZoom:8,maxZoom:9,districtNameProperty:"District",nameProperty:"Subcounty",codeProperty:"scode2019",formatter:function(e,t){return void 0===t&&(t="map"),e.toUpperCase()}},$e=function(e,t,n,a){n&&(e.setFilter(t,["==",a.nameProperty,Ee(n.name,a.formatter)]),setTimeout((function(){if(n.coordinates)e.flyTo({center:n.coordinates,zoom:8.5});else{var t=a.formatter?a.formatter(n.name):n.name;!function e(t,n,a,r){return void 0===r&&(r=!0),new Promise((function(o,i){var c=ke(t,n,a);c?(t.flyTo({center:c,zoom:16}),o(c)):r?(t.flyTo({center:a.center,zoom:a.zoom||6.1}),setTimeout((function(){e(t,n,a,!1).then((function(e){return o(e)})).catch(i)}),500)):i(new Error("Location "+n+" not found!"))}))}(e,t,a)}}),500))},Qe=function(e,t,n){if(!t)return[];if(!t.mapping)throw new Error("Mapping is required for indicator "+t.id);var a=t.mapping,r=a.location,o=a.value,i=a.year,c=B(e,t.filters);return c=n?c.filter((function(e){return""+e[i]==""+n})).map((function(e){return{name:e[r],value:Number(e[o])}})):c.map((function(e){return{name:e[r],value:Number(e[o])}})),t.aggregator?function(e,t){var n=Object(Ke.groupBy)(e,(function(e){return e.name}));return Object.keys(n).map((function(e){var a=n[e].reduce((function(e,t){return e+t.value}),0),r=a/n[e].length;return{name:e,value:"sum"===t?a:r}}))}(c,t.aggregator):c},et=function(e){return e.split(",").map((function(e){return parseFloat(e)}))},tt=["Waiga Primary School","Gods Mercy Primary School","Bukeeka COU Primary School"],nt=["Bukeeka COU Primary School","Kungu CU Primary School","King Jesus Nursery And Primary School","Nile View Primary School","Imam Hassan Primary School Maligita","Bright Future Nursery And Primary School Kangulumira"],at=function(e,t){var n="https://raw.githubusercontent.com/devinit/ug-district-dashboard-viz/dev/public/assets/data/"+e.toLowerCase()+"/schools-locations.csv",a={type:"FeatureCollection",features:[]};return t&&n&&n?(A(n).then((function(n){var r=n.filter((function(t){return"Masindi"===e?!tt.includes(t.school_name):!nt.includes(t.school_name)}));"all"===t.ownership?r.filter((function(e){return e.level===t.level})).forEach((function(e){if(e.gps_coordinates){var t=et(e.gps_coordinates);t&&a.features.push({type:"Feature",geometry:{type:"Point",coordinates:[t[1],t[0]]},properties:{level:e.level,ownership:e.ownership,name:e.school_name,parish:e.parish}})}})):r.filter((function(e){return e.level===t.level&&e.ownership===t.ownership})).forEach((function(e){if(e.gps_coordinates){var t=et(e.gps_coordinates);t&&a.features.push({type:"Feature",geometry:{type:"Point",coordinates:[t[1],t[0]]},properties:{level:e.level,ownership:e.ownership,name:e.school_name,parish:e.parish}})}}))})).catch((function(e){console.log(e)})),a):a};function rt(e){return"numberOfPrimarySchools"===e?{level:"Primary",ownership:"all"}:"numberOfSecondarySchools"===e?{level:"Secondary",ownership:"all"}:"numberOfGovernmentPrimarySchools"===e?{level:"Primary",ownership:"Government"}:"numberOfPrivatePrimarySchools"===e?{level:"Primary",ownership:"Private"}:"numberOfGovernmentSecondarySchools"===e?{level:"Secondary",ownership:"Government"}:"numberOfPrivateSecondarySchools"===e?{level:"Secondary",ownership:"Private"}:""}var ot,it=function(e,t,n,a){!function(e,t,n){var a=n.popup,r=n.nameProperty,o=n.formatter,i=n.data,c=function(e,t){if(e.features&&e.features[0].properties){var n=e.features[0].geometry;if("Polygon"===n.type||"MultiPolygon"===n.type)return e.features[0].properties[t]||null}return null}(t,r);if(c){var s=o?o(c,"tooltip"):c;if(i){var l=Ie(s,i);Pe(e,a,t.lngLat,s,Le(n,l))}else Pe(e,a,t.lngLat,s,"")}}(t,n,Object.assign({},a,{popup:e}))},ct=new ye.Popup({offset:5}),st=new ye.Popup({offset:5}),lt=function(e,t,n){void 0===n&&(n={});var a=Object(u.useState)(),r=a[0],o=a[1],i=Object(u.useState)(n),c=i[0],d=i[1],f=Object(u.useState)([]),p=f[0],b=f[1],m=Object(u.useState)(),g=m[0],h=m[1],v=Object(u.useState)(""),y=v[0],O=v[1],j=Object(u.useCallback)((function(e){r.getCanvas().style.cursor="pointer",it(ct,r,e,Object.assign({},t,{data:p},c))}),[r,p,c]),w=Object(u.useCallback)((function(){r.getCanvas().style.cursor="",ct.remove()}),[r,e]),x=Object(u.useCallback)((function(e){e.preventDefault(),r.off("mousemove","highlight",j),ct.remove(),e.features.length&&r.setLayoutProperty("points","icon-size",["match",["get","name"],e.features[0].properties.name,.4,.2])}),[r,g]),C=Object(u.useCallback)((function(e){for(var t=e.features[0].geometry.coordinates.slice(),n=e.features[0].properties,a=n.name,o=n.parish,i=n.ownership;Math.abs(e.lngLat.lng-t[0])>180;)t[0]+=e.lngLat.lng>t[0]?360:-360;st.setLngLat(t).setHTML('\n
\n
\n '+a+"\n
\n

Coordinates: "+t+"

\n

Ownership: "+i+"

\n

Parish: "+(o||"No parish data")+"

\n
\n ").addTo(r)})),S=Object(u.useCallback)((function(){r.on("mousemove","highlight",j),ct.remove(),r.setLayoutProperty("points","icon-size",.2)}),[r,e]);return Object(u.useEffect)((function(){r&&(r.getLayer("points")&&r.removeLayer("points"),g&&r.loadImage("https://docs.mapbox.com/mapbox-gl-js/assets/custom_marker.png",(function(e,t){if(e)throw e;r.hasImage("custom-marker")||r.addImage("custom-marker",t,{sdf:!0}),r.getSource("points")||r.addSource("points",{type:"geojson",data:g,generateId:!0}),r.getLayer("points")||r.addLayer({id:"points",type:"symbol",source:"points",layout:{"icon-image":"custom-marker","icon-anchor":"bottom","icon-size":.2,"icon-allow-overlap":!0},paint:{"icon-color":["match",["get","level"],"Primary","#ff9c1a","Secondary","#00b3b3","#ffffff"]},minzoom:8}),r.getSource("points").setData(g)})))}),[r,p,g,y]),Object(u.useEffect)((function(){r&&(r.getStyle().layers.forEach((function(e){["background","highlight"].includes(e.id)||r.setLayoutProperty(e.id,"visibility","none")})),function(e,t,n){t.clientWidth<700?e.setZoom(n.zoom?n.zoom-1:5):t.clientWidth<900?e.setZoom(n.minZoom?n.minZoom+.8:5.8):e.setZoom(n.zoom||6.1)}(r,r.getContainer(),t),r.off("mousemove","points",x),r.off("mouseleave","highlight",w),r.off("mouseover","highlight",j),r.off("click","points",C),r.on("mousemove","highlight",j),r.on("mouseleave","highlight",w),r.on("mousemove","points",x),r.on("mouseleave","points",S),r.on("click","points",C))}),[r,e,c,p]),Object(u.useEffect)((function(){var t=function(){var e=Object(l.a)(s.a.mark((function e(t){var n;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,A(t);case 2:n=e.sent,b(Qe(n,c.indicator,c.year));case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();c.indicator&&c.year&&(O(rt(c.indicator.id)),h(at(e.name,rt(c.indicator.id))),t(c.indicator.url))}),[c.indicator,c.year]),{map:r,data:p,setData:b,setMap:o,setOptions:d}},ut=function(e,t,n,a,o){var i=[a].map((function(e){return Object(r.c)(je,{key:"highlight-hidden",id:e.layerName,source:"composite","source-layer":e.sourceLayer,show:!1})}));function c(e,t){$e(e,t,n,Object.assign({},a,{nameProperty:a.districtNameProperty}))}if(!e&&o.range&&o.colours&&t.length){var s=function(e,t,n,a){return e&&t&&n?e.map((function(e){var r=Ee(e.name,a),o=t.find((function(t){return null!==e.value&&e.value<=parseFloat(t)}));return o?[r,n[t.indexOf(o)]]:e.value>parseFloat(t[t.length-1])?[r,n[n.length-1]]:[r,"#b3adad"]})):[]}(t,o.range,o.colours,a.formatter);return i.concat(Object(r.c)(je,{key:"highlight",id:"highlight",source:"composite","source-layer":a.sourceLayer,maxzoom:a.maxZoom&&a.maxZoom+2,type:"fill",paint:{"fill-color":{property:a.nameProperty,type:"categorical",default:"#D1CBCF",stops:s},"fill-opacity":.9,"fill-outline-color":"#ffffff"},onAdd:c}))}return i.concat(Object(r.c)(je,{key:"highlight",id:"highlight",source:"composite","source-layer":a.sourceLayer,maxzoom:a.maxZoom&&a.maxZoom+2,type:"fill",paint:{"fill-color":"#D1CBCF","fill-opacity":.75,"fill-outline-color":"#ffffff"},onAdd:c}))},dt={topic:null,indicator:null,year:null},ft=m.a.div(ot||(ot=Object(b.a)(["\n position: absolute;\n top: 1.75em;\n z-index: 1;\n left: 1.4em;\n"])));function pt(e,t){switch(t.type){case"UPDATE_FILTERS":return Object.assign({},e,{filterOptions:t.merge?Object.assign({},e.filterOptions,t.filterOptions):t.filterOptions,activeTopic:t.activeTopic,activeIndicator:t.activeIndicator,activeYear:t.activeYear});case"SET_DATA":return Object.assign({},e,{data:t.data});case"RESET_FILTERS":return Object.assign({},e,{filterOptions:dt});default:throw new Error}}var bt={filterOptions:dt},mt=function(e){var t=Object(u.useState)(!0),n=t[0],a=t[1],o=Object(u.useReducer)(pt,bt),i=o[0],c=o[1],s=i.filterOptions,l=i.activeIndicator,d=i.activeTopic,f=i.activeYear,p=lt(e.location,e.configs.formatter?Object.assign({},Xe,{formatter:e.configs.formatter}):Xe),b=p.data,m=p.map,g=p.setMap,h=p.setOptions;Object(u.useEffect)((function(){if(l){var e=s.year;h({dataPrefix:l.name+": ",dataSuffix:e&&" in "+e,indicator:l,year:e})}}),[l,s.year,m]);var v,y,O=function(t,n){void 0===n&&(n=!0);var a=function(e,t){var n=t.topic,a=t.indicator,r=t.year;if(n){var o=e.find((function(e){return e.id===n}));if(o&&a){var i=o.indicators.find((function(e){return e.id===a}));if(i)return{topic:o,indicator:i,year:r}}return{topic:o}}return{}}(e.configs.data,Object.assign({},s,t)),r=a.topic,o=a.indicator,i=a.year;c({type:"UPDATE_FILTERS",merge:n,filterOptions:t,activeTopic:r,activeIndicator:o,activeYear:i})},j=(v=e.configs.data,y=s.topic,v.find((function(e){return e.id===y}))),w=Object(u.useMemo)((function(){return{filters:e.filters,topics:e.configs.data,filterOptions:s,updateFilterOptions:O,activeTopic:d,activeIndicator:l,activeYear:f}}));return Object(r.c)(Fe.Provider,{value:w},Object(r.c)("div",{className:"spotlight"},Object(r.c)("div",{className:"spotlight__aside spotlight__aside--no-margin",css:{minHeight:"600px"}},Object(r.c)(Je,null)),Object(r.c)("div",{className:"spotlight__main spotlight__main--map"},n?Object(r.c)("div",null,"Loading ..."):null,j&&j.dashboardUrl?Object(r.c)(ft,null,Object(r.c)("a",{href:j.dashboardUrl,className:"button button--secondary--fill"},j.dashboardButtonCaption)):null,Object(r.c)(xe,{accessToken:"pk.eyJ1IjoiZWR3aW5tcCIsImEiOiJjazFsdHVtcG0wOG9mM2RueWJscHhmcXZqIn0.cDR43UvfMaOY9cNJsEKsvg",locationData:at(e.location.name),options:Object.assign({style:Xe.style,center:Xe.center,minZoom:Xe.minZoom||6,zoom:Xe.zoom||6.1,maxZoom:Xe.maxZoom||7,scrollZoom:!1},e.configs.options),style:{width:"100%",background:"#ffffff"},onLoad:function(e){a(!1),g(e)}},ut(n,b,e.location,e.configs.formatter?Object.assign({},Xe,{formatter:e.configs.formatter}):Xe,l?{range:l.range,colours:l.colours}:{})))))};mt.defaultProps={data:[]},mt.propTypes={configs:p.a.object,filters:p.a.object,data:p.a.array,location:p.a.shape({name:p.a.string,fullName:p.a.string,coordinates:p.a.array})};var gt,ht,vt,yt,Ot,jt,wt,xt=mt,Ct=m.a.div(gt||(gt=Object(b.a)(["\n background: #ffffff;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n"]))),St=function(){return d.a.createElement(Ct,null,d.a.createElement($,null))},Et=function(e){window.DICharts.handler.addChart({className:e,echarts:{onAdd:function(e){Array.prototype.forEach.call(e,(function(e){var t=new window.DICharts.Chart(e.parentElement);if(t.showLoading(),window.DIState){var n=Object(o.createRoot)(e);window.DIState.addListener((function(){t.showLoading();var e=window.DIState.getState,a=e.map,r=e.location;a?n.render(d.a.createElement(xt,{configs:a,location:r,filters:a.filters})):n.render(d.a.createElement(St,null)),t.hideLoading()}))}else window.console.log("State is not defined")}))}}})},Lt=n(46),Nt=function(e){var t=e.close,n=e.description,a=e.source;return Object(r.c)("div",{className:"spotlight-modal",css:Object(r.b)(vt||(vt=Object(b.a)(["\n font-size: 12px;\n "])))},Object(r.c)("a",{className:"close",onClick:t,css:Object(r.b)(yt||(yt=Object(b.a)(["\n cursor: pointer;\n position: absolute;\n display: block;\n padding: 5px 10px;\n line-height: 20px;\n right: 0px;\n top: 0px;\n font-size: 20px;\n background: transparent;\n color: #333131;\n font-weight: 900;\n "])))},"×"),Object(r.c)("div",{className:"content",css:Object(r.b)(Ot||(Ot=Object(b.a)(["\n width: 100%;\n padding: 10px 5px 10px 5px;\n "])))},Object(r.c)("p",{className:"description",css:Object(r.b)(jt||(jt=Object(b.a)(["\n font-size: 14px;\n "])))},n),a?Object(r.c)(d.a.Fragment,null,Object(r.c)("br",null),Object(r.c)("p",{className:"source",css:Object(r.b)(wt||(wt=Object(b.a)(["\n text-align: left;\n "])))},a?Object(r.c)(d.a.Fragment,null,Object(r.c)("b",{css:Object(r.b)(ht||(ht=Object(b.a)(["\n font-family: Geomanist Bold, sans-serif;\n "])))},"Source:"," "),a):null)," "):null))};Nt.propTypes={description:p.a.oneOfType([p.a.string,p.a.element]),source:p.a.string,close:p.a.func.isRequired};var kt,Pt,It=Nt,Tt=function(e){return Object(r.c)(Lt.a,{trigger:Object(r.c)("span",{className:"spotlight__stat-icon",css:Object(r.b)(kt||(kt=Object(b.a)(["\n display: inline-flex;\n margin-left: 2px;\n cursor: pointer;\n padding: 8px;\n "])))},Object(r.c)("i",{onClick:function(){document.querySelectorAll(".popup-content ").forEach((function(e){e.setAttribute("style","display:none;")}))},role:"presentation","aria-hidden":"true",className:"ico ico--12 ico-info-slate",css:Object(r.b)(Pt||(Pt=Object(b.a)(["\n top: -1px;\n "])))})),offsetX:20,arrowStyle:{height:"10px",width:"10px",position:"absolute",background:"rgb(255, 255, 255)",transform:"rotate(225deg)",margin:"-5px",zIndex:-1,boxShadow:"rgb(0 0 0 / 20%) 1px 1px 1px",bottom:"0%",left:"82px"},position:"bottom center",closeOnDocumentClick:!0,contentStyle:{zIndex:200,width:"350px",background:"#fff",fontWeight:400,fontStyle:"normal",fontSize:"12px",color:"#60575d",border:0,borderRadius:"0.28571429rem",boxShadow:"0 2px 4px 0 rgba(34, 36, 38, 0.12), 0 2px 10px 0 rgba(34, 36, 38, 0.15)",padding:"5px"}},(function(t){return Object(r.c)(It,{close:t,description:e.description,source:e.source})}))};Tt.propTypes={description:p.a.oneOfType([p.a.string,p.a.element]),source:p.a.string};var Ft=Tt,At=function(e){var t=e.meta,n=void 0===t?{}:t,a=e.heading,r=e.children;return d.a.createElement("div",{className:"spotlight__stat"},d.a.createElement("h3",{className:"spotlight__stat-heading"},a,n.description||n.source?d.a.createElement(Ft,{description:n.description,source:n.source}):null),r)};At.defaultProps={meta:{}},At.propTypes={heading:p.a.string,meta:p.a.shape({description:p.a.oneOfType([p.a.string,p.a.element]),source:p.a.string}),children:p.a.any};var _t,Dt=At,zt=function(e){var t=e.value,n=e.note;return Object(r.c)("p",{className:"spotlight__stat-data"},t,n&&n.content?Object(r.c)("span",{className:"spotlight__stat-data__note",css:Object(r.b)(_t||(_t=Object(b.a)(["\n transform: none;\n position: relative;\n top: -10px;\n "])))},n.content," ",n.meta?Object(r.c)(Ft,{description:n.meta.description,source:n.meta.source}):null):null)};zt.propTypes={note:p.a.object,value:p.a.string};var Rt,qt=zt,Vt=function(e){var t=e.children;return Object(r.c)("article",{className:"tabs__content",css:Object(r.b)(Rt||(Rt=Object(b.a)(["\n z-index: 200;\n "])))},t)};Vt.propTypes={children:p.a.any};var Mt=Vt,Ut=function(e){var t=e.id,n=e.active,a=e.label,r=e.children,o=e.onActivate;return d.a.createElement("section",{className:"tabs__container",id:t},d.a.createElement("input",{className:"tabs__input",type:"radio",name:"sections",id:t+"-option",defaultChecked:n}),d.a.createElement("label",{className:"tabs__label",htmlFor:t+"-option",onClick:o},a),u.Children.map(r,(function(e){return Object(u.isValidElement)(e)&&e.type===Mt?e:null})))};Ut.propTypes={id:p.a.string.isRequired,label:p.a.string.isRequired,active:p.a.bool,onActivate:p.a.func,children:p.a.any};var Bt=Ut,Gt=function(e){var t=e.children,n=e.onClick;return d.a.createElement("div",{className:"tabs__content__header",onClick:n},t)};Gt.propTypes={children:p.a.any,onClick:p.a.func};var Zt,Wt,Yt,Ht,Jt,Kt=Gt,Xt=function(e){var t=Object(u.useContext)(Te),n=t.data,a=t.location,o=t.options,i="education",c=M(o.tabs,i);if(void 0!==c.show&&!c.show)return null;var s=n&&n.education?n.education.find((function(e){return"Number of Schools"===e.caption})):null;return Object(r.c)(Bt,{id:i,label:c.label||"Education",active:!!e.active||c.active},Object(r.c)(Mt,null,Object(r.c)(Kt,null,s?Object(r.c)("div",{css:Object(r.b)(Zt||(Zt=Object(b.a)(["\n display: flex;\n "])))},Object(r.c)("div",{css:Object(r.b)(Wt||(Wt=Object(b.a)(["\n margin-right: 1rem;\n "])))},Object(r.c)("span",{css:Object(r.b)(Yt||(Yt=Object(b.a)(["\n font-size: 2.5rem;\n "])))},"Number of Schools in ",a.name," is"," "),Object(r.c)("b",{css:Object(r.b)(Ht||(Ht=Object(b.a)(["\n font-size: 3rem;\n "])))},I(s.value)),Object(r.c)(Ft,{description:"Last updated: "+s.lastUpdated})),c.dashboardURL?Object(r.c)("a",{href:c.dashboardURL,className:"button button--secondary--fill"},c.dashboardButtonCaption||"View Full Dashboard"):null):null),Object(r.c)("div",{className:"l-2up"},n&&n.education?n.education.filter((function(e){return"Number of Schools"!==e.caption})).map((function(e){return Object(r.c)("div",{className:"l-2up__col",key:e.caption},Object(r.c)(Dt,{heading:e.caption,meta:{description:Object(r.c)("span",{css:Object(r.b)(Jt||(Jt=Object(b.a)(["\n display: flex;\n justify-content: center;\n "])))},"Last updated: "+e.lastUpdated)}},Object(r.c)(qt,{value:e.value})))})):null)))};Xt.propTypes={active:p.a.bool};var $t,Qt,en,tn,nn,an=Xt,rn=function(e){var t=Object(u.useContext)(Te),n=t.data,a=t.location,o=t.options,i="overview",c=M(o.tabs,i);return void 0===c.show||c.show?Object(r.c)(Bt,{id:i,label:c.label||"Overview",active:!!e.active||c.active},Object(r.c)(Mt,null,Object(r.c)(Kt,null,n&&n.population?Object(r.c)("div",{css:Object(r.b)($t||($t=Object(b.a)(["\n display: flex;\n "])))},Object(r.c)("div",{css:Object(r.b)(Qt||(Qt=Object(b.a)(["\n margin-right: 1rem;\n "])))},Object(r.c)("span",{css:Object(r.b)(en||(en=Object(b.a)(["\n font-size: 2.5rem;\n "])))},"Total Population in ",a.name," is"," "),Object(r.c)("b",{css:Object(r.b)(tn||(tn=Object(b.a)(["\n font-size: 3rem;\n "])))},I(n.population.value)),Object(r.c)(Ft,{description:"Last updated: "+n.population.lastUpdated})),c.dashboardURL?Object(r.c)("a",{href:c.dashboardURL,className:"button button--secondary--fill"},c.dashboardButtonCaption||"View Full Dashboard"):null):null),Object(r.c)("div",{className:"l-2up"},n&&n.administration?n.administration.map((function(e){return Object(r.c)("div",{className:"l-2up__col",key:e.caption},Object(r.c)(Dt,{heading:e.caption,meta:{description:Object(r.c)("span",{css:Object(r.b)(nn||(nn=Object(b.a)(["\n display: flex;\n justify-content: center;\n "])))},"Last updated: "+e.lastUpdated)}},Object(r.c)(qt,{value:e.value})))})):null))):null};rn.propTypes={active:p.a.bool};var on,cn,sn,ln,un,dn,fn=rn,pn=function(e){var t=Object(u.useContext)(Te),n=t.data,a=t.location,o=t.options,i="production",c=M(o.tabs,i);if(void 0!==c.show&&!c.show)return null;var s=n&&n.production?n.production.find((function(e){return""===e.caption})):null;return Object(r.c)(Bt,{id:i,label:c.label||"Production",active:!!e.active||c.active},Object(r.c)(Mt,null,Object(r.c)(Kt,null,Object(r.c)("div",{css:Object(r.b)(on||(on=Object(b.a)(["\n display: flex;\n "])))},s?Object(r.c)("div",{css:Object(r.b)(cn||(cn=Object(b.a)(["\n margin-right: 1rem;\n "])))},Object(r.c)("span",{css:Object(r.b)(sn||(sn=Object(b.a)(["\n font-size: 2.5rem;\n "])))},"Number of Schools in ",a.name," is"," "),Object(r.c)("b",{css:Object(r.b)(ln||(ln=Object(b.a)(["\n font-size: 3rem;\n "])))},I(s.value)),Object(r.c)(Ft,{description:"Last updated: "+s.lastUpdated})):null,c.dashboardURL?Object(r.c)("a",{href:c.dashboardURL,className:"button button--secondary--fill"},c.dashboardButtonCaption||"View Full Dashboard"):null)),n&&n.production&&n.production.length?Object(r.c)("div",{className:"l-2up"},n.production.filter((function(e){return""!==e.caption})).map((function(e){return Object(r.c)("div",{className:"l-2up__col",key:e.caption},Object(r.c)(Dt,{heading:e.caption,meta:{description:Object(r.c)("span",{css:Object(r.b)(un||(un=Object(b.a)(["\n display: flex;\n justify-content: center;\n "])))},"Last updated: "+e.lastUpdated)}},Object(r.c)(qt,{value:e.value})))}))):Object(r.c)("div",{css:Object(r.b)(dn||(dn=Object(b.a)(["\n font-size: 16px;\n display: flex;\n justify-content: center;\n width: 100%;\n "])))},"No Production Data")))};pn.propTypes={active:p.a.bool};var bn,mn=pn,gn=function(e){var t=e.children;return Object(r.c)("div",{className:"tabs",css:Object(r.b)(bn||(bn=Object(b.a)(["\n z-index: 0;\n "])))},t)};gn.propTypes={children:p.a.any};var hn=gn,vn=function(e){var t=Object(u.useState)({}),n=t[0],a=t[1];return Object(u.useEffect)((function(){e.data&&a(function(e){var t={},n=function(e){return{caption:e.Item,value:e.Value,lastUpdated:e["Last Updated"]}},a=e.find((function(e){return"Total Population"===e.Item}));return a&&(t.population=n(a)),t.administration=e.filter((function(e){return"Total Population"!==e.Item&&"Administration"===e.Department})).map(n),t.education=e.filter((function(e){return"Total Population"!==e.Item&&"Education"===e.Department})).map(n),t.production=e.filter((function(e){return"Total Population"!==e.Item&&"Production"===e.Department})).map(n),t}(e.data))}),[e.data]),Object(r.c)(Te.Provider,{value:Object.assign({},e,{data:n})},Object(r.c)(hn,null,Object(r.c)(fn,{active:!0}),Object(r.c)(an,null),Object(r.c)(mn,null)))};vn.propTypes={data:p.a.array.isRequired,location:p.a.object.isRequired,options:p.a.object.isRequired};var yn=vn,On=function(e){window.DICharts.handler.addChart({className:e,echarts:{onAdd:function(e){Array.prototype.forEach.call(e,(function(e){var t=new window.DICharts.Chart(e.parentElement);if(t.showLoading(),window.DIState){var n=Object(o.createRoot)(e);window.DIState.addListener((function(){t.showLoading();var e=window.DIState.getState,a=e.keyFacts,r=e.location;a&&a.url?A(a.url).then((function(e){Array.isArray(e)?n.render(d.a.createElement(yn,{data:e,options:a,location:r})):e.results?n.render(d.a.createElement(yn,{data:e.results,options:a,location:r})):(window.console.error("Invalid data shape. Expected an array or an object with a results property.",e),n.render(d.a.createElement(St,null)))})).catch((function(e){window.console.log(e),n.render(d.a.createElement(St,null))})):a&&a.data?n.render(d.a.createElement(yn,{data:a.data,options:a,location:r})):n.render(d.a.createElement(St,null)),t.hideLoading()}))}else window.console.log("State is not defined")}))}}})},jn=function(){var e=Object(l.a)(s.a.mark((function e(t,n){var a,r,o,i,c,l;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.data,r=t.config,o=t.subCounty,i=t.tableRoot,c=r.selectors.map((function(e){return{property:e.dataProperty,value:"all"}})),l=function(e,t){var n=Array.isArray(t)?t[0].value:t.value;if(n){var s=c.find((function(t){return t.property===e.config.dataProperty}));if(s){s.value=n;var l=c.reduce((function(e,t){return"all"===t.value?e:U(e,t.property,t.value)}),a),u=Z(r,l,o);i.render(d.a.createElement(se,{rows:u}))}}},e.abrupt("return",z(r.selectorClassName,{selectors:r.selectors,onChange:l,makeSticky:!1,nodes:n}));case 4:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),wn=function(e){(function(e){return e.className?e.mapping?e.mapping.rows?e.mapping.year?e.mapping.value?e.mapping.subCounty?!!e.mapping.level||(window.console.error("Invalid table config: mapping[mapping.level] is required!"),!1):(window.console.error("Invalid table config: mapping.subCounty is required!"),!1):(window.console.error("Invalid table config: mapping.value is required!"),!1):(window.console.error("Invalid table config: mapping.year is required!"),!1):(window.console.error("Invalid table config: mapping.series is required!"),!1):(window.console.error("Invalid table config: mapping is required!"),!1):(window.console.error("Invalid table config: className is required!"),!1)})(e)&&window.DICharts.handler.addChart({className:e.className,d3:{onAdd:function(t){A(e.url).then((function(n){Array.prototype.forEach.call(t,(function(t){var a=new window.DICharts.Chart(t.parentElement);a.showLoading();var r=Object(o.createRoot)(t),i="all",c=[];window.DIState.addListener((function(){a.showLoading();var o=window.DIState.getState.subCounty;if(o!==i){i=o||"all";var s=e.filters&&e.filters.subCounties?function(e,t,n){return e.filter((function(e){return!t||"all"===t||e[n].toLowerCase()===t.toLowerCase()}))}(n,i,e.mapping.subCounty):n,l=Z(e,s,i);r.render(d.a.createElement(se,{rows:l})),e.selectors&&e.selectors.length&&jn({data:s,subCounty:i,config:e,tableRoot:r},c).then((function(e){c=e})),a.hideLoading(),t.parentElement.classList.add("auto-height")}}))}))}))}}})},xn=function(){if(window.DIState){var e=[];window.DIState.addListener((function(){var t=window.DIState.getState.tables;t&&e.length!==t.length&&(e=t).forEach((function(e){wn(e)}))}))}else window.console.log("State is not defined")};n(103);window.addEventListener("load",(function(){z("district-selectors",{makeSticky:!0}),Et("dicharts--district-map"),xn(),On("dicharts--keyfacts"),ve()}))},50:function(e,t,n){e.exports=n(104)}},[[50,1,2]]]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{103:function(e,t,n){},104:function(e,t,n){"use strict";n.r(t);var a,r=n(1),o=n(9),i=n(107),c=n(11),s=n.n(c),l=n(15),u=n(0),d=n.n(u),f=n(3),p=n.n(f),b=n(4),m=n(19),g=n(10),h=n.n(g),v=m.a.div(a||(a=Object(b.a)(["\n color: red;\n font-size: 11px;\n position: relative;\n padding: 5px 5px 5px 0px;\n display: block;\n"]))),y=function(e){var t=Object(u.useState)(""),n=t[0],a=t[1],r=function(t){t?"maxSelectedOptions"===t.type&&a(e.selectErrorMessage):a("")};return d.a.createElement("div",{className:h()(e.className)},d.a.Children.map(e.children,(function(e){return d.a.isValidElement(e)?d.a.cloneElement(e,{onError:r}):e})),n?d.a.createElement(v,{className:"data-selector--wrapper"},n):null)};y.propTypes={selectErrorMessage:p.a.string,children:p.a.node,className:p.a.string};var O=y,j=n(25),w=n(26),x=n(47),C={control:function(e){return Object.assign({},e,{borderColor:"#ddd",borderRadius:"none",boxShadow:"none",":hover":{borderColor:"#357ba5"},":active":{borderColor:"#357ba5"}})},menu:function(e){return Object.assign({},e,{color:"#443e42",backgroundColor:"#FFFFFF"})},option:function(e,t){return Object.assign({},e,{fontSize:"14px",":hover":{backgroundColor:"#4e9ac6",color:"#ffffff"},backgroundColor:t.isSelected?"#357ba5":"transparent"})},singleValue:function(e){return Object.assign({},e,{fontSize:"14px"})},multiValue:function(e){return Object.assign({},e,{fontSize:"14px"})},multiValueLabel:function(e,t){return t.data.isCloseable?e:Object.assign({},e,{paddingRight:6})},multiValueRemove:function(e,t){return t.data.isCloseable?e:Object.assign({},e,{display:"none"})},input:function(e){return Object.assign({},e,{fontSize:"14px"})},indicatorsContainer:function(e){return Object.assign({},e,{pointerEvents:"none"})}},S=function(e){var t=e.label,n=e.onError,a=e.maxSelectedOptions,o=e.defaultValue,i=e.singleSelectOptions,c=e.className,s=Object(w.a)(e,["label","onError","maxSelectedOptions","defaultValue","singleSelectOptions","className"]),l=Object(u.useState)(o),d=l[0],f=l[1];Object(u.useEffect)((function(){s.onChange&&s.onChange(d),n&&n()}),[d]),Object(u.useEffect)((function(){s.value&&f(s.value)}),[s.value]);return Object(r.c)("div",{className:h()("labelled-data-selector--wrapper",c)},Object(r.c)("label",null,Object(r.c)("b",null,t)),Object(r.c)(x.a,Object(j.a)({},s,{value:d,onChange:function(e){if(s.isMulti)if(e.length){var t=e.findIndex((function(e){return i.find((function(t){return t.value===e.value}))}));s.isMulti&&e.length>1&&-1!==t?f(0===t?e.slice(1):[e[t]]):a&&e.length>a?n&&n({type:"maxSelectedOptions",message:"Only up to "+a+" selections allowed"}):f(e)}else f(o);else f(e)},css:{marginRight:"25px"},styles:C,isClearable:"undefined"!==s.isClearable?s.isClearable:d.length>1})))};S.propTypes={label:p.a.string,options:p.a.array,maxSelectedOptions:p.a.number,onChange:p.a.func,onError:p.a.func,defaultValue:p.a.array,singleSelectOptions:p.a.array,isMulti:p.a.bool,isClearable:p.a.bool,className:p.a.string,value:p.a.array},S.defaultProps={maxSelectedOptions:2,singleSelectOptions:[]};var E=S,L=n(106),N=n(39);function k(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return P(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return P(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0;return function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n"+e.title+""}}}},color:H.rainbow,xAxis:{axisLine:{show:!0,lineStyle:{color:"#ddd"}},axisLabel:{fontFamily:"Geomanist Regular,sans-serif",fontSize:13,color:"#32313f"},splitLine:{show:!1},nameTextStyle:{color:"#32313f",fontFamily:"Geomanist Regular,sans-serif"}},yAxis:{axisLabel:{fontFamily:"Geomanist Regular,sans-serif",fontSize:13,color:"#32313f"},axisLine:{show:!1,lineStyle:{color:"#ddd"}},axisTick:{show:!1},splitLine:{show:!1},nameTextStyle:{color:"#32313f",fontFamily:"Geomanist Regular,sans-serif"}},axisPointer:{type:"none"},grid:{top:10},textStyle:{fontFamily:"Geomanist Regular,sans-serif"}},K=n(24),X=n.n(K),$=function(){return d.a.createElement("div",{className:"no-data"},"No Data")},Q=function(e,t,n){var a=e.slice();return t.forEach((function(t,r){void 0===a[r]?a[r]=n.cloneUnlessOtherwiseSpecified(t,n):n.isMergeableObject(t)?a[r]=X()(e[r],t,n):-1===e.indexOf(t)&&a.push(t)})),a},ee=function(e,t){if(void 0===t&&(t={}),Array.isArray(t.yearRange)&&t.yearRange.length){var n=T(t.yearRange);return t.excludeYears?n.filter((function(e){return!t.excludeYears.includes(e)})).map((function(e){return""+e})):n.map((function(e){return""+e}))}var a=t.mapping&&t.mapping.year;if(!a)return[];var r=Array.from(new Set(e.map((function(e){return Number(e[a])})))).sort((function(e,t){return e-t}));return t.excludeYears?r.filter((function(e){return!t.excludeYears.includes(e)})).map((function(e){return""+e})):r.map((function(e){return e.toString()}))},te=function(e,t,n){var a=e.reduce((function(e,a){return a[n.mapping.series]===t?e+Number(G(a[n.mapping.value])):e}),0);return n.aggregator&&"sum"!==n.aggregator&&"avg"===n.aggregator?a/e.filter((function(e){return e[n.mapping.series]===t})):a},ne=function(e,t,n){var a,r=e.series,o=e.mapping,i=!(a=e.type)||["bar-stacked","column-stacked"].includes(a)?"bar":"area"===a?"line":a;if("pie"!==i){var c=!e.type||["area","bar-stacked","column-stacked"].includes(e.type)?"district-stack":void 0,s=r.map((function(a,l){return{name:a,type:i,stack:c,areaStyle:"area"===e.type?{}:void 0,smooth:!0,emphasis:{focus:"series",label:{show:!0,formatter:function(e){return I(e.value)}}},symbol:"circle",label:{show:c&&l===r.length-1,fontFamily:"Geomanist Regular,sans-serif",position:"top",formatter:function(e){for(var t=0,n=0;n0})))))};ce.propTypes={rows:p.a.arrayOf(p.a.array)};var se=ce,le=n(48),ue=function(e,t){void 0===t&&(t=[]);var n=e.url,a=e.yearRange,r=e.dataID,o=Object(le.a)(n||e.className||r,Object(l.a)(s.a.mark((function t(){var a;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e.data||!Array.isArray(e.data)){t.next=2;break}return t.abrupt("return",e.data);case 2:if(!n&&!r){t.next=5;break}return a=n?D:F,t.abrupt("return",a(n||r).then((function(t){return e.filters?B(t,e.filters):t})));case 5:return t.abrupt("return",[]);case 6:case"end":return t.stop()}}),t)})))),i=o.data,c=o.error,d=Object(u.useState)(t),f=d[0],p=d[1];if(c)return{data:[],years:[]};var b=Object(u.useMemo)((function(){return i?(a&&a.length,ee(i,e)):[]}),[i]);return{data:Object(u.useMemo)((function(){return i&&i.length?f.length?f.reduce((function(e,t){return"all"===t.value?e:M(e,t.dataProperty,t.value)}),i):i:[]}),[i,f]),years:b,filters:f,setFilters:p,updateFilter:function(e,t){f&&f.length&&p(f.map((function(n){return n.dataProperty===e?Object.assign({},n,{value:t}):n})))}}},de=function(e){return e.show?d.a.createElement("div",{className:h()("button-group",e.className)},d.a.createElement("button",{type:"button",className:h()("button button-sm button-outline",{active:"chart"===e.activeButton}),onClick:e.onClickChart},"Chart"),d.a.createElement("button",{type:"button",className:h()("button button-sm button-outline",{active:"table"===e.activeButton}),onClick:e.onClickTable},"Table")):null};de.propTypes={show:p.a.bool,onClickChart:p.a.func,onClickTable:p.a.func,activeButton:p.a.string,className:p.a.string},de.defaultProps={activeButton:"chart"};var fe=de,pe=function(e){var t=ue(e.config),n=t.data,a=t.years,r=t.setFilters,o=t.updateFilter,i=Object(u.useState)("chart"),c=i[0],s=i[1],l=Object(u.useState)(e.config.type||"bar"),f=l[0],p=l[1];Object(u.useEffect)((function(){var t,n,a,o,i;r((t=e.config,n=e.subCounty,a=t.mapping,o=t.selectors,i=[],a.subCounty&&n&&i.push({dataProperty:a.subCounty,value:"all"}),o&&o.forEach((function(e){i.push({dataProperty:e.dataProperty,value:e.defaultValue?e.defaultValue.value:"all"})})),i))}),[]),Object(u.useEffect)((function(){var t=e.subCounty,n=e.config;t&&n.mapping.subCounty&&o(n.mapping.subCounty,e.subCounty)}),[e.subCounty]);return d.a.createElement(d.a.Fragment,null,d.a.createElement("div",{className:h()("spotlight-banner data-selector--wrapper dicharts--actions",{"align-left":!e.config.selectors})},e.config.selectors?d.a.createElement(_,{configs:e.config.selectors,onChange:function(e,t){o(e.dataProperty,t.value)}}):null,d.a.createElement(fe,{show:!!e.config.table,onClickChart:function(){return s("chart")},onClickTable:function(){return s("table")},activeButton:c}),"chart"===c&&e.config.typeOptions?d.a.createElement(Y,{options:e.config.typeOptions,onChange:p}):null),"chart"===c?d.a.createElement(re,Object(j.a)({className:h()({"dicharts--padding-top":!e.config.selectors})},e,{data:n,years:a,height:e.config.height,type:f})):null,"table"===c&&e.config.table?d.a.createElement(se,{rows:Z(e.config.table,n,e.subCounty)}):null)};pe.propTypes={config:p.a.object,subCounty:p.a.string},pe.defaultProps={subCounty:"all"};var be,me,ge=pe,he=function(e){(function(e){return e.className?e.series&&Array.isArray(e.series)?e.mapping?e.mapping.series?e.mapping.year?e.mapping.value?(e.mapping.subCounty||window.console.warn("Potentially invalid chart config: mapping.subCounty may be required!"),!0):(window.console.error("Invalid chart config: mapping.value is required!"),!1):(window.console.error("Invalid chart config: mapping.year is required!"),!1):(window.console.error("Invalid chart config: mapping.series is required!"),!1):(window.console.error("Invalid chart config: mapping is required!"),!1):(window.console.error(e.series?"Invalid chart config: Invalid series config - expected an array!":"Invalid chart config: Series is required!"),!1):(window.console.error("Invalid chart config: className is required!"),!1)})(e)&&window.DICharts.handler.addChart({className:e.className,echarts:{onAdd:function(t){Array.prototype.forEach.call(t,(function(t){t.classList.add("dicharts--dimensions"),t.parentElement.classList.add("auto-height");var n=new window.DICharts.Chart(t.parentElement);n.showLoading();var a="all",r=Object(o.createRoot)(t);r.render(d.a.createElement(ge,{config:e,subCounty:a})),window.DIState&&window.DIState.addListener((function(){var t=window.DIState.getState.subCounty;t&&t!==a&&(a=t,r.render(d.a.createElement(ge,{config:e,subCounty:a})))})),n.hideLoading()}))}}})},ve=function(){if(window.DIState){var e=[];window.DIState.addListener((function(){var t=window.DIState.getState.charts;t&&e.length!==t.length&&(e=t).forEach(he)}))}else window.console.log("State is not defined")},ye=n(14),Oe=n.n(ye),je=function(e){var t=e.map,n=e.show,a=e.onAdd,r=Object(w.a)(e,["map","show","onAdd"]);return t&&(t.getLayer(r.id)&&t.removeLayer(r.id),n&&(t.addLayer(r),a&&a(t,r.id))),null};je.defaultProps={show:!0},je.propTypes={map:p.a.object,show:p.a.bool,onAdd:p.a.func};var we={width:"100%",position:"absolute",top:0,bottom:0,background:"#F3F3F3"},xe=function(e){Oe.a.accessToken=e.accessToken;var t=Object(u.useRef)(null),n=Object(u.useState)(void 0),a=n[0],o=n[1];Object(u.useEffect)((function(){if(t&&t.current){var n=new Oe.a.Map(Object.assign({container:t.current},e.options));e.showNavigationControls&&n.addControl(new Oe.a.NavigationControl),n.on("load",(function(t){o(n),e.onLoad&&e.onLoad(n,t)}))}}),[]);return Object(r.c)("div",{ref:t,style:Object.assign({},we,e.style),css:Object(r.b)(be||(be=Object(b.a)(["\n background: ",";\n font-family: geomanist, sans-serif;\n "])),e.background)},u.Children.map(e.children,(function(e){return Object(u.isValidElement)(e)&&e.type===je?Object(u.cloneElement)(e,{map:a}):null})),Object(r.c)(r.a,{styles:Object(r.b)(me||(me=Object(b.a)(["\n div .mapboxgl-canary {\n background: red;\n }\n\n div .mapboxgl-popup {\n z-index: 400;\n max-width: 100% !important;\n }\n\n div .mapboxgl-popup-content {\n background-color: rgba(0, 0, 0, 0.9) !important;\n box-shadow: none !important;\n color: #ffffff !important;\n font-family: geomanist, sans-serif;\n -webkit-tap-highlight-color: black;\n opacity: 0.8;\n padding: 20px;\n }\n\n div .mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip {\n border-top-color: rgba(0, 0, 0, 0.9);\n opacity: 0.8;\n }\n\n div .mapboxgl-popup-content .mapBox-popup p {\n margin-bottom: 0;\n }\n\n div .mapboxgl-popup-content .mapboxgl-popup-close-button {\n color: #ffffff;\n font-size: 1.8rem;\n }\n "])))}))};xe.defaultProps={style:we,options:{minZoom:6,zoom:6.1},showNavigationControls:!0,background:"inherit"},xe.propTypes={accessToken:p.a.string,style:p.a.object,background:p.a.string,showNavigationControls:p.a.bool,onLoad:p.a.func,options:p.a.object,children:p.a.node};var Ce=n(29),Se=n(6),Ee=function(e,t){return t?t(e):e},Le=function(e,t){return t&&"number"==typeof t.value?(e.dataPrefix||"")+''+(n=t.value,void 0===a&&(a=1),(n>=1e12?(n/1e12).toFixed(a)+"tn":n>=1e9?(n/1e9).toFixed(a)+"bn":n>=1e6?(n/1e6).toFixed(a)+"m":n>=1e3?(n/1e3).toFixed(a)+"k":n>=0?""+n.toFixed(a):n<=-1e12?(n/1e12).toFixed(a)+"tn":n<=-1e9?(n/1e9).toFixed(a)+"bn":n<=-1e6?(n/1e6).toFixed(a)+"m":n<=1e3?(n/1e3).toFixed(a)+"k":""+n.toFixed(a))+"")+(e.dataSuffix||""):"No Data";var n,a},Ne=function(e){var t=e.geometry&&e.geometry.coordinates;return t?new ye.LngLat(t[0],t[1]):null},ke=function(e,t,n){var a=e.querySourceFeatures("composite",{sourceLayer:n.sourceLayer,filter:["in",n.nameProperty,Ee(t,n.formatter)]});return a&&a.length?function(e){if(Array.isArray(e)){var t=e.map((function(e){return Object(Ce.a)(e.geometry).geometry.coordinates}));return t.push(t[0]),Ne(Object(Ce.a)(Object(Se.f)([t])))}return Ne(Object(Ce.a)(e))}(a):null},Pe=function(e,t,n,a,r){return t.setLngLat(n).setHTML('\n
\n
\n '+a.toLowerCase()+"\n
\n "+(r?''+r+"":"")+"\n
\n ").addTo(e)},Ie=function(e,t,n){return t.find((function(t){var a=n?n(t.name):t.name;return e.toLowerCase()===(""+a).toLowerCase()}))},Te=Object(u.createContext)(),Fe=Object(u.createContext)(),De=n(43),Ae=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={hasError:!1},n}Object(De.a)(t,e),t.getDerivedStateFromError=function(){return{hasError:!0}};var n=t.prototype;return n.componentDidCatch=function(e,t){window.console.log("Error Boundary:",e,t)},n.render=function(){return this.state.hasError?d.a.createElement("div",null,"Something went wrong! Please contact your administrator"):this.props.children},t}(u.Component);Ae.propTypes={children:p.a.any};var _e,Re=Ae,ze=function(e,t){return e.find((function(e){return e.id===t}))},qe=function(e){return e.map((function(e){return{value:e.id,label:e.name}}))},Ue=function(e,t){var n=ze(e,t);return n?n.indicators.map((function(e){return{value:e.id,label:e.name}})):[]},Ve=function(e,t,n){if(t&&n){var a=ze(e,t);if(!(a&&a.indicators&&a.indicators.length))return[];var r=a.indicators.find((function(e){return e.id===n}));if(r&&r.yearRange)return T(r.yearRange).filter((function(e){return r.excludeYears?!r.excludeYears.includes(e):e})).reverse().map((function(e){return{value:e,label:e}}))}return[]},Me=function(e){var t=Object(u.useContext)(Fe),n=t.filterOptions,a=t.updateFilterOptions;return Object(u.useEffect)((function(){!n.topic&&e.length&&a({topic:e[0].id})}),[]),Object(u.useEffect)((function(){if(n.topic){var t=ze(e,n.topic),r=t&&t.indicators&&t.indicators.length?t.indicators[0]:null;r&&a({indicator:r.id})}}),[n.topic]),Object(u.useEffect)((function(){if(n.indicator){var t=Ve(e,n.topic,n.indicator);t.length&&!t.find((function(e){return e.value===n.year}))&&a({year:t[0].value})}}),[n.indicator]),{topicOptions:qe(e||[]),indicatorOptions:Ue(e,n.topic),yearOptions:Ve(e,n.topic,n.indicator)}},Be=function(){var e=Object(u.useContext)(Fe),t=e.filters,n=e.topics,a=e.filterOptions,o=e.updateFilterOptions,i=Me(n),c=i.topicOptions,s=i.indicatorOptions,l=i.yearOptions,d=a.year,f=a.indicator,p=function(e,t,n){var a;if(Array.isArray(e)&&e.length)e[0].value!==n&&o(((a={})[t]=e[0].value,a));else if(e&&!Array.isArray(e)){var r;if(e.value!==n)o(((r={})[t]=e&&e.value,r))}};return Object(r.c)("form",{className:"form"},Object(r.c)("div",{className:h()("form-field","form-field--inline-block"),css:Object(r.b)(_e||(_e=Object(b.a)(["\n z-index: auto;\n margin-left: 5px;\n "])))},Object(r.c)(E,{label:t.topicLabel,options:c,defaultValue:[c[0]],classNamePrefix:"topic-selector",isClearable:!1,css:{minWidth:"100%"},onChange:function(e){return o({topic:e&&e.value})}}),s&&s.length?Object(r.c)(E,{label:t.indicatorLabel,options:s,value:[f&&s.find((function(e){return e.value===f}))||s[0]],classNamePrefix:"indicator-selector",isClearable:!1,css:{minWidth:"100%",marginTop:"1em"},onChange:function(e){return p(e,"indicator",f)}}):null,l&&l.length?Object(r.c)(E,{label:t.yearLabel,options:l,value:[d&&l.find((function(e){return e.value===d}))||l[0]],classNamePrefix:"year-selector",isClearable:!1,css:{minWidth:"100%",marginTop:"1em"},onChange:function(e){return p(e,"year",d)}}):null))},Ge=function(e){var t=e.children;return d.a.createElement("div",{className:"spotlight-legend","data-testid":"spotlight-legend"},u.Children.map(t,(function(e){return e})))};Ge.propTypes={children:p.a.any};var Ze=Ge,We=n(44),Ye=function(e){var t=e.children,n=e.className,a=e.bgColor,r=e.textColor,o=We(a);return d.a.createElement("span",{className:n,"data-testid":"spotlight-legend-item"},t,d.a.createElement("style",null,"\n span."+n+" {\n background-color: "+(a||"#D1CBCF")+" !important;\n color: "+(r||o.isLight()?"#000":"#FFF")+";\n }\n "))};Ye.propTypes={children:p.a.any,className:p.a.string,bgColor:p.a.string,textColor:p.a.string};var He=Ye,Je=function(){var e,t,n=Object(u.useContext)(Fe).activeIndicator;return d.a.createElement("div",{className:"spotlight__content"},d.a.createElement(Re,null,d.a.createElement(Be,null)),n?d.a.createElement(d.a.Fragment,null,d.a.createElement("div",{className:"spotlight__subheading"},n.name),n.description?d.a.createElement("p",{className:"spotlight__excerpt"},n.description):null,d.a.createElement(Ze,null,(e=n.range,t=n.colours,e&&t?e.map((function(n,a){return d.a.createElement(He,{className:"item-"+n,bgColor:t[a],key:n},0===a?"< "+e[0]:e[a-1]+"-"+n)})).concat([d.a.createElement(He,{className:"item-last",bgColor:t[t.length-1],key:e.length},"> "+e[e.length-1])]):null),d.a.createElement(He,null,"no data / not applicable"))):null)},Ke=n(45),Xe={type:"shapefile",style:"mapbox://styles/edwinmp/ck42rrx240t8p1cqpkhgy2g0m/draft",sourceLayer:"Uganda_Sub-Counties_2019-8w0zb5",layerName:"uganda-Sub-counties-2019-8w0zb5",center:[32.655221,1.344666],zoom:8,minZoom:8,maxZoom:9,districtNameProperty:"District",nameProperty:"Subcounty",codeProperty:"scode2019",formatter:function(e,t){return void 0===t&&(t="map"),e.toUpperCase()}},$e=function(e,t,n,a){n&&(e.setFilter(t,["==",a.nameProperty,Ee(n.name,a.formatter)]),setTimeout((function(){if(n.coordinates)e.flyTo({center:n.coordinates,zoom:8.5});else{var t=a.formatter?a.formatter(n.name):n.name;!function e(t,n,a,r){return void 0===r&&(r=!0),new Promise((function(o,i){var c=ke(t,n,a);c?(t.flyTo({center:c,zoom:16}),o(c)):r?(t.flyTo({center:a.center,zoom:a.zoom||6.1}),setTimeout((function(){e(t,n,a,!1).then((function(e){return o(e)})).catch(i)}),500)):i(new Error("Location "+n+" not found!"))}))}(e,t,a)}}),500))},Qe=function(e,t,n){if(!t)return[];if(!t.mapping)throw new Error("Mapping is required for indicator "+t.id);var a=t.mapping,r=a.location,o=a.value,i=a.year,c=B(e,t.filters);return c=n?c.filter((function(e){return""+e[i]==""+n})).map((function(e){return{name:e[r],value:Number(e[o])}})):c.map((function(e){return{name:e[r],value:Number(e[o])}})),t.aggregator?function(e,t){var n=Object(Ke.groupBy)(e,(function(e){return e.name}));return Object.keys(n).map((function(e){var a=n[e].reduce((function(e,t){return e+t.value}),0),r=a/n[e].length;return{name:e,value:"sum"===t?a:r}}))}(c,t.aggregator):c},et=function(e){return e.split(",").map((function(e){return parseFloat(e)}))},tt=["Waiga Primary School","Gods Mercy Primary School","Bukeeka COU Primary School"],nt=["Bukeeka COU Primary School","Kungu CU Primary School","King Jesus Nursery And Primary School","Nile View Primary School","Imam Hassan Primary School Maligita","Bright Future Nursery And Primary School Kangulumira"];function at(e){return"numberOfPrimarySchools"===e?{level:"Primary",ownership:"all"}:"numberOfSecondarySchools"===e?{level:"Secondary",ownership:"all"}:"numberOfGovernmentPrimarySchools"===e?{level:"Primary",ownership:"Government"}:"numberOfPrivatePrimarySchools"===e?{level:"Primary",ownership:"Private"}:"numberOfGovernmentSecondarySchools"===e?{level:"Secondary",ownership:"Government"}:"numberOfPrivateSecondarySchools"===e?{level:"Secondary",ownership:"Private"}:""}var rt,ot=function(e,t,n,a){!function(e,t,n){var a=n.popup,r=n.nameProperty,o=n.formatter,i=n.data,c=function(e,t){if(e.features&&e.features[0].properties){var n=e.features[0].geometry;if("Polygon"===n.type||"MultiPolygon"===n.type)return e.features[0].properties[t]||null}return null}(t,r);if(c){var s=o?o(c,"tooltip"):c;if(i){var l=Ie(s,i);Pe(e,a,t.lngLat,s,Le(n,l))}else Pe(e,a,t.lngLat,s,"")}}(t,n,Object.assign({},a,{popup:e}))},it=new ye.Popup({offset:5}),ct=new ye.Popup({offset:5}),st=function(e,t,n){void 0===n&&(n={});var a=Object(u.useState)(),r=a[0],o=a[1],i=Object(u.useState)(n),c=i[0],d=i[1],f=Object(u.useState)([]),p=f[0],b=f[1],m=Object(u.useState)(),g=m[0],h=m[1],v=Object(u.useState)(""),y=v[0],O=v[1],j=Object(u.useCallback)((function(e){r.getCanvas().style.cursor="pointer",ot(it,r,e,Object.assign({},t,{data:p},c))}),[r,p,c]),w=Object(u.useCallback)((function(){r.getCanvas().style.cursor="",it.remove()}),[r,e]),x=Object(u.useCallback)((function(e){e.preventDefault(),r.off("mousemove","highlight",j),it.remove(),e.features.length&&r.setLayoutProperty("points","icon-size",["match",["get","name"],e.features[0].properties.name,.4,.2])}),[r,g]),C=Object(u.useCallback)((function(e){for(var t=e.features[0].geometry.coordinates.slice(),n=e.features[0].properties,a=n.name,o=n.parish,i=n.ownership;Math.abs(e.lngLat.lng-t[0])>180;)t[0]+=e.lngLat.lng>t[0]?360:-360;ct.setLngLat(t).setHTML('\n
\n
\n '+a+"\n
\n

Coordinates: "+t+"

\n

Ownership: "+i+"

\n

Parish: "+(o||"No parish data")+"

\n
\n ").addTo(r)})),S=Object(u.useCallback)((function(){r.on("mousemove","highlight",j),it.remove(),r.setLayoutProperty("points","icon-size",.2)}),[r,e]);return Object(u.useEffect)((function(){r&&(r.getLayer("points")&&r.removeLayer("points"),g&&r.loadImage("https://docs.mapbox.com/mapbox-gl-js/assets/custom_marker.png",(function(e,t){if(e)throw e;r.hasImage("custom-marker")||r.addImage("custom-marker",t,{sdf:!0}),r.getSource("points")||r.addSource("points",{type:"geojson",data:g,generateId:!0}),r.getLayer("points")||r.addLayer({id:"points",type:"symbol",source:"points",layout:{"icon-image":"custom-marker","icon-anchor":"bottom","icon-size":.2,"icon-allow-overlap":!0},paint:{"icon-color":["match",["get","level"],"Primary","#ff9c1a","Secondary","#00b3b3","#ffffff"]},minzoom:8}),r.getSource("points").setData(g)})))}),[r,p,g,y]),Object(u.useEffect)((function(){r&&(r.getStyle().layers.forEach((function(e){["background","highlight"].includes(e.id)||r.setLayoutProperty(e.id,"visibility","none")})),function(e,t,n){t.clientWidth<700?e.setZoom(n.zoom?n.zoom-1:5):t.clientWidth<900?e.setZoom(n.minZoom?n.minZoom+.8:5.8):e.setZoom(n.zoom||6.1)}(r,r.getContainer(),t),r.off("mousemove","points",x),r.off("mouseleave","highlight",w),r.off("mouseover","highlight",j),r.off("click","points",C),r.on("mousemove","highlight",j),r.on("mouseleave","highlight",w),r.on("mousemove","points",x),r.on("mouseleave","points",S),r.on("click","points",C))}),[r,e,c,p]),Object(u.useEffect)((function(){var t,n,a,r,o,i,u=function(){var e=Object(l.a)(s.a.mark((function e(t,n){var a,r;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t?D:F,e.next=3,a(t||n);case 3:r=e.sent,b(Qe(r,c.indicator,c.year));case 5:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}();c.indicator&&c.year&&(O(at(c.indicator.id)),h((t=e.name,n=at(c.indicator.id),a=c.indicator.schoolLocationUrl,r=c.indicator.schoolLocationdataID,o={type:"FeatureCollection",features:[]},i=a||r,n&&i&&i?((a?D:F)(i).then((function(e){var a=e.filter((function(e){return"Masindi"===t?!tt.includes(e.school_name):!nt.includes(e.school_name)}));"all"===n.ownership?a.filter((function(e){return e.level===n.level})).forEach((function(e){if(e.gps_coordinates){var t=et(e.gps_coordinates);t&&o.features.push({type:"Feature",geometry:{type:"Point",coordinates:[t[1],t[0]]},properties:{level:e.level,ownership:e.ownership,name:e.school_name,parish:e.parish}})}})):a.filter((function(e){return e.level===n.level&&e.ownership===n.ownership})).forEach((function(e){if(e.gps_coordinates){var t=et(e.gps_coordinates);t&&o.features.push({type:"Feature",geometry:{type:"Point",coordinates:[t[1],t[0]]},properties:{level:e.level,ownership:e.ownership,name:e.school_name,parish:e.parish}})}}))})).catch((function(e){console.log(e)})),o):o)),u(c.indicator.url,c.indicator.dataID))}),[c.indicator,c.year]),{map:r,data:p,setData:b,setMap:o,setOptions:d}},lt=function(e,t,n,a,o){var i=[a].map((function(e){return Object(r.c)(je,{key:"highlight-hidden",id:e.layerName,source:"composite","source-layer":e.sourceLayer,show:!1})}));function c(e,t){$e(e,t,n,Object.assign({},a,{nameProperty:a.districtNameProperty}))}if(!e&&o.range&&o.colours&&t.length){var s=function(e,t,n,a){return e&&t&&n?e.map((function(e){var r=Ee(e.name,a),o=t.find((function(t){return null!==e.value&&e.value<=parseFloat(t)}));return o?[r,n[t.indexOf(o)]]:e.value>parseFloat(t[t.length-1])?[r,n[n.length-1]]:[r,"#b3adad"]})):[]}(t,o.range,o.colours,a.formatter);return i.concat(Object(r.c)(je,{key:"highlight",id:"highlight",source:"composite","source-layer":a.sourceLayer,maxzoom:a.maxZoom&&a.maxZoom+2,type:"fill",paint:{"fill-color":{property:a.nameProperty,type:"categorical",default:"#D1CBCF",stops:s},"fill-opacity":.9,"fill-outline-color":"#ffffff"},onAdd:c}))}return i.concat(Object(r.c)(je,{key:"highlight",id:"highlight",source:"composite","source-layer":a.sourceLayer,maxzoom:a.maxZoom&&a.maxZoom+2,type:"fill",paint:{"fill-color":"#D1CBCF","fill-opacity":.75,"fill-outline-color":"#ffffff"},onAdd:c}))},ut={topic:null,indicator:null,year:null},dt=m.a.div(rt||(rt=Object(b.a)(["\n position: absolute;\n top: 1.75em;\n z-index: 1;\n left: 1.4em;\n"])));function ft(e,t){switch(t.type){case"UPDATE_FILTERS":return Object.assign({},e,{filterOptions:t.merge?Object.assign({},e.filterOptions,t.filterOptions):t.filterOptions,activeTopic:t.activeTopic,activeIndicator:t.activeIndicator,activeYear:t.activeYear});case"SET_DATA":return Object.assign({},e,{data:t.data});case"RESET_FILTERS":return Object.assign({},e,{filterOptions:ut});default:throw new Error}}var pt={filterOptions:ut},bt=function(e){var t=Object(u.useState)(!0),n=t[0],a=t[1],o=Object(u.useReducer)(ft,pt),i=o[0],c=o[1],s=i.filterOptions,l=i.activeIndicator,d=i.activeTopic,f=i.activeYear,p=st(e.location,e.configs.formatter?Object.assign({},Xe,{formatter:e.configs.formatter}):Xe),b=p.data,m=p.map,g=p.setMap,h=p.setOptions;Object(u.useEffect)((function(){if(l){var e=s.year;h({dataPrefix:l.name+": ",dataSuffix:e&&" in "+e,indicator:l,year:e})}}),[l,s.year,m]);var v,y,O=function(t,n){void 0===n&&(n=!0);var a=function(e,t){var n=t.topic,a=t.indicator,r=t.year;if(n){var o=e.find((function(e){return e.id===n}));if(o&&a){var i=o.indicators.find((function(e){return e.id===a}));if(i)return{topic:o,indicator:i,year:r}}return{topic:o}}return{}}(e.configs.data,Object.assign({},s,t)),r=a.topic,o=a.indicator,i=a.year;c({type:"UPDATE_FILTERS",merge:n,filterOptions:t,activeTopic:r,activeIndicator:o,activeYear:i})},j=(v=e.configs.data,y=s.topic,v.find((function(e){return e.id===y}))),w=Object(u.useMemo)((function(){return{filters:e.filters,topics:e.configs.data,filterOptions:s,updateFilterOptions:O,activeTopic:d,activeIndicator:l,activeYear:f}}));return Object(r.c)(Fe.Provider,{value:w},Object(r.c)("div",{className:"spotlight"},Object(r.c)("div",{className:"spotlight__aside spotlight__aside--no-margin",css:{minHeight:"600px"}},Object(r.c)(Je,null)),Object(r.c)("div",{className:"spotlight__main spotlight__main--map"},n?Object(r.c)("div",null,"Loading ..."):null,j&&j.dashboardUrl?Object(r.c)(dt,null,Object(r.c)("a",{href:j.dashboardUrl,className:"button button--secondary--fill"},j.dashboardButtonCaption)):null,Object(r.c)(xe,{accessToken:"pk.eyJ1IjoiZWR3aW5tcCIsImEiOiJjazFsdHVtcG0wOG9mM2RueWJscHhmcXZqIn0.cDR43UvfMaOY9cNJsEKsvg",options:Object.assign({style:Xe.style,center:Xe.center,minZoom:Xe.minZoom||6,zoom:Xe.zoom||6.1,maxZoom:Xe.maxZoom||7,scrollZoom:!1},e.configs.options),style:{width:"100%",background:"#ffffff"},onLoad:function(e){a(!1),g(e)}},lt(n,b,e.location,e.configs.formatter?Object.assign({},Xe,{formatter:e.configs.formatter}):Xe,l?{range:l.range,colours:l.colours}:{})))))};bt.defaultProps={data:[]},bt.propTypes={configs:p.a.object,filters:p.a.object,data:p.a.array,location:p.a.shape({name:p.a.string,fullName:p.a.string,coordinates:p.a.array})};var mt,gt,ht,vt,yt,Ot,jt,wt=bt,xt=m.a.div(mt||(mt=Object(b.a)(["\n background: #ffffff;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n"]))),Ct=function(){return d.a.createElement(xt,null,d.a.createElement($,null))},St=function(e){window.DICharts.handler.addChart({className:e,echarts:{onAdd:function(e){Array.prototype.forEach.call(e,(function(e){var t=new window.DICharts.Chart(e.parentElement);if(t.showLoading(),window.DIState){var n=Object(o.createRoot)(e);window.DIState.addListener((function(){t.showLoading();var e=window.DIState.getState,a=e.map,r=e.location;a?n.render(d.a.createElement(wt,{configs:a,location:r,filters:a.filters})):n.render(d.a.createElement(Ct,null)),t.hideLoading()}))}else window.console.log("State is not defined")}))}}})},Et=n(46),Lt=function(e){var t=e.close,n=e.description,a=e.source;return Object(r.c)("div",{className:"spotlight-modal",css:Object(r.b)(ht||(ht=Object(b.a)(["\n font-size: 12px;\n "])))},Object(r.c)("a",{className:"close",onClick:t,css:Object(r.b)(vt||(vt=Object(b.a)(["\n cursor: pointer;\n position: absolute;\n display: block;\n padding: 5px 10px;\n line-height: 20px;\n right: 0px;\n top: 0px;\n font-size: 20px;\n background: transparent;\n color: #333131;\n font-weight: 900;\n "])))},"×"),Object(r.c)("div",{className:"content",css:Object(r.b)(yt||(yt=Object(b.a)(["\n width: 100%;\n padding: 10px 5px 10px 5px;\n "])))},Object(r.c)("p",{className:"description",css:Object(r.b)(Ot||(Ot=Object(b.a)(["\n font-size: 14px;\n "])))},n),a?Object(r.c)(d.a.Fragment,null,Object(r.c)("br",null),Object(r.c)("p",{className:"source",css:Object(r.b)(jt||(jt=Object(b.a)(["\n text-align: left;\n "])))},a?Object(r.c)(d.a.Fragment,null,Object(r.c)("b",{css:Object(r.b)(gt||(gt=Object(b.a)(["\n font-family: Geomanist Bold, sans-serif;\n "])))},"Source:"," "),a):null)," "):null))};Lt.propTypes={description:p.a.oneOfType([p.a.string,p.a.element]),source:p.a.string,close:p.a.func.isRequired};var Nt,kt,Pt=Lt,It=function(e){return Object(r.c)(Et.a,{trigger:Object(r.c)("span",{className:"spotlight__stat-icon",css:Object(r.b)(Nt||(Nt=Object(b.a)(["\n display: inline-flex;\n margin-left: 2px;\n cursor: pointer;\n padding: 8px;\n "])))},Object(r.c)("i",{onClick:function(){document.querySelectorAll(".popup-content ").forEach((function(e){e.setAttribute("style","display:none;")}))},role:"presentation","aria-hidden":"true",className:"ico ico--12 ico-info-slate",css:Object(r.b)(kt||(kt=Object(b.a)(["\n top: -1px;\n "])))})),offsetX:20,arrowStyle:{height:"10px",width:"10px",position:"absolute",background:"rgb(255, 255, 255)",transform:"rotate(225deg)",margin:"-5px",zIndex:-1,boxShadow:"rgb(0 0 0 / 20%) 1px 1px 1px",bottom:"0%",left:"82px"},position:"bottom center",closeOnDocumentClick:!0,contentStyle:{zIndex:200,width:"350px",background:"#fff",fontWeight:400,fontStyle:"normal",fontSize:"12px",color:"#60575d",border:0,borderRadius:"0.28571429rem",boxShadow:"0 2px 4px 0 rgba(34, 36, 38, 0.12), 0 2px 10px 0 rgba(34, 36, 38, 0.15)",padding:"5px"}},(function(t){return Object(r.c)(Pt,{close:t,description:e.description,source:e.source})}))};It.propTypes={description:p.a.oneOfType([p.a.string,p.a.element]),source:p.a.string};var Tt=It,Ft=function(e){var t=e.meta,n=void 0===t?{}:t,a=e.heading,r=e.children;return d.a.createElement("div",{className:"spotlight__stat"},d.a.createElement("h3",{className:"spotlight__stat-heading"},a,n.description||n.source?d.a.createElement(Tt,{description:n.description,source:n.source}):null),r)};Ft.defaultProps={meta:{}},Ft.propTypes={heading:p.a.string,meta:p.a.shape({description:p.a.oneOfType([p.a.string,p.a.element]),source:p.a.string}),children:p.a.any};var Dt,At=Ft,_t=function(e){var t=e.value,n=e.note;return Object(r.c)("p",{className:"spotlight__stat-data"},t,n&&n.content?Object(r.c)("span",{className:"spotlight__stat-data__note",css:Object(r.b)(Dt||(Dt=Object(b.a)(["\n transform: none;\n position: relative;\n top: -10px;\n "])))},n.content," ",n.meta?Object(r.c)(Tt,{description:n.meta.description,source:n.meta.source}):null):null)};_t.propTypes={note:p.a.object,value:p.a.string};var Rt,zt=_t,qt=function(e){var t=e.children;return Object(r.c)("article",{className:"tabs__content",css:Object(r.b)(Rt||(Rt=Object(b.a)(["\n z-index: 200;\n "])))},t)};qt.propTypes={children:p.a.any};var Ut=qt,Vt=function(e){var t=e.id,n=e.active,a=e.label,r=e.children,o=e.onActivate;return d.a.createElement("section",{className:"tabs__container",id:t},d.a.createElement("input",{className:"tabs__input",type:"radio",name:"sections",id:t+"-option",defaultChecked:n}),d.a.createElement("label",{className:"tabs__label",htmlFor:t+"-option",onClick:o},a),u.Children.map(r,(function(e){return Object(u.isValidElement)(e)&&e.type===Ut?e:null})))};Vt.propTypes={id:p.a.string.isRequired,label:p.a.string.isRequired,active:p.a.bool,onActivate:p.a.func,children:p.a.any};var Mt=Vt,Bt=function(e){var t=e.children,n=e.onClick;return d.a.createElement("div",{className:"tabs__content__header",onClick:n},t)};Bt.propTypes={children:p.a.any,onClick:p.a.func};var Gt,Zt,Wt,Yt,Ht,Jt=Bt,Kt=function(e){var t=Object(u.useContext)(Te),n=t.data,a=t.location,o=t.options,i="education",c=V(o.tabs,i);if(void 0!==c.show&&!c.show)return null;var s=n&&n.education?n.education.find((function(e){return"Number of Schools"===e.caption})):null;return Object(r.c)(Mt,{id:i,label:c.label||"Education",active:!!e.active||c.active},Object(r.c)(Ut,null,Object(r.c)(Jt,null,s?Object(r.c)("div",{css:Object(r.b)(Gt||(Gt=Object(b.a)(["\n display: flex;\n "])))},Object(r.c)("div",{css:Object(r.b)(Zt||(Zt=Object(b.a)(["\n margin-right: 1rem;\n "])))},Object(r.c)("span",{css:Object(r.b)(Wt||(Wt=Object(b.a)(["\n font-size: 2.5rem;\n "])))},"Number of Schools in ",a.name," is"," "),Object(r.c)("b",{css:Object(r.b)(Yt||(Yt=Object(b.a)(["\n font-size: 3rem;\n "])))},I(s.value)),Object(r.c)(Tt,{description:"Last updated: "+s.lastUpdated})),c.dashboardURL?Object(r.c)("a",{href:c.dashboardURL,className:"button button--secondary--fill"},c.dashboardButtonCaption||"View Full Dashboard"):null):null),Object(r.c)("div",{className:"l-2up"},n&&n.education?n.education.filter((function(e){return"Number of Schools"!==e.caption})).map((function(e){return Object(r.c)("div",{className:"l-2up__col",key:e.caption},Object(r.c)(At,{heading:e.caption,meta:{description:Object(r.c)("span",{css:Object(r.b)(Ht||(Ht=Object(b.a)(["\n display: flex;\n justify-content: center;\n "])))},"Last updated: "+e.lastUpdated)}},Object(r.c)(zt,{value:e.value})))})):null)))};Kt.propTypes={active:p.a.bool};var Xt,$t,Qt,en,tn,nn=Kt,an=function(e){var t=Object(u.useContext)(Te),n=t.data,a=t.location,o=t.options,i="overview",c=V(o.tabs,i);return void 0===c.show||c.show?Object(r.c)(Mt,{id:i,label:c.label||"Overview",active:!!e.active||c.active},Object(r.c)(Ut,null,Object(r.c)(Jt,null,n&&n.population?Object(r.c)("div",{css:Object(r.b)(Xt||(Xt=Object(b.a)(["\n display: flex;\n "])))},Object(r.c)("div",{css:Object(r.b)($t||($t=Object(b.a)(["\n margin-right: 1rem;\n "])))},Object(r.c)("span",{css:Object(r.b)(Qt||(Qt=Object(b.a)(["\n font-size: 2.5rem;\n "])))},"Total Population in ",a.name," is"," "),Object(r.c)("b",{css:Object(r.b)(en||(en=Object(b.a)(["\n font-size: 3rem;\n "])))},I(n.population.value)),Object(r.c)(Tt,{description:"Last updated: "+n.population.lastUpdated})),c.dashboardURL?Object(r.c)("a",{href:c.dashboardURL,className:"button button--secondary--fill"},c.dashboardButtonCaption||"View Full Dashboard"):null):null),Object(r.c)("div",{className:"l-2up"},n&&n.administration?n.administration.map((function(e){return Object(r.c)("div",{className:"l-2up__col",key:e.caption},Object(r.c)(At,{heading:e.caption,meta:{description:Object(r.c)("span",{css:Object(r.b)(tn||(tn=Object(b.a)(["\n display: flex;\n justify-content: center;\n "])))},"Last updated: "+e.lastUpdated)}},Object(r.c)(zt,{value:e.value})))})):null))):null};an.propTypes={active:p.a.bool};var rn,on,cn,sn,ln,un,dn=an,fn=function(e){var t=Object(u.useContext)(Te),n=t.data,a=t.location,o=t.options,i="production",c=V(o.tabs,i);if(void 0!==c.show&&!c.show)return null;var s=n&&n.production?n.production.find((function(e){return""===e.caption})):null;return Object(r.c)(Mt,{id:i,label:c.label||"Production",active:!!e.active||c.active},Object(r.c)(Ut,null,Object(r.c)(Jt,null,Object(r.c)("div",{css:Object(r.b)(rn||(rn=Object(b.a)(["\n display: flex;\n "])))},s?Object(r.c)("div",{css:Object(r.b)(on||(on=Object(b.a)(["\n margin-right: 1rem;\n "])))},Object(r.c)("span",{css:Object(r.b)(cn||(cn=Object(b.a)(["\n font-size: 2.5rem;\n "])))},"Number of Schools in ",a.name," is"," "),Object(r.c)("b",{css:Object(r.b)(sn||(sn=Object(b.a)(["\n font-size: 3rem;\n "])))},I(s.value)),Object(r.c)(Tt,{description:"Last updated: "+s.lastUpdated})):null,c.dashboardURL?Object(r.c)("a",{href:c.dashboardURL,className:"button button--secondary--fill"},c.dashboardButtonCaption||"View Full Dashboard"):null)),n&&n.production&&n.production.length?Object(r.c)("div",{className:"l-2up"},n.production.filter((function(e){return""!==e.caption})).map((function(e){return Object(r.c)("div",{className:"l-2up__col",key:e.caption},Object(r.c)(At,{heading:e.caption,meta:{description:Object(r.c)("span",{css:Object(r.b)(ln||(ln=Object(b.a)(["\n display: flex;\n justify-content: center;\n "])))},"Last updated: "+e.lastUpdated)}},Object(r.c)(zt,{value:e.value})))}))):Object(r.c)("div",{css:Object(r.b)(un||(un=Object(b.a)(["\n font-size: 16px;\n display: flex;\n justify-content: center;\n width: 100%;\n "])))},"No Production Data")))};fn.propTypes={active:p.a.bool};var pn,bn=fn,mn=function(e){var t=e.children;return Object(r.c)("div",{className:"tabs",css:Object(r.b)(pn||(pn=Object(b.a)(["\n z-index: 0;\n "])))},t)};mn.propTypes={children:p.a.any};var gn=mn,hn=function(e){var t=Object(u.useState)({}),n=t[0],a=t[1];return Object(u.useEffect)((function(){e.data&&a(function(e){var t={},n=function(e){return{caption:e.Item,value:e.Value,lastUpdated:e["Last Updated"]}},a=e.find((function(e){return"Total Population"===e.Item}));return a&&(t.population=n(a)),t.administration=e.filter((function(e){return"Total Population"!==e.Item&&"Administration"===e.Department})).map(n),t.education=e.filter((function(e){return"Total Population"!==e.Item&&"Education"===e.Department})).map(n),t.production=e.filter((function(e){return"Total Population"!==e.Item&&"Production"===e.Department})).map(n),t}(e.data))}),[e.data]),Object(r.c)(Te.Provider,{value:Object.assign({},e,{data:n})},Object(r.c)(gn,null,Object(r.c)(dn,{active:!0}),Object(r.c)(nn,null),Object(r.c)(bn,null)))};hn.propTypes={data:p.a.array.isRequired,location:p.a.object.isRequired,options:p.a.object.isRequired};var vn=hn,yn=function(e){window.DICharts.handler.addChart({className:e,echarts:{onAdd:function(e){Array.prototype.forEach.call(e,(function(e){var t=new window.DICharts.Chart(e.parentElement);if(t.showLoading(),window.DIState){var n=Object(o.createRoot)(e);window.DIState.addListener((function(){t.showLoading();var e=window.DIState.getState,a=e.keyFacts,r=e.location;(null==a?void 0:a.url)||(null==a?void 0:a.dataID)?((null==a?void 0:a.url)?D:F)((null==a?void 0:a.url)||(null==a?void 0:a.dataID)).then((function(e){Array.isArray(e)?n.render(d.a.createElement(vn,{data:e,options:a,location:r})):e.results?n.render(d.a.createElement(vn,{data:e.results,options:a,location:r})):(window.console.error("Invalid data shape. Expected an array or an object with a results property.",e),n.render(d.a.createElement(Ct,null)))})).catch((function(e){window.console.log(e),n.render(d.a.createElement(Ct,null))})):a&&a.data?n.render(d.a.createElement(vn,{data:a.data,options:a,location:r})):n.render(d.a.createElement(Ct,null));t.hideLoading()}))}else window.console.log("State is not defined")}))}}})},On=function(){var e=Object(l.a)(s.a.mark((function e(t,n){var a,r,o,i,c,l;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.data,r=t.config,o=t.subCounty,i=t.tableRoot,c=r.selectors.map((function(e){return{property:e.dataProperty,value:"all"}})),l=function(e,t){var n=Array.isArray(t)?t[0].value:t.value;if(n){var s=c.find((function(t){return t.property===e.config.dataProperty}));if(s){s.value=n;var l=c.reduce((function(e,t){return"all"===t.value?e:M(e,t.property,t.value)}),a),u=Z(r,l,o);i.render(d.a.createElement(se,{rows:u}))}}},e.abrupt("return",R(r.selectorClassName,{selectors:r.selectors,onChange:l,makeSticky:!1,nodes:n}));case 4:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),jn=function(e){(function(e){return e.className?e.mapping?e.mapping.rows?e.mapping.year?e.mapping.value?e.mapping.subCounty?!!e.mapping.level||(window.console.error("Invalid table config: mapping[mapping.level] is required!"),!1):(window.console.error("Invalid table config: mapping.subCounty is required!"),!1):(window.console.error("Invalid table config: mapping.value is required!"),!1):(window.console.error("Invalid table config: mapping.year is required!"),!1):(window.console.error("Invalid table config: mapping.series is required!"),!1):(window.console.error("Invalid table config: mapping is required!"),!1):(window.console.error("Invalid table config: className is required!"),!1)})(e)&&window.DICharts.handler.addChart({className:e.className,d3:{onAdd:function(t){(e.url?D:F)(e.url||e.dataID).then((function(n){Array.prototype.forEach.call(t,(function(t){var a=new window.DICharts.Chart(t.parentElement);a.showLoading();var r=Object(o.createRoot)(t),i="all",c=[];window.DIState.addListener((function(){a.showLoading();var o=window.DIState.getState.subCounty;if(o!==i){i=o||"all";var s=e.filters&&e.filters.subCounties?function(e,t,n){return e.filter((function(e){return!t||"all"===t||e[n].toLowerCase()===t.toLowerCase()}))}(n,i,e.mapping.subCounty):n,l=Z(e,s,i);r.render(d.a.createElement(se,{rows:l})),e.selectors&&e.selectors.length&&On({data:s,subCounty:i,config:e,tableRoot:r},c).then((function(e){c=e})),a.hideLoading(),t.parentElement.classList.add("auto-height")}}))}))}))}}})},wn=function(){if(window.DIState){var e=[];window.DIState.addListener((function(){var t=window.DIState.getState.tables;t&&e.length!==t.length&&(e=t).forEach((function(e){jn(e)}))}))}else window.console.log("State is not defined")};n(103);window.addEventListener("load",(function(){R("district-selectors",{makeSticky:!0}),St("dicharts--district-map"),wn(),yn("dicharts--keyfacts"),ve()}))},50:function(e,t,n){e.exports=n(104)}},[[50,1,2]]]); \ No newline at end of file diff --git a/src/components/BaseMap/BaseMap.js b/src/components/BaseMap/BaseMap.js index 7082c2da..c8009155 100644 --- a/src/components/BaseMap/BaseMap.js +++ b/src/components/BaseMap/BaseMap.js @@ -40,7 +40,7 @@ const BaseMap = (props) => { const renderLayers = () => Children.map(props.children, (child) => - isValidElement(child) && child.type === BaseMapLayer ? cloneElement(child, { map: baseMap }) : null + isValidElement(child) && child.type === BaseMapLayer ? cloneElement(child, { map: baseMap }) : null, ); return ( @@ -111,7 +111,6 @@ BaseMap.propTypes = { onLoad: PropTypes.func, options: PropTypes.object, children: PropTypes.node, - locationData: PropTypes.object, }; // eslint-disable-next-line import/prefer-default-export diff --git a/src/core/KeyFacts.js b/src/core/KeyFacts.js index 79980e23..1be61c46 100644 --- a/src/core/KeyFacts.js +++ b/src/core/KeyFacts.js @@ -1,6 +1,6 @@ import React from 'react'; import { createRoot } from 'react-dom/client'; -import fetchData from '../utils/data'; +import fetchData, { fetchDataFromAPI } from '../utils/data'; import KeyFacts from './components/KeyFacts'; import NoDataCentered from './components/NoDataCentered'; @@ -22,8 +22,9 @@ const renderViz = (className) => { dichart.showLoading(); const { keyFacts, location } = window.DIState.getState; - if (keyFacts && keyFacts.url) { - fetchData(keyFacts.url) + if (keyFacts?.url || keyFacts?.dataID) { + const dataFetchFunction = keyFacts?.url ? fetchData : fetchDataFromAPI; + dataFetchFunction(keyFacts?.url || keyFacts?.dataID) .then((data) => { if (Array.isArray(data)) { root.render(); @@ -32,7 +33,7 @@ const renderViz = (className) => { } else { window.console.error( 'Invalid data shape. Expected an array or an object with a results property.', - data + data, ); root.render(); } diff --git a/src/core/components/DistrictMap/DistrictMap.js b/src/core/components/DistrictMap/DistrictMap.js index c9ed8ecc..f87380ae 100644 --- a/src/core/components/DistrictMap/DistrictMap.js +++ b/src/core/components/DistrictMap/DistrictMap.js @@ -8,14 +8,7 @@ import { getLocationStyles } from '../../../components/BaseMap/utils'; import { DistrictMapContext } from '../../context'; import DistrictMapSidebar from '../DistrictMapSidebar'; import useMap from '../hooks/DistrictMap'; -import { - COLOURED_LAYER, - coreLayer, - getRawFilterOptions, - getTopicById, - onAddLayer, - getSchoolMarkers, -} from './utils/index'; +import { COLOURED_LAYER, coreLayer, getRawFilterOptions, getTopicById, onAddLayer } from './utils/index'; const renderLayers = (loading, data, location, layerConfig, mapConfig) => { const hiddenLayers = [layerConfig].map((layer) => ( @@ -57,7 +50,7 @@ const renderLayers = (loading, data, location, layerConfig, mapConfig) => { 'fill-outline-color': '#ffffff', }} onAdd={onAddHighlightLayer} - /> + />, ); } @@ -75,7 +68,7 @@ const renderLayers = (loading, data, location, layerConfig, mapConfig) => { 'fill-outline-color': '#ffffff', }} onAdd={onAddHighlightLayer} - /> + />, ); }; @@ -120,7 +113,7 @@ const DistrictMap = (props) => { setOptions, } = useMap( props.location, - props.configs.formatter ? { ...coreLayer, formatter: props.configs.formatter } : coreLayer + props.configs.formatter ? { ...coreLayer, formatter: props.configs.formatter } : coreLayer, ); useEffect(() => { // set map options using their caption values @@ -182,7 +175,6 @@ const DistrictMap = (props) => { {renderDashboardButton()} { data, props.location, props.configs.formatter ? { ...coreLayer, formatter: props.configs.formatter } : coreLayer, - activeIndicator ? { range: activeIndicator.range, colours: activeIndicator.colours } : {} + activeIndicator ? { range: activeIndicator.range, colours: activeIndicator.colours } : {}, )} diff --git a/src/core/components/DistrictMap/utils/index.js b/src/core/components/DistrictMap/utils/index.js index bb2863a0..2196d934 100644 --- a/src/core/components/DistrictMap/utils/index.js +++ b/src/core/components/DistrictMap/utils/index.js @@ -1,9 +1,8 @@ import { groupBy } from 'lodash'; import { flyToLocation, getProperLocationName } from '../../../../components/BaseMap/utils'; import { filterData } from '../../../utils'; -import fetchData from '../../../../utils/data'; +import fetchData, { fetchDataFromAPI } from '../../../../utils/data'; -const activeBranch = 'dev' export const COLOURED_LAYER = 'highlight'; export const coreLayer = { type: 'shapefile', @@ -93,97 +92,116 @@ export const processData = (data, indicator, year) => { }; const processCoordinates = (data) => { - const coordinates = data.split(',') + const coordinates = data.split(','); -return coordinates.map((item) => parseFloat(item)) -} - -const MASINDI_EXCLUDE_LIST = ['Waiga Primary School','Gods Mercy Primary School', 'Bukeeka COU Primary School',] -const KAYUNGA_EXCLUDE_LIST = ['Bukeeka COU Primary School', 'Kungu CU Primary School', 'King Jesus Nursery And Primary School', 'Nile View Primary School', -'Imam Hassan Primary School Maligita', 'Bright Future Nursery And Primary School Kangulumira' -] + return coordinates.map((item) => parseFloat(item)); +}; -export const getSchoolMarkers = (district, schoolSpecs) => { - const dataUrl = `https://raw.githubusercontent.com/devinit/ug-district-dashboard-viz/${activeBranch}/public/assets/data/${district.toLowerCase()}/schools-locations.csv` +const MASINDI_EXCLUDE_LIST = ['Waiga Primary School', 'Gods Mercy Primary School', 'Bukeeka COU Primary School']; +const KAYUNGA_EXCLUDE_LIST = [ + 'Bukeeka COU Primary School', + 'Kungu CU Primary School', + 'King Jesus Nursery And Primary School', + 'Nile View Primary School', + 'Imam Hassan Primary School Maligita', + 'Bright Future Nursery And Primary School Kangulumira', +]; + +export const getSchoolMarkers = (district, schoolSpecs, dataUrl, dataID) => { const finalGeoJSON = { type: 'FeatureCollection', - features: [] - } - if (!schoolSpecs || !dataUrl) return finalGeoJSON - if (dataUrl) { - fetchData(dataUrl).then((data) => { - const filteredData = data.filter((row) => district === 'Masindi'? !MASINDI_EXCLUDE_LIST.includes(row.school_name) : !KAYUNGA_EXCLUDE_LIST.includes(row.school_name) ) - if (schoolSpecs.ownership === 'all') - { - filteredData.filter((d)=> d.level === schoolSpecs.level ).forEach((item) => { - if (item.gps_coordinates) { - const itemCoordinates = processCoordinates(item.gps_coordinates) - - if (itemCoordinates) { - finalGeoJSON.features.push({ - type: 'Feature', - geometry: { - type: 'Point', - coordinates: [itemCoordinates[1], itemCoordinates[0]] - }, - properties: { - level: item.level, - ownership: item.ownership, - name: item.school_name, - parish: item.parish, + features: [], + }; + const dataVariable = dataUrl || dataID; + const dataFetchFunction = dataUrl ? fetchData : fetchDataFromAPI; + if (!schoolSpecs || !dataVariable) return finalGeoJSON; + if (dataVariable) { + dataFetchFunction(dataVariable) + .then((data) => { + const filteredData = data.filter((row) => + district === 'Masindi' + ? !MASINDI_EXCLUDE_LIST.includes(row.school_name) + : !KAYUNGA_EXCLUDE_LIST.includes(row.school_name), + ); + if (schoolSpecs.ownership === 'all') { + filteredData + .filter((d) => d.level === schoolSpecs.level) + .forEach((item) => { + if (item.gps_coordinates) { + const itemCoordinates = processCoordinates(item.gps_coordinates); + + if (itemCoordinates) { + finalGeoJSON.features.push({ + type: 'Feature', + geometry: { + type: 'Point', + coordinates: [itemCoordinates[1], itemCoordinates[0]], + }, + properties: { + level: item.level, + ownership: item.ownership, + name: item.school_name, + parish: item.parish, + }, + }); } - }) - } - } - }) - } else { - filteredData.filter((d)=> d.level === schoolSpecs.level && d.ownership === schoolSpecs.ownership ).forEach((item) => { - if (item.gps_coordinates) { - const itemCoordinates = processCoordinates(item.gps_coordinates) - - if (itemCoordinates) { - finalGeoJSON.features.push({ - type: 'Feature', - geometry: { - type: 'Point', - coordinates: [itemCoordinates[1], itemCoordinates[0]] - }, - properties: { - level: item.level, - ownership: item.ownership, - name: item.school_name, - parish: item.parish, + } + }); + } else { + filteredData + .filter((d) => d.level === schoolSpecs.level && d.ownership === schoolSpecs.ownership) + .forEach((item) => { + if (item.gps_coordinates) { + const itemCoordinates = processCoordinates(item.gps_coordinates); + + if (itemCoordinates) { + finalGeoJSON.features.push({ + type: 'Feature', + geometry: { + type: 'Point', + coordinates: [itemCoordinates[1], itemCoordinates[0]], + }, + properties: { + level: item.level, + ownership: item.ownership, + name: item.school_name, + parish: item.parish, + }, + }); } - }) - } - } - }) - } - - }).catch((error) => { - console.log(error) - }) - - return finalGeoJSON + } + }); + } + }) + .catch((error) => { + console.log(error); + }); + + return finalGeoJSON; } -return finalGeoJSON -} + return finalGeoJSON; +}; export function schoolLevel(indicator) { - if (indicator === 'numberOfPrimarySchools') - {return {level:'Primary', ownership: 'all'}} - if(indicator === 'numberOfSecondarySchools') - {return {level:'Secondary', ownership: 'all'}} - if(indicator === 'numberOfGovernmentPrimarySchools') - {return {level:'Primary', ownership: 'Government'}} - if(indicator === 'numberOfPrivatePrimarySchools') - {return {level:'Primary', ownership: 'Private'}} - if(indicator === 'numberOfGovernmentSecondarySchools') - {return {level:'Secondary', ownership: 'Government'}} - if(indicator === 'numberOfPrivateSecondarySchools') - {return {level:'Secondary', ownership: 'Private'}} - -return '' + if (indicator === 'numberOfPrimarySchools') { + return { level: 'Primary', ownership: 'all' }; + } + if (indicator === 'numberOfSecondarySchools') { + return { level: 'Secondary', ownership: 'all' }; + } + if (indicator === 'numberOfGovernmentPrimarySchools') { + return { level: 'Primary', ownership: 'Government' }; + } + if (indicator === 'numberOfPrivatePrimarySchools') { + return { level: 'Primary', ownership: 'Private' }; + } + if (indicator === 'numberOfGovernmentSecondarySchools') { + return { level: 'Secondary', ownership: 'Government' }; + } + if (indicator === 'numberOfPrivateSecondarySchools') { + return { level: 'Secondary', ownership: 'Private' }; + } + return ''; } diff --git a/src/core/components/Selectors.js b/src/core/components/Selectors.js index f78075e7..6a57ee08 100644 --- a/src/core/components/Selectors.js +++ b/src/core/components/Selectors.js @@ -4,7 +4,7 @@ import { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import ChartFilters from '../../components/ChartFilters'; import Select from '../../components/Select'; -import fetchData from '../../utils/data'; +import fetchData, { fetchDataFromAPI } from '../../utils/data'; const Selectors = (props) => { const [selectors, setSelectors] = useState([]); @@ -21,8 +21,9 @@ const Selectors = (props) => { }; item.options = selector.defaultValue ? [selector.defaultValue] : []; let data = selector.data || []; - if (selector.url) { - data = await fetchData(selector.url); + if (selector.url || selector.dataID) { + const dataFetchFunction = selector.url ? fetchData : fetchDataFromAPI; + data = await dataFetchFunction(selector.url || selector.dataID); } item.options = item.options.concat( data.reduce((options, curr) => { @@ -34,11 +35,11 @@ const Selectors = (props) => { } return options; - }, []) + }, []), ); return item; - }) + }), ) .then(setSelectors) .catch((error) => window.console.log(error)); @@ -77,7 +78,7 @@ Selectors.propTypes = { defaultValue: PropTypes.shape({ value: PropTypes.string, label: PropTypes.string }), labelProperty: PropTypes.string.isRequired, valueProperty: PropTypes.string.isRequired, - }) + }), ), onChange: PropTypes.func, className: PropTypes.string, diff --git a/src/core/components/hooks/DistrictMap.js b/src/core/components/hooks/DistrictMap.js index 7c107c7c..b474a90a 100644 --- a/src/core/components/hooks/DistrictMap.js +++ b/src/core/components/hooks/DistrictMap.js @@ -1,7 +1,7 @@ import { Popup } from 'mapbox-gl'; import { useEffect, useState, useCallback } from 'react'; import { COLOURED_LAYER, renderTooltipFromEvent, setZoomByContainerWidth } from '../../../components/BaseMap/utils'; -import fetchData from '../../../utils/data'; +import fetchData, { fetchDataFromAPI } from '../../../utils/data'; import { processData, getSchoolMarkers, schoolLevel } from '../DistrictMap/utils'; const showPopup = (popup, map, event, options) => { @@ -148,14 +148,22 @@ const useMap = (location, layer, defaultOptions = {}) => { }, [map, location, options, data]); useEffect(() => { - const fetchIndicatorData = async (url) => { - const indicatorData = await fetchData(url); + const fetchIndicatorData = async (url, dataID) => { + const dataFetchFunction = url ? fetchData : fetchDataFromAPI; + const indicatorData = await dataFetchFunction(url || dataID); setData(processData(indicatorData, options.indicator, options.year)); }; if (options.indicator && options.year) { setLevel(schoolLevel(options.indicator.id)); - setLocationData(getSchoolMarkers(location.name, schoolLevel(options.indicator.id))); - fetchIndicatorData(options.indicator.url); + setLocationData( + getSchoolMarkers( + location.name, + schoolLevel(options.indicator.id), + options.indicator.schoolLocationUrl, + options.indicator.schoolLocationdataID, + ), + ); + fetchIndicatorData(options.indicator.url, options.indicator.dataID); } }, [options.indicator, options.year]); diff --git a/src/core/tables/Tables.js b/src/core/tables/Tables.js index e12cba7f..58f29d09 100644 --- a/src/core/tables/Tables.js +++ b/src/core/tables/Tables.js @@ -1,6 +1,6 @@ import React from 'react'; import { createRoot } from 'react-dom/client'; -import fetchData from '../../utils/data'; +import fetchData, { fetchDataFromAPI } from '../../utils/data'; import DistrictTable from '../components/DistrictTable'; import renderSelectors from '../SelectorDropdowns'; import { defaultSelectValue, filterDataByProperty, filterDataBySubCounty } from '../utils'; @@ -50,7 +50,8 @@ const renderTable = (config) => { className: config.className, d3: { onAdd: (tableNodes) => { - fetchData(config.url).then((data) => { + const dataFetchFunction = config.url ? fetchData : fetchDataFromAPI; + dataFetchFunction(config.url || config.dataID).then((data) => { Array.prototype.forEach.call(tableNodes, (tableNode) => { const dichart = new window.DICharts.Chart(tableNode.parentElement); dichart.showLoading();