{
  "Name": "Line Chart — Standard",
  "Code": "(function() {\r\n  var container = document.getElementById(w.general.renderTo);\r\n  var props = w.props || {};\r\n  var items = w.data?.primaryData?.items || [];\r\n  \r\n  if (!items.length) {\r\n    container.innerHTML = '<div style=\"display:flex;align-items:center;justify-content:center;height:100%;color:#999;\">Нет данных</div>';\r\n    return;\r\n  }\r\n  \r\n  // Очистка предыдущего графика\r\n  var existingChart = echarts.getInstanceByDom(container);\r\n  if (existingChart) existingChart.dispose();\r\n  \r\n  // ===== СВОЙСТВА ЛИНИЙ =====\r\n  var showPreviousYear = props.showPreviousYear !== false;\r\n  var showLastDelta = props.showLastDelta !== false;\r\n  var showValueLabels = props.showValueLabels === true;\r\n  var actualLineColor = props.actualLineColor || '#000000';\r\n  var previousYearLineColor = props.previousYearLineColor || '#888888';\r\n  var positiveDeltaColor = props.positiveDeltaColor || '#4CAF50';\r\n  var negativeDeltaColor = props.negativeDeltaColor || '#F44336';\r\n  \r\n  // ===== СВОЙСТВА ЛЕГЕНДЫ =====\r\n  var showLegend = props.showLegend !== false;\r\n  var legendHorizontal = props.legendHorizontal || 'right';\r\n  var legendVertical = props.legendVertical || 'top';\r\n  \r\n  // ===== СВОЙСТВА ОСИ X =====\r\n  var showAxisX = props.showAxisX !== false;\r\n  var showAxisXLabels = props.showAxisXLabels !== false;\r\n  var axisXLabelColor = props.axisXLabelColor || '#666666';\r\n  var showGridX = props.showGridX === true;\r\n  var gridXType = props.gridXType || 'dashed';\r\n  var gridXColor = props.gridXColor || '#e0e0e0';\r\n  var fixedLineX = props.fixedLineX || '';\r\n  var fixedLineXColor = props.fixedLineXColor || '#FF5722';\r\n  \r\n  // ===== СВОЙСТВА ОСИ Y =====\r\n  var showAxisY = props.showAxisY !== false;\r\n  var showAxisYLabels = props.showAxisYLabels !== false;\r\n  var axisYLabelColor = props.axisYLabelColor || '#666666';\r\n  var showGridY = props.showGridY !== false;\r\n  var gridYType = props.gridYType || 'dashed';\r\n  var gridYColor = props.gridYColor || '#f0f0f0';\r\n  var fixedLineY = props.fixedLineY || '';\r\n  var fixedLineYColor = props.fixedLineYColor || '#2196F3';\r\n  \r\n  // ===== СВОЙСТВА ПОДПИСЕЙ =====\r\n  var valueLabelColorAC = props.valueLabelColorAC || '#333333';\r\n  var valueLabelColorPY = props.valueLabelColorPY || '#888888';\r\n  \r\n  // ===== ГРУППИРОВКА ДАННЫХ ПО ГОДАМ =====\r\n  var dataByYear = {};\r\n  var allPeriods = [];\r\n  var years = [];\r\n  \r\n  items.forEach(function(item) {\r\n    var period = item.keys[0];\r\n    var year = item.keys[1];\r\n    var value = item.values[0];\r\n    \r\n    if (!dataByYear[year]) {\r\n      dataByYear[year] = {};\r\n      years.push(year);\r\n    }\r\n    dataByYear[year][period] = value;\r\n    \r\n    if (allPeriods.indexOf(period) === -1) {\r\n      allPeriods.push(period);\r\n    }\r\n  });\r\n  \r\n  years.sort(function(a, b) { return parseInt(a) - parseInt(b); });\r\n  \r\n  var currentYear = years[years.length - 1];\r\n  var previousYear = years.length > 1 ? years[years.length - 2] : null;\r\n  \r\n  var currentYearData = dataByYear[currentYear] || {};\r\n  var previousYearData = previousYear ? (dataByYear[previousYear] || {}) : {};\r\n  \r\n  var currentValues = allPeriods.map(function(p) { return currentYearData[p] || null; });\r\n  var previousValues = allPeriods.map(function(p) { return previousYearData[p] || null; });\r\n  \r\n  // ===== РАСЧЁТ ΔLast =====\r\n  var lastIdx = currentValues.length - 1;\r\n  var prevIdx = lastIdx - 1;\r\n  var deltaLast = null;\r\n  var deltaLastPercent = null;\r\n  var lastValue = currentValues[lastIdx];\r\n  var prevValue = currentValues[prevIdx];\r\n  \r\n  if (lastValue !== null && prevValue !== null && prevValue !== 0) {\r\n    deltaLast = lastValue - prevValue;\r\n    deltaLastPercent = ((lastValue - prevValue) / prevValue * 100);\r\n  }\r\n  \r\n  // ===== ПОДГОТОВКА СЕРИЙ =====\r\n  var series = [];\r\n  \r\n  // Линия текущего года (AC)\r\n  series.push({\r\n    name: currentYear + ' (AC)',\r\n    type: 'line',\r\n    data: currentValues,\r\n    symbol: 'circle',\r\n    symbolSize: 8,\r\n    lineStyle: {\r\n      color: actualLineColor,\r\n      width: 2\r\n    },\r\n    itemStyle: {\r\n      color: actualLineColor,\r\n      borderColor: actualLineColor,\r\n      borderWidth: 2\r\n    },\r\n    label: {\r\n      show: showValueLabels,\r\n      position: 'top',\r\n      fontSize: 9,\r\n      color: valueLabelColorAC,\r\n      fontWeight: 'bold',\r\n      distance: 5,\r\n      formatter: function(params) {\r\n        if (params.value === null || params.value === undefined) return '';\r\n        return params.value % 1 === 0 ? params.value.toString() : params.value.toFixed(1);\r\n      }\r\n    },\r\n    z: 10\r\n  });\r\n  \r\n  // Линия предыдущего года (PY)\r\n  if (showPreviousYear && previousYear) {\r\n    series.push({\r\n      name: previousYear + ' (PY)',\r\n      type: 'line',\r\n      data: previousValues,\r\n      symbol: 'circle',\r\n      symbolSize: 6,\r\n      lineStyle: {\r\n        color: previousYearLineColor,\r\n        width: 1.5\r\n      },\r\n      itemStyle: {\r\n        color: previousYearLineColor,\r\n        borderColor: previousYearLineColor,\r\n        borderWidth: 1\r\n      },\r\n      label: {\r\n        show: showValueLabels,\r\n        position: 'bottom',\r\n        fontSize: 8,\r\n        color: valueLabelColorPY,\r\n        distance: 5,\r\n        formatter: function(params) {\r\n          if (params.value === null || params.value === undefined) return '';\r\n          return params.value % 1 === 0 ? params.value.toString() : params.value.toFixed(1);\r\n        }\r\n      },\r\n      z: 5\r\n    });\r\n  }\r\n  \r\n  // Вертикальные разделительные линии (IBCS стиль)\r\n  var markLines = allPeriods.map(function(period, idx) {\r\n    return {\r\n      xAxis: idx,\r\n      lineStyle: {\r\n        color: '#e0e0e0',\r\n        type: 'solid',\r\n        width: 1\r\n      }\r\n    };\r\n  });\r\n  \r\n  series[0].markLine = {\r\n    silent: true,\r\n    symbol: 'none',\r\n    label: { show: false },\r\n    data: markLines\r\n  };\r\n  \r\n  // ===== ФИКСИРОВАННЫЕ ЛИНИИ =====\r\n  // Фиксированная линия по Y\r\n  if (fixedLineY && !isNaN(parseFloat(fixedLineY))) {\r\n    var fixedYValue = parseFloat(fixedLineY);\r\n    series.push({\r\n      name: 'Fixed Line Y',\r\n      type: 'line',\r\n      data: [],\r\n      markLine: {\r\n        silent: true,\r\n        symbol: 'none',\r\n        label: {\r\n          show: true,\r\n          position: 'end',\r\n          formatter: fixedYValue.toString(),\r\n          color: fixedLineYColor,\r\n          fontSize: 10\r\n        },\r\n        lineStyle: {\r\n          color: fixedLineYColor,\r\n          width: 2,\r\n          type: 'solid'\r\n        },\r\n        data: [{ yAxis: fixedYValue }]\r\n      }\r\n    });\r\n  }\r\n  \r\n  // Фиксированная линия по X (индекс периода)\r\n  if (fixedLineX && fixedLineX.trim() !== '') {\r\n    var fixedXIdx = allPeriods.indexOf(fixedLineX.trim());\r\n    if (fixedXIdx === -1) {\r\n      fixedXIdx = parseInt(fixedLineX);\r\n    }\r\n    if (!isNaN(fixedXIdx) && fixedXIdx >= 0 && fixedXIdx < allPeriods.length) {\r\n      series.push({\r\n        name: 'Fixed Line X',\r\n        type: 'line',\r\n        data: [],\r\n        markLine: {\r\n          silent: true,\r\n          symbol: 'none',\r\n          label: {\r\n            show: true,\r\n            position: 'end',\r\n            formatter: allPeriods[fixedXIdx] || fixedLineX,\r\n            color: fixedLineXColor,\r\n            fontSize: 10\r\n          },\r\n          lineStyle: {\r\n            color: fixedLineXColor,\r\n            width: 2,\r\n            type: 'solid'\r\n          },\r\n          data: [{ xAxis: fixedXIdx }]\r\n        }\r\n      });\r\n    }\r\n  }\r\n  \r\n  // ===== ИНДИКАТОР ИЗМЕНЕНИЯ (ΔLast) =====\r\n  if (showLastDelta && deltaLast !== null) {\r\n    var deltaColor = deltaLast >= 0 ? positiveDeltaColor : negativeDeltaColor;\r\n    var deltaSign = deltaLast >= 0 ? '+' : '';\r\n    \r\n    // Розовая область выделения периода сравнения\r\n    series.push({\r\n      name: 'Delta Area',\r\n      type: 'line',\r\n      data: [],\r\n      markArea: {\r\n        silent: true,\r\n        itemStyle: {\r\n          color: 'rgba(128, 128, 128, 0.15)'\r\n        },\r\n        data: [[\r\n          { xAxis: prevIdx - 0.4 },\r\n          { xAxis: lastIdx + 0.4 }\r\n        ]]\r\n      }\r\n    });\r\n    \r\n    // Вертикальная линия-индикатор справа\r\n    var indicatorX = lastIdx + 0.6;\r\n    var minY = Math.min(prevValue, lastValue);\r\n    var maxY = Math.max(prevValue, lastValue);\r\n    \r\n    series.push({\r\n      name: 'Delta Indicator Line',\r\n      type: 'line',\r\n      data: [],\r\n      markLine: {\r\n        silent: true,\r\n        symbol: ['none', 'none'],\r\n        label: { show: false },\r\n        data: [\r\n          [{\r\n            coord: [lastIdx, lastValue],\r\n            lineStyle: { color: '#999', width: 1, type: 'dashed' }\r\n          }, {\r\n            coord: [indicatorX + 0.15, lastValue]\r\n          }]\r\n        ]\r\n      }\r\n    });\r\n    \r\n    // Вертикальная полоса индикатора\r\n    series.push({\r\n      name: 'Delta Bar',\r\n      type: 'custom',\r\n      renderItem: function(params, api) {\r\n        var yMin = api.coord([0, minY]);\r\n        var yMax = api.coord([0, maxY]);\r\n        var xPos = api.coord([indicatorX, 0]);\r\n        \r\n        return {\r\n          type: 'group',\r\n          children: [\r\n            {\r\n              type: 'rect',\r\n              shape: {\r\n                x: xPos[0] + 5,\r\n                y: yMax[1],\r\n                width: 8,\r\n                height: yMin[1] - yMax[1]\r\n              },\r\n              style: {\r\n                fill: deltaColor\r\n              }\r\n            }\r\n          ]\r\n        };\r\n      },\r\n      data: [0]\r\n    });\r\n    \r\n    // Текстовая метка с процентом\r\n    series.push({\r\n      name: 'Delta Label',\r\n      type: 'line',\r\n      data: [],\r\n      markPoint: {\r\n        symbol: 'roundRect',\r\n        symbolSize: [55, 22],\r\n        symbolOffset: [55, 0],\r\n        label: {\r\n          show: true,\r\n          formatter: deltaSign + deltaLastPercent.toFixed(1) + '%',\r\n          fontSize: 11,\r\n          fontWeight: 'bold',\r\n          color: '#fff'\r\n        },\r\n        itemStyle: {\r\n          color: deltaColor\r\n        },\r\n        data: [{\r\n          coord: [lastIdx, (minY + maxY) / 2],\r\n          name: 'Delta'\r\n        }]\r\n      }\r\n    });\r\n  }\r\n  \r\n  // ===== РАСЧЁТ ПОЗИЦИИ ЛЕГЕНДЫ =====\r\n  var legendConfig = {\r\n    show: showLegend && showPreviousYear && previousYear,\r\n    data: [currentYear + ' (AC)', previousYear + ' (PY)'],\r\n    textStyle: { fontSize: 10, color: '#666' }\r\n  };\r\n  \r\n  // Горизонтальная позиция\r\n  if (legendHorizontal === 'left') {\r\n    legendConfig.left = 10;\r\n  } else if (legendHorizontal === 'center') {\r\n    legendConfig.left = 'center';\r\n  } else {\r\n    legendConfig.right = 80;\r\n  }\r\n  \r\n  // Вертикальная позиция\r\n  if (legendVertical === 'bottom') {\r\n    legendConfig.bottom = 10;\r\n  } else if (legendVertical === 'middle') {\r\n    legendConfig.top = 'middle';\r\n  } else {\r\n    legendConfig.top = 5;\r\n  }\r\n  \r\n  // ===== ОПЦИИ ГРАФИКА =====\r\n  var option = {\r\n    backgroundColor: 'transparent',\r\n    tooltip: {\r\n      trigger: 'axis',\r\n      backgroundColor: 'rgba(255,255,255,0.95)',\r\n      borderColor: '#ddd',\r\n      borderWidth: 1,\r\n      textStyle: { color: '#333', fontSize: 12 },\r\n      formatter: function(params) {\r\n        var result = '<b>' + params[0].axisValue + '</b><br/>';\r\n        params.forEach(function(p) {\r\n          if (p.value !== null && p.value !== undefined) {\r\n            result += '<span style=\"color:' + p.color + ';\">●</span> ' + \r\n                      p.seriesName + ': <b>' + p.value.toFixed(1) + '</b><br/>';\r\n          }\r\n        });\r\n        if (deltaLast !== null && params[0].dataIndex === lastIdx) {\r\n          var sign = deltaLast >= 0 ? '+' : '';\r\n          var col = deltaLast >= 0 ? positiveDeltaColor : negativeDeltaColor;\r\n          result += '<hr style=\"margin:5px 0;border:none;border-top:1px solid #eee;\"/>';\r\n          result += '<span style=\"color:' + col + ';\">ΔLast: ' + sign + deltaLast.toFixed(1) + ' (' + sign + deltaLastPercent.toFixed(1) + '%)</span>';\r\n        }\r\n        return result;\r\n      }\r\n    },\r\n    legend: legendConfig,\r\n    grid: {\r\n      left: 40,\r\n      right: 80,\r\n      top: showLegend && legendVertical === 'top' ? 40 : 20,\r\n      bottom: showLegend && legendVertical === 'bottom' ? 40 : 30,\r\n      containLabel: true\r\n    },\r\n    xAxis: {\r\n      type: 'category',\r\n      data: allPeriods,\r\n      boundaryGap: false,\r\n      show: showAxisX,\r\n      axisLine: { \r\n        show: showAxisX,\r\n        lineStyle: { color: '#ccc' } \r\n      },\r\n      axisTick: { show: false },\r\n      axisLabel: {\r\n        show: showAxisXLabels,\r\n        fontSize: 10,\r\n        color: axisXLabelColor,\r\n        interval: 0\r\n      },\r\n      splitLine: { \r\n        show: showGridX,\r\n        lineStyle: { \r\n          color: gridXColor, \r\n          type: gridXType \r\n        }\r\n      }\r\n    },\r\n    yAxis: {\r\n      type: 'value',\r\n      show: showAxisY,\r\n      axisLine: { \r\n        show: showAxisY,\r\n        lineStyle: { color: '#ccc' }\r\n      },\r\n      axisTick: { show: false },\r\n      axisLabel: {\r\n        show: showAxisYLabels,\r\n        fontSize: 10,\r\n        color: axisYLabelColor\r\n      },\r\n      splitLine: {\r\n        show: showGridY,\r\n        lineStyle: { \r\n          color: gridYColor, \r\n          type: gridYType \r\n        }\r\n      }\r\n    },\r\n    series: series\r\n  };\r\n  \r\n  // Создание графика\r\n  var chart = echarts.init(container);\r\n  chart.setOption(option);\r\n\n\n  // ===== СКРЫТИЕ ДЕЛЬТЫ ПРИ СКРЫТИИ AC =====\n  if (showLastDelta && deltaLast !== null) {\n    var acName  = currentYear + ' (AC)';\n    var _dColor = deltaLast >= 0 ? positiveDeltaColor : negativeDeltaColor;\n    var _dSign  = deltaLast >= 0 ? '+' : '';\n    var _iX     = lastIdx + 0.6;\n    var _minY   = Math.min(prevValue, lastValue);\n    var _maxY   = Math.max(prevValue, lastValue);\n\n    chart.on('legendselectchanged', function(params) {\n      var acVisible = params.selected[acName] !== false;\n      if (!acVisible) {\n        chart.setOption({ series: [\n          { name: 'Delta Area',           markArea:  { data: [] } },\n          { name: 'Delta Indicator Line', markLine:  { data: [] } },\n          { name: 'Delta Bar',            data: []   },\n          { name: 'Delta Label',          markPoint: { data: [] } }\n        ]});\n      } else {\n        chart.setOption({ series: [\n          { name: 'Delta Area', markArea: {\n              silent: true,\n              itemStyle: { color: 'rgba(255, 105, 180, 0.15)' },\n              data: [[{ xAxis: prevIdx - 0.4 }, { xAxis: lastIdx + 0.4 }]]\n          }},\n          { name: 'Delta Indicator Line', markLine: {\n              silent: true, symbol: ['none','none'], label: { show: false },\n              data: [[\n                { coord: [lastIdx, lastValue], lineStyle: { color: '#999', width: 1, type: 'dashed' } },\n                { coord: [_iX + 0.15, lastValue] }\n              ]]\n          }},\n          { name: 'Delta Bar',   data: [0] },\n          { name: 'Delta Label', markPoint: {\n              symbol: 'roundRect', symbolSize: [55, 22], symbolOffset: [55, 0],\n              label: { show: true, formatter: _dSign + deltaLastPercent.toFixed(1) + '%', fontSize: 11, fontWeight: 'bold', color: '#fff' },\n              itemStyle: { color: _dColor },\n              data: [{ coord: [lastIdx, (_minY + _maxY) / 2], name: 'Delta' }]\n          }}\n        ]});\n      }\n    });\n  }\r\n  \r\n  // Адаптивность\r\n  new ResizeObserver(function() { chart.resize(); }).observe(container);\r\n})();\r\n",
  "DataRoles": [
    {
      "Name": "category",
      "DisplayName": "Дата",
      "Description": "Дата или период (например: месяц). Используется как ось времени.",
      "Kind": 0,
      "Type": 0,
      "Optional": false
    },
    {
      "Name": "value",
      "DisplayName": "Значение",
      "Description": "Числовое значение показателя. Используется для построения линии текущего и предыдущего года.",
      "Kind": 1,
      "Type": 0,
      "Optional": false
    }
  ],
  "Properties": [
    {
      "Value": "",
      "Type": 0,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "— ЛИНИИ —",
      "PropertyName": "sectionLines"
    },
    {
      "Value": true,
      "Type": 2,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Показывать предыдущий год",
      "PropertyName": "showPreviousYear"
    },
    {
      "Value": true,
      "Type": 2,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Показывать изменение ΔLast",
      "PropertyName": "showLastDelta"
    },
    {
      "Value": true,
      "Type": 2,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Показывать подписи значений",
      "PropertyName": "showValueLabels"
    },
    {
      "Value": "#000000",
      "Type": 3,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Цвет текущего года (AC)",
      "PropertyName": "actualLineColor"
    },
    {
      "Value": "#888888",
      "Type": 3,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Цвет предыдущего года (PY)",
      "PropertyName": "previousYearLineColor"
    },
    {
      "Value": "#4CAF50",
      "Type": 3,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Цвет положительного изменения",
      "PropertyName": "positiveDeltaColor"
    },
    {
      "Value": "#F44336",
      "Type": 3,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Цвет отрицательного изменения",
      "PropertyName": "negativeDeltaColor"
    },
    {
      "Value": "",
      "Type": 0,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "— ЛЕГЕНДА —",
      "PropertyName": "sectionLegend"
    },
    {
      "Value": true,
      "Type": 2,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Показывать легенду",
      "PropertyName": "showLegend"
    },
    {
      "Value": "right",
      "Type": 0,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Позиция легенды (гориз.)",
      "PropertyName": "legendHorizontal"
    },
    {
      "Value": "top",
      "Type": 0,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Позиция легенды (верт.)",
      "PropertyName": "legendVertical"
    },
    {
      "Value": "",
      "Type": 0,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "— ОСЬ X —",
      "PropertyName": "sectionAxisX"
    },
    {
      "Value": true,
      "Type": 2,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Показывать ось X",
      "PropertyName": "showAxisX"
    },
    {
      "Value": true,
      "Type": 2,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Показывать подписи оси X",
      "PropertyName": "showAxisXLabels"
    },
    {
      "Value": "#666666",
      "Type": 3,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Цвет подписей оси X",
      "PropertyName": "axisXLabelColor"
    },
    {
      "Value": false,
      "Type": 2,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Показывать сетку X",
      "PropertyName": "showGridX"
    },
    {
      "Value": "dashed",
      "Type": 0,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Тип сетки X (solid/dashed/dotted)",
      "PropertyName": "gridXType"
    },
    {
      "Value": "#e0e0e0",
      "Type": 3,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Цвет сетки X",
      "PropertyName": "gridXColor"
    },
    {
      "Value": "",
      "Type": 0,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Фикс. линия X (значение)",
      "PropertyName": "fixedLineX"
    },
    {
      "Value": "#FF5722",
      "Type": 3,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Цвет фикс. линии X",
      "PropertyName": "fixedLineXColor"
    },
    {
      "Value": "",
      "Type": 0,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "— ОСЬ Y —",
      "PropertyName": "sectionAxisY"
    },
    {
      "Value": true,
      "Type": 2,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Показывать ось Y",
      "PropertyName": "showAxisY"
    },
    {
      "Value": true,
      "Type": 2,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Показывать подписи оси Y",
      "PropertyName": "showAxisYLabels"
    },
    {
      "Value": "#666666",
      "Type": 3,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Цвет подписей оси Y",
      "PropertyName": "axisYLabelColor"
    },
    {
      "Value": true,
      "Type": 2,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Показывать сетку Y",
      "PropertyName": "showGridY"
    },
    {
      "Value": "dashed",
      "Type": 0,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Тип сетки Y (solid/dashed/dotted)",
      "PropertyName": "gridYType"
    },
    {
      "Value": "#f0f0f0",
      "Type": 3,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Цвет сетки Y",
      "PropertyName": "gridYColor"
    },
    {
      "Value": "",
      "Type": 0,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Фикс. линия Y (значение)",
      "PropertyName": "fixedLineY"
    },
    {
      "Value": "#2196F3",
      "Type": 3,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Цвет фикс. линии Y",
      "PropertyName": "fixedLineYColor"
    },
    {
      "Value": "",
      "Type": 0,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "— ПОДПИСИ —",
      "PropertyName": "sectionLabels"
    },
    {
      "Value": "#333333",
      "Type": 3,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Цвет подписей значений (AC)",
      "PropertyName": "valueLabelColorAC"
    },
    {
      "Value": "#888888",
      "Type": 3,
      "ElementType": "UserWidgetProperty",
      "DisplayName": "Цвет подписей значений (PY)",
      "PropertyName": "valueLabelColorPY"
    }
  ],
  "PropertiesJson": ""
}