<?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: Dimensions &amp;amp; Measures as columns in Qlik Sense properties panels in Integration, Extension &amp; APIs</title>
    <link>https://community.qlik.com/t5/Integration-Extension-APIs/Dimensions-amp-Measures-as-columns-in-Qlik-Sense-properties/m-p/2428038#M20124</link>
    <description>&lt;P&gt;What was it that you did to get the get the columns to show?&lt;/P&gt;
&lt;P&gt;Was it related to the add/remove functions?&lt;/P&gt;</description>
    <pubDate>Thu, 07 Mar 2024 04:56:55 GMT</pubDate>
    <dc:creator>devan9876</dc:creator>
    <dc:date>2024-03-07T04:56:55Z</dc:date>
    <item>
      <title>Dimensions &amp; Measures as columns in Qlik Sense properties panels</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Dimensions-amp-Measures-as-columns-in-Qlik-Sense-properties/m-p/2021036#M17846</link>
      <description>&lt;P&gt;Hi Community,&lt;/P&gt;
&lt;P&gt;I was working on an extension where I need to sort the column order. I can achieve that one by using backendApi.setProperties for qColumnOrder. but I need the Qlik Sense native "column" component in the properties panel.&lt;BR /&gt;&lt;BR /&gt;I'm using something like this.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;data:{
                type: "items",
                component: "columns",
                translation: "Common.Data",
                sortIndexRef: "qHyperCubeDef.qColumnOrder",
                allowMove: true,
                allowAdd: true,
                addTranslation: "Common.Columns",
                items: {
                    dimensions: {
                        uses:"dimensions",
                        min:1,
                        max:5,
                        add: ()=&amp;gt;(),
                        remove: ()=&amp;gt;()
                    },
                    measures: {
                        uses:"measures",
                        min:1,
                        max:5,
                        add: ()=&amp;gt;(),
                        remove: ()=&amp;gt;()
                    }
                }
}&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;but I couldn't be able to achieve the proper way to add. For me the "Add Columns" button is also not appearing. I also don't know what need to be called in add &amp;amp; remove function.&lt;/P&gt;
&lt;P&gt;Please provide the proper way to implement the "Columns" component in qlik sense properties panel. Please also mention what should be returned in add &amp;amp; remove function.&lt;/P&gt;
&lt;P&gt;Thanks &amp;amp; Regards,&lt;BR /&gt;Manoj Prabu&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 03 Jan 2023 12:49:47 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Dimensions-amp-Measures-as-columns-in-Qlik-Sense-properties/m-p/2021036#M17846</guid>
      <dc:creator>Manoj_Prabu</dc:creator>
      <dc:date>2023-01-03T12:49:47Z</dc:date>
    </item>
    <item>
      <title>Re: Dimensions &amp; Measures as columns in Qlik Sense properties panels</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Dimensions-amp-Measures-as-columns-in-Qlik-Sense-properties/m-p/2426642#M20091</link>
      <description>&lt;P&gt;Hello folks,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; I found the way to create the columns using Qlik properties. but while sorting/reordering the columns I'm getting below errors.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;Without error.&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-03-04 183256.png" style="width: 922px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/161245iE16EE8761301E3EE/image-size/large?v=v2&amp;amp;px=999" role="button" title="Screenshot 2024-03-04 183256.png" alt="Screenshot 2024-03-04 183256.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Error while trying to reorder the columns.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Error while trying to reorder" style="width: 924px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/161246i50B83839990DA538/image-size/large?v=v2&amp;amp;px=999" role="button" title="Screenshot 2024-03-04 183642.png" alt="Error while trying to reorder" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Error while trying to reorder&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;LI-CODE lang="javascript"&gt;storeColumnWidths: function(e) {
                const {qDimensions: t, qMeasures: n, columnWidths: o} = e;
                for (let e = 0; e &amp;lt; t.length; e++)
                    t[e].columnWidth = o[e];
                for (let e = 0; e &amp;lt; n.length; e++)
                    n[e].columnWidth = o[e + t.length]
            }&lt;/LI-CODE&gt;
&lt;P&gt;It seems like we need to handle onMove method in the properties. but I'm not sure right now how to do it. The error is from storeColumnWidths method where there is no columnWidths property while destructuring and it is trying to read it in the "for loops".&lt;BR /&gt;Please respond if any of you know how to handle this.&lt;BR /&gt;&lt;BR /&gt;Thanks&lt;BR /&gt;Manoj Prabu&lt;/P&gt;</description>
      <pubDate>Mon, 04 Mar 2024 13:26:56 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Dimensions-amp-Measures-as-columns-in-Qlik-Sense-properties/m-p/2426642#M20091</guid>
      <dc:creator>Manoj_Prabu</dc:creator>
      <dc:date>2024-03-04T13:26:56Z</dc:date>
    </item>
    <item>
      <title>Re: Dimensions &amp; Measures as columns in Qlik Sense properties panels</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Dimensions-amp-Measures-as-columns-in-Qlik-Sense-properties/m-p/2428038#M20124</link>
      <description>&lt;P&gt;What was it that you did to get the get the columns to show?&lt;/P&gt;
&lt;P&gt;Was it related to the add/remove functions?&lt;/P&gt;</description>
      <pubDate>Thu, 07 Mar 2024 04:56:55 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Dimensions-amp-Measures-as-columns-in-Qlik-Sense-properties/m-p/2428038#M20124</guid>
      <dc:creator>devan9876</dc:creator>
      <dc:date>2024-03-07T04:56:55Z</dc:date>
    </item>
    <item>
      <title>Re: Dimensions &amp; Measures as columns in Qlik Sense properties panels</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Dimensions-amp-Measures-as-columns-in-Qlik-Sense-properties/m-p/2428049#M20125</link>
      <description>&lt;P&gt;I think I have it working now.&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="javascript"&gt;define( [ "qlik"],
function ( qlik) {
	const indexAdded = function(e, t) {
		let n;
		for (n = 0; n &amp;lt; e.length; ++n)
		e[n] &amp;gt;= 0 &amp;amp;&amp;amp; e[n] &amp;gt;= t &amp;amp;&amp;amp; ++e[n];
		e.push(t)
	};

	const indexRemoved = function(e, t) {
				let n, i = 0;
				for (n = 0; n &amp;lt; e.length; ++n)
					e[n] &amp;gt; t ? --e[n] : e[n] === t &amp;amp;&amp;amp; (i = n);
				return e.splice(i, 1),
				i
	};
	return {
		initialProperties:{
			qHyperCubeDef:{
				qDimensions: [],
				qMeasures: [],
				qMode: "S",
				columnWidths:[],
				columnOrder: []
				}
		},
		definition:{
			type: "items",
			component: "accordion",
			items: {
				data:{
					type: "items",
					component: "columns",
					translation: "Common.Data",
					sortIndexRef: "qHyperCubeDef.qColumnOrder",
					allowMove: true,
					allowAdd: true,
					addTranslation: "Common.Columns",
					items: {
						dimensions: {
							uses:"dimensions",
							min:1,
							max:5,
							add(e, t, o) {
								console.log("add dimension");
								const n = o.hcProperties.qColumnOrder
								, i = o.hcProperties.columnOrder
								, l = o.hcProperties.columnWidths
								, r = o.getDimensions().length - 1;
								return indexAdded(n, r),
								indexAdded(i, r),
								l.splice(r, 0, -1),
								e
							},
							remove(e, t, o, n) {
								const i = o.hcProperties.qColumnOrder
								, l = o.hcProperties.columnOrder
								, r = o.hcProperties.columnWidths;
								indexRemoved(i, n),
								indexRemoved(l, n),
								r.splice(i[n], 1)
							}
						},
						measures: {
							uses:"measures",
							min:1,
							max:5,
							add(e, t, o) {
								console.log("add measure");
								const n = o.hcProperties.qColumnOrder
								, i = o.hcProperties.columnOrder
								, l = o.hcProperties.columnWidths
								, r = o.getDimensions().length + o.getMeasures().length - 1;
								indexAdded(n, r),
								indexAdded(i, r),
								l.splice(n[r], 0, -1)
							},
							remove(e, t, o, n) {
								const i = o.hcProperties.qColumnOrder
								, l = o.hcProperties.columnOrder
								, r = o.hcProperties.columnWidths
								, s = (o.hcProperties.qDimensions ? o.hcProperties.qDimensions.length : 0) + n;
								indexRemoved(i, s),
								indexRemoved(l, s),
								r.splice(s, 1)
							}
						}
					}
				}
			}
		},
		support : {
			snapshot: true,
			export: true,
			exportData : false
		},
		paint: function ($element,layout) {
			//add your rendering code here
			$element.html( "Hello World" );
			//needed for export
			return qlik.Promise.resolve();
		}
	};
});

&lt;/LI-CODE&gt;</description>
      <pubDate>Thu, 07 Mar 2024 06:19:29 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Dimensions-amp-Measures-as-columns-in-Qlik-Sense-properties/m-p/2428049#M20125</guid>
      <dc:creator>devan9876</dc:creator>
      <dc:date>2024-03-07T06:19:29Z</dc:date>
    </item>
    <item>
      <title>Re: Dimensions &amp; Measures as columns in Qlik Sense properties panels</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Dimensions-amp-Measures-as-columns-in-Qlik-Sense-properties/m-p/2428066#M20129</link>
      <description>&lt;P&gt;Hi Devan,&amp;nbsp;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; To show columns, we need to include add &amp;amp; remove functionality in dimensions and measures. but the issue will emerge while you trying to reorder the columns.&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Actually, I fixed those issues as well and I'm doing a documentation regarding this. Once it done, I'll post the respective link for this.&lt;BR /&gt;&lt;BR /&gt;Thanks&lt;BR /&gt;Manoj Prabu&lt;/P&gt;</description>
      <pubDate>Thu, 07 Mar 2024 07:21:47 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Dimensions-amp-Measures-as-columns-in-Qlik-Sense-properties/m-p/2428066#M20129</guid>
      <dc:creator>Manoj_Prabu</dc:creator>
      <dc:date>2024-03-07T07:21:47Z</dc:date>
    </item>
    <item>
      <title>Re: Dimensions &amp; Measures as columns in Qlik Sense properties panels</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Dimensions-amp-Measures-as-columns-in-Qlik-Sense-properties/m-p/2428073#M20130</link>
      <description>&lt;P&gt;Hi Community,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I thought it will be useful for everyone if I share it here.&lt;/P&gt;
&lt;LI-CODE lang="javascript"&gt;//Properties
column: {
              type: "items",
              component: "columns",
              translation: "Common.Data",
              sortIndexRef: "qHyperCubeDef.qColumnOrder",
              allowMove: true,
              allowAdd: true,
              addTranslation: "Common.Columns",
              items: {
                dimensions: {
                  type: "array",
                  uses: "dimensions",
                  min: 0,
                  max: 10,
                  grouped: true,
                  ref: "qHyperCubeDef.qDimensions",
                  add: (a, b, c) =&amp;gt; {
                    b["qHyperCubeDef"]["columnWidths"] = Array(c.hcProperties.qInterColumnSortOrder.length).fill(-1);
                    return columnAdd(
                      c.hcProperties.qColumnOrder,
                      c.getDimensions().length - 1
                    );
                  },
                  remove: (a, b, c, d) =&amp;gt; {
                    b["qHyperCubeDef"]["columnWidths"].pop();
                    return columnRemove(c.hcProperties.qColumnOrder, d);
                  }
                },
                measures: {
                  type: "array",
                  uses: "measures",
                  min: 0,
                  max: 10,
                  grouped: true,
                  ref: "qHyperCubeDef.qMeasures",
                  add: (a, b, c) =&amp;gt; {
                    b["qHyperCubeDef"]["columnWidths"] = Array(c.hcProperties.qInterColumnSortOrder.length).fill(-1);
                    return columnAdd(
                      c.hcProperties.qColumnOrder,
                      c.getDimensions().length + c.getMeasures().length - 1
                    );
                  },
                  remove: (a, b, c, d) =&amp;gt; {
                    b["qHyperCubeDef"]["columnWidths"].pop();
                    return columnRemove(
                      c.hcProperties.qColumnOrder,
                      c.getDimensions().length + d
                    );
                  }
                },
              }
            }

//Functions
  function columnAdd(arr, val) {
    for (let i = 0; i &amp;lt; arr.length; i++) {
      if (arr[i] &amp;gt;= val) arr[i] += 1;
    }
    arr.push(val)
    return arr;
  }
  function columnRemove(arr, val) {
    const indx = arr.indexOf(val);
    arr.splice(indx, 1);
    for (let i = 0; i &amp;lt; arr.length; i++) {
      if (arr[i] &amp;gt; val) arr[i] -= 1
    }
    return arr;
  }&lt;/LI-CODE&gt;
&lt;P&gt;&lt;BR /&gt;&amp;nbsp;Thanks&lt;BR /&gt;Manoj Prabu&lt;/P&gt;</description>
      <pubDate>Thu, 07 Mar 2024 07:31:54 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Dimensions-amp-Measures-as-columns-in-Qlik-Sense-properties/m-p/2428073#M20130</guid>
      <dc:creator>Manoj_Prabu</dc:creator>
      <dc:date>2024-03-07T07:31:54Z</dc:date>
    </item>
  </channel>
</rss>

