{"version":3,"sources":["components/pictureText.js","components/landing.js","components/d3/sankey.js","components/sankey.js","components/d3/donut.js","components/d3/matrix.js","components/donut.js","components/matrix.js","components/d3/bar_cell.js","components/bar_cell.js","components/footer.js","App.js","serviceWorker.js","index.js","components/css-modules/landing.module.css","components/css-modules/footer.module.css","components/css-modules/picture_text.module.css","components/css-modules/sankey.module.css","resources/landing/landing-stdf_logo.png","resources/landing/UNIDO.png","resources/STDF_IICA_UNIDO_vTPA_Survey_Report.pdf","components/css-modules/bar_cell.module.css","resources/landing/25784838327_99de70db0f_o.jpg","resources/landing/39911644745_362f691b33_o.jpg","components/d3/summQ23.csv","components/css-modules/donut.module.css","components/css-modules/matrix.module.css","components/d3/CouccMatrix.csv","resources/STDF.png","resources/29299341147_8ac8b1845a_o.jpg","resources/49356724873_1170629dca_o.jpg","resources/38880256960_6a3d723db9_o.jpg","logo.svg"],"names":["Picture_Text","image","document","getElementById","this","props","image_id","orientation","simpleParallax","scale","className","styles","container","id","src","parallax_img","gradient_overlay","text_container","bottom","distance","duration","text","absolute_border","Component","gsap","registerPlugin","CSSPlugin","Landing","tl","TimelineMax","repeat","repeatDelay","fromTo","opacity","y","ease","Power3","easeInOut","kill","left_image_container","Image1","left_image","right_image_container","right_image_skewCancel","Image2","right_image","title_container","title_colored","icon_container","style","cursor","STDF_logo","onClick","window","open","stdf_logo","UNIDO_logo","unido_logo","colored_title_container","title","description","bottom_button","button_text","scroll_down_icon","scroll_down_icon_arrow","download_report_button","pdf","download_report_text","d3","Object","assign","d3Base","d3Multi","d3Sankey","a","csv","data","q2Heads","unique","map","d","q2","q3Heads","q3","nodesAll","nodes","name","links","source","indexOf","target","names","value","n","graph","sankey","nodeSort","linkSort","nodeWidth","nodePadding","extent","width","height","svg","select","append","attr","sankyGraph","colScale","scaleOrdinal","domain","range","selectAll","join","i","offset","color","rgb","darker","sankeyLinkHorizontal","y1","y0","nodeG","x0","x1","removeQNo","switchStateSankey","nodeTrans","nodeGSelect","ribbonSelect","sankyGraphData","datum","mouseOv","filtLinks","filter","nodeNames","rectSel","includes","rectUnsel","ribbonSel","ribbonUnsel","transition","ribbonTrans","numLabelSelect","labelSel","opacSankey","optionText","replace","state","nodeDatum","on","arr","Sankey","sankeyState","sankeyStateButton1","sankeyStateButton2","readAndDraw","buttonType","stateIndex","setState","text_svg_wrapper","mobile_question_text_cont","mobile_question_text","svg_questions_wrapper","question_text","svg_container","when","absolute_text_info","info","svgWrapper","viewBox","preserveAspectRatio","second_question","buttons_container","subscription_button","in","handleSankeyChange","button_text_wrapper","subscription_button_text","size","subscription_button_icon","margined_sub_button","drawDonut","svgG","arc","percLabelFontSize","innerRadius","outerRadius","padAngle","pie","sort","enter","head","delay","attrTween","clone","endAngle","startAngle","createDatum","t","endAngleInterp","interpolate","labels","idx","cents","centroid","offSet","number","dec","perc","Math","round","remove","xBands","yBands","columnNames","matrixData","donut_drawn","parent","addEventListener","e","isInViewport","elem","getBoundingClientRect","top","scaleCol","scaleLinear","columns","shift","margin","left","right","scaleBand","gridData","contrastCol","contrastCol1","bandwidth","QuestText","QuestText1","dat","index","rows","Option","cellG","entry","val","activateMO","transGrid","selection","rowIdx","colIdx","xBW","yBW","fontW","opac","transDur","circle","multiplier","qIdx1","optionToQIdx","qIdx2","selRowLab","unSelRowLab","selColLab","unSelColLab","selText1","unselText1","selText2","unselText2","xBWScaled","yBWScaled","q1Option","q2Option","svg_offsetLeft","getElementsByClassName","leftLabel_width","svg_offsetTop","topLabel_height","tooltip","classed","scrollY","optionIdxToQIdx","Matrix","drawMatrix","draw","type","sortedData","b","cellWidth","Array","from","keys","length","categGroup","vals","html","textTween","int","totalLen","parentIdx","colState","count","Bar_Cell","adv_in","disadv_in","advantage_container","disadvantage_container","Footer","flexed_text_container","report_container","report_image","Report","report_image_src","absolute_colored_border","absolute_border_yellow","absolute_border_red","white_background","white_flexed_cont","logo_container","copyright_text","App","Tooltip","placement","Image","Boolean","location","hostname","match","ReactDOM","render","StrictMode","navigator","serviceWorker","ready","then","registration","unregister","catch","error","console","message","module","exports"],"mappings":"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","file":"static/js/main.5875c627.chunk.js","sourcesContent":["import React, { Component } from 'react';\nimport styles from './css-modules/picture_text.module.css';\nimport simpleParallax from 'simple-parallax-js';\nimport Fade from 'react-reveal/Fade';\n\n\nclass Picture_Text extends Component {\n\n componentDidMount() {\n var image = document.getElementById(this.props.image_id);\n if (this.props.orientation === 'right') {\n new simpleParallax(image, {\n orientation: 'right',\n scale: '1.1'\n });\n }\n else if (this.props.orientation === 'left') {\n new simpleParallax(image, {\n orientation: 'left',\n scale: '1.1'\n });\n }\n else {\n new simpleParallax(image, {\n scale: '1.145'\n });\n }\n }\n\n render () {\n return (\n
\n \n
\n
\n \n

{this.props.text}

\n
\n
\n
\n
\n )\n }\n}\n\nexport default Picture_Text;\n","import React, { Component } from 'react';\nimport styles from './css-modules/landing.module.css';\nimport Image1 from '../resources/landing/25784838327_99de70db0f_o.jpg';\nimport Image2 from '../resources/landing/39911644745_362f691b33_o.jpg';\nimport STDF_logo from '../resources/landing/landing-stdf_logo.png';\nimport UNIDO_logo from '../resources/landing/UNIDO.png';\nimport { IoMdArrowRoundDown, IoIosDocument } from \"react-icons/io\";\nimport gsap, {TimelineMax, Power3, TweenMax, Sine, CSSPlugin} from 'gsap';\nimport pdf from '../resources/STDF_IICA_UNIDO_vTPA_Survey_Report.pdf'\ngsap.registerPlugin(CSSPlugin);\n\nclass Landing extends Component {\n componentDidMount () {\n this.tl = new TimelineMax({ repeat: -1, repeatDelay: 1 });\n this.tl.fromTo(document.getElementById(\"md_arrow\"), 0.75, {\n opacity : '1',\n y: 0,\n }, {\n opacity : 0,\n y: 10,\n ease: Power3.easeInOut,\n }, 0)\n .fromTo(document.getElementById(\"md_arrow\"), 0.75, {\n opacity : '0',\n y: '-15'\n }, {\n opacity : '1',\n y: '0',\n ease: Power3.easeInOut,\n }, 0.75);\n\n new TimelineMax()\n .fromTo(document.getElementById('container_landing'), 1.05, {\n opacity : '0'\n }, {\n opacity : '1',\n ease: Power3.easeInOut,\n }, 0.075)\n .fromTo(document.getElementById('left_image_landing'), 2, {\n scale : '1'\n }, {\n scale : '1.1',\n ease: Power3.easeInOut,\n }, 0.3)\n .fromTo(document.getElementById('right_image_landing'), 2, {\n scale : '1'\n }, {\n scale : '1.045',\n ease: Power3.easeInOut,\n }, 0.315);\n }\n\n componentWillUnmount() {\n this.tl.kill();\n }\n\n render () {\n return (\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n window.open('https://www.standardsfacility.org/')} className={styles.stdf_logo}>\n window.open('https://www.unido.org/')} className={styles.unido_logo}>\n
\n
\n

{this.props.title}

\n

{this.props.description}

\n
\n
\n

SCROLL DOWN

\n
\n \n
\n
\n
\n
window.open(pdf)}>\n

Download Report

\n \n
\n
\n
\n )\n }\n}\n\nexport default Landing;\n","import * as d3Base from \"d3\";\nimport * as d3Multi from \"d3-selection-multi\";\nimport * as d3Sankey from \"d3-sankey\";\nimport csv from './summQ23.csv';\n\nconst d3 = Object.assign(d3Base, d3Multi, d3Sankey);\n\nasync function readAndDraw(){\n const data = await d3.csv(csv);\n\n const width = 500;\n const height = 600;\n\n // getting all nodes - appending q2 and q3 to the labels to make the nodes unique\n const q2Heads = unique(data.map(d => `Q2-${d.q2}`));\n const q3Heads = unique(data.map(d => `Q3-${d.q3}`));\n const nodesAll = [...q2Heads, ...q3Heads];\n\n // node objects from an array\n const nodes = nodesAll.map(d => {\n return {\n name: d\n }\n });\n\n // getting links\n const links= data.map(d => {\n return {\n source: nodesAll.indexOf(`Q2-${d.q2}`),\n target: nodesAll.indexOf(`Q3-${d.q3}`),\n names: [d.q2, d.q3],\n value: d.n\n }\n })\n\n const graph = {\n nodes,\n links\n }\n\n // visual padding\n const leftRightPad = 10;\n const topBottomPad = 5;\n\n // define the sankey function\n var sankey = d3.sankey()\n .nodeSort(null)\n .linkSort(null)\n .nodeWidth(10)\n .nodePadding(4)\n .extent([[leftRightPad, topBottomPad], [width - leftRightPad, height - topBottomPad]]);\n\n\n const svg = d3.select(\"svg.sankySVG\")\n //.attr(\"viewBox\", `0 0 ${width} ${height}`)\n .append('g')\n .attr('class', 'sankyG');\n\n\n let sankyGraph = sankey(graph);\n\n const colScale = d3.scaleOrdinal().domain([\n \"Q2-Don't Know\",\n \"Q2-No\",\n \"Q2-Yes\",\n \"Q3-Don't Know\",\n \"Q3-No, and not actively considering this for the future\",\n \"Q3-No, but actively considering this for the future\",\n \"Q3-Yes\"\n ])\n .range([\n \"#990066\",\n \"#FF6666\",\n \"#009999\",\n \"#990066\",\n \"#FF6666\",\n \"#CC9966\",\n \"#009999\"\n ]);\n\n const linearGrads = svg.append('defs')\n .selectAll('linearGradient')\n .data(links)\n .join('linearGradient')\n .attr('id', (d, i) => `id-${i}`)\n .attr('x1', '0%')\n .attr('y1', '0%')\n .attr('x2', '100%')\n .attr('y2', '0%');\n\n linearGrads.selectAll('stop')\n .data(d => [\n {offset: '0%', color: d3.rgb(colScale(d.source.name)).darker(-0.4)},\n {offset: '100%', color: d3.rgb(colScale(d.target.name)).darker(-0.4)}\n ])\n .join(\"stop\")\n .attr('offset', d => d.offset)\n .attr('stop-color', d => d.color);\n\n const ribbons = svg.append(\"g\")\n .attr(\"fill\", \"none\")\n .selectAll(\"path.ribbon\")\n .data(links)\n .join(\"path\")\n .attr('class', 'ribbon')\n .attr(\"d\", d3.sankeyLinkHorizontal())\n .attr(\"stroke\", (d, i) => i == 0 ? d3.rgb('#FF6666').darker(-.4) : `url(#id-${i})`)\n //.attr(\"stroke\", (d, i) => `url(#id-${i})`)\n .attr(\"stroke-width\", d => d.width)\n .style('stroke-opacity', 0.8)\n .style(\"mix-blend-mode\", \"multiply\");\n\n const numLabels = svg.append(\"g\")\n .attr('class', 'numLabG')\n .selectAll('text.numLabel')\n .data(links)\n .join(\"text\")\n .attr('class', 'numLabel')\n .text(d => d.value)\n .attr('x', width/2)\n .attr('y', d => (d.y1 + d.y0)/2 + 6)\n .style('text-anchor', 'middle')\n .style('font-family', \"'Barlow Condensed', sans-serif\")\n .style('font-size', '16px')\n .style('font-weight', '500')\n .style('fill', 'white')\n .style('fill-opacity', 0)\n //.style('stroke-opacity', 0);\n\n const nodeG = svg.append(\"g\")\n .attr('class', 'sankyG')\n .selectAll(\"g.nodeG\")\n .data(sankyGraph.nodes)\n .join(\"g\")\n .attr('class', 'nodeG');\n\n nodeG\n .append(\"rect\")\n .attr(\"x\", d => d.x0)\n .attr(\"y\", d => d.y0)\n .attr(\"height\", d => d.y1 - d.y0)\n .attr(\"width\", d => d.x1 - d.x0)\n .style(\"fill\", d => d3.rgb(colScale(d.name)).darker(0.0))\n // .append(\"title\")\n // .text(d => `${d.name}\\n${d.value.toLocaleString()}`);\n\n nodeG.append(\"g\")\n .style(\"font\", \"14px sans-serif\")\n .style(\"font-family\", \"'Barlow Condensed', sans-serif\")\n .style(\"font-weight\", 300)\n .append(\"text\")\n .attr(\"x\", d => d.x0 < width / 2 ? d.x1 + 6 : d.x0 - 6)\n .attr(\"y\", d => (d.y1 + d.y0) / 2)\n .attr(\"dy\", \"0.35em\")\n .attr(\"text-anchor\", d => d.x0 < width / 2 ? \"start\" : \"end\")\n .text(d => removeQNo(d.name));\n\n // nodeG.on('mouseover', function(d, i){\n // const datum = d3.select(this).datum();\n //\n // nodeTrans(\n // nodeG,\n // ribbons,\n // sankyGraph,\n // datum,\n // true\n // );\n // });\n\n // ribbons.on('mouseover', function(d, i){\n // const datum = d3.select(this).datum();\n // const nodeNames = [datum.source.name, datum.target.name];\n //\n // ribbonTrans(\n // ribbons,\n // numLabels,\n // nodeG,\n // datum,\n // nodeNames,\n // true\n // );\n //\n // })\n //\n // nodeG.on('mouseout', function(d, i){\n // const datum = d3.select(this).datum();\n //\n // nodeTrans(\n // nodeG,\n // ribbons,\n // sankyGraph,\n // datum,\n // false\n // );\n // });\n //\n // ribbons.on('mouseout', function(d, i){\n // const datum = d3.select(this).datum();\n // const nodeNames = [datum.source.name, datum.target.name];\n //\n // ribbonTrans(\n // ribbons,\n // numLabels,\n // nodeG,\n // datum,\n // nodeNames,\n // false\n // );\n // });\n\n switchStateSankey(2);\n\n}\n\nfunction nodeTrans(nodeGSelect, ribbonSelect, sankyGraphData, datum, mouseOv){\n const filtLinks = sankyGraphData.links.filter(d => d.source.name == datum.name | d.target.name == datum.name);\n const nodeNames = unique([\n ...filtLinks.map(d => d.source.name),\n ...filtLinks.map(d => d.target.name)]\n );\n\n const rectSel = nodeGSelect.filter(d => nodeNames.includes(d.name));\n const rectUnsel = nodeGSelect.filter(d => !nodeNames.includes(d.name));\n\n const ribbonSel = ribbonSelect.filter(d => d.source.name == datum.name | d.target.name == datum.name);\n const ribbonUnsel = ribbonSelect.filter(d => d.source.name != datum.name & d.target.name != datum.name);\n\n rectUnsel.transition('rectTrans')\n .style('fill-opacity', d => mouseOv ? 0.3 : 1)\n\n\n ribbonUnsel.transition()\n .style('stroke-opacity', d => mouseOv ? 0.3 : 1);\n\n ribbonSel.transition()\n .style('stroke-opacity', d => mouseOv ? 1 : 1);\n\n rectSel.select('text')\n .transition('textTrans')\n .style('font-size', d => mouseOv ? '16px' : '14px')\n .style('font-weight', d => mouseOv ? '500' : '300')\n .style('fill-opacity', 1);\n}\n\nfunction ribbonTrans(ribbonSelect, numLabelSelect, nodeGSelect, datum, nodeNames, mouseOv){\n\n const ribbonSel = ribbonSelect.filter(d => d.source.name == datum.source.name & d.target.name == datum.target.name);\n const ribbonUnsel = ribbonSelect.filter(d => d.source.name != datum.source.name | d.target.name != datum.target.name);\n\n const labelSel = numLabelSelect.filter(d => d.source.name == datum.source.name & d.target.name == datum.target.name);\n const labelUnsel = numLabelSelect.filter(d => d.source.name != datum.source.name | d.target.name != datum.target.name);\n\n const rectSel = nodeGSelect.filter(d => nodeNames.includes(d.name));\n const rectUnsel = nodeGSelect.filter(d => !nodeNames.includes(d.name));\n\n ribbonUnsel.transition()\n .style('stroke-opacity', d => mouseOv ? 0.3 : 1);\n\n ribbonSel.transition()\n .style('stroke-opacity', d => mouseOv ? 1 : 1);\n\n labelSel.transition()\n .style('fill-opacity', d => mouseOv ? 1 : 0)\n .style('stroke-opacity', d => mouseOv ? 1 : 0);\n\n rectSel//.selectAll('rect')\n .transition('rectTrans')\n .style('fill-opacity', 1);\n\n rectSel.select('text')\n .transition('textTrans')\n .style('font-size', '14px')\n .style('font-weight', d => mouseOv ? '500' : '300')\n .style('fill-opacity', 1);\n\n rectUnsel.select('text')\n .transition('textTrans')\n .style('font-size', '14px')\n .style('font-weight', '300')\n .style('fill-opacity', d => mouseOv ? 0.5 : 1);\n}\n\nfunction opacSankey(ribbonSelect, nodeGSelect, numLabelSelect){\n\n ribbonSelect.style('fill-opacity', 1)\n nodeGSelect.style('fill-opacity', 1);\n nodeGSelect.selectAll('text').style('font-weight', 300);\n numLabelSelect.style('fill-opacity', 0);\n}\n\nfunction removeQNo(optionText){\n return optionText.replace(/Q[2-3]-/i, \"\");\n}\n\nfunction switchStateSankey(state){\n // get all selections\n const svg = d3.select('svg.sankySVG');\n\n const ribbonSelect = svg.selectAll('path.ribbon');\n const numLabelSelect = svg.selectAll('text.numLabel');\n const nodeGSelect = svg.selectAll('g.nodeG');\n\n //console.log(\"ribbonSelect\", ribbonSelect, ribbonSelect.data());\n\n const datum = ribbonSelect.filter(d => d.source.name == \"Q2-Yes\" & d.target.name == \"Q3-Yes\").datum();\n const nodeNames = [\"Q2-Yes\", \"Q3-Yes\"];\n const nodeDatum = nodeGSelect.data()[4];\n\n if (state == 0){\n opacSankey(ribbonSelect, nodeGSelect, numLabelSelect);\n\n ribbonTrans(ribbonSelect, numLabelSelect, nodeGSelect, datum, nodeNames, true);\n\n nodeGSelect.on('mouseover', null);\n ribbonSelect.on('mouseover', null);\n nodeGSelect.on('mouseout', null);\n ribbonSelect.on('mouseout', null);\n }\n\n else if (state == 1){\n opacSankey(ribbonSelect, nodeGSelect, numLabelSelect)\n\n nodeTrans(\n nodeGSelect,\n ribbonSelect,\n {\n nodes: nodeGSelect.data(),\n links: ribbonSelect.data()\n },\n nodeDatum,\n true\n )\n\n nodeGSelect.on('mouseover', null);\n ribbonSelect.on('mouseover', null);\n nodeGSelect.on('mouseout', null);\n ribbonSelect.on('mouseout', null);\n }\n else {\n opacSankey(ribbonSelect, nodeGSelect, numLabelSelect)\n\n ribbonTrans(ribbonSelect, numLabelSelect, nodeGSelect, datum, nodeNames, false);\n\n nodeGSelect.on('mouseover', function(d, i){\n const datum = d3.select(this).datum();\n\n nodeTrans(\n nodeGSelect,\n ribbonSelect,\n {\n nodes: nodeGSelect.data(),\n links: ribbonSelect.data()\n },\n datum,\n true\n );\n });\n\n ribbonSelect.on('mouseover', function(d, i){\n const datum = d3.select(this).datum();\n const nodeNames = [datum.source.name, datum.target.name];\n\n ribbonTrans(\n ribbonSelect,\n numLabelSelect,\n nodeGSelect,\n datum,\n nodeNames,\n true\n );\n\n })\n\n nodeGSelect.on('mouseout', function(d, i){\n const datum = d3.select(this).datum();\n\n nodeTrans(\n nodeGSelect,\n ribbonSelect,\n {\n nodes: nodeGSelect.data(),\n links: ribbonSelect.data()\n },\n datum,\n false\n );\n });\n\n ribbonSelect.on('mouseout', function(d, i){\n const datum = d3.select(this).datum();\n const nodeNames = [datum.source.name, datum.target.name];\n\n ribbonTrans(\n ribbonSelect,\n numLabelSelect,\n nodeGSelect,\n datum,\n nodeNames,\n false\n );\n });\n }\n}\n\n// function to hget uynique elements from an array\nfunction unique(arr){\n return arr.filter((d, i) => arr.indexOf(d) == i);\n}\n\nexport { readAndDraw , switchStateSankey };\n","import React, { Component } from 'react';\nimport styles from './css-modules/sankey.module.css';\nimport { readAndDraw , switchStateSankey } from './d3/sankey.js';\nimport {GiMagnifyingGlass} from \"react-icons/gi\";\nimport { MdInfoOutline } from 'react-icons/md';\nimport Fade from 'react-reveal/Fade';\nimport FadeMat from '@material-ui/core/Fade';\n\nclass Sankey extends Component {\n constructor(props) {\n super(props);\n this.state = {sankeyState: 2, sankeyStateButton1: 0, sankeyStateButton2: 1}\n }\n\n componentDidMount() {\n readAndDraw();\n }\n\n handleSankeyChange(buttonType, stateIndex) {\n this.setState({\n sankeyState: stateIndex\n });\n if (buttonType === 'ex1') {\n if (stateIndex === 2) {\n switchStateSankey(0);\n this.setState({\n sankeyStateButton2: 1\n });\n }\n else {\n switchStateSankey(2);\n }\n this.setState({\n sankeyStateButton1: stateIndex\n });\n }\n else {\n if (stateIndex === 2) {\n switchStateSankey(1);\n this.setState({\n sankeyStateButton1: 0\n });\n }\n else {\n switchStateSankey(2);\n }\n this.setState({\n sankeyStateButton2: stateIndex\n });\n }\n }\n\n render () {\n return (\n
\n
\n
\n

Knowledge on existing national government policy, strategy, legislation or regulations related to vTPA programmes in food and feed safety

\n

Current recognition, application of and/or use of data generated by vTPA programmes for official control functions for food and feed safety

\n
\n
\n

In your country, is there any national government policy, strategy, legislation or regulation that refers to vTPA programmes in food and feed safety?

\n
\n \n
\n

15 respondents indicated that they have policies or strategies in place providing guidance on the use of vTPA programmes

\n
\n
\n \n
\n

24 respondents indicated that their jurisdiction is considering adopting the vTPA approach

\n
\n
\n
\n \n
\n
\n

Does your organization recognize, take account of and/or use information from vTPA programmes to inform or support any aspects of its official control functions for food and feed safety?

\n
\n
\n
\n
\n \n
this.handleSankeyChange('ex1', 0)} className={styles.button_text_wrapper}>\n

Explore

\n \n
\n
\n \n
this.handleSankeyChange('ex1', 2)} className={styles.button_text_wrapper}>\n

Innovators

\n \n
\n
\n
\n
\n \n
this.handleSankeyChange('ex2',1)} className={styles.button_text_wrapper}>\n

Explore

\n \n
\n
\n \n
this.handleSankeyChange('ex2', 2)} className={styles.button_text_wrapper}>\n

Followers

\n \n
\n
\n
\n
\n
\n )\n }\n}\n\nexport default Sankey;\n","import * as d3Base from \"d3\";\nimport * as d3Multi from \"d3-selection-multi\";\n\nconst d3 = Object.assign(d3Base, d3Multi);\n\nconst question = \"Do vTPA programs or certification bodies share data/ info with your organization?\";\n\nconst colScale = d3.scaleOrdinal()\n .domain([\n \"Yes, vTPA programmes share information\",\n \"Yes, certification bodies share information\",\n \"No\",\n \"No, but planning this for the future\",\n \"Don't know\"\n ])\n .range([\n d3.rgb('#33CC99'),\n d3.rgb('#009999'),\n d3.rgb('#FF6666').darker(),\n d3.rgb('#FF6666'),\n d3.rgb('#990066 ')\n ]);\n\nfunction drawDonut(data) {\n const height = 600;\n const width = 600;\n const transDur = 750;\n\n const svgG = d3.select('svg.donut')\n .append('g')\n .attr('class', 'donutGrp')\n .attr('transform', `translate(${width/2}, ${height/2})`);\n\n const percLabelFontSize = 45;\n\n const arcLabel = svgG.append('text')\n .attr('class', 'percLabel')\n .text('0%')\n .attr('dy', `${percLabelFontSize/2}px`)\n .style('fill', 'black')\n .style('fill-opacity', 0)\n .style('text-anchor', 'middle')\n .style('font-size', `${percLabelFontSize}px`);\n\n const arc = d3.arc()\n .innerRadius(180)\n \t.outerRadius(220)\n .padAngle(0.005);\n\n const pie = d3.pie()\n .value(d => d.value)\n .sort(null);\n\n function createDatum(d) {\n const clone = Object.assign({}, d);\n clone.endAngle = clone.startAngle;\n return clone;\n }\n\n\n svgG.style('opacity', '0')\n .transition()\n .duration('250')\n .style('opacity', '1')\n\n svgG.selectAll('path.arc')\n .data(pie(data))\n .enter()\n .append('path')\n .attr('class', 'arc')\n .style('fill', d => colScale(d.data.head))\n .transition()\n .delay((d, i) => i * transDur)\n .duration(transDur)\n .attrTween('d', d => {\n const datum = createDatum(d);\n return function(t){\n const endAngleInterp = d3.interpolate(datum, d);\n return arc(endAngleInterp(t));\n }\n });\n\n //const arcCents = pie(data).map(d => arc(d))\n const labels = [\n [\n {text: \"Yes, vTPA\", idx: 0},\n {text: \"programmes share\", idx: 0},\n {text: \"information\", idx: 0}\n ],\n [\n {text: \"Yes, certification\", idx: 1},\n {text: \"bodies share\", idx: 1},\n {text: \"information\", idx: 1}\n ],\n [\n {text: \"No, but \", idx: 2},\n {text: \"planning for \", idx: 2},\n {text: \"the future\", idx: 2}\n ],\n [\n {text: \"No\", idx: 3}\n ],\n [\n {text: \"Don't Know\", idx: 4}\n ]\n ];\n const cents = pie(data).map(d => arc.centroid(d));\n\n const offSet = [[55, -55], [70, -10], [35, 35], [-40, 0], [-10, -33]];\n const text = svgG.selectAll('text.textLab')\n .data(pie(data))\n .enter()\n .append('text')\n .attr('class', 'textLab')\n .style('fill', d => '#212121')\n .style('fill-opacity', 0)\n .style('text-anchor', 'middle')\n .style('font-family', \"'Barlow Condensed', sans-serif\")\n .style('font-weight', '400')\n //.text(d => d.data.head)\n .attr('x', (d ,i) => arc.centroid(d)[0])\n .attr('y', (d, i) => arc.centroid(d)[1])\n .attr('transform', (d, i) => `translate(${offSet[i]})`);\n\n text.transition()\n .delay((d, i) => i * transDur)\n .duration(transDur)\n .style('fill-opacity', 1);\n\n const dy = 0;\n text.selectAll('tspan')\n .data((d, i) => labels[i])\n .enter()\n .append('tspan')\n .text(d => d.text)\n //.attr('x', )\n .attr('x', (d, i) => cents[d.idx][0])\n .attr('dy', (d, i) => i == 0 ? `${dy}px` : `18px`);\n\n\n function activateMO(){\n svgG.selectAll('path.arc').on('mouseover', function(d, i){\n const perc = (d3.select(this).datum().data.value / 62) * 100;\n //console.log(round2Dec(perc, 1));\n svgG.select('text.percLabel')\n .text(`${round2Dec(perc, 1)}%`)\n .transition('percLabTrans')\n .style('fill-opacity', 1);\n });\n\n svgG.selectAll('path.arc').on('mouseout', function(d, i){\n svgG.select('text.percLabel')\n .text(``)\n .style('fill-opacity', 0);\n });\n\n }\n\n activateMO();\n};\n\n\nd3.select('#reAnim').on('click', function(d, i){\n // remove everything\n d3.select('svg.donut').selectAll(\"*\").remove();\n\n// drawDonut(data)\n\n});\n\nfunction round2Dec(number, dec){\n return Math.round(number * 10**dec)/ 10**dec\n}\n\nexport { drawDonut }\n","import * as d3Base from \"d3\";\nimport * as d3Multi from \"d3-selection-multi\";\nimport csv from './CouccMatrix.csv';\n\nconst d3 = Object.assign(d3Base, d3Multi);\n\nlet xBands, yBands;\nlet svgG, columnNames;\nlet matrixData;\n\nasync function drawMatrix(){\n // read in the coucc Matrix data\n matrixData = await d3.csv(csv);\n\n // define cell color scale\n const scaleCol = d3.scaleLinear()\n .domain([0, 15])\n .range(['white', d3.rgb('#009999')]);\n\n // from the read in data extract columns\n columnNames = matrixData.columns;\n // since the first column is empty, shift the array\n columnNames.shift();\n\n // function to get svg atributes\n // function getAttr(svgSel, attrName, pxRemove){\n // const attr = d3.select(svgSel).attr(attrName)\n //\n // return pxRemove ? attr.replace('px', '') : attr ;\n // }\n\n // get the height and width of the svg\n const svgWidth = 920;\n const svgHeight = 820;\n\n // define margins for the visualization\n const margin = {\n top: 200,\n left: 200,\n right: 136,\n bottom: 220\n };\n // cell padding is the separation in pixels between the cells\n const cellPadding = 1;\n\n //adjusting the width and height through margins\n const width = svgWidth - margin.left - margin.right;\n const height = svgHeight - margin.top - margin.bottom;\n\n //select the SVG and append a group inside\n svgG = d3.select('svg.correlMatrix')\n .append('g')\n .attr('class', 'correlMatrixG')\n .attr('transform', `translate(${margin.left}, ${margin.top})`);\n\n // scales that will help us locate the cells\n yBands = d3.scaleBand()\n .domain(columnNames)\n .range([0, height]);\n\n xBands = d3.scaleBand()\n .domain(columnNames)\n .range([0, width]);\n\n // grid data that maps questions to options\n const gridData = [[0, 4], [4, 10], [10, 15], [15, 18]];\n\n const gridLineCol = '#e0e0e0';\n const questGridCol = d3.rgb('#e0e0e0').darker(0);\n\n //const colArr = [questGridCol, questGridCol, questGridCol, questGridCol]\n\n const lightCol = '#eee'\n const contrastCol = d3.rgb('#eee').darker(0.1);\n\n const lightCol1 = '#B2DFDB'\n const contrastCol1 = d3.rgb('#B2DFDB').darker(0.1);\n\n const leftBoxes = svgG.append('g')\n .attr('class', 'xLabRectG')\n .selectAll('rect.xLabRect')\n .data(gridData)\n .enter()\n .append('rect')\n .attr('class', 'xLabRect')\n .attr('y', d => d[0] * yBands.bandwidth())\n .attr('x', -200)\n .attr('rx', '5px')\n .attr('ry', '5px')\n .attr('width', 194)\n .attr('height', d => ((d[1] - d[0]) * yBands.bandwidth()) - 1)\n .style('fill', (d, i) => i%2 == 0 ? lightCol : contrastCol)\n //.style('fill', contrastCol)\n .style('fill-opacity', 1);\n\n const topBoxes = svgG.append('g')\n .attr('class', 'yLabRectG')\n .selectAll('rect.yLabRect')\n .data(gridData)\n .enter()\n .append('rect')\n .attr('class', 'yLabRect')\n .attr('x', d => d[0] * xBands.bandwidth())\n .attr('y', - 200)\n .attr('rx', '5px')\n .attr('ry', '5px')\n .attr('height', 194)\n .attr('width', d => ((d[1] - d[0]) * xBands.bandwidth()) - 1)\n .style('fill', (d, i) => i%2 == 0 ? lightCol1 : contrastCol1)\n //.style('fill', contrastCol)\n .style('fill-opacity', 1);\n\n const rightBoxes = svgG.append('g')\n .attr('class', 'xQRectG')\n .selectAll('rect.xQRect')\n .data(gridData)\n .enter()\n .append('rect')\n .attr('class', 'xQRect')\n .attr('y', d => d[0] * yBands.bandwidth())\n .attr('x', width + 6)\n .attr('rx', '5px')\n .attr('ry', '5px')\n .attr('width', 129)\n .attr('height', d => ((d[1] - d[0]) * yBands.bandwidth()) - 1)\n .style('fill', (d, i) => i%2 == 0 ? lightCol : contrastCol);\n //.style('fill', (d, i) => contrastCol);\n\n\n const bottomBoxes = svgG.append('g')\n .attr('class', 'yQRectG')\n .selectAll('rect.yQRect')\n .data(gridData)\n .enter()\n .append('rect')\n .attr('class', 'yQRect')\n .attr('x', d => d[0] * xBands.bandwidth())\n .attr('y', height + 6)\n .attr('rx', '5px')\n .attr('ry', '5px')\n .attr('height', 70)\n .attr('width', d => ((d[1] - d[0]) * xBands.bandwidth()) - 1)\n .style('fill', (d, i) => i%2 == 0 ? lightCol1 : contrastCol1)\n //.style('fill', (d, i) => contrastCol);\n\n\n const QuestText = [\n [\"Which areas are covered \", \"by vTPA programmes in \", \"your country?\"],\n [\"Which types of vTPA \", \"programmes are \", \"recognized or used?\"],\n [\"How is the vTPA \", \"programme recognized \", \"and/ or taken into \", \"account?\"],\n [\"How is the reliability\", \"of data from vTPA\", \"programs assessed?\"]\n ];\n\n const QuestText1 = [\n [\"Which areas are covered \", \"by vTPA programmes in \", \"your country?\"],\n [\"Which types of vTPA programmes are \", \"recognized or used?\"],\n [\"How is the vTPA programme \", \"recognized and/ or taken\", \"into account?\"],\n [\"How is the reliability\", \"of data from vTPA\", \"programs assessed?\"]\n ];\n\n const textPad = 5;\n\n const rightText = svgG.append('g')\n .attr('class', 'xQTextG')\n .selectAll('text.xQText')\n .data(gridData)\n .enter()\n .append('text')\n .attr('class', 'xQText')\n .style('fill', '#212121')\n .style('font-family', \"'Barlow Condensed', sans-serif\")\n .style('font-weight', '300')\n .style('font-size', '13px')\n .style('text-anchor', 'start')\n .attr('y', d => d[0] * yBands.bandwidth() + 18)\n .attr('x', width + 6 + textPad)\n .selectAll('tspan')\n .data((d, i) => QuestText[i])\n .enter()\n .append('tspan')\n .attr('dy', (d, i) => i == 0 ? 0 : 15)\n .attr('x', width + 6 + textPad)\n .text((d, i) => d);\n\n\n const bottomText = svgG.append('g')\n .attr('class', 'yQTextG')\n .selectAll('text.yQText')\n .data(gridData)\n .enter()\n .append('text')\n .style('fill', '#212121')\n .style('font-family', \"'Barlow Condensed', sans-serif\")\n .style('font-weight', '300')\n .style('font-size', '12px')\n .style('text-anchor', 'start')\n .attr('class', 'yQText')\n .attr('x', d => d[0] * xBands.bandwidth() + 5)\n .attr('y', height + 25)\n .selectAll('tspan')\n .data((dat, idx) => QuestText1[idx].map(d => {return {data: d, index: dat[0]}}))\n .enter()\n .append('tspan')\n .attr('dy', (d, i) => i == 0 ? 0 : 15)\n .attr('x', d => d.index * xBands.bandwidth() + 5)\n .text((d, i) => d.data);\n\n\n const rows = svgG.selectAll('g.matrixRow')\n .data(matrixData)\n .enter()\n .append('g')\n .attr('class', 'matrixRow')\n .attr('transform', d => `translate(0, ${yBands(d.Option)})`);\n\n const cellG = rows.selectAll('rect.cellG')\n .data((d, i) => columnNames.map(entry => {\n return {index: i, Option: entry}\n }))\n .enter()\n .append('g')\n .attr('class', 'cellG')\n .attr('transform', d => `translate(${xBands(d.Option)}, 0)`)\n\n const cells = cellG.append('rect')\n .attr('class', 'cell')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', xBands.bandwidth() - cellPadding)\n .attr('height', yBands.bandwidth() - cellPadding)\n .attr('rx', '3px')\n .attr('ry', '3px')\n .style('fill', (d, i) => {\n const val = matrixData[d.index][d.Option];\n return (val == \"\") ? '#F5F5F5' : scaleCol(+val);\n });\n\n\n const cellLab = cellG.append('text')\n .attr('class', 'cellLabel')\n .attr('transform', d => `translate(${xBands.bandwidth()/2}, 0)`)\n .attr('x', 0)\n .attr('y', 14)\n .text((d, i) => {\n const val = matrixData[d.index][d.Option];\n return val;\n })\n .style('fill', (d, i) => {\n const val = +matrixData[d.index][d.Option];\n return val > 8 ? 'white' : '#212121';\n })\n .style('font-family', \"'Barlow Condensed', sans-serif\")\n .style('font-weight', '300')\n .style('font-size', '11px')\n .style('text-anchor', 'middle');\n\n const cellHover = cellG.append('rect')\n .attr('class', 'hoverRect')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', xBands.bandwidth() - cellPadding)\n .attr('height', yBands.bandwidth() - cellPadding)\n .attr('rx', '3px')\n .attr('ry', '3px')\n .style('fill', 'grey')\n .style('fill-opacity', 0);\n\n\n const leftText = rows.append('text')\n .text(d => d.Option)\n .attr('class', 'rowLabel')\n .attr('x', -200 + textPad)\n .attr('y', 16)\n .style('fill', '#212121')\n .style('font-family', \"'Barlow Condensed', sans-serif\")\n .style('font-weight', '300')\n .style('font-size', '12px')\n .style('fill', '#212121');\n\n const topText = d3.select('g.matrixRow')\n .selectAll('text.columnLabel')\n .data(columnNames)\n .enter()\n .append('text')\n .attr('class', 'columnLabel')\n .text(d => d)\n .attr('y', d => xBands(d) + 20)\n .attr('x', 10)\n .style('transform', `rotate(270deg)`)\n .style('fill', `#212121`)\n .style('font-family', \"'Barlow Condensed', sans-serif\")\n .style('font-weight', '300')\n .style('font-size', '12px')\n .style('fill', '#212121');\n\n activateMO(svgG.selectAll('g.cellG'), columnNames, xBands, yBands);\n\n}\n\nfunction transGrid(selection, rowIdx, colIdx, xBW, yBW, fontW, opac, transDur, circle, datum, data, multiplier){\n\n const qIdx1 = optionToQIdx(rowIdx, colIdx)[0];\n const qIdx2 = optionToQIdx(rowIdx, colIdx)[1];\n // getting selections and un-selections of selected cell row and column labels\n const selRowLab = selection.selectAll('text.rowLabel')\n .filter((d, i) => i == rowIdx);\n const unSelRowLab = selection.selectAll('text.rowLabel')\n .filter((d, i) => i != rowIdx);\n const selColLab = selection.selectAll('text.columnLabel')\n .filter((d, i) => i == colIdx);\n const unSelColLab = selection.selectAll('text.columnLabel')\n .filter((d, i) => i != colIdx);\n\n const selText1 = selection.selectAll('text.xQText')\n .filter((d, i) => i == qIdx1);\n const unselText1 = selection.selectAll('text.xQText')\n .filter((d, i) => i != qIdx1);\n const selText2 = selection.selectAll('text.yQText')\n .filter((d, i) => i == qIdx2);\n const unselText2 = selection.selectAll('text.yQText')\n .filter((d, i) => i != qIdx2);\n\n const xBWScaled = xBW * multiplier;\n const yBWScaled = yBW * multiplier;\n\n selection.select('circle.interactCirc')\n .remove();\n\n d3.select('.tooltip')\n .remove();\n\n if (circle){\n selection.append('circle')\n .attr('class', 'interactCirc')\n .attr('cx', (xBW * colIdx) + xBW/2)\n .attr('cy', (yBW * rowIdx) + yBW/2)\n .attr('r', 20)\n .style('fill', 'none')\n .style('stroke', '#636363')\n .style('stroke-width', '2px')\n .transition('circTrans')\n .duration(transDur);\n\n const val = data[datum.index][datum.Option];\n const q1Option = columnNames[datum.index];\n const q2Option = datum.Option;\n\n var svg_offsetLeft = document.getElementsByClassName('correlMatrix')[0].getBoundingClientRect().left;\n var leftLabel_width = document.getElementsByClassName('xLabRect')[0].getBoundingClientRect().width;\n var svg_offsetTop = document.getElementsByClassName('correlMatrix')[0].getBoundingClientRect().top;\n var topLabel_height = document.getElementsByClassName('yLabRect')[0].getBoundingClientRect().height;\n\n var tooltip = d3.select('body')\n .append('div')\n .classed('tooltip', true)\n .style('left', (((xBWScaled * colIdx) + xBWScaled/2) - (100) + ((svg_offsetLeft + leftLabel_width))) + 'px')\n .style('top', (((yBWScaled * rowIdx) + yBWScaled/2) + (25) + ((window.scrollY + svg_offsetTop + topLabel_height))) + 'px')\n\n if (rowIdx === colIdx) {\n tooltip.append('p')\n .text(`${val} respondents selected '${q1Option}'`);\n }\n else {\n tooltip.append('p')\n .text(`${val} respondents selected '${q1Option}' and '${q2Option}' at the same time`);\n }\n }\n\n selRowLab.transition('transWt')\n .duration(transDur)\n .style('font-weight', fontW)\n .style('fill-opacity', 1);\n selColLab.transition('transWt')\n .duration(transDur)\n .style('font-weight', fontW)\n .style('fill-opacity', 1);\n selText1.transition('transWtQ')\n .duration(transDur)\n .style('font-weight', fontW)\n .style('fill-opacity', 1);\n selText2.transition('transWtQ')\n .duration(transDur)\n .style('font-weight', fontW)\n .style('fill-opacity', 1);\n\n unSelRowLab.transition('transOpac')\n .duration(transDur)\n .style('fill-opacity', opac)\n .style('font-weight', 300);\n unSelColLab.transition('transOpac')\n .duration(transDur)\n .style('fill-opacity', opac)\n .style('font-weight', 300);\n unselText1.transition('transOpacQ')\n .duration(transDur)\n .style('fill-opacity', opac)\n .style('font-weight', 300);\n unselText2.transition('transOpacQ')\n .duration(transDur)\n .style('fill-opacity', opac)\n .style('font-weight', 300);\n}\n\nfunction activateMO(selection, columnNames, xBands, yBands){\n selection\n .filter((d, i) => d.index <= columnNames.indexOf(d.Option))\n .on('mouseover', function(d, i){\n const datum = d3.select(this).datum();\n const rowIdx = datum.index;\n const colIdx = columnNames.indexOf(datum.Option);\n\n const transDur = 250;\n\n const svgW = document.getElementsByClassName('correlMatrix')[0].getBoundingClientRect().width;\n\n const multiplier = svgW/920;\n\n transGrid(\n d3.select('g.correlMatrixG'),\n rowIdx,\n colIdx,\n xBands.bandwidth(),\n yBands.bandwidth(),\n 600,\n 0.3,\n transDur,\n true,\n datum,\n matrixData,\n multiplier\n );\n });\n\n selection\n .filter((d, i) => d.index <= columnNames.indexOf(d.Option))\n .on('mouseout', function(d, i){\n const datum = d3.select(this).datum();\n const rowIdx = datum.index;\n const colIdx = columnNames.indexOf(datum.Option);\n const transDur = 250;\n\n const svgW = document.getElementsByClassName('correlMatrix')[0].getBoundingClientRect().width;\n\n const multiplier = svgW/920;\n\n transGrid(\n d3.select('g.correlMatrixG'),\n rowIdx,\n colIdx,\n xBands.bandwidth(),\n yBands.bandwidth(),\n 300,\n 1,\n transDur,\n false,\n datum,\n matrixData,\n multiplier\n );\n });\n};\n\nfunction deactivateMO(selection){\n selection\n .on('mouseover', null);\n selection\n .on('mouseout', null);\n};\n\nfunction optionToQIdx(rowIdx, colIdx){\n function optionIdxToQIdx(index){\n let qNo;\n\n if (index >=0 & index < 4){\n qNo = 0;\n }\n\n else if (index >=4 & index < 10){\n qNo = 1;\n }\n else if (index >=10 & index < 15){\n qNo = 2;\n }\n else {\n qNo = 3;\n }\n\n return qNo;\n }\n const rowQ = optionIdxToQIdx(rowIdx);\n const colQ = optionIdxToQIdx(colIdx);\n\n return [rowQ, colQ];\n}\n\nexport { drawMatrix }\n","import React, { Component } from 'react';\nimport styles from './css-modules/donut.module.css';\nimport { drawDonut } from './d3/donut.js';\n\n\nclass Sankey extends Component {\n\n constructor(props) {\n super(props);\n this.state = { donut_drawn: false }\n }\n\n\n componentDidMount() {\n var parent = this;\n window.addEventListener('scroll', function(e) {\n if (!parent.state.donut_drawn) {\n if (parent.isInViewport(document.getElementById('donut_container'))) {\n drawDonut([\n {head: \"Yes, vTPA programmes share information\", value: 10},\n {head: \"Yes, certification bodies share information\", value: 5},\n {head: \"No, but planning this for the future\", value: 14},\n {head: \"No\", value: 30},\n {head: \"Don't know\", value: 3},\n ]);\n parent.setState({\n donut_drawn: true\n })\n }\n }\n });\n }\n\n isInViewport(elem) {\n var distance = elem.getBoundingClientRect();\n return (\n distance.top - distance.height <= -10\n );\n };\n\n render () {\n return (\n
\n \n
\n )\n }\n}\n\nexport default Sankey;\n","import React, { Component } from 'react';\nimport styles from './css-modules/matrix.module.css';\nimport { drawMatrix } from './d3/matrix.js';\n\n\nclass Matrix extends Component {\n\n componentDidMount() {\n drawMatrix();\n }\n\n render () {\n return (\n
\n \n
\n )\n }\n}\n\nexport default Matrix;\n","import * as d3Base from \"d3\";\nimport * as d3Multi from \"d3-selection-multi\";\n\nconst d3 = Object.assign(d3Base, d3Multi);\n\n\nconst advan = [\n {head: \"Overall improvement of food hygiene and safety\", value: 49},\n {head: \"Assisting food business in complying with the law\", value: 36},\n {head: \"Added inspection capacity (private audits)\", value: 27},\n {head: \"Public controls can focus on high risks\", value: 48},\n {head: \"Increased confidence in the level of compliance through access to vTPA data\", value: 27}\n];\n\nconst disAdvan = [\n {head: \"Private assurance systems are not reliable\", value: 23},\n {head: \"Conflicts with legal obligations\", value: 24},\n {head: \"Confidentiality of private audit reports\", value: 26},\n {head: \"Regulatory capture\", value: 22},\n {head: \"Undermines consumer confidence in government authorities\", value: 24},\n {head: \"Financial costs for food business operators\", value: 33}\n];\n\nconst svgWidth = 700;\nconst svgHeight = 430;\n\nfunction draw(type, className, data){\n const title = type == \"Advantages\" ? type : \"Concerns\"\n const sortedData = data.sort((a, b) => b.value - a.value);\n\n const margin = {\n top: 110,\n bottom: 10,\n left: 30,\n right: 20\n };\n\n const width = svgWidth - margin.left - margin.right;\n const height = svgHeight - margin.top - margin.bottom;\n const cellWidth = width/ 64;\n\n const cellData = Array.from(Array(64).keys()).map(d => d + 1);\n\n const scaleBand = d3.scaleBand()\n .domain(sortedData.map(d => d.head))\n .range([0, height * (sortedData.length)/6]);\n\n const svgG = d3.select('svg.' + className)\n .append('g')\n .classed('barCellG', true)\n .attr('transform', `translate(${margin.left}, ${margin.top})`);\n\n\n const titleSel = svgG.append('text')\n .text(title)\n .attr('x', '0')\n .attr('y', '-50px')\n .style('font-size', '24px')\n .style('font-family', \"'Barlow', sans-serif\")\n .style('font-weight', 500);\n\n const categGroup = svgG.selectAll('g.categGroup')\n .data(sortedData)\n .enter()\n .append('g')\n .attr('class', 'categGroup')\n .attr('transform', d => `translate(0, ${scaleBand(d.head)})`);\n\n const categText = categGroup.append('text')\n .html(d => `\n ${d.head} \n (${0}/ 64)\n `)\n //.style('font-family', \"'Roboto', sans-serif\")\n .style('font-family', \"'Barlow', sans-serif\")\n .style('font-size', \"15px\")\n .style('fill-opacity', 0)\n .transition()\n .delay((d, i) => i * 500)\n .duration(250)\n .style('fill-opacity', 1);\n\n const vals = sortedData.map(d => d.value);\n\n svgG.style('opacity', '0')\n .transition()\n .duration('450')\n .style('opacity', '1')\n\n svgG.selectAll('tspan.valueNum')\n .style('font-size', \"16px\")\n .transition()\n .delay((d, i) => i * 500)\n .duration(500)\n .textTween(function(d, i) {\n const int = d3.interpolate(0, vals[i]);\n return function(t) { return Math.round(int(t)); };\n });\n\n const barCellG = categGroup.append('g')\n .attr('class', 'barCellG')\n .attr('transform', d => `translate(0, 10)`);\n\n const cells = barCellG.selectAll('rect.cells')\n .data((d, i) => cellDataGen(64, d.value, i))\n .enter()\n .append('rect')\n .attr('class', 'cells')\n .attr('x', (d, i) => i * cellWidth)\n .attr('y', 0)\n .attr('width', cellWidth - 1)\n .attr('height', scaleBand.bandwidth()/2 - 2)\n .style('fill', '#eee')\n //.style('fill-opacity', 0.5)\n .transition()\n .delay((d, i) => (i * 20) + (d.parentIdx * 500))\n .duration(100)\n .style('fill', d => d.colState ? (type == \"Advantages\" ? '#009999' : '#FF6666') : '#eee')\n //.style('fill-opacity', 1);\n}\n\nfunction cellDataGen(totalLen, value, parentIdx){\n const arr = Array.from(Array(totalLen).keys()).map(d => d + 1);\n return arr.map(d => {\n return {\n parentIdx: parentIdx,\n idx: d,\n colState: (d > value) ? false : true\n }\n })\n}\n\nlet count = 0\nd3.select('#reAnim').on('click', function(d, i){\n // remove everything\n d3.select('svg.barCell').selectAll(\"*\").remove();\n\n count += 1;\n (count % 2 == 1) ? draw(\"Disadvantages\") : draw(\"Advantages\");\n})\n\nexport { draw }\n","import React, { Component } from 'react';\nimport styles from './css-modules/bar_cell.module.css';\nimport { draw } from './d3/bar_cell.js';\n\n\nclass Bar_Cell extends Component {\n\n constructor(props) {\n super(props);\n this.state = { adv_in: false, disadv_in: false }\n }\n\n componentDidMount() {\n var parent = this;\n window.addEventListener('scroll', function(e) {\n if (!parent.state.adv_in) {\n if (parent.isInViewport(document.getElementById('barCell_adv_container'))) {\n draw(\"Advantages\", 'barCell_adv', [\n {head: \"Overall improvement of food hygiene and safety\", value: 49},\n {head: \"Assisting food business in complying with the law\", value: 36},\n {head: \"Added inspection capacity (private audits)\", value: 27},\n {head: \"Public controls can focus on high risks\", value: 48},\n {head: \"Increased confidence in the level of compliance through access to vTPA data\", value: 27}\n ]);\n parent.setState({\n adv_in: true\n })\n }\n }\n if (!parent.state.disadv_in) {\n if (parent.isInViewport(document.getElementById('barCell_adv_container'))) {\n draw(\"Disadvantages\", 'barCell_disAdv', [\n {head: \"Private assurance systems are not reliable\", value: 23},\n {head: \"Conflicts with legal obligations\", value: 24},\n {head: \"Confidentiality of private audit reports\", value: 26},\n {head: \"Regulatory capture\", value: 22},\n {head: \"Undermines consumer confidence in government authorities\", value: 24},\n {head: \"Financial costs for food business operators\", value: 33}\n ]);\n parent.setState({\n disadv_in: true\n })\n }\n }\n });\n\n\n }\n\n isInViewport(elem) {\n var distance = elem.getBoundingClientRect();\n return (\n distance.top - distance.height <= 200\n );\n };\n\n render () {\n return (\n
\n
\n \n
\n
\n \n
\n
\n )\n }\n}\n\nexport default Bar_Cell;\n","import React, { Component } from 'react';\nimport styles from './css-modules/footer.module.css';\nimport STDF_logo from '../resources/landing/landing-stdf_logo.png';\nimport UNIDO_logo from '../resources/landing/UNIDO.png';\nimport Report from '../resources/STDF.png';\nimport pdf from '../resources/STDF_IICA_UNIDO_vTPA_Survey_Report.pdf'\n\nclass Footer extends Component {\n render () {\n return (\n
\n
window.open(pdf)}>\n
\n

{this.props.title}

\n
\n
\n
\n \n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n window.open('https://www.standardsfacility.org/')} className={styles.stdf_logo}>\n window.open('https://www.unido.org/')} className={styles.unido_logo}>\n
\n\n

{this.props.copyright_text}

\n
\n
\n
\n )\n }\n}\n\nexport default Footer;\n","import React from 'react';\nimport logo from './logo.svg';\nimport './App.css';\nimport Picture_Text from './components/pictureText.js';\nimport Landing from './components/landing.js';\nimport Sankey from './components/sankey.js';\nimport Donut from './components/donut.js';\nimport Matrix from './components/matrix.js';\nimport BarCell from './components/bar_cell.js';\nimport Footer from './components/footer.js';\nimport Image from './resources/29299341147_8ac8b1845a_o.jpg';\nimport Image1 from './resources/49356724873_1170629dca_o.jpg';\nimport Image2 from './resources/38880256960_6a3d723db9_o.jpg';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nfunction App() {\n return (\n
\n This story provides initial insights on how some regulators are using – or considering the use of – reliable data from voluntary third-party assurance (vTPA) programmes, linked to new draft Codex guidelines. It shares key findings from an online survey of WTO SPS Committee delegates and Codex Contact Points.

}\n />\n
\n

Correlation across existing policies and strategies on vTPA programmes and the use of data generated by these programmes

\n

Use the button below to show the relationships between the responses

\n
\n
\n
\n \n
\n \n
\n

Do vTPA programmes or certification bodies share data/information with your organization?

\n
\n
\n
\n \n
\n \n
\n

Cooperation with vTPA programmes brings benefits, as well as some concerns

\n
\n
\n
\n \n
\n \n
\n

There seems to be some correlation across the scope and type of vTPA programmes, and the way in which they are recognized

\n

Hover over the cells to explore the data and the relationship between responses to different questions

\n
\n
\n
\n
\n \n
\n
\n \n
\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"landing_container__28kvK\",\"left_image_container\":\"landing_left_image_container__lTh2a\",\"left_image\":\"landing_left_image__3-LeG\",\"right_image_container\":\"landing_right_image_container__1yGKR\",\"right_image_skewCancel\":\"landing_right_image_skewCancel__1famV\",\"right_image\":\"landing_right_image__1qoSa\",\"title_container\":\"landing_title_container__1O3jJ\",\"title_colored\":\"landing_title_colored__1nA8_\",\"icon_container\":\"landing_icon_container__3B6wV\",\"stdf_logo\":\"landing_stdf_logo__wV77m\",\"unido_logo\":\"landing_unido_logo__1APav\",\"title\":\"landing_title__2dRin\",\"description\":\"landing_description__3GWIG\",\"bottom_button\":\"landing_bottom_button__oha8z\",\"button_text\":\"landing_button_text__3h_c1\",\"scroll_down_icon\":\"landing_scroll_down_icon__1u5Ly\",\"scroll_down_icon_arrow\":\"landing_scroll_down_icon_arrow__29K9Q\",\"download_report_button\":\"landing_download_report_button__BtACx\",\"download_report_text\":\"landing_download_report_text__sJ2TO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"flexed_text_container\":\"footer_flexed_text_container__1dmA-\",\"text\":\"footer_text__1lbID\",\"report_image\":\"footer_report_image__36btu\",\"report_image_src\":\"footer_report_image_src__nJe3y\",\"report_image_overlay_text\":\"footer_report_image_overlay_text__NRVZX\",\"report_container\":\"footer_report_container__2g5bH\",\"absolute_colored_border\":\"footer_absolute_colored_border__38G93\",\"absolute_border_red\":\"footer_absolute_border_red__zUYcQ\",\"absolute_border_yellow\":\"footer_absolute_border_yellow__1ymvL\",\"white_background\":\"footer_white_background__1oWr4\",\"white_flexed_cont\":\"footer_white_flexed_cont__1tePb\",\"logo_container\":\"footer_logo_container__2_2PE\",\"stdf_logo\":\"footer_stdf_logo__pEaOB\",\"unido_logo\":\"footer_unido_logo__30GQR\",\"copyright_text\":\"footer_copyright_text__2n4kZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"picture_text_container__2Lgup\",\"parallax_img\":\"picture_text_parallax_img__QhjLc\",\"text_container\":\"picture_text_text_container__1VNHq\",\"gradient_overlay\":\"picture_text_gradient_overlay__3BiVR\",\"text\":\"picture_text_text__1ON49\",\"absolute_border\":\"picture_text_absolute_border__2hsa8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"sankey_container__3clWh\",\"svg_container\":\"sankey_svg_container__2d6Le\",\"text_svg_wrapper\":\"sankey_text_svg_wrapper__3YBSp\",\"absolute_text_info\":\"sankey_absolute_text_info__3O-Hp\",\"info\":\"sankey_info__1QwUD\",\"svg_questions_wrapper\":\"sankey_svg_questions_wrapper__30R1c\",\"question_text\":\"sankey_question_text__1SFAV\",\"mobile_question_text\":\"sankey_mobile_question_text__DAhHE\",\"second_question\":\"sankey_second_question__MoMVY\",\"buttons_container\":\"sankey_buttons_container__DT4kj\",\"margined_sub_button\":\"sankey_margined_sub_button__297ss\",\"subscription_button\":\"sankey_subscription_button__1GzIO\",\"button_text_wrapper\":\"sankey_button_text_wrapper__ktCKs\",\"subscription_button_text\":\"sankey_subscription_button_text__2_BnY\",\"subscription_button_icon\":\"sankey_subscription_button_icon__262jz\",\"mobile_question_text_cont\":\"sankey_mobile_question_text_cont__3pjjy\"};","module.exports = __webpack_public_path__ + \"static/media/landing-stdf_logo.56b10a67.png\";","module.exports = __webpack_public_path__ + \"static/media/UNIDO.07e4b9d9.png\";","module.exports = __webpack_public_path__ + \"static/media/STDF_IICA_UNIDO_vTPA_Survey_Report.fc5ab651.pdf\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"bar_cell_container__gawIK\",\"advantage_container\":\"bar_cell_advantage_container__1eWT0\",\"disadvantage_container\":\"bar_cell_disadvantage_container__5WSNz\"};","module.exports = __webpack_public_path__ + \"static/media/25784838327_99de70db0f_o.81a8bded.jpg\";","module.exports = __webpack_public_path__ + \"static/media/39911644745_362f691b33_o.ecacecf5.jpg\";","module.exports = __webpack_public_path__ + \"static/media/summQ23.ed3e181c.csv\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"donut_container__bMxUN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"matrix_container__3wxY2\"};","module.exports = __webpack_public_path__ + \"static/media/CouccMatrix.d644872f.csv\";","module.exports = __webpack_public_path__ + \"static/media/STDF.88b15302.png\";","module.exports = __webpack_public_path__ + \"static/media/29299341147_8ac8b1845a_o.62562c6c.jpg\";","module.exports = __webpack_public_path__ + \"static/media/49356724873_1170629dca_o.46864e49.jpg\";","module.exports = __webpack_public_path__ + \"static/media/38880256960_6a3d723db9_o.f1980769.jpg\";","module.exports = __webpack_public_path__ + \"static/media/logo.5d5d9eef.svg\";"],"sourceRoot":""}