Skip to content

Commit b0c1d3f

Browse files
authored
fix: multiple axis of different scales (#49)
fix: multiple axis of different scales (#49)
1 parent bd193ad commit b0c1d3f

File tree

5 files changed

+114
-1
lines changed

5 files changed

+114
-1
lines changed

__tests__/unit/attributes/cartesianAxis.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const TEST_DATA_PROPERTIES = [
77
yAxes: [{ position: 'foo' }]
88
}),
99
ChartOptionMock('offset', true, { yAxes: [{ offset: true }] }),
10-
ChartOptionMock('id', 'foo', { yAxes: [{ id: 'foo' }] }),
10+
ChartOptionMock('axisid', 'foo', { yAxes: [{ id: 'foo' }] }),
1111
ChartOptionMock('ticksMin', 'foo', {
1212
yAxes: [{ ticks: { min: 'foo' } }]
1313
}),

__tests__/unit/chartConfigService.test.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,23 @@ describe('c-chart-config-service', () => {
3636
chartConfigService.getConfig()[ATTRIBUTE_CARTESIAN_AXES]
3737
).toMatchObject(testSubject);
3838
});
39+
test(`Update scales config with multiple scales on same axis`, () => {
40+
const chartConfigService = new ChartConfigService();
41+
const firstAxis = { uuid: 1, gridLines: { offsetGridLines: 10 } };
42+
const secondAxis = { uuid: 2, gridLines: { offsetGridLines: 20 } };
43+
chartConfigService.updateConfig(
44+
{ yAxes: [firstAxis] },
45+
ATTRIBUTE_CARTESIAN_AXES
46+
);
47+
chartConfigService.updateConfig(
48+
{ yAxes: [secondAxis] },
49+
ATTRIBUTE_CARTESIAN_AXES
50+
);
51+
const testSubject = { yAxes: [firstAxis, secondAxis] };
52+
expect(
53+
chartConfigService.getConfig()[ATTRIBUTE_CARTESIAN_AXES]
54+
).toMatchObject(testSubject);
55+
});
3956
test(`Update config with new object`, () => {
4057
const chartConfigService = new ChartConfigService();
4158
const testSubject = { test: { attribut: 'val' } };

force-app/main/default/lwc/cartesianAxis/cartesianAxis.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,22 @@ export default class CartesianAxis extends BaseAxis {
5353
this._content.offset = parseBoolean(v);
5454
}
5555

56+
/**
57+
* @deprecated Property replaced by axisid
58+
*/
5659
@api
5760
get id() {
5861
return this._content.id;
5962
}
6063
set id(v) {
64+
// Do nothing
65+
}
66+
67+
@api
68+
get axisid() {
69+
return this._content.id;
70+
}
71+
set axisid(v) {
6172
this._content.id = v;
6273
}
6374

force-app/main/default/lwc/chartConfigService/chartConfigService.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,15 @@ export default class ChartConfigService {
6161
} else {
6262
// the attribut is an object we don't know
6363
this._config[option][attribut] = payload[attribut]; // store it
64+
65+
// If this is a scale object with data, add it to the scales property
66+
if (
67+
Object.prototype.hasOwnProperty.call(this._scales, attribut) &&
68+
payload[attribut] !== undefined
69+
) {
70+
this._scales[attribut][payload[attribut][0].uuid] =
71+
payload[attribut][0];
72+
}
6473
}
6574
});
6675
}

force-app/sample/default/lwc/sampleApp/sampleApp.html

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -731,5 +731,81 @@
731731
</c-chart>
732732
</code>
733733
</c-sample-app-item>
734+
735+
<!-- Multiple axes -->
736+
<c-sample-app-item>
737+
<c-chart slot="chartExample" type="line" responsive="true">
738+
<c-dataset labels='["A", "B", "C", "D", "E"]'>
739+
<c-data
740+
yaxisid="left"
741+
label="Left dataset"
742+
backgroundcolor="rgba(82, 183, 216, 1)"
743+
bordercolor="rgba(82, 183, 216, 0.2)"
744+
detail="[10, 9, 4, 3, 6]"
745+
fill="false"
746+
></c-data>
747+
<c-data
748+
yaxisid="right"
749+
label="Right dataset"
750+
detail="[3, 2, 1, 5, 0]"
751+
backgroundcolor="rgba(84, 167, 123, 1)"
752+
bordercolor="rgba(84, 167, 123, 0.2)"
753+
fill="false"
754+
></c-data>
755+
</c-dataset>
756+
<c-title text="Multiple axes with different scales"></c-title>
757+
<c-cartesian-axis
758+
axis="x"
759+
position="bottom"
760+
type="category"
761+
></c-cartesian-axis>
762+
<c-cartesian-linear-axis
763+
axisid="left"
764+
axis="y"
765+
position="left"
766+
ticks-stepsize="3"
767+
title-labelstring="Left axis"
768+
title-display="true"
769+
></c-cartesian-linear-axis>
770+
<c-cartesian-linear-axis
771+
axisid="right"
772+
axis="y"
773+
position="right"
774+
ticks-stepsize="1"
775+
title-labelstring="Right axis"
776+
title-display="true"
777+
></c-cartesian-linear-axis>
778+
</c-chart>
779+
<code slot="chartCode" lang="html">
780+
&lt;c-chart type=&quot;line&quot; responsive=&quot;true&quot;&gt;<br />
781+
&emsp;&lt;c-dataset labels=&apos;[&quot;A&quot;, &quot;B&quot;,
782+
&quot;C&quot;, &quot;D&quot;, &quot;E&quot;]&apos;&gt;<br />
783+
&emsp;&emsp;&lt;c-data yaxisid=&quot;left&quot; label=&quot;Left
784+
dataset&quot; detail=&quot;[10, 9, 4, 3, 6]&quot;
785+
backgroundcolor=&quot;rgba(82, 183, 216, 1)&quot;<br />
786+
&emsp;&emsp;&emsp;bordercolor=&quot;rgba(82, 183, 216, 0.2)&quot;
787+
fill=&quot;false&quot;&gt;&lt;/c-data&gt;<br />
788+
&emsp;&emsp;&lt;c-data yaxisid=&quot;right&quot; label=&quot;Right
789+
dataset&quot; detail=&quot;[3, 2, 1, 5, 0]&quot;
790+
backgroundcolor=&quot;rgba(84, 167, 123, 1)&quot;<br />
791+
&emsp;&emsp;&emsp;bordercolor=&quot;rgba(84, 167, 123, 0.2)&quot;
792+
fill=&quot;false&quot;&gt;&lt;/c-data&gt;<br />
793+
&emsp;&lt;/c-dataset&gt;<br />
794+
&emsp;&lt;c-title text=&quot;Multiple axes with different
795+
scales&quot;&gt;&lt;/c-title&gt;<br />
796+
&emsp;&lt;c-cartesian-axis axis=&quot;x&quot;
797+
position=&quot;bottom&quot;
798+
type=&quot;category&quot;&gt;&lt;/c-cartesian-axis&gt;<br />
799+
&emsp;&lt;c-cartesian-linear-axis axisid=&quot;left&quot;
800+
axis=&quot;y&quot; position=&quot;left&quot;
801+
ticks-stepsize=&quot;3&quot; title-labelstring=&quot;Left axis&quot;<br />
802+
&emsp;&emsp;title-display=&quot;true&quot;&gt;&lt;/c-cartesian-linear-axis&gt;<br />
803+
&emsp;&lt;c-cartesian-linear-axis axisid=&quot;right&quot;
804+
axis=&quot;y&quot; position=&quot;right&quot;
805+
ticks-stepsize=&quot;1&quot; title-labelstring=&quot;Right axis&quot;<br />
806+
&emsp;&emsp;title-display=&quot;true&quot;&gt;&lt;/c-cartesian-linear-axis&gt;<br />
807+
&lt;/c-chart&gt;
808+
</code>
809+
</c-sample-app-item>
734810
</div>
735811
</template>

0 commit comments

Comments
 (0)