Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding Chart component #24357

Merged
merged 56 commits into from
Sep 14, 2023
Merged
Show file tree
Hide file tree
Changes from 53 commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
ca7f266
added doughnut chart component
deepaksa1 Mar 29, 2023
32ef5c6
Changing chart to doughnutChart
deepaksa1 Apr 6, 2023
379d354
reverting to genreic chart component
deepaksa1 May 1, 2023
beb41a8
adding more chart supoort
deepaksa1 May 2, 2023
ebbebf5
fix minor errors
deepaksa1 May 2, 2023
bb31a76
Merge remote-tracking branch 'origin/main' into deepaksa1/chartComponent
Charles-Gagnon May 2, 2023
097e373
resolve some PR comments
deepaksa1 May 4, 2023
5c8726a
Merge remote-tracking branch 'origin' into deepaksa1/chartComponent
aasimkhan30 Jun 21, 2023
fa9faf8
native chartjs, keyboard navigation and chart options
deepaksa1 Jul 18, 2023
132c7dd
Merge branch 'main' into deepaksa1/chartComponent
deepaksa1 Jul 25, 2023
4115347
fix build errors
deepaksa1 Jul 25, 2023
fae2af7
fix chart.js/auto error
deepaksa1 Jul 25, 2023
4d2d2cf
resolve PR comments
deepaksa1 Aug 2, 2023
aff5b04
modify chartdataset API
deepaksa1 Sep 6, 2023
513d80b
Merge branch 'main' into deepaksa1/chartComponent
deepaksa1 Sep 6, 2023
09929e1
Refactoring (#24327)
Benjin Sep 7, 2023
54a442b
remove hardcoded canvasID, enabled Scatterplot config
deepaksa1 Sep 7, 2023
39751a7
Moved graph testing to sample extension
Benjin Sep 7, 2023
8a21f3a
Merge branch 'main' into deepaksa1/chartComponent
Benjin Sep 7, 2023
28e54d8
Reorganizing types; adding test back to assessment dialog
Benjin Sep 7, 2023
a6e01a4
Adding example for bubble chart
Benjin Sep 7, 2023
264396d
Polar area working
Benjin Sep 7, 2023
61d3746
cleanup
Benjin Sep 7, 2023
0932e0e
adding draw when options isn't set
Benjin Sep 8, 2023
244b7bd
Merge branch 'main' into deepaksa1/chartComponent
Benjin Sep 8, 2023
40d4edc
Moving chart example configs to other file
Benjin Sep 8, 2023
1d5c2ca
some cleanup
deepaksa1 Sep 8, 2023
538aaf5
added some docstrings
deepaksa1 Sep 8, 2023
510f6ce
add multiple datasets to test scatter plot
deepaksa1 Sep 8, 2023
6a13ce3
update scatter plot example in sample
deepaksa1 Sep 8, 2023
ba27dd4
Adding height/width support
Benjin Sep 8, 2023
79a8132
swapping to `as` cast
Benjin Sep 8, 2023
8054e0b
title working
Benjin Sep 9, 2023
c7738f3
Settling chart title and legend display
Benjin Sep 9, 2023
d75903e
Adding comments
Benjin Sep 9, 2023
f23b9e1
updating data working
Benjin Sep 9, 2023
c8b457a
Updating samples
Benjin Sep 9, 2023
2ee43e5
Typo in comment
Benjin Sep 9, 2023
e31fe42
Reverting changes made for development
Benjin Sep 9, 2023
9298cc0
Elaborating on color in docstrings
Benjin Sep 9, 2023
3427e69
Merge branch 'main' into deepaksa1/chartComponent
Benjin Sep 11, 2023
2b5a48c
Separating Data and Options in component payloads
Benjin Sep 12, 2023
5971ed4
Removing chartId as an exposed property
Benjin Sep 12, 2023
c063c40
Changing chartType property to TChartType
Benjin Sep 13, 2023
eaa4f90
Fleshing out types file comments
Benjin Sep 13, 2023
2adeb64
fixing scoping of chart component properties; renaming chart canvas I…
Benjin Sep 13, 2023
15ee0d8
correct internal chart options typing
Benjin Sep 13, 2023
95f2605
removing commented-out code
Benjin Sep 13, 2023
91b0cb0
removing unused ChartClickEvent type until data selection eventing is…
Benjin Sep 13, 2023
aa5ff2e
renaming function
Benjin Sep 13, 2023
ee061d3
deleted commented-out code
Benjin Sep 13, 2023
83ef0d1
Adding options setters that went missing after splitting Config to Da…
Benjin Sep 13, 2023
f4c657c
adding type predicates for data conversion
Benjin Sep 13, 2023
1cc1d91
Adding back type setting (dropped when chart type conversion moved)
Benjin Sep 13, 2023
0603b4d
Narrowing type for 'type'
Benjin Sep 13, 2023
39781a0
Fixing typos in docstring
Benjin Sep 13, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions extensions/dacpac/src/test/testContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,7 @@ export function createViewContext(): ViewTestContext {
modelBuilder: {
listView: undefined!,
radioCardGroup: undefined!,
chart: undefined!,
navContainer: undefined!,
divContainer: () => divBuilder,
flexContainer: () => flexBuilder,
Expand Down
3 changes: 3 additions & 0 deletions extensions/datavirtualization/src/test/stubs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,9 @@ export class MockModelBuilder implements azdata.ModelBuilder {
listView(): azdata.ComponentBuilder<azdata.ListViewComponent, azdata.ListViewComponentProperties> {
throw new Error('Method not implemented.');
}
chart<TChartType extends azdata.ChartType, TData extends azdata.ChartData<TChartType>, TOptions extends azdata.ChartOptions<TChartType>>(): azdata.ComponentBuilder<azdata.ChartComponent<TChartType, TData, TOptions>, azdata.ChartComponentProperties<TChartType, TData, TOptions>> {
throw new Error('Method not implemented.');
}
slider(): azdata.ComponentBuilder<azdata.SliderComponent, azdata.SliderComponentProperties> {
throw new Error('Method not implemented.');
}
Expand Down
1 change: 1 addition & 0 deletions extensions/machine-learning/src/test/views/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@ export function createViewContext(): ViewTestContext {
modelBuilder: {
listView: undefined!,
radioCardGroup: undefined!,
chart: undefined!,
navContainer: undefined!,
divContainer: () => divBuilder,
flexContainer: () => flexBuilder,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@ describe('Manage Package Dialog', () => {
modelBuilder: {
listView: undefined!,
radioCardGroup: undefined!,
chart: undefined!,
navContainer: undefined!,
divContainer: undefined!,
flexContainer: () => flexBuilder,
Expand Down
1 change: 1 addition & 0 deletions extensions/query-store/src/test/testUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ export function createViewContext(): TestContext {
modelBuilder: {
listView: undefined!,
radioCardGroup: undefined!,
chart: undefined!,
navContainer: undefined!,
divContainer: undefined!,
flexContainer: () => flexBuilder,
Expand Down
1 change: 1 addition & 0 deletions extensions/schema-compare/src/test/testContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,7 @@ export function createViewContext(): ViewTestContext {
modelBuilder: {
listView: undefined!,
radioCardGroup: undefined!,
chart: undefined!,
navContainer: undefined!,
divContainer: () => divBuilder,
flexContainer: () => flexBuilder,
Expand Down
3 changes: 1 addition & 2 deletions samples/sqlservices/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ This is a sample extension that will show some basic model-backed UI scenarios a
- `yarn install` - to install dependencies
- `yarn build` - to build the code
- Launch VSCode and open the azuredatastudio's code folder, run the 'Launch azuredatastudio' debug option (to work around the issue. The next step won't work without doing this first)
- Launch VSCode and open this folder, run the 'Debug in enlistment'. To debug, [install the `sqlops-debug` extension](https://github.com/Microsoft/azuredatastudio/wiki/Debugging-an-Extension-with-VS-Code) in VS Code.
- Launch VSCode and open this folder, run the 'Debug in enlistment'
- Launch VSCode and open this folder, run the 'Debug in enlistment' target. To debug, [install the `sqlops-debug` extension](https://github.com/Microsoft/azuredatastudio/wiki/Debugging-an-Extension-with-VS-Code) in VS Code.
- Once ADS launches, you should be able to run the sqlservices commands, for example: `sqlservices.openDialog`.

## Consuming `azdata` typing changes during development
Expand Down
312 changes: 312 additions & 0 deletions samples/sqlservices/src/chartExamples.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,312 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/

import * as azdata from 'azdata';

export const barData: azdata.BarChartData = {
datasets: [
{
data: [3, 4, 5, 4],
backgroundColor: 'rgb(0, 0, 0, 0.8)',
borderColor: 'black',
dataLabel: 'Black Stripes'
},
{
data: [4, 4.5, 4, 3.5],
backgroundColor: 'rgb(255, 255, 0, 0.8)',
borderColor: 'yellow',
dataLabel: 'Yellow Stripes'
},
{
data: [5, 3.5, 3, 4],
backgroundColor: 'rgb(255, 0, 0, 0.8)',
borderColor: 'red',
dataLabel: 'Red Stripes'
}
],
labels: ['Een', 'Twee', 'Drie', 'Vier']
};

export const barOptions: azdata.BarChartOptions = {
chartTitle: 'Test Bar Chart - Belgian Flag',
scales: {
x: {
max: 8
}
}
};

export const horizontalBarData: azdata.HorizontalBarChartData = {
datasets: [
{
data: [3, 8],
backgroundColor: '#FF8800BB',
borderColor: 'orange',
dataLabel: 'Orange Stripes'
},
{
data: [3.5, 7],
backgroundColor: '#FFFFFFBB',
borderColor: 'white',
dataLabel: 'White Stripes'
},
{
data: [4, 9],
backgroundColor: '#008800BB',
borderColor: '#008800',
dataLabel: 'Green Stripes'
}
],
labels: ['Ek', 'Do']
};

export const horizontalBarOptions: azdata.HorizontalBarChartOptions = {
chartTitle: 'Test Horizontal Bar Chart - Indian Flag',
scales: {
x: {
max: 8
}
}
};

export const lineData: azdata.LineChartData = {
datasets: [
{
data: [2, 3, 4],
backgroundColor: '#FFFF88',
borderColor: '#FFFF00',
dataLabel: 'By One'
},
{
data: [3.5, 4, 4.5],
backgroundColor: '#88FFFF',
borderColor: '#00FFFF',
dataLabel: 'By Half'
},
{
data: [1, 3, 5],
backgroundColor: '#FF88FF',
borderColor: '#FF00FF',
dataLabel: 'By Two'
}
],
labels: ['uno', 'dos', 'tres', 'quatro']
};

export const lineOptions: azdata.LineChartOptions = {
chartTitle: 'Test Line Chart',
scales: {
x: {
max: 8
}
}
};

export const pieData: azdata.PieChartData = {
dataset: [
{
value: 3,
backgroundColor: 'rgb(255, 255, 0, 0.5)',
borderColor: 'yellow',
dataLabel: 'Pacman'
},
{
value: 1,
backgroundColor: 'rgb(50, 50, 50, 0.5)',
borderColor: 'black',
dataLabel: 'Not Pacman'
}
]
};

export const pieOptions: azdata.PieChartOptions = {
chartTitle: 'Test Pie Chart - Pacman',
rotation: 135
};

export const doughnutData: azdata.DoughnutChartData = {
dataset: [
{
value: 50,
backgroundColor: 'rgb(50, 50, 50, 0.5)',
borderColor: 'black',
dataLabel: 'Eaten'
},
{
value: 100,
backgroundColor: 'rgb(180, 130, 85, 0.5)',
borderColor: 'brown',
dataLabel: 'No Icing'
},
{
value: 300,
backgroundColor: 'rgb(255, 150, 200, 0.5)',
borderColor: 'pink',
dataLabel: 'Icing'
}
]
};

export const doughnutOptions: azdata.DoughnutChartOptions = {
chartTitle: 'Test Doughnut Chart - Strawberry Doughnut'
};

export const scatterData: azdata.ScatterplotData = {
datasets: [
{
data: [
{ x: -10, y: 0 },
{ x: 0, y: 10 },
{ x: 10, y: 5 },
{ x: 0.5, y: 5.5 }
],
backgroundColor: 'rgb(255, 99, 132)',
borderColor: 'rgb(0, 255, 132)',
dataLabel: 'Rojo'
},
{
data:
[
{ x: -5, y: 2 },
{ x: 4, y: 8 },
{ x: -1, y: 6 }
],
backgroundColor: 'rgb(0, 102, 204)',
borderColor: 'rgb(0, 102, 204)',
dataLabel: 'Azul'
}
]
};

export const scatterOptions: azdata.ScatterplotOptions = {
chartTitle: 'Test Scatter Chart',
scales: {
x: {
position: 'bottom'
}
}
};

export const bubbleData: azdata.BubbleChartData = {
datasets: [
{
data:
[
{ x: 0, y: -5, r: 2 },
{ x: -2, y: -4.6, r: 4 },
{ x: -3.5, y: -3.5, r: 6 },
{ x: -4.6, y: -2, r: 8 },
{ x: -5, y: 0, r: 10 },
{ x: -4.6, y: 2, r: 12 },
{ x: -3.5, y: 3.5, r: 14 },
{ x: -2, y: 4.6, r: 16 },
{ x: 0, y: 5, r: 18 }
],
backgroundColor: '#FFFFFF88',
borderColor: 'white',
dataLabel: 'Yin'
},
{
data:
[
{ x: 0, y: 5, r: 2 },
{ x: 2, y: 4.6, r: 4 },
{ x: 3.5, y: 3.5, r: 6 },
{ x: 4.6, y: 2, r: 8 },
{ x: 5, y: 0, r: 10 },
{ x: 4.6, y: -2, r: 12 },
{ x: 3.5, y: -3.5, r: 14 },
{ x: 2, y: -4.6, r: 16 },
{ x: 0, y: -5, r: 18 }
],
backgroundColor: '#00000088',
borderColor: 'black',
dataLabel: 'Yang'
}
]
};

export const bubbleOptions: azdata.BubbleChartOptions = {
chartTitle: 'Test Bubble Chart - Yin and Yang',
scales: {
x: {
position: 'bottom'
}
}
};

export const polarData: azdata.PolarAreaChartData = {
dataset:
[
{
value: 1,
dataLabel: 'Rouge',
backgroundColor: '#FF0000',
borderColor: '#880000'
},
{
value: 2,
dataLabel: 'Orange',
backgroundColor: '#FF8800',
borderColor: '#884400'
},
{
value: 3,
dataLabel: 'Jaune',
backgroundColor: '#FFFF00',
borderColor: '#888800'
},
{
value: 4,
dataLabel: 'Vert',
backgroundColor: '#00FF00',
borderColor: '#008800'
},
{
value: 5,
dataLabel: 'Bleu',
backgroundColor: '#0000FF',
borderColor: '#000088'
},
{
value: 6,
dataLabel: 'Violet',
backgroundColor: '#8800FF',
borderColor: '#440088'
}
]
};

export const polarOptions: azdata.PolarAreaChartOptions = {
chartTitle: 'Test Polar Chart - Rainbow'
};

export const radarData: azdata.RadarChartData = {
datasets: [
{
data: [2, 2, 2, 2, 4, 7, 10, 11, 12, 2],
dataLabel: 'Left Wing',
backgroundColor: '#FF000033',
borderColor: '#FF0000'
},
{
data: [2, 2, 12, 11, 10, 7, 4, 2, 2, 2],
dataLabel: 'Right Wing',
backgroundColor: '#FF880033',
borderColor: '#FF8800'
},
{
data: [8, 6, 2, 1, 1, 1, 1, 1, 2, 6],
dataLabel: 'Head',
backgroundColor: '#FFFF0033',
borderColor: '#FFFF00'
}
],
labels: ['She\'ll', 'Be', 'Coming', 'Around', 'The', 'Firebird', 'When', 'She', 'Comes', 'Encore']
};

export const radarOptions: azdata.RadarChartOptions = {
chartTitle: 'Test Radar Chart - Firebird'
};
Loading
Loading