<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Problem with My Custom Visual in Power BI in Custom Visuals Development Discussion</title>
    <link>https://community.fabric.microsoft.com/t5/Custom-Visuals-Development/Problem-with-My-Custom-Visual-in-Power-BI/m-p/4658908#M12436</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/1255027"&gt;@luanlopes&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;H3 class="" data-start="990" data-end="1023"&gt;How to &lt;EM data-start="1004" data-end="1019"&gt;Fix or Smooth&lt;/EM&gt; it:&lt;/H3&gt;
&lt;P class="" data-start="1025" data-end="1065"&gt;&lt;STRONG data-start="1025" data-end="1065"&gt;&lt;span class="lia-unicode-emoji" title=":white_heavy_check_mark:"&gt;✅&lt;/span&gt; 1. Debounce or Throttle &lt;CODE data-start="1053" data-end="1063"&gt;update()&lt;/CODE&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-start="1066" data-end="1619"&gt;
&lt;LI class="" data-start="1066" data-end="1159"&gt;
&lt;P class="" data-start="1068" data-end="1159"&gt;Implement a &lt;EM data-start="1080" data-end="1093"&gt;small delay&lt;/EM&gt; (e.g., 50–200 milliseconds) inside your visual's &lt;CODE data-start="1143" data-end="1151"&gt;update&lt;/CODE&gt; method.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="" data-start="1160" data-end="1205"&gt;
&lt;P class="" data-start="1162" data-end="1205"&gt;Only re-render after things have "settled."&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="" data-start="1208" data-end="1216"&gt;Example:&lt;/P&gt;
&lt;P&gt;private updateTimer: any = null;&lt;/P&gt;
&lt;P&gt;public update(options: VisualUpdateOptions) {&lt;BR /&gt;if (this.updateTimer) {&lt;BR /&gt;clearTimeout(this.updateTimer);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;this.updateTimer = setTimeout(() =&amp;gt; {&lt;BR /&gt;this.render(options);&lt;BR /&gt;}, 100); // adjust delay as needed&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;private render(options: VisualUpdateOptions) {&lt;BR /&gt;// Your regular drawing logic here&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P class="" data-start="1736" data-end="1778"&gt;&lt;STRONG data-start="1736" data-end="1778"&gt;Compare the Old and New Data View&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-start="1779" data-end="2032"&gt;
&lt;LI class="" data-start="1779" data-end="1847"&gt;
&lt;P class="" data-start="1781" data-end="1847"&gt;Before re-rendering, check if the "real" state &lt;EM data-start="1828" data-end="1846"&gt;actually changed&lt;/EM&gt;.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="" data-start="1848" data-end="2032"&gt;
&lt;P class="" data-start="1850" data-end="1863"&gt;Example idea:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if (JSON.stringify(newDataView) !== JSON.stringify(this.previousDataView)) {&lt;BR /&gt;this.previousDataView = newDataView;&lt;BR /&gt;this.render();&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P class="" data-start="2095" data-end="2230"&gt;&lt;STRONG data-start="2095" data-end="2141"&gt;3. Detect "Clear Filter" actions smarter&lt;/STRONG&gt; You &lt;STRONG data-start="2146" data-end="2171"&gt;can't directly detect&lt;/STRONG&gt; "Clear filters" clicked.&lt;BR data-start="2196" data-end="2199" /&gt;BUT you can &lt;EM data-start="2211" data-end="2218"&gt;infer&lt;/EM&gt; it because:&lt;/P&gt;
&lt;UL data-start="2231" data-end="2434"&gt;
&lt;LI class="" data-start="2231" data-end="2347"&gt;
&lt;P class="" data-start="2233" data-end="2347"&gt;If &lt;STRONG data-start="2236" data-end="2266"&gt;filters suddenly disappear&lt;/STRONG&gt; (&lt;CODE data-start="2268" data-end="2288"&gt;categorical.values&lt;/CODE&gt; or &lt;CODE data-start="2292" data-end="2323"&gt;categorical.categories.values&lt;/CODE&gt; becomes empty or null),&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="" data-start="2348" data-end="2383"&gt;
&lt;P class="" data-start="2350" data-end="2383"&gt;and the old state had selections,&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="" data-start="2384" data-end="2434"&gt;
&lt;P class="" data-start="2386" data-end="2434"&gt;it &lt;STRONG data-start="2389" data-end="2401"&gt;probably&lt;/STRONG&gt; means Clear Filters was clicked.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="" data-start="2436" data-end="2456"&gt;Sample pseudo-check:&lt;BR /&gt;&lt;BR /&gt;const filtersCleared = previousStateHadFilters &amp;amp;&amp;amp; currentStateHasNoFilters;&lt;BR /&gt;if (filtersCleared) {&lt;BR /&gt;// Handle it differently if needed&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT color="#800000"&gt;Did I answer your question? Mark my post as a solution! Appreciate your Kudos !!&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P class="" data-start="1850" data-end="1863"&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="" data-start="1208" data-end="1216"&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
    <pubDate>Fri, 18 Apr 2025 14:00:51 GMT</pubDate>
    <dc:creator>johnbasha33</dc:creator>
    <dc:date>2025-04-18T14:00:51Z</dc:date>
    <item>
      <title>Problem with My Custom Visual in Power BI</title>
      <link>https://community.fabric.microsoft.com/t5/Custom-Visuals-Development/Problem-with-My-Custom-Visual-in-Power-BI/m-p/4641220#M12401</link>
      <description>&lt;P&gt;&lt;SPAN&gt;I've developed a DatePicker visual for Power&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;BI, but I'm facing an annoying issue that&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;affects user experience. When users interact with the report, my visual&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;keeps flickering between showing the selected date and showing "Select period"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;(the no-filter state).&lt;BR /&gt;This rapid alternation between&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;states happens most noticeably when users select a date or&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;click the "Clear filters" button in Power BI&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt; &lt;SPAN&gt;The root cause seems to be that my visual receives multiple contradict&lt;/SPAN&gt;&lt;SPAN&gt;ory updates from Power BI in quick succession&lt;/SPAN&gt;&lt;SPAN&gt;. One update tells the visual that filters are applied, then immediately&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;another update says no filters exist, then back again&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;to filters being applied. This creates the flickering effect as&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;my visual tries to respond to each update.&lt;/SPAN&gt; &lt;SPAN&gt;I&lt;/SPAN&gt;&lt;SPAN&gt;'d like to know if this behavior is normal in Power BI or&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;if there's a recommended way to handle these contradictory updates. Is&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;there a technique to make my visual display a consistent state&lt;/SPAN&gt;&lt;SPAN&gt;? Also, is there a reliable way to detect when a&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;user has clicked the "Clear filters" button?&lt;BR /&gt;Any&amp;nbsp;help or suggestions from those who have encountered similar issues would be greatly appreciated.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Apr 2025 13:03:03 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Custom-Visuals-Development/Problem-with-My-Custom-Visual-in-Power-BI/m-p/4641220#M12401</guid>
      <dc:creator>luanlopes</dc:creator>
      <dc:date>2025-04-07T13:03:03Z</dc:date>
    </item>
    <item>
      <title>Re: Problem with My Custom Visual in Power BI</title>
      <link>https://community.fabric.microsoft.com/t5/Custom-Visuals-Development/Problem-with-My-Custom-Visual-in-Power-BI/m-p/4658908#M12436</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/1255027"&gt;@luanlopes&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;H3 class="" data-start="990" data-end="1023"&gt;How to &lt;EM data-start="1004" data-end="1019"&gt;Fix or Smooth&lt;/EM&gt; it:&lt;/H3&gt;
&lt;P class="" data-start="1025" data-end="1065"&gt;&lt;STRONG data-start="1025" data-end="1065"&gt;&lt;span class="lia-unicode-emoji" title=":white_heavy_check_mark:"&gt;✅&lt;/span&gt; 1. Debounce or Throttle &lt;CODE data-start="1053" data-end="1063"&gt;update()&lt;/CODE&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-start="1066" data-end="1619"&gt;
&lt;LI class="" data-start="1066" data-end="1159"&gt;
&lt;P class="" data-start="1068" data-end="1159"&gt;Implement a &lt;EM data-start="1080" data-end="1093"&gt;small delay&lt;/EM&gt; (e.g., 50–200 milliseconds) inside your visual's &lt;CODE data-start="1143" data-end="1151"&gt;update&lt;/CODE&gt; method.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="" data-start="1160" data-end="1205"&gt;
&lt;P class="" data-start="1162" data-end="1205"&gt;Only re-render after things have "settled."&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="" data-start="1208" data-end="1216"&gt;Example:&lt;/P&gt;
&lt;P&gt;private updateTimer: any = null;&lt;/P&gt;
&lt;P&gt;public update(options: VisualUpdateOptions) {&lt;BR /&gt;if (this.updateTimer) {&lt;BR /&gt;clearTimeout(this.updateTimer);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;this.updateTimer = setTimeout(() =&amp;gt; {&lt;BR /&gt;this.render(options);&lt;BR /&gt;}, 100); // adjust delay as needed&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;private render(options: VisualUpdateOptions) {&lt;BR /&gt;// Your regular drawing logic here&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P class="" data-start="1736" data-end="1778"&gt;&lt;STRONG data-start="1736" data-end="1778"&gt;Compare the Old and New Data View&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-start="1779" data-end="2032"&gt;
&lt;LI class="" data-start="1779" data-end="1847"&gt;
&lt;P class="" data-start="1781" data-end="1847"&gt;Before re-rendering, check if the "real" state &lt;EM data-start="1828" data-end="1846"&gt;actually changed&lt;/EM&gt;.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="" data-start="1848" data-end="2032"&gt;
&lt;P class="" data-start="1850" data-end="1863"&gt;Example idea:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if (JSON.stringify(newDataView) !== JSON.stringify(this.previousDataView)) {&lt;BR /&gt;this.previousDataView = newDataView;&lt;BR /&gt;this.render();&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P class="" data-start="2095" data-end="2230"&gt;&lt;STRONG data-start="2095" data-end="2141"&gt;3. Detect "Clear Filter" actions smarter&lt;/STRONG&gt; You &lt;STRONG data-start="2146" data-end="2171"&gt;can't directly detect&lt;/STRONG&gt; "Clear filters" clicked.&lt;BR data-start="2196" data-end="2199" /&gt;BUT you can &lt;EM data-start="2211" data-end="2218"&gt;infer&lt;/EM&gt; it because:&lt;/P&gt;
&lt;UL data-start="2231" data-end="2434"&gt;
&lt;LI class="" data-start="2231" data-end="2347"&gt;
&lt;P class="" data-start="2233" data-end="2347"&gt;If &lt;STRONG data-start="2236" data-end="2266"&gt;filters suddenly disappear&lt;/STRONG&gt; (&lt;CODE data-start="2268" data-end="2288"&gt;categorical.values&lt;/CODE&gt; or &lt;CODE data-start="2292" data-end="2323"&gt;categorical.categories.values&lt;/CODE&gt; becomes empty or null),&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="" data-start="2348" data-end="2383"&gt;
&lt;P class="" data-start="2350" data-end="2383"&gt;and the old state had selections,&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="" data-start="2384" data-end="2434"&gt;
&lt;P class="" data-start="2386" data-end="2434"&gt;it &lt;STRONG data-start="2389" data-end="2401"&gt;probably&lt;/STRONG&gt; means Clear Filters was clicked.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="" data-start="2436" data-end="2456"&gt;Sample pseudo-check:&lt;BR /&gt;&lt;BR /&gt;const filtersCleared = previousStateHadFilters &amp;amp;&amp;amp; currentStateHasNoFilters;&lt;BR /&gt;if (filtersCleared) {&lt;BR /&gt;// Handle it differently if needed&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT color="#800000"&gt;Did I answer your question? Mark my post as a solution! Appreciate your Kudos !!&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P class="" data-start="1850" data-end="1863"&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="" data-start="1208" data-end="1216"&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 18 Apr 2025 14:00:51 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Custom-Visuals-Development/Problem-with-My-Custom-Visual-in-Power-BI/m-p/4658908#M12436</guid>
      <dc:creator>johnbasha33</dc:creator>
      <dc:date>2025-04-18T14:00:51Z</dc:date>
    </item>
  </channel>
</rss>

