{"version":3,"sources":["img/logo.svg","img/Martin_Boersting.jpg","img/David_Hurley.png","img/Kevin_Ouyang.png","img/Dinesh_picture.png","img/search.svg","Calculator.js","InputField.js","Strings.js","Constants.js","InputBlock.js","charts/CavitationChart.js","DisclaimerModal.js","ContactBlock.js","CalculationBlock.js","CalculationMessages.js","ProductFinder.js","VersionBlock.js","PrintButton.js","charts/ValveCapacityChart.js","LinkQR.js","LongLink.js","DescriptionBox.js","App.js","registerServiceWorker.js","index.js"],"names":["module","exports","__webpack_require__","p","Calculator","Object","classCallCheck","this","createClass","key","value","inputData","pressureDifference","inletPressure","outletPressure","Math","round","pow","flow","PI","valveDimension","kvValues","valveBore","calcValveKvValue","sqrt","calcPressureDifference","calcCalcedKvValue","valveCapacity","vC","calcValveCapacity","plugLift","calcFlowVelocity","50","65","80","100","125","150","200","250","300","350","400","450","500","600","InputField","_Component","props","_this","possibleConstructorReturn","getPrototypeOf","call","handleChange","bind","assertThisInitialized","inherits","e","onChange","target","optionItems","placeholder","unit","prepend","isMissing","options","map","option","react_default","a","createElement","name","reactstrap_es","className","addonType","type","min","maxLength","step","Component","Strings","title","AVK","titleProjectDescription","titleInput","inputValveDimension","inputValveBore","inputInPressure","inputOutPressure","inputFlow","inputBoreReduced","inputBoreFull","titleValveCapacityChart","valveCapacityDimensionalArea","valveCapacityCharacteristic","valveCapacityX","valveCapacityY","valveCapacityOptimalSize","valveCapacityLabelPrefix","titleCavitationChart","cavitationChartX","cavitationChartY","titleCalculationBlock","calculationPressureDifference","calculationFlowVelocity","calculationValveKv","calculationMinFlow","calculationMaxFlow","calculationCalcedKv","titleCalculationMessages","calculationMessageMissingInput","calculationMessageBadPressure","calculationMessageAntiCav","calculationMessageHighFlowVel","calculationMessageDimensionalArea","calculationMessageFullBore","calculationMessageOkay","titleContactBlock","contactPhone","contactEmail","titleProductFinder","titlePrint","titleSaveCalculation","qrDescription","unitPressure","unitVelocity","unitKv","unitFlow","unitDimension","buttonAccept","Constants","avkBlue","selectedColor","cavitationChartDangerColor","chartFontFamily","opAreaMin","opAreaMax","capChartBorderColor","capChartTextColor","capChartOpAreaColor","invisible","REDUCED","FULL","defaultFlow","defaultInletPressure","defaultOutletPressure","defaultValveDimension","defaultValveBore","defaultDescription","defaultLocation","capChartPointRadius","capChartPointBorderWidth","capChartRatio","cavChartRatio","cavChartPointRadius","cavChartPointBorderWidth","pointVisibleProps","color","borderColor","textColor","radius","borderWidth","pointInvisibleProps","pointSelectedProps","InputBlock","dimension","valveDimensionChange","valveBoreChange","inletPressureChange","outletPressureChange","flowChange","valveBoreOptionItems","valveDimensionOptionItems","push","newValue","newInputData","Number","checkValveDimension","xl","InputField_InputField","CavitationChart","baseDataset","label","data","x","y","fill","pointRadius","showLine","backgroundColor","events","tooltips","enabled","defaultFontFamily","legend","display","text","scales","xAxes","position","scaleLabel","labelString","ticks","max","stepSize","yAxes","minor","plugins","datalabels","newDataset","slice","unshift","pointBackgroundColor","pointBorderColor","pointBorderWidth","es","datasets","width","height","DisclaimerModal","apply","arguments","shouldShow","isAccepted","isOpen","size","onClick","onAccept","ContactBlock","contactPersons","area","email","telephone","picture","ContactAVKInt","ContactAVKUK","ContactAVKAnh","ContactAVKSEA","loc","location","contactPerson","lg","body","sm","href","replace","right","src","alt","Result","first","result","CalculationBlock","_Component2","flowVelocity","valveKv","minFlow","calcMinRecomendedFlow","maxFlow","calcMaxRecomendedFlow","calcedKv","CalculationBlock_Result","CalculationMessages","showMissingInputMessage","showBadPressureMessage","showAntiCavitationMessage","shouldShowAntiCavitationMessage","showFlowVelocityMessage","shouldShowFlowVelocityMessage","showDimensionalAreaMessage","shouldShowDimensionalAreaMessage","showFullBoreMessage","showOkMessage","xs","ProductFinder","productFinders","link","disabled","productFinderClass","md","undefined","SearchIcon","VersionBlock","versionName","PrintButton","buttonClicked","preventDefault","window","print","ValveCapacityChart","generateAlternatives","chartClicked","valveDimensions","i","capacityLiftData","pointStyle","borderDash","lineTension","labels","usePointStyle","filter","item","chart","includes","align","anchor","textAlign","hideAll","alternatives","length","assign","newPoint","sort","b","bore","selectedOptimal","hasWarnings","visible","selected","isVisible","calcPlugLift","pointColors","pointBorderColors","pointTextColors","pointBorderWidths","pointProperties","hitRadius","getElementsAtEvent","elems","_index","LinkQR","lib_default","LongLink","DescriptionBox","date","Date","day","getDate","month","getMonth","year","getFullYear","dateString","textarea","focus","autosize","description","_this2","rows","ref","c","App","state","handleInputChange","onDisclaimerAccept","newInput","setState","sessionStorage","isDisclaimerAccepted","updateQueryString","DisclaimerModal_DisclaimerModal","Boolean","logo","DescriptionBox_DescriptionBox","InputBlock_InputBlock","ValveCapacityChart_ValveCapacityChart","CavitationChart_CavitationChart","CalculationBlock_CalculationBlock","CalculationMessages_CalculationMessages","ContactBlock_ContactBlock","ProductFinder_ProductFinder","PrintButton_PrintButton","LongLink_LongLink","LinkQR_LinkQR","VersionBlock_VersionBlock","parsed","QueryString","parse","search","vd","vb","ip","op","fl","v","version","xd","history","replaceState","stringify","hostname","match","cap","getValidInletPressure","getValidOutletPressure","shortestDistance","selectedDimension","testDimension","distance","getClosestValveDimension","getValidValveDimension","def","readValveBore","getValidValveBore","getValidDescription","getValidLocation","ReactDOM","render","src_App_0","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister"],"mappings":"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","file":"static/js/main.85470960.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/logo.943de530.svg\";","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/7AARRHVja3kAAQAEAAAAUAAA/+EDkGh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4NCgk8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPg0KCQk8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjkzNTE1MjBlLTg5N2EtNmY0Zi05NDBlLTZiMzZkMjlhMmU3ZiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1QjNFNjM2MERERDMxMUU4OEI1MDkwQTU4MUI4NDk3MSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1QjNFNjM1RkRERDMxMUU4OEI1MDkwQTU4MUI4NDk3MSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiPg0KCQkJPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YzEwMzY5MTMtZmJjMi1mYzRkLTk0ZmYtMjkyMTZkNWFhNGQxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkzNTE1MjBlLTg5N2EtNmY0Zi05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\"","module.exports = __webpack_public_path__ + \"static/media/David_Hurley.b0d05413.png\";","module.exports = __webpack_public_path__ + \"static/media/Kevin_Ouyang.1b344ed1.png\";","module.exports = __webpack_public_path__ + \"static/media/Dinesh_picture.40d870f3.png\";","module.exports = __webpack_public_path__ + \"static/media/search.c4eb10ce.svg\";","export class Calculator {\n static kvValues = [\n {\n 50: null,\n 65: 53,\n 80: 83,\n 100: 119,\n 125: 135,\n 150: 202,\n 200: 435,\n 250: 734,\n 300: 990,\n 350: 1584,\n 400: 2221,\n 450: 2899,\n 500: 3865,\n 600: 4735\n },\n {\n 50: 44,\n 65: 76,\n 80: 116,\n 100: 175,\n 125: null,\n 150: 400,\n 200: 710,\n 250: 947,\n 300: 1355,\n 350: 2174,\n 400: 2810,\n 450: 3757,\n 500: 4548,\n 600: 6539\n }];\n\n\n static calcPressureDifference(inputData) {\n const pressureDifference = inputData.inletPressure - inputData.outletPressure;\n if (Math.round(pressureDifference * Math.pow(10, 6)) < Math.round(0.3 * Math.pow(10, 6))) {\n return null;\n }\n return pressureDifference;\n }\n\n static calcFlowVelocity(inputData) {\n return Math.round(inputData.flow / (Math.PI / 4 * Math.pow(inputData.valveDimension / 1000, 2)) / 3600 * 100) / 100;\n }\n\n static calcValveKvValue(inputData) {\n return this.kvValues[inputData.valveBore][inputData.valveDimension];\n }\n\n static calcMinRecomendedFlow(inputData) {\n if (this.calcValveKvValue(inputData) == null) {\n return null\n }\n return Math.round(0.10001 * Math.sqrt(this.calcPressureDifference(inputData)) * this.calcValveKvValue(inputData));\n }\n\n static calcMaxRecomendedFlow(inputData) {\n //=IF(M4=\"NA\",\"NA\",IF( (0.781117*SQRT(I5-I6)*M4) / (3.14/4* (I2/1000)^2) / 3600 > 4,3.14/4*(I2/1000)^2*4*3600,0.7971*SQRT(I5-I6)*M4))\n if (this.calcValveKvValue(inputData) == null) {\n return null\n }\n if (((0.781117 * Math.sqrt(this.calcPressureDifference(inputData)) * this.calcValveKvValue(inputData)) / (Math.PI / 4 * Math.pow(inputData.valveDimension / 1000, 2)) / 3600) > 4) { //(0,781117*SQRT(I5-I6)*M4)/(3,14/4*(I2/1000)^2)/3600>4\n return Math.round((Math.PI / 4) * Math.pow(inputData.valveDimension / 1000, 2) * 4 * 3600); //3,14/4*(I2/1000)^2*4*3600}\n } else {\n return Math.round(0.7971 * Math.sqrt(this.calcPressureDifference(inputData)) * this.calcValveKvValue(inputData)); //0,781117*SQRT(I5-I6)*M4}\n }\n }\n\n static calcCalcedKvValue(inputData) {\n //TODO rename...\n if (this.calcValveKvValue(inputData) == null) {\n return null\n }\n return Math.round(inputData.flow / Math.sqrt(this.calcPressureDifference(inputData)))\n }\n\n static calcValveCapacity(inputData) {\n //=IF(M7=0;-10;IF(M4=\"NA\";-10;IF(2,3*I6+4100;100;M7/M4*100))))\n if (this.calcCalcedKvValue(inputData) == null || this.calcValveKvValue(inputData) == null || 2.3 * inputData.outletPressure + 4 < inputData.inletPressure) {\n return -10;\n }\n const valveCapacity = this.calcCalcedKvValue(inputData) / this.calcValveKvValue(inputData) * 100;\n if (valveCapacity > 100) {\n return 100;\n }\n return valveCapacity;\n }\n\n static calcPlugLift(inputData) {\n const vC = this.calcValveCapacity(inputData);\n const plugLift = -0.0000021507684 * Math.pow(vC, 4) + 0.000560016315 * Math.pow(vC, 3) - 0.04941995824 * Math.pow(vC, 2) + 2.492627131033 * vC;\n if (plugLift > 100) {\n return 100;\n }\n return plugLift;\n }\n\n static shouldShowAntiCavitationMessage(inputData) {\n return !(28/11 * inputData.outletPressure + 2 > inputData.inletPressure); //Cavitation line goes through points 0,2 & 5.5,16 // a=28/11 & b=2\n }\n\n static shouldShowFlowVelocityMessage(inputData) {\n return this.calcFlowVelocity(inputData) > 4;\n }\n\n static shouldShowDimensionalAreaMessage(inputData) {\n const valveCapacity = this.calcValveCapacity(inputData);\n return valveCapacity < 10 || valveCapacity > 80;\n }\n}","import React, {Component} from \"react\";\nimport {Input, InputGroup, InputGroupAddon} from \"reactstrap\";\nimport PropTypes from \"prop-types\";\n\nexport class InputField extends Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange(e) {\n this.props.onChange(e.target.value);\n }\n\n render() {\n const placeholder = this.props.placeholder;\n const unit = this.props.unit;\n const prepend = this.props.prepend;\n const isMissing = this.props.isMissing;\n let optionItems;\n if (this.props.options) {\n optionItems = this.props.options.map((option) =>\n \n );\n }\n return \n {prepend && {prepend}}\n \n {optionItems}\n \n {unit && {unit}}\n {isMissing && *}\n ;\n }\n}\n\nInputField.propTypes = {\n value: PropTypes.any,\n placeholder: PropTypes.string,\n unit: PropTypes.string,\n prepend: PropTypes.string,\n options: PropTypes.arrayOf(PropTypes.object),\n onChange: PropTypes.func,\n isMissing: PropTypes.bool\n};","export class Strings {\n static title = \"Control Valve Calculator\";\n static AVK = \"AVK\";\n static titleProjectDescription = \"Project\";\n\n static titleInput = \"Calculation input\";\n static inputValveDimension = \"DN-size\";\n static inputValveBore = \"Valve bore\";\n static inputInPressure = \"Upstream pressure\";\n static inputOutPressure = \"Downstream pressure\";\n static inputFlow = \"Dimensional flow\";\n static inputBoreReduced = \"Reduced (RB)\";\n static inputBoreFull = \"Full (FB)\";\n\n static titleValveCapacityChart = \"Valve characteristics chart\";\n static valveCapacityDimensionalArea = \"Recommended dimensional area\";\n static valveCapacityCharacteristic = \"Valve characteristic\";\n static valveCapacityX = \"% of valve capacity\";\n static valveCapacityY = \"Plug lift [%]\";\n static valveCapacityOptimalSize = \"Optimal size\\n\";\n static valveCapacityLabelPrefix = \"DN \";\n\n static titleCavitationChart = \"Cavitation chart\";\n static cavitationChartX = \"Downstream pressure [bar]\";\n static cavitationChartY = \"Upstream pressure [bar]\";\n\n static titleCalculationBlock = \"Calculation output\";\n static calculationPressureDifference = \"Differential pressure\";\n static calculationFlowVelocity = \"Flow velocity\";\n static calculationValveKv = \"Valve Kv-value\";\n static calculationMinFlow = \"Recommended dimensioning flow, minimum\";\n static calculationMaxFlow = \"Recommended maximum flow\";\n static calculationCalcedKv = \"Calculated Kv-Value\";\n\n static titleCalculationMessages = \"Calculation Messages\";\n static calculationMessageMissingInput = \"Calculation input missing\";\n static calculationMessageBadPressure = \"Upstream pressure must at any time be at least 0,3 bar higher than downstream pressure\";\n static calculationMessageAntiCav = \"Anti cav. trim or valves in series required - Consult factory\";\n static calculationMessageHighFlowVel = \"Flow velocity is above recommended limit, according to EN1074\";\n static calculationMessageDimensionalArea = \"The valve is not in the recommended dimensional area\";\n static calculationMessageFullBore = \"A valve with reduced bore is recommended to achieve a better regulation\";\n static calculationMessageOkay = \"No calculation messages\";\n\n static titleContactBlock = \"Contact information\";\n static contactPhone = \"Phone: \";\n static contactEmail = \"E-mail: \";\n\n static titleProductFinder = \"Show in product finder\";\n static titlePrint = \"Print or save calculation\";\n\n static titleSaveCalculation = \"Calculation link\";\n static qrDescription = \"Scan the QR code to open this calculation on your phone\";\n static unitPressure = \"bar\";\n static unitVelocity = \"m/s\";\n static unitKv = \"m³/hr/bar\";\n static unitFlow = \"m³/hr\";\n static unitDimension = \"[mm]\";\n static buttonAccept = \"Accept\";\n}","export class Constants {\n static avkBlue = \"#002395\";\n static selectedColor = \"#f28900\";\n static cavitationChartDangerColor = \"rgba(255,0,0,0.25)\";\n static chartFontFamily = \"'Neue Helvetica W02', 'Helvetica', 'Arial', sans-serif\";\n static opAreaMin = 10;\n static opAreaMax = 80;\n static capChartBorderColor = \"#FFF\";\n static capChartTextColor = \"#000\";\n static capChartOpAreaColor = \"grey\";\n static invisible = \"rgba(0,0,0,0)\";\n\n static REDUCED = 0;\n static FULL = 1;\n\n static defaultFlow = 0;\n static defaultInletPressure = 0;\n static defaultOutletPressure = 0;\n static defaultValveDimension = 200;\n static defaultValveBore = Constants.REDUCED;\n static defaultDescription = \"\";\n static defaultLocation = 0;\n static capChartPointRadius = 12;\n static capChartPointBorderWidth = 4;\n static capChartRatio = [1, 1];\n static cavChartRatio = [3, 2];\n static cavChartPointRadius = 6;\n static cavChartPointBorderWidth = 2;\n\n static pointVisibleProps = {\n color: Constants.avkBlue,\n borderColor: Constants.capChartBorderColor,\n textColor: Constants.capChartTextColor,\n radius: Constants.capChartPointRadius,\n borderWidth: Constants.capChartPointBorderWidth\n };\n static pointInvisibleProps = {\n color: Constants.invisible,\n borderColor: Constants.invisible,\n textColor: Constants.invisible,\n radius: 0,\n borderWidth: 0\n };\n static pointSelectedProps = {\n color: Constants.selectedColor,\n borderColor: Constants.capChartBorderColor,\n textColor: Constants.capChartTextColor,\n radius: Constants.capChartPointRadius,\n borderWidth: Constants.capChartPointBorderWidth\n };\n}","import React, {Component} from 'react';\nimport {Col, Row} from 'reactstrap';\nimport PropTypes from \"prop-types\";\nimport {Calculator} from \"./Calculator\";\nimport {InputField} from \"./InputField\";\nimport {Strings} from \"./Strings\";\nimport {Constants} from \"./Constants\";\n\nexport class InputBlock extends Component {\n\n\n constructor(props) {\n super(props);\n this.valveDimensionChange = this.valveDimensionChange.bind(this);\n this.valveBoreChange = this.valveBoreChange.bind(this);\n this.inletPressureChange = this.inletPressureChange.bind(this);\n this.outletPressureChange = this.outletPressureChange.bind(this);\n this.flowChange = this.flowChange.bind(this);\n\n this.valveBoreOptionItems = [\n {value: Constants.REDUCED, name: Strings.inputBoreReduced},\n {value: Constants.FULL, name: Strings.inputBoreFull}];\n\n this.valveDimensionOptionItems = [];\n for (const dimension in Calculator.kvValues[0]) {\n this.valveDimensionOptionItems.push({value: dimension});\n }\n }\n\n valveDimensionChange(newValue) {\n let newInputData = this.props.inputData;\n newInputData.valveDimension = Number(newValue);\n this.props.onChange(newInputData);\n }\n\n valveBoreChange(newValue) {\n let newInputData = this.props.inputData;\n if (Calculator.kvValues[newValue][newInputData.valveDimension] != null) {\n newInputData.valveBore = Number(newValue);\n }\n this.props.onChange(newInputData);\n }\n\n inletPressureChange(newValue) {\n let newInputData = this.props.inputData;\n newInputData.inletPressure = Number(newValue);\n this.props.onChange(newInputData);\n }\n\n outletPressureChange(newValue) {\n let newInputData = this.props.inputData;\n newInputData.outletPressure = Number(newValue);\n this.props.onChange(newInputData);\n }\n\n\n flowChange(newValue) {\n let newInputData = this.props.inputData;\n newInputData.flow = Number(newValue);\n this.props.onChange(newInputData);\n }\n\n checkValveDimension() {\n let newInputData = this.props.inputData;\n if (Calculator.kvValues[newInputData.valveBore][newInputData.valveDimension] == null) {\n if (newInputData.valveBore === 0) {\n newInputData.valveBore = 1;\n } else {\n newInputData.valveBore = 0;\n }\n this.props.onChange(newInputData);\n }\n }\n\n render() {\n const inputData = this.props.inputData;\n this.checkValveDimension();\n return \n \n \n \n \n \n \n \n \n \n \n \n {(!(inputData.inletPressure !== 0 && inputData.outletPressure !== 0 && inputData.flow !== 0)) &&\n \n * Missing input\n }\n ;\n }\n}\n\nInputBlock.propTypes = {\n inputData: PropTypes.shape({\n flow: PropTypes.number,\n inletPressure: PropTypes.number,\n outletPressure: PropTypes.number,\n valveDimension: PropTypes.number,\n valveBore: PropTypes.number,\n description: PropTypes.string\n }).isRequired,\n onChange: PropTypes.func\n};","import React, {Component} from 'react';\nimport {Scatter} from 'react-chartjs-2';\nimport PropTypes from 'prop-types';\nimport {Strings} from \"../Strings\";\nimport {Constants} from \"../Constants\";\n\nexport class CavitationChart extends Component {\n constructor(props) {\n super(props);\n\n this.baseDataset = [\n {\n label: \"line\",\n data: [{x: 0, y: 2}, {x: 5.5, y: 16}],\n fill: \"end\",\n pointRadius: 0,\n showLine: true,\n borderColor: Constants.avkBlue,\n backgroundColor: Constants.cavitationChartDangerColor,\n }];\n this.options = {\n events: [],\n tooltips: {\n enabled: false\n },\n defaultFontFamily: Constants.chartFontFamily,\n legend: {\n display: false\n },\n title: {\n display: false,\n text: Strings.titleCavitationChart\n },\n scales: {\n xAxes: [{\n position: 'bottom',\n scaleLabel: {\n display: true,\n labelString: Strings.cavitationChartX\n },\n ticks: {\n min: 0,\n max: 8,\n stepSize: 1\n }\n }],\n yAxes: [{\n display: true,\n scaleLabel: {\n display: true,\n labelString: Strings.cavitationChartY\n },\n ticks: {\n min: 0,\n max: 16,\n stepSize: 2,\n minor: {\n display: true\n }\n }\n }]\n },\n plugins: {\n datalabels: {\n display: false\n }\n },\n };\n }\n\n render() {\n\n let newDataset = this.baseDataset.slice(0);\n newDataset.unshift(\n {\n label: \"Cavitation point\",\n data: [{x: this.props.inputData.outletPressure, y: this.props.inputData.inletPressure}],\n pointBackgroundColor: Constants.avkBlue,\n pointBorderColor: Constants.capChartBorderColor,\n pointBorderWidth: Constants.cavChartPointBorderWidth,\n pointRadius: Constants.cavChartPointRadius,\n });\n return
\n

{Strings.titleCavitationChart}

\n
\n
\n
\n }\n}\n\nCavitationChart.propTypes = {\n inputData: PropTypes.shape({\n flow: PropTypes.number,\n inletPressure: PropTypes.number,\n outletPressure: PropTypes.number,\n valveDimension: PropTypes.number,\n valveBore: PropTypes.number,\n description: PropTypes.string\n }).isRequired\n};","import React, {Component} from \"react\";\nimport {Modal, ModalHeader, ModalBody, ModalFooter, Button} from 'reactstrap';\nimport PropTypes from \"prop-types\";\nimport {Strings} from \"./Strings\";\n\nexport class DisclaimerModal extends Component {\n render() {\n const shouldShow = !this.props.isAccepted;\n return \n Legal Notice & Disclaimer\n \n

\n Ownership
\n This application is owned by AVK Holding A/S, DK-8464 Galten, DENMARK - CVR 44782510 (company\n registration number) and has been made in accordance with Danish law.\n

\n

\n Use
\n This application is mean to provide certain information as to the activities of AVK Holding A/S, its\n subsidiaries and affiliated companies. Please read this Disclaimer and the Privacy Policy before\n using this application. By using this application you accept the terms and conditions set out below\n and consent to the Privacy Policy.\n

\n

\n Content
\n AVK Holding A/S strives to continuously update this application. However, we disclaim any and all\n liability that may ensue from errors or omissions in, or inaccessibility to, the application and may\n discontinue distributing the application without prior notice. The information on this application\n is intended for general guidance only and AVH Holding A/S shall have no liability with respect of\n calculations provided through this application. We encourage users to seek further specification\n advice through either the local AVK subsidiary or through engineering consulting services.\n

\n

\n Liability
\n Your use of this application is at your own risk. AVK Holding A/S does not warrant that the software\n used for this application, and the information, or any other services provided by means of this\n application are error-free, or that their use will be uninterrupted.\n

\n

\n DISCLAIMER
\n THE CONTENT AND CALCULATIONS PROVIDED BY THIS APPLICATION ARE PROVIDED “AS IS”. AVK HOLDING A/S\n EXPRESSLY DISCLAIMS ALL WARRANTIES RELATED TO SAID CONTENT INCLUDING, WITHOUT LIMITATION, THOSE OF\n ACCURACY, CONDITION, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. NEITHER AVK HOLDING A/S\n NOR ITS AFFILIATES SHALL BE LIABLE FOR ANY DIRECT, INCIDENTAL, CONSEQUENTIAL, INDIRECT OR PUNITIVE\n DAMAGES ARISING OUT OF ACCESS TO OR USE OF ANY CONTENT ON THIS APPLICATION INCLUDING VIRUSES, REGARDLESS OF\n THE ACCURACY OR COMPLETENESS OF ANY SUCH CONTENT.\n

\n

\n Comments
\n Any comments sent to AVK Holding A/S regarding this application become the property of AVK Holding\n A/S and may be used without limitation. Received comments will not be treated as confidential.\n

\n

\n Updates
\n AVK Holding A/S reserves the unilateral right to update, modify, change and alter its Legal Notice\n and Disclaimer and Privacy Policy at any time. All such updates, modifications, changes and alterations\n are binding on all users of this application and will be posted here.\n

\n

\n Choice of law and venue
\n This Disclaimer & Legal Notice shall be governed by Danish Law without regard to its conflict of law\n rules. Any dispute arising out of or in relation to this Legal Notice and Disclaimer and Privacy\n Policy, which cannot be solved amicably, shall be decided by the Danish Courts.\n

\n

\n Intellectual Property Rights
\n All materials on in this application and the content generated by this application is subject to\n copyright, trademark and other intellectual property rights protection under national and\n international laws. Names, signs and logos in this application are protected trademarks or trade names. Nothing\n contained in this application should be construed as granting any license or right to use any\n trademark displayed in the application without prior written permission of AVK Holding A/S.\n

\n
\n \n \n \n
\n }\n}\n\nDisclaimerModal.propTypes = {\n onAccept: PropTypes.func.isRequired,\n isAccepted: PropTypes.bool.isRequired\n};","import React, {Component} from \"react\";\nimport ContactAVKInt from \"./img/Martin_Boersting.jpg\";\nimport ContactAVKUK from \"./img/David_Hurley.png\";\nimport ContactAVKAnh from \"./img/Kevin_Ouyang.png\";\nimport ContactAVKSEA from \"./img/Dinesh_picture.png\";\nimport PropTypes from 'prop-types';\nimport {Col, Media} from \"reactstrap\";\nimport {Strings} from \"./Strings\";\n\nexport class ContactBlock extends Component {\n constructor(props) {\n super(props);\n this.contactPersons = [\n {\n name: \"Martin Børsting\",\n area: \"AVK International\",\n title: \"Product Manager, Control Valves\",\n email: \"mabo@avk.dk\",\n telephone: \"+45 21337825\",\n picture: ContactAVKInt\n },\n {\n name: \"David Hurley\",\n area: \"AVK UK\",\n title: \"Technical Sales Manager - Control Valves\",\n email: \"dahu@avkuk.co.uk\",\n telephone: \"+44 7983 706675\",\n picture: ContactAVKUK\n },\n {\n name: \"Kevin Ouyang\",\n area: \"AVK Anhui\",\n title: \"Technical Marketing Manager\",\n email: \"kevin@avkanhui.com\",\n telephone: \"+86 555 5529 726\",\n picture: ContactAVKAnh\n },\n {\n name: \"Dinesh Thiagarajah\",\n area: \"AVK South East Asia\",\n title: \"Regional Product Manager\",\n email: \"dinesh@avkvalves.com.my\",\n telephone: \"+6016 699 5473\",\n picture: ContactAVKSEA\n }\n ]\n }\n\n render() {\n const loc = this.props.location;\n const contactPerson = this.contactPersons[loc];\n\n return \n

{Strings.titleContactBlock}

\n \n \n {contactPerson.name}
\n {contactPerson.title}
\n {Strings.contactPhone}\n {contactPerson.telephone}\n
\n {Strings.contactEmail}{contactPerson.email}\n
\n \n {contactPerson.name}/\n \n
\n \n }\n}\n\nContactBlock.propTypes = {\n location: PropTypes.number.isRequired\n};","import React, {Component} from \"react\";\nimport {Col, Table} from \"reactstrap\";\nimport {Calculator} from \"./Calculator\";\nimport PropTypes from \"prop-types\";\nimport {Strings} from \"./Strings\";\n\nclass Result extends Component {\n render() {\n return \n {this.props.name}:\n {this.props.result || \"N/A\"}\n [{this.props.unit}]\n ;\n }\n}\n\nResult.propTypes = {\n name: PropTypes.string,\n result: PropTypes.node,\n unit: PropTypes.string\n};\n\nexport class CalculationBlock extends Component {\n render() {\n const pressureDifference = Math.round(Calculator.calcPressureDifference(this.props.inputData)*100)/100;\n const flowVelocity = Calculator.calcFlowVelocity(this.props.inputData);\n const valveKv = Calculator.calcValveKvValue(this.props.inputData);\n const minFlow = Calculator.calcMinRecomendedFlow(this.props.inputData);\n const maxFlow = Calculator.calcMaxRecomendedFlow(this.props.inputData);\n const calcedKv = Calculator.calcCalcedKvValue(this.props.inputData);\n \n return

{Strings.titleCalculationBlock}

\n
\n \n \n \n \n \n \n \n \n \n
\n
\n ;\n }\n}\n\nCalculationBlock.propTypes = {\n inputData: PropTypes.shape({\n flow: PropTypes.number,\n inletPressure: PropTypes.number,\n outletPressure: PropTypes.number,\n valveDimension: PropTypes.number,\n valveBore: PropTypes.number,\n description: PropTypes.string\n }).isRequired\n};","import React, {Component} from \"react\";\nimport {Calculator} from \"./Calculator\";\nimport {Col, Row} from \"reactstrap\";\nimport PropTypes from \"prop-types\";\nimport {Strings} from \"./Strings\";\nimport {Constants} from \"./Constants\";\n\nexport class CalculationMessages extends Component {\n render() {\n const inputData = this.props.inputData;\n\n const showMissingInputMessage = !(inputData.inletPressure !== 0 && inputData.outletPressure !== 0 && inputData.flow !== 0);\n const showBadPressureMessage = Calculator.calcPressureDifference(inputData) === null;\n const showAntiCavitationMessage = Calculator.shouldShowAntiCavitationMessage(inputData);\n const showFlowVelocityMessage = (Calculator.shouldShowFlowVelocityMessage(inputData));\n const showDimensionalAreaMessage = Calculator.shouldShowDimensionalAreaMessage(inputData) && !showAntiCavitationMessage;\n const showFullBoreMessage = inputData.valveBore === Constants.FULL;\n\n const showOkMessage = !(showMissingInputMessage || showBadPressureMessage || showAntiCavitationMessage || showFlowVelocityMessage || showDimensionalAreaMessage || showFullBoreMessage);\n\n return \n

{Strings.titleCalculationMessages}

\n
\n {showMissingInputMessage &&\n \n \n {Strings.calculationMessageMissingInput}\n }\n {showBadPressureMessage &&\n \n \n {Strings.calculationMessageBadPressure}\n }\n {showAntiCavitationMessage &&\n \n \n {Strings.calculationMessageAntiCav}\n }\n {showFlowVelocityMessage &&\n \n \n {Strings.calculationMessageHighFlowVel}\n }\n {showDimensionalAreaMessage &&\n \n \n {Strings.calculationMessageDimensionalArea}\n }\n {showFullBoreMessage &&\n \n \n {Strings.calculationMessageFullBore}\n }\n {showOkMessage &&\n \n \n {Strings.calculationMessageOkay}\n }\n
\n \n }\n}\n\nCalculationMessages.propTypes = {\n inputData: PropTypes.shape({\n flow: PropTypes.number,\n inletPressure: PropTypes.number,\n outletPressure: PropTypes.number,\n valveDimension: PropTypes.number,\n valveBore: PropTypes.number,\n description: PropTypes.string\n }).isRequired\n};","import React, {Component} from \"react\";\nimport {Col} from \"reactstrap\";\nimport PropTypes from \"prop-types\";\nimport SearchIcon from \"./img/search.svg\"\nimport {Calculator} from \"./Calculator\";\nimport {Strings} from \"./Strings\";\n\nexport class ProductFinder extends Component {\n constructor(props) {\n super(props);\n this.productFinders = [\n [\"https://www.avkvalves.eu/en/product-finder/control-valves/control-valves-pilot-operated/859-000X-001\", \"https://www.avkvalves.eu/en/product-finder/control-valves/control-valves-pilot-operated/859-100X-001\"],\n [\"https://www.avkuk.co.uk/en-gb/product-finder/pressure-and-flow-control-valves/control-valves-pilot-operated/859-020X-001\", \"https://www.avkuk.co.uk/en-gb/product-finder/pressure-and-flow-control-valves/control-valves-pilot-operated/859-120X-001 \"],\n [\"http://www.avkchina.com/en/products/productfinder/details?STVId=859/000X-001\", \"http://www.avkchina.com/en/products/productfinder/details?STVId=859/000X-001\"],\n [\"http://www.avkchina.com/en/products/productfinder/details?STVId=859/000X-001\", \"http://www.avkchina.com/en/products/productfinder/details?STVId=859/000X-001\"],\n ];\n }\n\n render() {\n const location = this.props.location;\n const valveBore = this.props.inputData.valveBore;\n const link = this.productFinders[location][valveBore];\n const disabled = Calculator.shouldShowAntiCavitationMessage(this.props.inputData);\n const productFinderClass = (disabled ? (\"productFinder-disabled\") : (\"productFinder\"));\n return \n \n \n \"\"\n

{Strings.titleProductFinder}

\n \n
\n }\n}\n\nProductFinder.propTypes = {\n inputData: PropTypes.shape({\n flow: PropTypes.number,\n inletPressure: PropTypes.number,\n outletPressure: PropTypes.number,\n valveDimension: PropTypes.number,\n valveBore: PropTypes.number,\n description: PropTypes.string\n }).isRequired,\n location: PropTypes.number.isRequired\n};","import React, {Component} from \"react\";\nimport {Col} from \"reactstrap\";\n\nexport class VersionBlock extends Component {\n render() {\n const versionName = process.env.REACT_APP_VERSION_NAME;\n const versionCode = process.env.REACT_APP_VERSION_CODE;\n const shouldShow = versionName && versionCode;\n const versionString = versionName + \" (\" + versionCode + \")\";\n return {shouldShow && versionString}\n }\n}","import React, {Component} from \"react\";\nimport {Col} from \"reactstrap\";\nimport {Strings} from \"./Strings\";\n\nexport class PrintButton extends Component {\n constructor(props) {\n super(props);\n this.buttonClicked = this.buttonClicked.bind(this);\n }\n\n buttonClicked(e) {\n e.preventDefault();\n window.print();\n }\n\n render() {\n return \n \n
\n

{Strings.titlePrint}

\n
\n
\n }\n}","import React, {Component} from \"react\";\nimport {Row, Col} from 'reactstrap';\nimport {Calculator} from \"../Calculator\";\nimport {Scatter} from \"react-chartjs-2\";\nimport PropTypes from \"prop-types\";\nimport 'chartjs-plugin-datalabels';\nimport {Strings} from \"../Strings\";\nimport {Constants} from \"../Constants\";\n\nexport class ValveCapacityChart extends Component {\n constructor(props) {\n super(props);\n\n this.generateAlternatives = this.generateAlternatives.bind(this);\n this.chartClicked = this.chartClicked.bind(this);\n\n this.valveDimensions = [];\n for (const dimension in Calculator.kvValues[0]) {\n this.valveDimensions.push(dimension);\n }\n\n let capacityLiftData = [];\n let i;\n for (i = 0; i <= 100; i++) {\n //From excel doc: = -0,0000021507684*V20^4 + 0,000560016315*V20^3 - 0,04941995824*V20^2 + 2,492627131033*V20\n capacityLiftData[i] = {\n x: i,\n y: -0.0000021507684 * Math.pow(i, 4) + 0.000560016315 * Math.pow(i, 3) - 0.04941995824 * Math.pow(i, 2) + 2.492627131033 * i\n }\n }\n this.baseDataset = [\n {\n label: Strings.valveCapacityCharacteristic,\n data: capacityLiftData,\n fill: false,\n pointRadius: 0,\n showLine: true,\n borderColor: Constants.avkBlue,\n backgroundColor: Constants.invisible,\n pointStyle: \"line\",\n },\n {\n label: Strings.valveCapacityDimensionalArea,\n data: [{x: Constants.opAreaMin, y: 101}, {x: Constants.opAreaMin, y: -1},\n {x: Constants.opAreaMax, y: -1}, {x: Constants.opAreaMax, y: 101}],\n fill: false,\n pointRadius: 0,\n showLine: true,\n borderDash: [5, 5],\n borderColor: Constants.capChartOpAreaColor,\n lineTension: 0,\n backgroundColor: Constants.invisible,\n pointStyle: \"line\",\n }\n ];\n this.options = {\n events: [],\n tooltips: {\n enabled: false\n },\n defaultFontFamily: Constants.chartFontFamily,\n legend: {\n display: true,\n position: \"bottom\",\n labels: {\n usePointStyle: true,\n filter: function (item, chart) {\n if (!item.text) {\n return false;\n }\n return !item.text.includes('hide');\n }\n },\n\n },\n title: {\n display: false,\n text: Strings.titleValveCapacityChart\n },\n scales: {\n xAxes: [{\n position: 'bottom',\n scaleLabel: {\n display: true,\n labelString: Strings.valveCapacityX\n },\n ticks: {\n min: 0,\n max: 100,\n stepSize: 10\n }\n }],\n yAxes: [{\n display: true,\n scaleLabel: {\n display: true,\n labelString: Strings.valveCapacityY\n },\n ticks: {\n min: 0,\n max: 100,\n stepSize: 10,\n minor: {\n display: true\n }\n }\n }]\n },\n plugins: {\n datalabels: {\n display: false,\n align: 'end',\n anchor: 'end',\n textAlign: \"center\",\n }\n },\n };\n }\n\n generateAlternatives() {\n const inputData = this.props.inputData;\n const hideAll = Calculator.calcPressureDifference(inputData) === null;\n let alternatives = [];\n\n for (let i = 0; i < this.valveDimensions.length; i++) {\n let newInputData = Object.assign({}, inputData);\n newInputData.valveDimension = this.valveDimensions[i];\n\n if (Calculator.kvValues[newInputData.valveBore][newInputData.valveDimension] != null) {\n alternatives.push(this.newPoint(newInputData, true));\n }\n\n newInputData.valveBore = (inputData.valveBore === Constants.REDUCED) ? Constants.FULL : Constants.REDUCED;\n if (Calculator.kvValues[newInputData.valveBore][newInputData.valveDimension] != null) {\n alternatives.push(this.newPoint(newInputData, false));\n }\n }\n\n alternatives.sort(\n function (a, b) {\n return (a.key + a.bore) - (b.key + b.bore);\n }\n );\n\n let selectedOptimal = {x: 0};\n\n for (let key in alternatives) {\n if (alternatives[key].x < Constants.opAreaMin || alternatives[key].x > Constants.opAreaMax || alternatives[key].hasWarnings || hideAll) {\n alternatives[key].visible = false;\n }\n\n if (alternatives[key].x > selectedOptimal.x && alternatives[key].x < Constants.opAreaMax && alternatives[key].visible) {\n selectedOptimal = alternatives[key];\n }\n\n if (alternatives[key].key === inputData.valveDimension && alternatives[key].bore === inputData.valveBore && !hideAll) {\n alternatives[key].selected = true;\n }\n }\n selectedOptimal.label = Strings.valveCapacityOptimalSize + selectedOptimal.label;\n\n return alternatives;\n }\n\n newPoint(newInputData, isVisible) {\n return {\n x: Calculator.calcValveCapacity(newInputData),\n y: Calculator.calcPlugLift(newInputData),\n label: Strings.valveCapacityLabelPrefix + newInputData.valveDimension,\n selected: false,\n key: Number(newInputData.valveDimension),\n bore: Number(newInputData.valveBore),\n visible: isVisible,\n hasWarnings: Calculator.shouldShowFlowVelocityMessage(newInputData)\n };\n }\n\n render() {\n let newDataset = this.baseDataset.slice(0);\n this.alternatives = this.generateAlternatives();\n\n let pointColors = [];\n let pointBorderColors = [];\n let pointTextColors = [];\n let pointRadius = [];\n let pointBorderWidths = [];\n\n for (let key in this.alternatives) {\n let pointProperties = Constants.pointInvisibleProps;\n if (this.alternatives[key].visible) {\n pointProperties = Constants.pointVisibleProps;\n }\n if (this.alternatives[key].selected) {\n pointProperties = Constants.pointSelectedProps;\n }\n\n pointColors.push(pointProperties.color);\n pointBorderColors.push(pointProperties.borderColor);\n pointTextColors.push(pointProperties.textColor);\n pointRadius.push(pointProperties.radius);\n pointBorderWidths.push(pointProperties.borderWidth);\n }\n\n newDataset.unshift(\n {\n label: \"Possibilities hide\",\n data: this.alternatives,\n pointBackgroundColor: pointColors,\n pointBorderColor: pointBorderColors,\n pointBorderWidth: pointBorderWidths,\n pointRadius: pointRadius,\n hitRadius: 0,\n datalabels: {\n display: true,\n color: pointTextColors\n }\n });\n\n return \n
\n \n

Valve capacity chart

\n
\n \n \n
\n \n
\n
\n
\n \n }\n\n chartClicked(elems) {\n if (elems.length > 0) {\n for (let key in elems) {\n if (this.alternatives[elems[key]._index].visible) {\n const inputData = this.props.inputData;\n inputData.valveDimension = this.alternatives[elems[key]._index].key;\n inputData.valveBore = this.alternatives[elems[key]._index].bore;\n this.props.onChange(inputData);\n break;\n }\n }\n }\n }\n}\n\nValveCapacityChart.propTypes = {\n inputData: PropTypes.shape({\n flow: PropTypes.number,\n inletPressure: PropTypes.number,\n outletPressure: PropTypes.number,\n valveDimension: PropTypes.number,\n valveBore: PropTypes.number,\n description: PropTypes.string\n }).isRequired,\n onChange: PropTypes.func.isRequired\n};","import React, {Component} from \"react\";\nimport {Col} from \"reactstrap\";\nimport QRCode from \"qrcode.react\";\nimport {Strings} from \"./Strings\";\n\nexport class LinkQR extends Component {\n render() {\n return \n
\n

{Strings.qrDescription}

\n \n
\n ;\n }\n}","import React, {Component} from \"react\";\nimport {Col} from \"reactstrap\";\n\nexport class LongLink extends Component {\n render() {\n return \n
\n {window.location.href}\n
\n ;\n }\n}","import React, {Component} from \"react\";\nimport autosize from \"autosize\";\nimport {Col} from \"reactstrap\";\nimport PropTypes from \"prop-types\";\nimport {Strings} from \"./Strings\";\n\nexport class DescriptionBox extends Component {\n constructor(props) {\n super(props);\n\n let date = new Date();\n let day = date.getDate();\n if (day < 10) {\n day = \"0\" + day;\n }\n let month = date.getMonth() + 1;\n if (month < 10) {\n month = \"0\" + month;\n }\n let year = date.getFullYear();\n this.dateString = day + \"-\" + month + \"-\" + year;\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n componentDidMount() {\n this.textarea.focus();\n autosize(this.textarea);\n }\n\n\n handleChange(e) {\n let newInputData = this.props.inputData;\n newInputData.description = e.target.value;\n this.props.onChange(newInputData);\n }\n\n\n render() {\n return \n
\n

{Strings.titleProjectDescription}

\n