hi,

below is chartdata which is I am using to draw chart

chartdata = {
    "id": "00000000-0000-0000-0000-000000000000",
    "ticks": [
        "2023-01-01T10:25:55.000Z",
        "2023-07-01T09:25:55.000Z",
        "2024-01-01T10:25:55.000Z",
        "2024-07-01T09:25:55.000Z",
        "2025-01-01T10:25:55.000Z",
        "2025-07-01T09:25:55.000Z"
    ],
    "rows": [
        {
            "c": [
                {
                    "v": "2023-03-31T23:00:00.000Z",
                    "f": null,
                    "p": null,
                    "role": null
                },
                {
                    "v": 4,
                    "f": null,
                    "p": null,
                    "role": null
                },
                {
                    "v": 2,
                    "f": null,
                    "p": null,
                    "role": null
                },
                {
                    "v": 1,
                    "f": "1,00 (N=5,00)",
                    "p": null,
                    "role": "point { size: 18; shape-type: star; 
fill-color: #a52714; }"
                },
                {
                    "v": 1,
                    "f": "Meetwaarde: 1,00 (N=5,00) \r\n Gewogen 
gemiddelde: 1,00 (Total N=5,00)",
                    "p": null,
                    "role": null
                }
            ]
        },
        {
            "c": [
                {
                    "v": "2023-09-30T23:00:00.000Z",
                    "f": null,
                    "p": null,
                    "role": null
                },
                {
                    "v": 9,
                    "f": null,
                    "p": null,
                    "role": null
                },
                {
                    "v": 4,
                    "f": null,
                    "p": null,
                    "role": null
                },
                {
                    "v": 4,
                    "f": "4,00 (N=7,00)",
                    "p": "Think of a business indicator score as a report 
card for how well a business is doing. It's like giving the business a 
grade based on different aspects, like sales, profits, customer 
satisfaction, and other important stuff. If the score is high, it means the 
business is doing really well, making lots of money, and keeping customers 
happy.",
                    "role": "point { size: 18; shape-type: star; 
fill-color: #a52714; }"
                },
                {
                    "v": 2.75,
                    "f": "Gewogen gemiddelde: 2,75 (Total N=12,00)",
                    "p": null,
                    "role": null
                }
            ]
        },
        {
            "c": [
                {
                    "v": "2024-03-31T00:00:00.000Z",
                    "f": null,
                    "p": null,
                    "role": null
                },
                {
                    "v": 5,
                    "f": null,
                    "p": null,
                    "role": null
                },
                {
                    "v": 2,
                    "f": null,
                    "p": null,
                    "role": null
                },
                {
                    "v": 4,
                    "f": "4,00 (N=5,00)",
                    "p": "new testing",
                    "role": "point { size: 18; shape-type: star; 
fill-color: #a52714; }"
                },
                {
                    "v": 3.1176470588235294,
                    "f": "Gewogen gemiddelde: 3,12 (Total N=17,00)",
                    "p": null,
                    "role": null
                }
            ]
        }
    ],
    "cols": [
        {
            "id": "Time",
            "label": "Interval",
            "type": "date",
            "role": null,
            "p": null
        },
        {
            "id": "Red",
            "label": "Rood",
            "type": "number",
            "role": null,
            "p": null
        },
        {
            "id": "Green",
            "label": "Groen",
            "type": "number",
            "role": null,
            "p": null
        },
        {
            "id": "Value",
            "label": "Meetwaarde",
            "type": "number",
            "role": null,
            "p": null
        },
        {
            "id": "WeightedAverage",
            "label": null,
            "type": "number",
            "role": null,
            "p": null
        }
    ]
}

below is my html code

<div class="grid-wrapper">
    <div [id]="ControlId"></div>
    <div class="k-loading-image"></div>
</div>


below is my typescript method to draw chart

drawChart = () => {
    let isFormatTooltip = this.FormatTooltip !== undefined || this.
FormatTooltip !== null ? this.FormatTooltip : false;
    let isHtmlTooltip = this.IsHtmlTooltip !== undefined || this.
IsHtmlTooltip !== null ? this.IsHtmlTooltip : false;
    let isShowBackground = this.IsShowBackground;
    let controlId = this.ControlId;
    let chartContainer = document.getElementById(controlId);
    let chart = new google.visualization.LineChart(chartContainer);
    switch (this.ChartType) {
      case "ScatterChart":
        chart = new google.visualization.ScatterChart(chartContainer);
        break;
      case "ColumnChart":
        chart = new google.visualization.ColumnChart(chartContainer);
        break;
    }
    var chartDataTable = new google.visualization.DataTable(this.ChartData);

    console.log("this.ChartData", this.ChartData);

    // Identify the point to highlight (assuming index 2)
    const highlightedPointIndex = 3;

    // Loop through the data and set style for the highlighted point
    for (let i = 0; i < this.ChartData.rows.length; i++) {
      const row = this.ChartData.rows[i];
      if (i === highlightedPointIndex) {
        row.c[i].role = "point { size: 18; shape-type: star; fill-color: 
#FF0000; }"; // Set desired style
      }
    }

    const options = {
      legend: this.Legend ? this.Legend : "none",
      hAxis: {
        title: this.XAxis && this.XAxis.label ? this.XAxis.label : "",
        titleTextStyle: {
          color: this.XAxis && this.XAxis.color ? this.XAxis.color : "gray",
          fontSize: this.XAxis && this.XAxis.titleFontSize ? this.XAxis.
titleFontSize : 13,
          bold: this.XAxis && !this.XAxis.titleBold ? this.YAxis.titleBold : 
true
        },
        textStyle: {
          color: this.XAxis && this.XAxis.color ? this.XAxis.color : "gray",
          bold: this.XAxis && !this.XAxis.textbold ? this.XAxis.textbold : 
true
        },
        format: this.XAxis && this.XAxis.format ? this.XAxis.format : "",
        slantedText: true,
        slantedTextAngle: 45,
        ticks: this.XAxis && this.XAxis.ticks ? this.XAxis.ticks :
          this.ChartData && this.ChartData.ticks ?
            this.ChartData.ticks : null
      },
      vAxis: {
        title: this.YAxis && this.YAxis.label ? this.YAxis.label : "",
        titleTextStyle: {
          color: this.YAxis && this.YAxis.color ? this.YAxis.color : "gray",
          fontSize: this.YAxis && this.YAxis.titleFontSize ? this.YAxis.
titleFontSize : 13,
          bold: this.YAxis && !this.YAxis.titleBold ? this.YAxis.titleBold : 
true
        },
        textStyle: {
          color: this.YAxis && this.YAxis.color ? this.YAxis.color : "gray",
          bold: this.YAxis && !this.YAxis.textbold ? this.YAxis.textbold : 
true
        },
        format: this.YAxis && this.YAxis.format ? this.YAxis.format : "",
        viewWindowMode: this.YAxis.viewWindowMode,
        viewWindow: this.YAxis.viewWindow,
        ticks: this.YAxis && this.YAxis.ticks ? this.YAxis.ticks : null
      },
      pointSize: this.PointSize ? this.PointSize : 5,
      series: this.SeriesOptions,
      pointsVisible: this.PointsVisible ? this.PointsVisible : false,
      tooltip: { isHtml: isHtmlTooltip },
      chartArea: {
        left: this.YAxis && this.YAxis.left ? this.YAxis.left : 40,
        top: 20,
        bottom: this.XAxis && this.XAxis.bottom ? this.XAxis.bottom : 40,
        right: 10,
        height: '70%'
      },
      width: this.Width ? this.Width : "540",
      height: this.Height ? this.Height : "275"
    };

    let dataView = chartDataTable;
    if (this.VisibleColumns) {
      dataView = new google.visualization.DataView(chartDataTable);
      dataView.setColumns(this.VisibleColumns);
    }

    let createSVG = (n, a, b?) => {
      var xmlns = "http://www.w3.org/2000/svg";,
        e = document.createElementNS(xmlns, n);
      for (var k in a) {
        e.setAttributeNS(null, k, a[k]);
      }
      if (b) {
        for (var k in b) {
          e.setAttribute(k, b[k]);
        }
      }
      return e;
    }

    google.visualization.events.addListener(chart, 'ready', function () {
      if (isShowBackground) {
        var gradient = createSVG('linearGradient', {
          x1: 0, y1: 1, x2: 1, y2: 1
        }, {
          id: `chart-${controlId}`
        });
        chartContainer.querySelector('svg>defs').appendChild(gradient);
        gradient.appendChild(createSVG('stop', { offset: '10%', 'stop-color'
: 'red' }));
        gradient.appendChild(createSVG('stop', { offset: '50%', 'stop-color'
: 'yellow' }));
        gradient.appendChild(createSVG('stop', { offset: '100%', 
'stop-color': 'green' }));
        var chartRectangle = chartContainer.querySelector('svg>g>rect');
        if (chartRectangle) {
          chartRectangle.setAttribute('fill', `url(#chart-${controlId})`);
          chartRectangle.setAttribute('fill-opacity', "0.8");
        }
      }

      if (isFormatTooltip) {
        google.visualization.events.addListener(chart, 'onmouseover', 
function (hover) {
          if (hover) {
            var tooltipContainer = chartContainer.querySelector(
'.google-visualization-tooltip>g>text');
            if (tooltipContainer && tooltipContainer.innerHTML) {
              tooltipContainer.innerHTML = tooltipContainer.innerHTML.
replace(',', '');
            }
          }
        })
      }

      let chartLoadingContainers = document.getElementsByClassName(
"k-loading-image") as HTMLCollectionOf<HTMLElement>;
      if (chartLoadingContainers && chartLoadingContainers.length > 0) {
        for (let i = 0; i < chartLoadingContainers.length; i++) {
          chartLoadingContainers[i].style.display = 'none';
        }
      }
    });

    chart.draw(dataView, options);
  } I am not able to highlight custom points on scatter chart.thanks in 
advance!

-- 
You received this message because you are subscribed to the Google Groups 
"Google Visualization API" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-visualization-api+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-visualization-api/ec4ed111-0b89-46cf-a5e9-804df4cdf0bbn%40googlegroups.com.

Reply via email to