{"version":3,"file":"GaugeWidget.mjs","names":["React","Vega","PropTypes","GaugeWidget","props","$","_c","title","t0","unitLabel","t1","legend","t2","showTicks","t3","ticksNumber","t4","backgroundColor","t5","fillColor","t6","value","t7","minValue","t8","maxValue","t9","handleHover","t10","undefined","_temp","t11","Symbol","for","left","right","top","bottom","t12","t13","t14","t15","t16","t17","name","transform","type","as","start","signal","stop","step","expr","update","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","t35","t36","t37","t38","data","field","t39","domain","zero","range","t40","t41","t42","t43","t44","encode","enter","x","y","startAngle","endAngle","outerRadius","innerRadius","fill","t45","scale","t46","description","from","stroke","opacity","t47","align","baseline","text","fontSize","t48","t49","t50","t51","t52","offset","t53","t54","t55","t56","t57","t58","t59","t60","t61","t62","t63","t64","t65","t66","t67","t68","$schema","width","height","padding","signals","scales","axes","legends","marks","specs","t69","hover","signalListeners","t70","propTypes","string","isRequired","bool","number"],"sources":["../../../../../src/UI/widgets/library/GaugeWidget/GaugeWidget.jsx"],"sourcesContent":["import React from 'react';\nimport { Vega } from 'react-vega';\nimport PropTypes from 'prop-types';\n\nexport const GaugeWidget = (props) => {\n  const {\n    title = '',\n    unitLabel = '',\n    legend = '',\n    showTicks = false,\n    ticksNumber = 6,\n    backgroundColor = '#cbd1d6',\n    fillColor = '#FF9800',\n    value = 0,\n    minValue = 0,\n    maxValue = 100,\n    handleHover = () => {}\n  } = props;\n\n  const specs = {\n    $schema: 'https://vega.github.io/schema/vega/v5.json',\n    width: 350,\n    height: 180,\n    padding: { left: 0, right: 0, top: 0, bottom: 0 },\n\n    data: [\n      {\n        name: 'ticks',\n        transform: [\n          {\n            type: 'sequence',\n            as: 'data',\n            start: {\n              signal: '0'\n            },\n            stop: {\n              signal: '(maxValue - minValue) + 0.1'\n            },\n            step: {\n              signal: '(maxValue - minValue)/(ticksNumber-1)'\n            }\n          },\n          {\n            type: 'formula',\n            expr: 'datum.data + minValue',\n            as: 'data_2'\n          },\n          {\n            type: 'formula',\n            as: 'radianRef',\n            expr: 'PI * (datum.data/(maxValue - minValue))'\n          },\n          {\n            type: 'formula',\n            as: 'x',\n            expr: 'centerX - ((outerRadius - (outerRadius - innerRadius) * 0.6) * cos(datum.radianRef))'\n          },\n          {\n            type: 'formula',\n            as: 'y',\n            expr: 'centerY - ((outerRadius - (outerRadius - innerRadius) * 0.7) * sin(datum.radianRef))'\n          }\n        ]\n      }\n    ],\n    signals: [\n      {\n        name: 'centerX',\n        update: 'width/2'\n      },\n      {\n        name: 'centerY',\n        update: 'height/2 + outerRadius/2'\n      },\n      {\n        name: 'outerRadius',\n        update: 'targetValue ? radiusRef * 0.9 : radiusRef * 0.95'\n      },\n      {\n        name: 'radiusRef',\n        update: 'max(width/2, height/2)' // TODO: Important max or min functions are allowed\n      },\n      {\n        name: 'innerRadius',\n        update: 'outerRadius - outerRadius * 0.25'\n      },\n      {\n        name: 'targetValue',\n        value: value\n      },\n      {\n        name: 'backgroundColor',\n        value: backgroundColor\n      },\n      {\n        name: 'ticksNumber',\n        value: ticksNumber\n      },\n      {\n        name: 'mainValue',\n        value: value\n      },\n      {\n        name: 'title',\n        value: title\n      },\n      {\n        name: 'unit',\n        value: unitLabel\n      },\n      {\n        name: 'usedValue',\n        update: 'min(max(minValue, mainValue), maxValue)'\n      },\n      {\n        name: 'minValue',\n        value: minValue\n      },\n      {\n        name: 'maxValue',\n        value: maxValue\n      },\n      {\n        name: 'fillColor',\n        value: fillColor\n      },\n      {\n        name: 'ticksColor',\n        value: '#000000'\n      },\n      {\n        name: 'showTicks',\n        value: showTicks\n      },\n      {\n        name: 'fontFactor',\n        update: '(radiusRef/5)/25'\n      },\n      {\n        name: 'hasTarget',\n        update: 'isNumber(targetValue) === true'\n      },\n      {\n        name: 'targetRule',\n        update:\n          '(showTarget && hasTarget && (minValue <= targetValue) && (targetValue <= maxValue)) ? 1 : 0'\n      },\n      {\n        name: 'showTarget',\n        value: true\n      },\n      {\n        name: 'targetStatus',\n        update:\n          'mainValue === targetValue ? 0 : mainValue > targetValue ? lowIsGood ? -1 : 1 : lowIsGood ? 1 : -1'\n      },\n      {\n        name: 'lowIsGood',\n        value: false\n      },\n      {\n        name: 'legend',\n        value: legend\n      }\n    ],\n    scales: [\n      {\n        name: 'gaugeScale',\n        type: 'linear',\n        domain: { data: 'ticks', field: 'data_2' },\n        zero: false,\n        range: { signal: '[-PI/2, PI/2]' }\n      },\n      {\n        name: 'tickScale',\n        type: 'linear',\n        domain: { data: 'ticks', field: 'data' },\n        range: { signal: '[PI/2, -PI/2]' }\n      },\n      {\n        name: 'targetStatusColorScale',\n        domain: [-1, 0, 1],\n        range: ['red', 'orange', 'green']\n      }\n    ],\n\n    axes: [],\n    legends: [],\n\n    marks: [\n      {\n        type: 'arc',\n        name: 'gauge',\n        encode: {\n          enter: {\n            x: { signal: 'centerX' },\n            y: { signal: 'centerY' },\n            startAngle: { signal: '-PI/2' },\n            endAngle: { signal: 'PI/2' },\n            outerRadius: { signal: 'outerRadius' },\n            innerRadius: { signal: 'innerRadius' },\n            fill: { signal: 'backgroundColor' }\n          }\n        }\n      },\n      {\n        type: 'arc',\n        encode: {\n          enter: {\n            startAngle: { signal: '-PI/2' }\n          },\n          update: {\n            x: { signal: 'centerX' },\n            y: { signal: 'centerY' },\n            innerRadius: { signal: 'innerRadius' },\n            outerRadius: { signal: 'outerRadius' },\n            endAngle: { scale: 'gaugeScale', signal: 'usedValue' },\n            fill: { signal: 'fillColor' }\n          }\n        }\n      },\n      {\n        type: 'arc',\n        description: 'ticks on the arc',\n        from: { data: 'ticks' },\n        encode: {\n          enter: {\n            x: { signal: 'centerX' },\n            y: { signal: 'centerY' },\n            outerRadius: { signal: 'outerRadius' },\n            innerRadius: { signal: 'outerRadius - (radiusRef*0.05)' },\n            startAngle: {\n              scale: 'tickScale',\n              field: 'data'\n            },\n            endAngle: {\n              scale: 'tickScale',\n              field: 'data'\n            },\n            stroke: { signal: 'ticksColor' },\n            opacity: { signal: 'showTicks ? 1 : 0' }\n          }\n        }\n      },\n      {\n        type: 'text',\n        from: { data: 'ticks' },\n        encode: {\n          enter: {\n            align: { value: 'center' },\n            baseline: { value: 'alphabetic' }\n          },\n          update: {\n            text: { signal: \"format(datum.data_2, '.0f')\" },\n            x: { field: 'x' },\n            y: { field: 'y' },\n            fontSize: { signal: 'fontFactor* 11' },\n            fill: { signal: 'ticksColor' },\n            opacity: { signal: 'showTicks ? 1 : 0' }\n          }\n        }\n      },\n      {\n        type: 'text',\n        description:\n          'displayed min value at the bottom left of gauge when showTicks is false',\n        from: { data: 'gauge' },\n        encode: {\n          enter: {\n            align: { value: 'center' },\n            baseline: { value: 'top' }\n          },\n          update: {\n            text: { signal: 'minValue' },\n            x: {\n              signal: 'centerX - outerRadius + (outerRadius - innerRadius)/2'\n            },\n            y: { signal: 'centerY', offset: { signal: 'fontFactor*5' } },\n            fontSize: { signal: 'fontFactor * 11' },\n            opacity: { signal: 'showTicks ? 0 : 1' }\n          }\n        }\n      },\n      {\n        type: 'text',\n        description:\n          'displayed max value at the bottom right of gauge when showTicks is false',\n        from: { data: 'gauge' },\n        encode: {\n          enter: {\n            align: { value: 'center' },\n            baseline: { value: 'top' }\n          },\n          update: {\n            text: { signal: 'maxValue' },\n            x: {\n              signal: 'centerX + innerRadius + (outerRadius - innerRadius)/2'\n            },\n            y: { signal: 'centerY', offset: { signal: 'fontFactor*5' } },\n            fontSize: { signal: 'fontFactor * 11' },\n            opacity: { signal: 'showTicks ? 0 : 1' }\n          }\n        }\n      },\n      {\n        type: 'text',\n        description: 'displayed a title for the chart ',\n        name: 'titleLabel',\n        encode: {\n          enter: {\n            x: { signal: 'centerX' },\n            baseline: { value: 'top' },\n            align: { value: 'center' }\n          },\n          update: {\n            text: { signal: 'title' },\n            y: { signal: 'centerY', offset: { signal: 'fontFactor * -50' } },\n            fontSize: { signal: 'fontFactor * 14' },\n            fill: { signal: 'fillColor' }\n          }\n        }\n      },\n      {\n        type: 'text',\n        description: 'displayed main value at the bottom center of the gauge ',\n        name: 'gaugeValue',\n        encode: {\n          enter: {\n            x: { signal: 'centerX' },\n            baseline: { value: 'top' },\n            align: { value: 'center' }\n          },\n          update: {\n            text: { signal: \"format(mainValue, '.1f') + unit \" },\n            y: { signal: 'centerY', offset: { signal: 'fontFactor * -25' } },\n            fontSize: { signal: 'fontFactor * 20' }\n          }\n        }\n      },\n      {\n        type: 'text',\n        name: 'targetDiff',\n        description: 'add status with symbol and difference and percentage',\n        from: { data: 'gaugeValue' },\n        encode: {\n          enter: {\n            x: { signal: 'centerX' },\n            align: { value: 'center' },\n            baseline: { value: 'top' }\n          },\n          update: {\n            // text: { \"signal\": \"format((mainValue - targetValue), '.2f') + ' (' + format(mainValue/targetValue, '.0%') + ')'\" },\n            // fill: { \"signal\": \"targetStatus\", \"scale\": \"targetStatusColorScale\" },\n            // x: { \"signal\": \"centerX + (fontFactor * 12)\" },\n            text: { signal: 'legend' },\n            y: { signal: 'centerY', offset: { signal: 'fontFactor * -4' } },\n            fontSize: { signal: 'fontFactor * 10' },\n            opacity: { signal: ' targetRule ? 1 : 0' }\n          }\n        }\n      }\n    ]\n  };\n\n  const signalListeners = { hover: handleHover };\n\n  return (\n    <Vega spec={specs} actions={false} signalListeners={signalListeners} />\n  );\n};\n\nGaugeWidget.propTypes = {\n  /** @type {?string} label showed in the bottom part of the graph */\n  title: PropTypes.string.isRequired,\n\n  /** @type {?string} optional symbol to put at the right side of the value */\n  legend: PropTypes.string,\n\n  /** @type {?bool} optional icon to display ticks in the graph */\n  showTicks: PropTypes.bool,\n\n  /** @type {?string} optional additional css properties */\n  unitLabel: PropTypes.string,\n\n  /** @type {?number}  number of ticks in the graph */\n  ticksNumber: PropTypes.number,\n\n  /** @type {?string} render prop if you want to pass a custom react element instead of the predefined label*/\n  backgroundColor: PropTypes.string,\n\n  /** @type {?number} main value for the graph element*/\n  value: PropTypes.number.isRequired,\n\n  /** @type {?number} range min value for the graph element*/\n  minValue: PropTypes.number,\n\n  /** @type {?number} range max value for the graph element*/\n  maxValue: PropTypes.number\n};\n"],"mappings":"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"}