Skip to content

Commit a609d98

Browse files
author
Quant Lab
committed
update chart
1 parent 5242d69 commit a609d98

10 files changed

Lines changed: 398 additions & 156 deletions

File tree

packages/calendar-extension/package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@
2929
"watch": "tsc -w"
3030
},
3131
"quantlab": {
32-
"extension": true
32+
"extension": true,
33+
"schemas": [
34+
"schema/jupyter.services.calendar.json"
35+
]
3336
},
3437
"repository": {
3538
"type": "git",

packages/docregistry/src/registry.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1169,7 +1169,7 @@ namespace DocumentRegistry {
11691169
},
11701170
{
11711171
name: 'hc',
1172-
extensions: ['.hc', '.hs', '.hm'],
1172+
extensions: ['.hc'],
11731173
iconClass: 'jp-MaterialIcon jp-ChartIcon'
11741174
},
11751175
{

packages/highcharts-extension/src/index.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ const FACTORY = 'HighCharts';
5555
*/
5656
const CHART_ICON_CLASS = 'jp-ChartIcon';
5757

58+
/**
59+
* The chart tools extension.
60+
*/
5861
const chartToolsPlugin: QuantLabPlugin<IChartTools> = {
5962
activate: activateChartTools,
6063
provides: IChartTools,
@@ -64,9 +67,9 @@ const chartToolsPlugin: QuantLabPlugin<IChartTools> = {
6467
};
6568

6669
/**
67-
* The default chart extension.
70+
* The chart widget tracker provider.
6871
*/
69-
const chartPlugin: QuantLabPlugin<IChartTracker> = {
72+
const trackerPlugin: QuantLabPlugin<IChartTracker> = {
7073
activate: activateCharts,
7174
id: 'jupyter.extensions.highcharts',
7275
provides: IChartTracker,
@@ -81,13 +84,13 @@ const chartPlugin: QuantLabPlugin<IChartTracker> = {
8184
/**
8285
* Export the plugin as default.
8386
*/
84-
const plugins: QuantLabPlugin<any>[] = [chartPlugin, chartToolsPlugin];
87+
const plugins: QuantLabPlugin<any>[] = [trackerPlugin, chartToolsPlugin];
8588
export default plugins;
8689

8790
function activateChartTools(app: QuantLab, tracker: IChartTracker, editorServices: IEditorServices, state: IStateDB): Promise<IChartTools> {
8891
const id = 'chart-tools';
8992
const charttools = new ChartTools({tracker});
90-
const slideShow = ChartTools.createSlideShowSelector();
93+
const category = ChartTools.createCategorySelector();
9194
const nbConvert = ChartTools.createNBConvertSelector();
9295
const editorFactory = editorServices.factoryService.newInlineEditor
9396
.bind(editorServices.factoryService);
@@ -109,11 +112,11 @@ function activateChartTools(app: QuantLab, tracker: IChartTracker, editorService
109112
return true;
110113
};
111114

112-
charttools.title.label = 'Chart Tools';
115+
charttools.title.label = 'Highcharts';
113116
charttools.id = id;
114-
charttools.addItem({ tool: slideShow, rank: 2 });
115-
charttools.addItem({ tool: nbConvert, rank: 3 });
116-
charttools.addItem({ tool: metadataEditor, rank: 4 });
117+
charttools.addItem({ tool: category, rank: 1 });
118+
charttools.addItem({ tool: nbConvert, rank: 2 });
119+
charttools.addItem({ tool: metadataEditor, rank: 3 });
117120
MessageLoop.installMessageHook(charttools, hook);
118121

119122
// Wait until the application has finished restoring before rendering.

packages/highcharts/src/tools.ts

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -370,17 +370,14 @@ namespace ChartTools {
370370
* Create a slideshow selector.
371371
*/
372372
export
373-
function createSlideShowSelector(): KeySelector {
373+
function createCategorySelector(): KeySelector {
374374
let options: KeySelector.IOptions = {
375-
key: 'slideshow',
376-
title: 'Slide Type',
375+
key: 'category',
376+
title: 'Category',
377377
optionsMap: {
378-
'-': '-',
379-
'Slide': 'slide',
380-
'Sub-Slide': 'subslide',
381-
'Fragment': 'fragment',
382-
'Skip': 'skip',
383-
'Notes': 'notes'
378+
'Chart': 'chart',
379+
'Stock': 'stock',
380+
'Map': 'map'
384381
}
385382
};
386383
return new KeySelector(options);
@@ -393,9 +390,9 @@ namespace ChartTools {
393390
function createNBConvertSelector(): KeySelector {
394391
return new KeySelector({
395392
key: 'raw_mimetype',
396-
title: 'Raw NBConvert Format',
393+
title: 'Type',
397394
optionsMap: {
398-
'None': '-',
395+
'-': '-',
399396
'LaTeX': 'text/latex',
400397
'reST': 'text/restructuredtext',
401398
'HTML': 'text/html',

packages/highcharts/src/typings.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,8 @@
44
/// <reference path="../typings/highcharts/highcharts.d.ts"/>
55
/// <reference path="../typings/highstock/highstock.d.ts"/>
66
/// <reference path="../typings/highmaps/highmaps.d.ts"/>
7+
8+
declare module "*.json" {
9+
const value: any;
10+
export default value;
11+
}

packages/highcharts/src/widget.ts

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,15 @@ import {
2626
} from '@quantlab/docregistry';
2727

2828
import * as Highcharts from 'highcharts';
29-
29+
import Highmore = require('highcharts/highcharts-more');
30+
import High3D = require('highcharts/highcharts-3d');
31+
import HighDrag3D = require('highcharts/modules/draggable-3d');
32+
import HighGauge = require('highcharts/modules/solid-gauge');
33+
//import HighData = require('highcharts/modules/data');
34+
//import HighExport = require('highcharts/modules/exporting');
3035
import * as Highstock from 'highcharts/highstock';
31-
3236
import * as Highmaps from 'highcharts/highmaps';
33-
import 'highcharts/modules/data';
37+
3438

3539
const HIGHCHARTS_CLASS = 'jp-HighCharts';
3640

@@ -51,6 +55,7 @@ class HighCharts extends Widget implements DocumentRegistry.IReadyWidget {
5155
context.pathChanged.connect(this._onPathChanged, this);
5256
context.ready.then(() => { this._onContextReady(); });
5357
this._onPathChanged();
58+
5459
}
5560

5661
get context(): DocumentRegistry.Context {
@@ -86,7 +91,9 @@ class HighCharts extends Widget implements DocumentRegistry.IReadyWidget {
8691
if (monitor) {
8792
monitor.dispose();
8893
}
94+
//while(this._chart.series.length > 0) this._chart.series[0].remove(true);
8995
this._chart.destroy();
96+
this._chart = null;
9097
super.dispose();
9198
}
9299

@@ -119,15 +126,18 @@ class HighCharts extends Widget implements DocumentRegistry.IReadyWidget {
119126
};
120127
content.reflow = false;
121128

122-
const path = this._context.path;
123-
let ext = PathExt.basename(path.split(':').pop()!);
124-
ext = ext.split('.').pop();
129+
if(this._chart != null){
130+
this._chart.destroy();
131+
}
125132

126-
if(ext == 'hc')
133+
if(content.category == 'chart'){
127134
this._chart = Highcharts.chart(this.id, content);
128-
else if(ext == 'hs')
135+
}
136+
if(content.category == 'stock'){
129137
this._chart = new Highstock.StockChart(this.id, content);
130-
else if(ext == 'hm'){
138+
}
139+
if(content.category == 'map'){
140+
//content.mapData = worldGeo;
131141
this._chart = Highmaps.mapChart(this.id, content);
132142
}
133143

@@ -153,6 +163,16 @@ namespace HighCharts {
153163

154164
export
155165
class HighChartsFactory extends ABCWidgetFactory<HighCharts, DocumentRegistry.IModel> {
166+
constructor(options:DocumentRegistry.IWidgetFactoryOptions){
167+
super(options);
168+
Highmore(Highcharts);
169+
High3D(Highcharts);
170+
HighDrag3D(Highcharts);
171+
HighGauge(Highcharts);
172+
//HighData(Highcharts);
173+
//HighExport(Highcharts);
174+
}
175+
156176
/**
157177
* Create a new widget given a context.
158178
*/

packages/highcharts/style/index.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
| Distributed under the terms of the Modified BSD License.
44
|----------------------------------------------------------------------------*/
55

6-
@import url('~highcharts/css/highcharts.css');
6+
/*@import url('~highcharts/css/highcharts.css');*/

packages/spreadsheet-extension/src/index.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ const SPREADSHEET_ICON_CLASS = 'jp-SpreadsheetIcon';
6363
*/
6464
const DIRTY_CLASS = 'jp-mod-dirty';
6565

66-
66+
/**
67+
* The sheet tools extension.
68+
*/
6769
const sheetToolsPlugin: QuantLabPlugin<ISheetTools> = {
6870
activate: activateSheetTools,
6971
provides: ISheetTools,
@@ -73,9 +75,9 @@ const sheetToolsPlugin: QuantLabPlugin<ISheetTools> = {
7375
};
7476

7577
/**
76-
* The default sheet extension.
78+
* The spreadsheet widget tracker provider.
7779
*/
78-
const sheetPlugin: QuantLabPlugin<ISpreadsheetTracker> = {
80+
const trackerPlugin: QuantLabPlugin<ISpreadsheetTracker> = {
7981
activate: activateSpreadsheet,
8082
id: 'jupyter.extensions.spreadsheet',
8183
provides: ISpreadsheetTracker,
@@ -90,7 +92,7 @@ const sheetPlugin: QuantLabPlugin<ISpreadsheetTracker> = {
9092
/**
9193
* Export the plugin as default.
9294
*/
93-
const plugins: QuantLabPlugin<any>[] = [sheetPlugin, sheetToolsPlugin];
95+
const plugins: QuantLabPlugin<any>[] = [trackerPlugin, sheetToolsPlugin];
9496
export default plugins;
9597

9698
function activateSheetTools(app: QuantLab, tracker: ISpreadsheetTracker, editorServices: IEditorServices, state: IStateDB): Promise<ISheetTools> {
@@ -119,7 +121,7 @@ function activateSheetTools(app: QuantLab, tracker: ISpreadsheetTracker, editorS
119121
return true;
120122
};
121123

122-
sheettools.title.label = 'Sheet Tools';
124+
sheettools.title.label = 'Spreadsheet';
123125
sheettools.id = id;
124126
sheettools.addItem({ tool: activeCellTool, rank: 1 });
125127
sheettools.addItem({ tool: slideShow, rank: 2 });

0 commit comments

Comments
 (0)