Forum Discussion

_JamesB's avatar
_JamesB
Frequent Visitor
6 years ago

Visual retains old data on update

Hi There,

 

I'm having an issue with a custom visual that I am developing.  As far as I can tell there's no real difference from a previous visual that I created that doesn't suffer from this issue.  When the data that feeds into my visual changes, the old data is retained such that text becomes illegible (see screenshots at the bottom).

 

An example of the code that draws out the values:

 

    let Values = container
            .selectAll('.value')
            .data(viewModel.dataPoints)

        Values.enter()
            .append('rect')
            .classed('.value', true)

        Values
            .attr({
                width: d => d.Width,
                height: d => d.ValueHeight,
                x: d => d.ValueX,
                y: d => d.ValueY
            })
            .style({
                'display': 'block',
                'stroke': "Black",
                'fill': "none",
                'stroke-width': 1
            })

        Values.enter()
            .append('text')
            .classed('.value', true)

        Values
            .text(d => d.DisplayValue)
            .style({
                "display": "block",
                "font-size": "14px",
                "text-anchor": "middle",
                "alignment-baseline": "central",
                "fill": "Black"
            })
            .attr({
                width: d => d.Width,
                height: d => d.ValueHeight,
                x: d => d.ValueX + d.Width / 2,
                y: d => d.ValueY + d.ValueHeight / 2
            })

Does anyone know why this isn't working?

 

Many Thanks,

James

 

When I first load the visual

 

After I cause an update via a Slicer

 

1 Reply

  • _JamesB's avatar
    _JamesB
    Frequent Visitor

    I worked out what was wrong as I read through the post to check for spelling.

     

    You shouldn't append two different objects (in my case rect and text) to the same group with the same data bound to it.  Splitting the two object types into two different groups solved the issue.

     

    Thanks,

    James