diff --git a/README.md b/README.md
index 9e9617e..438a1d0 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,7 @@
- [@essent/nativescript-iadvize](packages/nativescript-iadvize/README.md)
- [@essent/nativescript-medallia](packages/nativescript-medallia/README.md)
- [@essent/nativescript-ng-sentry](packages/nativescript-ng-sentry/README.md)
+- [@essent/nativescript-ui-charts](packages/nativescript-ui-charts/README.md)
- [@essent/nativescript-urban-airship](packages/nativescript-urban-airship/README.md)
# How to use?
diff --git a/apps/demo-angular/custom_android/application.android.ts b/apps/demo-angular/custom_android/application.android.ts
index 4ffed42..abbdaf5 100644
--- a/apps/demo-angular/custom_android/application.android.ts
+++ b/apps/demo-angular/custom_android/application.android.ts
@@ -1,4 +1,4 @@
-import { urbanAirshipSettings } from './urbanAirshipSettings';
+// import { urbanAirshipSettings } from './urbanAirshipSettings';
// import { NsUrbanAirship } from '@essent/nativescript-urban-airship';
// the `JavaProxy` decorator specifies the package and the name for the native *.JAVA file generated.
diff --git a/apps/demo-angular/package.json b/apps/demo-angular/package.json
index b6c7700..e090d92 100644
--- a/apps/demo-angular/package.json
+++ b/apps/demo-angular/package.json
@@ -2,11 +2,13 @@
"main": "./src/main.ts",
"dependencies": {
"@nativescript/core": "file:../../node_modules/@nativescript/core",
- "@essent/nativescript-ng-sentry": "file:../../dist/packages/nativescript-ng-sentry",
+ "@essent/nativescript-ui-charts": "file:../../dist/packages/nativescript-ui-charts",
"@essent/nativescript-adobe-experience-cloud": "file:../../dist/packages/nativescript-adobe-experience-cloud",
"@essent/nativescript-appdynamics": "file:../../dist/packages/nativescript-appdynamics",
"@essent/nativescript-iadvize": "file:../../dist/packages/nativescript-iadvize",
"@essent/nativescript-medallia": "file:../../dist/packages/nativescript-medallia",
+ "@essent/nativescript-ng-sentry": "file:../../dist/packages/nativescript-ng-sentry",
+ "@nativescript/nativescript-ui-charts": "file:../../dist/packages/nativescript-ui-charts",
"@essent/nativescript-urban-airship": "file:../../dist/packages/nativescript-urban-airship"
},
"devDependencies": {
diff --git a/apps/demo-angular/src/app-routing.module.ts b/apps/demo-angular/src/app-routing.module.ts
index 0d7cd81..a28efe2 100644
--- a/apps/demo-angular/src/app-routing.module.ts
+++ b/apps/demo-angular/src/app-routing.module.ts
@@ -12,6 +12,7 @@ const routes: Routes = [
{ path: 'nativescript-iadvize', loadChildren: () => import('./plugin-demos/nativescript-iadvize.module').then((m) => m.NativescriptIadvizeModule) },
{ path: 'nativescript-medallia', loadChildren: () => import('./plugin-demos/nativescript-medallia.module').then((m) => m.NativescriptMedalliaModule) },
{ path: 'nativescript-ng-sentry', loadChildren: () => import('./plugin-demos/nativescript-ng-sentry.module').then((m) => m.NativescriptNgSentryModule) },
+ { path: 'nativescript-ui-charts', loadChildren: () => import('./plugin-demos/nativescript-ui-charts.module').then((m) => m.NativescriptUiChartsModule) },
{ path: 'nativescript-urban-airship', loadChildren: () => import('./plugin-demos/nativescript-urban-airship.module').then((m) => m.NativescriptUrbanAirshipModule) },
];
diff --git a/apps/demo-angular/src/home.component.ts b/apps/demo-angular/src/home.component.ts
index 15e0a2b..43d7207 100644
--- a/apps/demo-angular/src/home.component.ts
+++ b/apps/demo-angular/src/home.component.ts
@@ -21,6 +21,9 @@ export class HomeComponent {
{
name: 'nativescript-ng-sentry',
},
+ {
+ name: 'nativescript-ui-charts',
+ },
{
name: 'nativescript-urban-airship',
},
diff --git a/apps/demo-angular/src/plugin-demos/nativescript-ui-charts.component.html b/apps/demo-angular/src/plugin-demos/nativescript-ui-charts.component.html
new file mode 100644
index 0000000..7fcee0f
--- /dev/null
+++ b/apps/demo-angular/src/plugin-demos/nativescript-ui-charts.component.html
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/apps/demo-angular/src/plugin-demos/nativescript-ui-charts.component.scss b/apps/demo-angular/src/plugin-demos/nativescript-ui-charts.component.scss
new file mode 100644
index 0000000..52e2394
--- /dev/null
+++ b/apps/demo-angular/src/plugin-demos/nativescript-ui-charts.component.scss
@@ -0,0 +1,3 @@
+.graph {
+ height: 300;
+}
diff --git a/apps/demo-angular/src/plugin-demos/nativescript-ui-charts.component.ts b/apps/demo-angular/src/plugin-demos/nativescript-ui-charts.component.ts
new file mode 100644
index 0000000..504b487
--- /dev/null
+++ b/apps/demo-angular/src/plugin-demos/nativescript-ui-charts.component.ts
@@ -0,0 +1,405 @@
+import { Component, NgZone } from '@angular/core';
+import { DemoSharedNativescriptUiCharts } from '@demo/shared';
+import {} from '@essent/nativescript-ui-charts';
+
+@Component({
+ selector: 'demo-nativescript-ui-charts',
+ templateUrl: 'nativescript-ui-charts.component.html',
+ styleUrls: ['./nativescript-ui-charts.component.scss'],
+})
+export class NativescriptUiChartsComponent {
+ demoShared: DemoSharedNativescriptUiCharts;
+
+ public options = {
+ plotOptions: {
+ column: {
+ stacking: 'normal',
+ borderRadius: 4,
+ pointWidth: 30,
+ borderWidth: 0,
+ },
+ series: {
+ animation: true,
+ },
+ },
+ boost: {
+ enabled: true,
+ useGPUTranslations: true,
+ },
+ chart: {
+ scrollablePlotArea: {
+ minWidth: 1400,
+ scrollPositionX: 1,
+ },
+ spacingBottom: 30,
+ animation: true,
+ },
+ legend: {
+ verticalAlign: 'top',
+ },
+ yAxis: {
+ min: -360,
+ max: 360,
+ title: {
+ text: 'kWh',
+ },
+ tickAmount: 7,
+ },
+ title: {
+ text: '',
+ },
+ tooltip: {
+ enabled: false,
+ },
+ credits: {
+ enabled: false,
+ },
+ series: [
+ {
+ type: 'column',
+ yAxis: 0,
+ states: {
+ hover: {
+ enabled: false,
+ },
+ inactive: {
+ enabled: false,
+ },
+ select: {
+ enabled: false,
+ },
+ },
+ pointPadding: 0.01,
+ maxPointWidth: 30,
+ groupPadding: 0.1,
+ name: 'Stroom',
+ id: 'Electricity',
+ stack: 'verbruik',
+ color: '#5FB624',
+ data: [
+ {
+ y: 215,
+ selected: false,
+ id: '2020-10-05;2020-11-01',
+ },
+ {
+ y: 266,
+ selected: false,
+ id: '2020-11-01;2020-12-01',
+ },
+ {
+ y: 308,
+ selected: false,
+ id: '2020-12-01;2021-01-01',
+ },
+ {
+ y: 257,
+ selected: false,
+ id: '2021-01-01;2021-02-01',
+ },
+ {
+ y: 239,
+ selected: false,
+ id: '2021-02-01;2021-03-01',
+ },
+ {
+ y: 222,
+ selected: false,
+ id: '2021-03-01;2021-04-01',
+ },
+ {
+ y: 188,
+ selected: false,
+ id: '2021-04-01;2021-05-01',
+ },
+ {
+ y: 162,
+ selected: false,
+ id: '2021-05-01;2021-06-01',
+ },
+ {
+ y: 154,
+ selected: false,
+ id: '2021-06-01;2021-07-01',
+ },
+ {
+ y: 59,
+ selected: false,
+ id: '2021-07-01;2021-08-01',
+ },
+ {
+ y: 168,
+ selected: false,
+ id: '2021-08-01;2021-09-01',
+ },
+ {
+ y: 195,
+ selected: false,
+ id: '2021-09-01;2021-10-01',
+ },
+ {
+ y: 209,
+ selected: false,
+ id: '2021-10-01;2021-11-01',
+ },
+ {
+ y: 270,
+ selected: false,
+ id: '2021-11-01;2021-12-01',
+ },
+ {
+ y: 323,
+ selected: false,
+ id: '2021-12-01;2022-01-01',
+ },
+ {
+ y: 311,
+ selected: false,
+ id: '2022-01-01;2022-02-01',
+ },
+ {
+ y: 219,
+ selected: false,
+ id: '2022-02-01;2022-03-01',
+ },
+ {
+ y: 211,
+ selected: false,
+ id: '2022-03-01;2022-04-01',
+ },
+ {
+ y: 175,
+ selected: false,
+ id: '2022-04-01;2022-05-01',
+ },
+ {
+ y: 165,
+ selected: false,
+ id: '2022-05-01;2022-06-01',
+ },
+ {
+ y: 143,
+ selected: false,
+ id: '2022-06-01;2022-07-01',
+ },
+ {
+ y: 150,
+ selected: false,
+ id: '2022-07-01;2022-08-01',
+ },
+ {
+ y: 96,
+ selected: false,
+ id: '2022-08-01;2022-09-01',
+ },
+ {
+ y: 194,
+ selected: false,
+ id: '2022-09-01;2022-10-01',
+ },
+ {
+ y: 211,
+ selected: false,
+ id: '2022-10-01;2022-11-01',
+ },
+ {
+ y: 262,
+ selected: false,
+ id: '2022-11-01;2022-12-01',
+ },
+ {
+ y: 299,
+ selected: false,
+ id: '2022-12-01;2023-01-01',
+ },
+ {
+ y: 282,
+ selected: true,
+ id: '2023-01-01;2023-02-01',
+ },
+ ],
+ allowPointSelect: false,
+ },
+ {
+ type: 'column',
+ yAxis: 0,
+ states: {
+ hover: {
+ enabled: false,
+ },
+ inactive: {
+ enabled: false,
+ },
+ select: {
+ enabled: false,
+ },
+ },
+ pointPadding: 0.01,
+ maxPointWidth: 30,
+ groupPadding: 0.1,
+ name: 'Teruglevering',
+ id: 'ReturnSupply',
+ stack: 'verbruik',
+ color: '#FFC800',
+ data: [
+ {
+ y: -38,
+ selected: false,
+ id: '2020-10-05;2020-11-01',
+ },
+ {
+ y: -23,
+ selected: false,
+ id: '2020-11-01;2020-12-01',
+ },
+ {
+ y: -5,
+ selected: false,
+ id: '2020-12-01;2021-01-01',
+ },
+ {
+ y: -17,
+ selected: false,
+ id: '2021-01-01;2021-02-01',
+ },
+ {
+ y: -44,
+ selected: false,
+ id: '2021-02-01;2021-03-01',
+ },
+ {
+ y: -100,
+ selected: false,
+ id: '2021-03-01;2021-04-01',
+ },
+ {
+ y: -196,
+ selected: false,
+ id: '2021-04-01;2021-05-01',
+ },
+ {
+ y: -231,
+ selected: false,
+ id: '2021-05-01;2021-06-01',
+ },
+ {
+ y: -241,
+ selected: false,
+ id: '2021-06-01;2021-07-01',
+ },
+ {
+ y: -272,
+ selected: false,
+ id: '2021-07-01;2021-08-01',
+ },
+ {
+ y: -174,
+ selected: false,
+ id: '2021-08-01;2021-09-01',
+ },
+ {
+ y: -119,
+ selected: false,
+ id: '2021-09-01;2021-10-01',
+ },
+ {
+ y: -62,
+ selected: false,
+ id: '2021-10-01;2021-11-01',
+ },
+ {
+ y: -20,
+ selected: false,
+ id: '2021-11-01;2021-12-01',
+ },
+ {
+ y: -4,
+ selected: false,
+ id: '2021-12-01;2022-01-01',
+ },
+ {
+ y: -9,
+ selected: false,
+ id: '2022-01-01;2022-02-01',
+ },
+ {
+ y: -51,
+ selected: false,
+ id: '2022-02-01;2022-03-01',
+ },
+ {
+ y: -149,
+ selected: false,
+ id: '2022-03-01;2022-04-01',
+ },
+ {
+ y: -198,
+ selected: false,
+ id: '2022-04-01;2022-05-01',
+ },
+ {
+ y: -256,
+ selected: false,
+ id: '2022-05-01;2022-06-01',
+ },
+ {
+ y: -268,
+ selected: false,
+ id: '2022-06-01;2022-07-01',
+ },
+ {
+ y: -255,
+ selected: false,
+ id: '2022-07-01;2022-08-01',
+ },
+ {
+ y: -257,
+ selected: false,
+ id: '2022-08-01;2022-09-01',
+ },
+ {
+ y: -135,
+ selected: false,
+ id: '2022-09-01;2022-10-01',
+ },
+ {
+ y: -71,
+ selected: false,
+ id: '2022-10-01;2022-11-01',
+ },
+ {
+ y: -22,
+ selected: false,
+ id: '2022-11-01;2022-12-01',
+ },
+ {
+ y: -9,
+ selected: false,
+ id: '2022-12-01;2023-01-01',
+ },
+ {
+ y: -14,
+ selected: true,
+ id: '2023-01-01;2023-02-01',
+ },
+ ],
+ allowPointSelect: false,
+ },
+ ],
+ xAxis: {
+ categories: ['okt', 'nov', 'dec', 'jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec', 'jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec', 'jan'],
+ labels: {
+ padding: 0,
+ },
+ },
+ exporting: {
+ enabled: false,
+ },
+ };
+
+ constructor(private _ngZone: NgZone) {}
+
+ ngOnInit() {
+ this.demoShared = new DemoSharedNativescriptUiCharts();
+ }
+}
diff --git a/apps/demo-angular/src/plugin-demos/nativescript-ui-charts.module.ts b/apps/demo-angular/src/plugin-demos/nativescript-ui-charts.module.ts
new file mode 100644
index 0000000..5c6d464
--- /dev/null
+++ b/apps/demo-angular/src/plugin-demos/nativescript-ui-charts.module.ts
@@ -0,0 +1,11 @@
+import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
+import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular';
+import { NativescriptUiChartsComponent } from './nativescript-ui-charts.component';
+import { UIChartsViewModule } from '@essent/nativescript-ui-charts/angular';
+
+@NgModule({
+ imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: NativescriptUiChartsComponent }]), UIChartsViewModule],
+ declarations: [NativescriptUiChartsComponent],
+ schemas: [NO_ERRORS_SCHEMA],
+})
+export class NativescriptUiChartsModule {}
diff --git a/apps/demo-angular/src/plugin-demos/nativescript-urban-airship.component.ts b/apps/demo-angular/src/plugin-demos/nativescript-urban-airship.component.ts
index 74ff3b3..a9806d4 100644
--- a/apps/demo-angular/src/plugin-demos/nativescript-urban-airship.component.ts
+++ b/apps/demo-angular/src/plugin-demos/nativescript-urban-airship.component.ts
@@ -1,19 +1,17 @@
import { Component, NgZone } from '@angular/core';
import { DemoSharedNativescriptUrbanAirship } from '@demo/shared';
-import { } from '@essent/nativescript-urban-airship';
+import {} from '@essent/nativescript-urban-airship';
@Component({
- selector: 'demo-nativescript-urban-airship',
- templateUrl: 'nativescript-urban-airship.component.html',
+ selector: 'demo-nativescript-urban-airship',
+ templateUrl: 'nativescript-urban-airship.component.html',
})
export class NativescriptUrbanAirshipComponent {
-
demoShared: DemoSharedNativescriptUrbanAirship;
-
- constructor(private _ngZone: NgZone) {}
+
+ constructor(private _ngZone: NgZone) {}
ngOnInit() {
this.demoShared = new DemoSharedNativescriptUrbanAirship();
}
-
-}
\ No newline at end of file
+}
diff --git a/apps/demo-angular/src/plugin-demos/nativescript-urban-airship.module.ts b/apps/demo-angular/src/plugin-demos/nativescript-urban-airship.module.ts
index c4df864..11054da 100644
--- a/apps/demo-angular/src/plugin-demos/nativescript-urban-airship.module.ts
+++ b/apps/demo-angular/src/plugin-demos/nativescript-urban-airship.module.ts
@@ -3,8 +3,8 @@ import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescrip
import { NativescriptUrbanAirshipComponent } from './nativescript-urban-airship.component';
@NgModule({
- imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: NativescriptUrbanAirshipComponent }])],
+ imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: NativescriptUrbanAirshipComponent }])],
declarations: [NativescriptUrbanAirshipComponent],
- schemas: [ NO_ERRORS_SCHEMA]
+ schemas: [NO_ERRORS_SCHEMA],
})
export class NativescriptUrbanAirshipModule {}
diff --git a/apps/demo/package.json b/apps/demo/package.json
index 018db4f..92550a1 100644
--- a/apps/demo/package.json
+++ b/apps/demo/package.json
@@ -5,11 +5,13 @@
"repository": "",
"dependencies": {
"@nativescript/core": "file:../../node_modules/@nativescript/core",
- "@essent/nativescript-ng-sentry": "file:../../packages/nativescript-ng-sentry",
+ "@essent/nativescript-ui-charts": "file:../../packages/nativescript-ui-charts",
"@essent/nativescript-adobe-experience-cloud": "file:../../packages/nativescript-adobe-experience-cloud",
"@essent/nativescript-appdynamics": "file:../../packages/nativescript-appdynamics",
"@essent/nativescript-iadvize": "file:../../packages/nativescript-iadvize",
"@essent/nativescript-medallia": "file:../../packages/nativescript-medallia",
+ "@essent/nativescript-ng-sentry": "file:../../packages/nativescript-ng-sentry",
+ "@nativescript/nativescript-ui-charts": "file:../../packages/nativescript-ui-charts",
"@essent/nativescript-urban-airship": "file:../../packages/nativescript-urban-airship"
},
"devDependencies": {
diff --git a/apps/demo/project.json b/apps/demo/project.json
index 87572e6..96ad890 100644
--- a/apps/demo/project.json
+++ b/apps/demo/project.json
@@ -24,7 +24,8 @@
"ios": {
"executor": "@nativescript/nx:build",
"options": {
- "platform": "ios"
+ "platform": "ios",
+ "noHmr": true
},
"dependsOn": [
{
@@ -36,7 +37,8 @@
"android": {
"executor": "@nativescript/nx:build",
"options": {
- "platform": "android"
+ "platform": "android",
+ "noHmr": true
},
"dependsOn": [
{
diff --git a/apps/demo/src/main-page.xml b/apps/demo/src/main-page.xml
index 098929c..15c7020 100644
--- a/apps/demo/src/main-page.xml
+++ b/apps/demo/src/main-page.xml
@@ -10,6 +10,7 @@
+
diff --git a/apps/demo/src/plugin-demos/nativescript-adobe-experience-cloud.xml b/apps/demo/src/plugin-demos/nativescript-adobe-experience-cloud.xml
index 84387f4..eaa6215 100644
--- a/apps/demo/src/plugin-demos/nativescript-adobe-experience-cloud.xml
+++ b/apps/demo/src/plugin-demos/nativescript-adobe-experience-cloud.xml
@@ -14,4 +14,4 @@
-
\ No newline at end of file
+
diff --git a/apps/demo/src/plugin-demos/nativescript-appdynamics.xml b/apps/demo/src/plugin-demos/nativescript-appdynamics.xml
index 82acce1..815404a 100644
--- a/apps/demo/src/plugin-demos/nativescript-appdynamics.xml
+++ b/apps/demo/src/plugin-demos/nativescript-appdynamics.xml
@@ -11,4 +11,4 @@
-
\ No newline at end of file
+
diff --git a/apps/demo/src/plugin-demos/nativescript-iadvize.ts b/apps/demo/src/plugin-demos/nativescript-iadvize.ts
index a263394..403a41d 100644
--- a/apps/demo/src/plugin-demos/nativescript-iadvize.ts
+++ b/apps/demo/src/plugin-demos/nativescript-iadvize.ts
@@ -1,12 +1,10 @@
import { Observable, EventData, Page } from '@nativescript/core';
import { DemoSharedNativescriptIadvize } from '@demo/shared';
-import { } from '@essent/nativescript-iadvize';
+import {} from '@essent/nativescript-iadvize';
export function navigatingTo(args: EventData) {
- const page = args.object;
- page.bindingContext = new DemoModel();
+ const page = args.object;
+ page.bindingContext = new DemoModel();
}
-export class DemoModel extends DemoSharedNativescriptIadvize {
-
-}
+export class DemoModel extends DemoSharedNativescriptIadvize {}
diff --git a/apps/demo/src/plugin-demos/nativescript-iadvize.xml b/apps/demo/src/plugin-demos/nativescript-iadvize.xml
index d516677..f592869 100644
--- a/apps/demo/src/plugin-demos/nativescript-iadvize.xml
+++ b/apps/demo/src/plugin-demos/nativescript-iadvize.xml
@@ -13,4 +13,4 @@
-
\ No newline at end of file
+
diff --git a/apps/demo/src/plugin-demos/nativescript-medallia.ts b/apps/demo/src/plugin-demos/nativescript-medallia.ts
index 4fbfdea..b6bbd33 100644
--- a/apps/demo/src/plugin-demos/nativescript-medallia.ts
+++ b/apps/demo/src/plugin-demos/nativescript-medallia.ts
@@ -1,23 +1,23 @@
import { Observable, EventData, Page, TextField } from '@nativescript/core';
import { DemoSharedNativescriptMedallia } from '@demo/shared';
-import { } from '@essent/nativescript-medallia';
+import {} from '@essent/nativescript-medallia';
export function navigatingTo(args: EventData) {
- const page = args.object;
- page.bindingContext = new DemoModel(page);
+ const page = args.object;
+ page.bindingContext = new DemoModel(page);
}
export class DemoModel extends DemoSharedNativescriptMedallia {
- showSurveyNow() {
- const inputSurveyId = this.page.getViewById('inputSurveyId');
- this.showSurvey(inputSurveyId.text);
- }
+ showSurveyNow() {
+ const inputSurveyId = this.page.getViewById('inputSurveyId');
+ this.showSurvey(inputSurveyId.text);
+ }
- showSurveyParams() {
- const params = {};
- const inputParameterName = this.page.getViewById('inputParameterName');
- const inputParameterValue = this.page.getViewById('inputParameterValue');
- params[inputParameterName.text] = inputParameterValue.text;
- this.setParams(params);
- }
+ showSurveyParams() {
+ const params = {};
+ const inputParameterName = this.page.getViewById('inputParameterName');
+ const inputParameterValue = this.page.getViewById('inputParameterValue');
+ params[inputParameterName.text] = inputParameterValue.text;
+ this.setParams(params);
+ }
}
diff --git a/apps/demo/src/plugin-demos/nativescript-medallia.xml b/apps/demo/src/plugin-demos/nativescript-medallia.xml
index ffc0967..4139292 100644
--- a/apps/demo/src/plugin-demos/nativescript-medallia.xml
+++ b/apps/demo/src/plugin-demos/nativescript-medallia.xml
@@ -28,4 +28,4 @@
-
\ No newline at end of file
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ng-sentry.xml b/apps/demo/src/plugin-demos/nativescript-ng-sentry.xml
index 1c537f4..95f7708 100644
--- a/apps/demo/src/plugin-demos/nativescript-ng-sentry.xml
+++ b/apps/demo/src/plugin-demos/nativescript-ng-sentry.xml
@@ -11,4 +11,4 @@
-
\ No newline at end of file
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts.ts
new file mode 100644
index 0000000..3db3b77
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts.ts
@@ -0,0 +1,131 @@
+import { isAndroid } from '@nativescript/core';
+import { fromObject } from '@nativescript/core/data/observable';
+import Theme from '@nativescript/theme';
+
+const viewModel = fromObject({
+ selectedType: 'Line',
+ chartTypes: [{ type: 'Line' }, { type: 'Area' }, { type: 'Bar' }, { type: 'Column' }, { type: '3D' }, { type: 'Tests' }],
+ lineChart: [
+ {
+ name: 'Basic Line Chart (async data)',
+ route: './plugin-demos/nativescript-ui-charts/line-charts/basic-line/basic-line-page',
+ },
+ {
+ name: 'With Data Labels',
+ route: './plugin-demos/nativescript-ui-charts/line-charts/with-data-labels/with-data-labels-page',
+ },
+ {
+ name: 'Time data with irregular intervals (styled)',
+ route: './plugin-demos/nativescript-ui-charts/line-charts/spline-irregular-time/spline-irregular-time-page',
+ },
+ ],
+ areaChart: [
+ {
+ name: 'Basic Area Chart',
+ route: './plugin-demos/nativescript-ui-charts/area-charts/basic-area/basic-area-page',
+ },
+ {
+ name: 'Stacked Area Chart',
+ route: './plugin-demos/nativescript-ui-charts/area-charts/area-stacked/area-stacked-page',
+ },
+ {
+ name: 'Area Range Chart',
+ route: './plugin-demos/nativescript-ui-charts/area-charts/area-ranged/area-ranged-page',
+ },
+ {
+ name: 'Percentage Area Chart',
+ route: './plugin-demos/nativescript-ui-charts/area-charts/area-stacked-percent/area-stacked-percent-page',
+ },
+ {
+ name: 'Area Spline Chart',
+ route: './plugin-demos/nativescript-ui-charts/area-charts/area-spline/area-spline-page',
+ },
+ ],
+ barChart: [
+ {
+ name: 'Basic Bar Chart',
+ route: './plugin-demos/nativescript-ui-charts/bar-charts/basic-bar/basic-bar-page',
+ },
+ {
+ name: 'Stacked Bar Chart',
+ route: './plugin-demos/nativescript-ui-charts/bar-charts/bar-stacked/bar-stacked-page',
+ },
+ {
+ name: 'Bar With Negative Stack Chart',
+ route: './plugin-demos/nativescript-ui-charts/bar-charts/bar-negative-stack/bar-negative-stack-page',
+ },
+ ],
+ columnChart: [
+ {
+ name: 'Basic Column Chart',
+ route: './plugin-demos/nativescript-ui-charts/column-charts/basic-column/basic-column-page',
+ },
+ {
+ name: 'Stacked Column Chart',
+ route: './plugin-demos/nativescript-ui-charts/column-charts/column-stacked/column-stacked-page',
+ },
+ ],
+ '3dChart': [
+ {
+ name: '3D Column Chart',
+ route: './plugin-demos/nativescript-ui-charts/3d-charts/3d-column/3d-column-page',
+ },
+ {
+ name: '3D Column Chart with Stacking and Grouping',
+ route: './plugin-demos/nativescript-ui-charts/3d-charts/3d-column-sg/3d-column-sg-page',
+ },
+ // doesn't render currently
+ // {
+ // name: '3D Cylinder Chart',
+ // route: './plugin-demos/nativescript-ui-charts/3d-charts/3d-cylinder/3d-cylinder-page',
+ // },
+ {
+ name: '3D Donut Chart',
+ route: './plugin-demos/nativescript-ui-charts/3d-charts/3d-donut/3d-donut-page',
+ },
+ {
+ name: '3D Pie Chart',
+ route: 'demos/3d-charts/3d-pie/3d-pie-page',
+ },
+ // doesn't render currently
+ // {
+ // name: '3D Pyramid Chart',
+ // route: './plugin-demos/nativescript-ui-charts/3d-charts/3d-pyramid/3d-pyramid-page',
+ // },
+
+ // TODO: implement dragging
+ {
+ name: '3D Scatter Chart',
+ route: './plugin-demos/nativescript-ui-charts/3d-charts/3d-scatter-draggable/3d-scatter-draggable-page',
+ },
+ ],
+ testsChart: [
+ {
+ name: 'Dynamic Chart Height',
+ route: './plugin-demos/nativescript-ui-charts/tests/dynamic-chart-height/dynamic-chart-height-page',
+ },
+ ],
+ selectedSource: [],
+ onItemTap(args) {
+ const demo = this.selectedSource[args.index];
+ args.object.page.frame.navigate(demo.route);
+ },
+ onSelectCategory(args) {
+ const chartType = args.object.text.toLowerCase() + 'Chart';
+
+ if (viewModel[chartType]) {
+ console.log('selected chart type:', `${args.object.text}`);
+ viewModel.set('selectedType', `${args.object.text}`);
+ viewModel.set('selectedSource', viewModel[chartType]);
+ } else {
+ console.log('Chart type', chartType, 'not implemented');
+ }
+ },
+});
+
+export function onNavigatedTo(args) {
+ if (args.isBackNavigation) return;
+
+ viewModel.set('selectedSource', viewModel.get('lineChart'));
+ args.object.bindingContext = viewModel;
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts.xml
new file mode 100644
index 0000000..47c9f4d
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-column-sg/3d-column-sg-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-column-sg/3d-column-sg-page.ts
new file mode 100644
index 0000000..7b2cc3f
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-column-sg/3d-column-sg-page.ts
@@ -0,0 +1,93 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'column',
+ options3d: {
+ enabled: true,
+ alpha: 15,
+ beta: 15,
+ viewDistance: 25,
+ depth: 40,
+ },
+ },
+
+ title: {
+ text: 'Total fruit consumption, grouped by gender',
+ },
+
+ xAxis: {
+ categories: ['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas'],
+ labels: {
+ skew3d: true,
+ style: {
+ fontSize: '16px',
+ },
+ },
+ },
+
+ yAxis: {
+ allowDecimals: false,
+ min: 0,
+ title: {
+ text: 'Number of fruits',
+ skew3d: true,
+ },
+ },
+
+ tooltip: {
+ headerFormat: '{point.key}
',
+ pointFormat: '\u25CF {series.name}: {point.y} / {point.stackTotal}',
+ },
+
+ plotOptions: {
+ column: {
+ stacking: 'normal',
+ depth: 40,
+ },
+ },
+
+ series: [
+ {
+ name: 'John',
+ data: [5, 3, 4, 7, 2],
+ stack: 'male',
+ },
+ {
+ name: 'Joe',
+ data: [3, 4, 4, 2, 5],
+ stack: 'male',
+ },
+ {
+ name: 'Jane',
+ data: [2, 5, 6, 2, 1],
+ stack: 'female',
+ },
+ {
+ name: 'Janet',
+ data: [3, 0, 4, 4, 3],
+ stack: 'female',
+ },
+ ],
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-column-sg/3d-column-sg-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-column-sg/3d-column-sg-page.xml
new file mode 100644
index 0000000..4ab2240
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-column-sg/3d-column-sg-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-column/3d-column-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-column/3d-column-page.ts
new file mode 100644
index 0000000..74ed3ba
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-column/3d-column-page.ts
@@ -0,0 +1,52 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ renderTo: 'container',
+ type: 'column',
+ options3d: {
+ enabled: true,
+ alpha: 15,
+ beta: 15,
+ depth: 50,
+ viewDistance: 25,
+ },
+ },
+ title: {
+ text: 'Chart rotation demo',
+ },
+ subtitle: {
+ text: 'Test options by dragging the sliders below',
+ },
+ plotOptions: {
+ column: {
+ depth: 25,
+ },
+ },
+ series: [
+ {
+ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
+ },
+ ],
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-column/3d-column-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-column/3d-column-page.xml
new file mode 100644
index 0000000..1bdfd4d
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-column/3d-column-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-cylinder/3d-cylinder-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-cylinder/3d-cylinder-page.ts
new file mode 100644
index 0000000..d553275
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-cylinder/3d-cylinder-page.ts
@@ -0,0 +1,51 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'cylinder',
+ options3d: {
+ enabled: true,
+ alpha: 15,
+ beta: 15,
+ depth: 50,
+ viewDistance: 25,
+ },
+ },
+ title: {
+ text: 'Highcharts Cylinder Chart',
+ },
+ plotOptions: {
+ cylinder: {
+ depth: 25,
+ colorByPoint: true,
+ },
+ },
+ series: [
+ {
+ name: 'Cylinders',
+ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
+ showInLegend: false,
+ },
+ ],
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-cylinder/3d-cylinder-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-cylinder/3d-cylinder-page.xml
new file mode 100644
index 0000000..5b1aa02
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-cylinder/3d-cylinder-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-donut/3d-donut-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-donut/3d-donut-page.ts
new file mode 100644
index 0000000..bfa1bc2
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-donut/3d-donut-page.ts
@@ -0,0 +1,60 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'pie',
+ options3d: {
+ enabled: true,
+ alpha: 45,
+ },
+ },
+ title: {
+ text: "Contents of Highsoft's weekly fruit delivery",
+ },
+ subtitle: {
+ text: '3D donut in Highcharts',
+ },
+ plotOptions: {
+ pie: {
+ innerSize: 100,
+ depth: 45,
+ },
+ },
+ series: [
+ {
+ name: 'Delivered amount',
+ data: [
+ ['Bananas', 8],
+ ['Kiwi', 3],
+ ['Mixed nuts', 1],
+ ['Oranges', 6],
+ ['Apples', 8],
+ ['Pears', 4],
+ ['Clementines', 4],
+ ['Reddish (bag)', 1],
+ ['Grapes (bunch)', 1],
+ ],
+ },
+ ],
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-donut/3d-donut-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-donut/3d-donut-page.xml
new file mode 100644
index 0000000..7c0d3f7
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-donut/3d-donut-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-funnel/3d-funnel-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-funnel/3d-funnel-page.ts
new file mode 100644
index 0000000..30f746a
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-funnel/3d-funnel-page.ts
@@ -0,0 +1,63 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'funnel3d',
+ options3d: {
+ enabled: true,
+ alpha: 10,
+ depth: 50,
+ viewDistance: 50,
+ },
+ },
+ title: {
+ text: 'Highcharts Funnel3D Chart',
+ },
+ plotOptions: {
+ series: {
+ dataLabels: {
+ enabled: true,
+ format: '{point.name} ({point.y:,.0f})',
+ allowOverlap: true,
+ y: 10,
+ },
+ neckWidth: '30%',
+ neckHeight: '25%',
+ width: '80%',
+ height: '80%',
+ },
+ },
+ series: [
+ {
+ name: 'Unique users',
+ data: [
+ ['Website visits', 15654],
+ ['Downloads', 4064],
+ ['Requested price list', 1987],
+ ['Invoice sent', 976],
+ ['Finalized', 846],
+ ],
+ },
+ ],
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-funnel/3d-funnel-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-funnel/3d-funnel-page.xml
new file mode 100644
index 0000000..9f1597f
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-funnel/3d-funnel-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-pie/3d-pie-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-pie/3d-pie-page.ts
new file mode 100644
index 0000000..6943e64
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-pie/3d-pie-page.ts
@@ -0,0 +1,74 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'pie',
+ options3d: {
+ enabled: true,
+ alpha: 45,
+ beta: 0,
+ },
+ },
+ title: {
+ text: 'Browser market shares at a specific website, 2014',
+ },
+ accessibility: {
+ point: {
+ valueSuffix: '%',
+ },
+ },
+ tooltip: {
+ pointFormat: '{series.name}: {point.percentage:.1f}%',
+ },
+ plotOptions: {
+ pie: {
+ allowPointSelect: true,
+ cursor: 'pointer',
+ depth: 35,
+ // dataLabels: {
+ // enabled: true,
+ // format: '{point.name}',
+ // },
+ },
+ },
+ series: [
+ {
+ type: 'pie',
+ name: 'Browser share',
+ data: [
+ ['Firefox', 45.0],
+ ['IE', 26.8],
+ // {
+ // name: 'Chrome',
+ // y: 12.8,
+ // sliced: true,
+ // selected: true,
+ // },
+ ['Safari', 8.5],
+ ['Opera', 6.2],
+ ['Others', 0.7],
+ ],
+ },
+ ],
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-pie/3d-pie-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-pie/3d-pie-page.xml
new file mode 100644
index 0000000..8aaff89
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-pie/3d-pie-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-pyramid/3d-pyramid-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-pyramid/3d-pyramid-page.ts
new file mode 100644
index 0000000..c2ea080
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-pyramid/3d-pyramid-page.ts
@@ -0,0 +1,64 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'pyramid3d',
+ options3d: {
+ enabled: true,
+ alpha: 10,
+ depth: 50,
+ viewDistance: 50,
+ },
+ },
+ title: {
+ text: 'Highcharts Pyramid3D Chart',
+ },
+ plotOptions: {
+ pyramid: {
+ // TODO: support data labels
+ // dataLabels: {
+ // enabled: true,
+ // format: '{point.name} ({point.y:,.0f})',
+ // allowOverlap: true,
+ // x: 10,
+ // y: -5,
+ // },
+ width: '60%',
+ height: '80%',
+ center: ['50%', '45%'],
+ },
+ },
+ series: [
+ {
+ name: 'Unique users',
+ data: [
+ ['Website visits', 15654],
+ ['Downloads', 4064],
+ ['Requested price list', 1987],
+ ['Invoice sent', 976],
+ ['Finalized', 846],
+ ],
+ },
+ ],
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-pyramid/3d-pyramid-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-pyramid/3d-pyramid-page.xml
new file mode 100644
index 0000000..d1f4aed
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-pyramid/3d-pyramid-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-scatter-draggable/3d-scatter-draggable-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-scatter-draggable/3d-scatter-draggable-page.ts
new file mode 100644
index 0000000..bb225c2
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-scatter-draggable/3d-scatter-draggable-page.ts
@@ -0,0 +1,185 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ margin: [100],
+ renderTo: 'container',
+ type: 'scatter3d',
+ options3d: {
+ enabled: true,
+ alpha: 10,
+ beta: 30,
+ depth: 250,
+ viewDistance: 5,
+ fitToPlot: false,
+ frame: {
+ bottom: { size: 1, color: 'rgba(0,0,0,0.02)' },
+ back: { size: 1, color: 'rgba(0,0,0,0.04)' },
+ side: { size: 1, color: 'rgba(0,0,0,0.06)' },
+ },
+ },
+ },
+ title: {
+ text: 'Draggable box',
+ },
+ subtitle: {
+ text: 'Click and drag the plot area to rotate in space',
+ },
+ plotOptions: {
+ scatter: {
+ width: 10,
+ height: 10,
+ depth: 10,
+ },
+ },
+ yAxis: {
+ min: 0,
+ max: 10,
+ title: null,
+ },
+ xAxis: {
+ min: 0,
+ max: 10,
+ gridLineWidth: 1,
+ },
+ zAxis: {
+ min: 0,
+ max: 10,
+ showFirstLabel: false,
+ },
+ legend: {
+ enabled: false,
+ },
+ series: [
+ {
+ name: 'Data',
+ colorByPoint: true,
+ accessibility: {
+ exposeAsGroupOnly: true,
+ },
+ data: [
+ [1, 6, 5],
+ [8, 7, 9],
+ [1, 3, 4],
+ [4, 6, 8],
+ [5, 7, 7],
+ [6, 9, 6],
+ [7, 0, 5],
+ [2, 3, 3],
+ [3, 9, 8],
+ [3, 6, 5],
+ [4, 9, 4],
+ [2, 3, 3],
+ [6, 9, 9],
+ [0, 7, 0],
+ [7, 7, 9],
+ [7, 2, 9],
+ [0, 6, 2],
+ [4, 6, 7],
+ [3, 7, 7],
+ [0, 1, 7],
+ [2, 8, 6],
+ [2, 3, 7],
+ [6, 4, 8],
+ [3, 5, 9],
+ [7, 9, 5],
+ [3, 1, 7],
+ [4, 4, 2],
+ [3, 6, 2],
+ [3, 1, 6],
+ [6, 8, 5],
+ [6, 6, 7],
+ [4, 1, 1],
+ [7, 2, 7],
+ [7, 7, 0],
+ [8, 8, 9],
+ [9, 4, 1],
+ [8, 3, 4],
+ [9, 8, 9],
+ [3, 5, 3],
+ [0, 2, 4],
+ [6, 0, 2],
+ [2, 1, 3],
+ [5, 8, 9],
+ [2, 1, 1],
+ [9, 7, 6],
+ [3, 0, 2],
+ [9, 9, 0],
+ [3, 4, 8],
+ [2, 6, 1],
+ [8, 9, 2],
+ [7, 6, 5],
+ [6, 3, 1],
+ [9, 3, 1],
+ [8, 9, 3],
+ [9, 1, 0],
+ [3, 8, 7],
+ [8, 0, 0],
+ [4, 9, 7],
+ [8, 6, 2],
+ [4, 3, 0],
+ [2, 3, 5],
+ [9, 1, 4],
+ [1, 1, 4],
+ [6, 0, 2],
+ [6, 1, 6],
+ [3, 8, 8],
+ [8, 8, 7],
+ [5, 5, 0],
+ [3, 9, 6],
+ [5, 4, 3],
+ [6, 8, 3],
+ [0, 1, 5],
+ [6, 7, 3],
+ [8, 3, 2],
+ [3, 8, 3],
+ [2, 1, 6],
+ [4, 6, 7],
+ [8, 9, 9],
+ [5, 4, 2],
+ [6, 1, 3],
+ [6, 9, 5],
+ [4, 8, 2],
+ [9, 7, 4],
+ [5, 4, 2],
+ [9, 6, 1],
+ [2, 7, 3],
+ [4, 5, 4],
+ [6, 8, 1],
+ [3, 4, 0],
+ [2, 2, 6],
+ [5, 1, 2],
+ [9, 9, 7],
+ [6, 9, 9],
+ [8, 4, 3],
+ [4, 1, 7],
+ [6, 2, 5],
+ [0, 4, 9],
+ [3, 5, 9],
+ [6, 9, 1],
+ [1, 9, 2],
+ ],
+ },
+ ],
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-scatter-draggable/3d-scatter-draggable-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-scatter-draggable/3d-scatter-draggable-page.xml
new file mode 100644
index 0000000..f896480
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/3d-charts/3d-scatter-draggable/3d-scatter-draggable-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-ranged/area-ranged-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-ranged/area-ranged-page.ts
new file mode 100644
index 0000000..34ed6ff
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-ranged/area-ranged-page.ts
@@ -0,0 +1,438 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'arearange',
+ zoomType: 'x',
+ scrollablePlotArea: {
+ minWidth: 600,
+ scrollPositionX: 1,
+ },
+ },
+
+ title: {
+ text: 'Temperature variation by day',
+ },
+
+ xAxis: {
+ type: 'datetime',
+ accessibility: {
+ rangeDescription: 'Range: Jan 1st 2017 to Dec 31 2017.',
+ },
+ },
+
+ yAxis: {
+ title: {
+ text: null,
+ },
+ },
+
+ tooltip: {
+ crosshairs: true,
+ shared: true,
+ valueSuffix: '°C',
+ xDateFormat: '%A, %b %e',
+ },
+
+ legend: {
+ enabled: false,
+ },
+
+ series: [
+ {
+ name: 'Temperatures',
+ data: getData(),
+ },
+ ],
+ },
+});
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+function getData() {
+ return [
+ [1483232400000, 1.4, 4.7],
+ [1483318800000, -1.3, 1.9],
+ [1483405200000, -0.7, 4.3],
+ [1483491600000, -5.5, 3.2],
+ [1483578000000, -9.9, -6.6],
+ [1483664400000, -9.6, 0.1],
+ [1483750800000, -0.9, 4.0],
+ [1483837200000, -2.2, 2.9],
+ [1483923600000, 1.3, 2.3],
+ [1484010000000, -0.3, 2.9],
+ [1484096400000, 1.1, 3.8],
+ [1484182800000, 0.6, 2.1],
+ [1484269200000, -3.4, 2.5],
+ [1484355600000, -2.9, 2.0],
+ [1484442000000, -5.7, -2.6],
+ [1484528400000, -8.7, -3.3],
+ [1484614800000, -3.5, -0.3],
+ [1484701200000, -0.2, 7.0],
+ [1484787600000, 2.3, 8.5],
+ [1484874000000, 5.6, 9.5],
+ [1484960400000, 0.4, 5.8],
+ [1485046800000, 0.1, 3.1],
+ [1485133200000, 1.5, 4.1],
+ [1485219600000, -0.2, 2.8],
+ [1485306000000, 2.3, 10.3],
+ [1485392400000, -0.8, 9.4],
+ [1485478800000, -1.3, 4.6],
+ [1485565200000, -0.6, 5.3],
+ [1485651600000, 1.4, 5.8],
+ [1485738000000, -3.6, 0.9],
+ [1485824400000, -5.4, -2.6],
+ [1485910800000, -5.5, 0.8],
+ [1485997200000, -0.8, 2.5],
+ [1486083600000, 1.6, 4.1],
+ [1486170000000, 1.3, 4.8],
+ [1486256400000, 0.7, 4.6],
+ [1486342800000, -1.1, 4.5],
+ [1486429200000, -5.5, -0.9],
+ [1486515600000, -8.6, -4.2],
+ [1486602000000, -8.3, -1.6],
+ [1486688400000, -4.0, 0.9],
+ [1486774800000, -5.3, -0.5],
+ [1486861200000, -5.8, 0.4],
+ [1486947600000, -4.4, 0.4],
+ [1487034000000, -4.3, 0.6],
+ [1487120400000, -4.6, 2.7],
+ [1487206800000, 1.6, 3.2],
+ [1487293200000, 2.3, 6.2],
+ [1487379600000, 2.4, 4.1],
+ [1487466000000, 2.3, 8.5],
+ [1487552400000, 3.8, 6.8],
+ [1487638800000, 2.4, 4.9],
+ [1487725200000, 0.4, 4.5],
+ [1487811600000, -5.9, 4.0],
+ [1487898000000, -5.9, 1.5],
+ [1487984400000, -6.2, -1.7],
+ [1488070800000, -4.5, 2.3],
+ [1488157200000, 0.9, 5.6],
+ [1488243600000, 1.6, 4.9],
+ [1488330000000, -0.2, 5.5],
+ [1488416400000, -1.8, 4.4],
+ [1488502800000, -1.9, 3.3],
+ [1488589200000, -4.4, 2.5],
+ [1488675600000, 0.7, 4.1],
+ [1488762000000, -6.0, 2.7],
+ [1488848400000, -8.1, -0.1],
+ [1488934800000, -10.2, -0.5],
+ [1489021200000, -2.3, 3.7],
+ [1489107600000, 0.3, 4.7],
+ [1489194000000, -1.9, 5.2],
+ [1489280400000, 1.1, 3.1],
+ [1489366800000, 2.3, 7.0],
+ [1489453200000, 3.1, 7.7],
+ [1489539600000, 2.8, 6.3],
+ [1489626000000, 1.9, 8.9],
+ [1489712400000, 0.8, 5.5],
+ [1489798800000, -1.6, 4.3],
+ [1489885200000, -1.9, 3.3],
+ [1489971600000, 0.5, 4.4],
+ [1490058000000, 1.7, 6.6],
+ [1490144400000, 0.4, 5.1],
+ [1490230800000, -1.2, 3.5],
+ [1490317200000, 0.9, 7.4],
+ [1490403600000, 3.3, 8.4],
+ [1490490000000, 4.6, 10.1],
+ [1490572800000, 3.9, 11.8],
+ [1490659200000, 1.3, 8.9],
+ [1490745600000, 1.4, 9.8],
+ [1490832000000, -0.1, 2.4],
+ [1490918400000, 1.9, 6.8],
+ [1491004800000, 4.3, 12.2],
+ [1491091200000, 5.4, 9.3],
+ [1491177600000, 2.5, 11.1],
+ [1491264000000, 5.6, 10.2],
+ [1491350400000, 3.7, 7.6],
+ [1491436800000, 3.3, 7.4],
+ [1491523200000, 6.9, 12.0],
+ [1491609600000, 5.8, 10.9],
+ [1491696000000, 7.5, 12.1],
+ [1491782400000, 2.3, 9.7],
+ [1491868800000, 2.1, 7.1],
+ [1491955200000, 0.4, 6.9],
+ [1492041600000, 3.0, 7.0],
+ [1492128000000, -1.2, 8.9],
+ [1492214400000, 0.4, 7.5],
+ [1492300800000, 0.9, 4.4],
+ [1492387200000, -0.9, 8.2],
+ [1492473600000, -1.7, 9.6],
+ [1492560000000, 2.2, 7.5],
+ [1492646400000, 3.9, 9.1],
+ [1492732800000, 2.3, 6.5],
+ [1492819200000, 2.0, 7.4],
+ [1492905600000, 1.6, 6.9],
+ [1492992000000, 1.4, 4.7],
+ [1493078400000, -0.9, 9.7],
+ [1493164800000, 1.8, 7.9],
+ [1493251200000, 0.5, 10.6],
+ [1493337600000, 0.8, 11.0],
+ [1493424000000, 4.3, 11.6],
+ [1493510400000, -1.6, 11.7],
+ [1493596800000, -0.6, 14.3],
+ [1493683200000, 1.1, 16.1],
+ [1493769600000, 1.7, 17.1],
+ [1493856000000, 3.1, 17.6],
+ [1493942400000, 5.3, 19.2],
+ [1494028800000, 5.6, 20.3],
+ [1494115200000, 5.4, 18.0],
+ [1494201600000, 2.9, 12.1],
+ [1494288000000, 0.9, 8.6],
+ [1494374400000, 1.2, 7.7],
+ [1494460800000, 3.3, 10.1],
+ [1494547200000, 2.7, 14.1],
+ [1494633600000, 2.5, 16.6],
+ [1494720000000, 9.0, 12.7],
+ [1494806400000, 8.2, 17.0],
+ [1494892800000, 9.0, 11.8],
+ [1494979200000, 9.3, 16.9],
+ [1495065600000, 10.2, 12.1],
+ [1495152000000, 9.9, 20.3],
+ [1495238400000, 9.0, 23.1],
+ [1495324800000, 9.9, 16.9],
+ [1495411200000, 7.2, 12.5],
+ [1495497600000, 3.3, 18.1],
+ [1495584000000, 8.3, 12.9],
+ [1495670400000, 8.5, 13.1],
+ [1495756800000, 10.5, 16.1],
+ [1495843200000, 10.3, 22.3],
+ [1495929600000, 9.0, 18.2],
+ [1496016000000, 12.3, 15.6],
+ [1496102400000, 12.5, 16.3],
+ [1496188800000, 9.9, 13.6],
+ [1496275200000, 3.7, 14.8],
+ [1496361600000, 8.6, 14.3],
+ [1496448000000, 10.0, 18.3],
+ [1496534400000, 9.7, 13.0],
+ [1496620800000, 9.0, 14.3],
+ [1496707200000, 8.3, 14.3],
+ [1496793600000, 11.1, 18.4],
+ [1496880000000, 10.7, 16.6],
+ [1496966400000, 7.2, 16.3],
+ [1497052800000, 11.5, 15.3],
+ [1497139200000, 11.1, 15.1],
+ [1497225600000, 10.4, 16.5],
+ [1497312000000, 11.3, 14.6],
+ [1497398400000, 9.1, 17.6],
+ [1497484800000, 9.9, 15.5],
+ [1497571200000, 12.3, 14.9],
+ [1497657600000, 10.5, 15.1],
+ [1497744000000, 11.4, 18.0],
+ [1497830400000, 9.9, 14.8],
+ [1497916800000, 8.1, 12.4],
+ [1498003200000, 8.6, 15.5],
+ [1498089600000, 9.4, 13.0],
+ [1498176000000, 11.2, 13.0],
+ [1498262400000, 9.0, 15.3],
+ [1498348800000, 7.7, 13.6],
+ [1498435200000, 10.3, 13.6],
+ [1498521600000, 6.3, 18.0],
+ [1498608000000, 5.5, 21.7],
+ [1498694400000, 9.1, 23.2],
+ [1498780800000, 12.6, 25.4],
+ [1498867200000, 10.6, 19.6],
+ [1498953600000, 11.3, 14.5],
+ [1499040000000, 9.2, 16.1],
+ [1499126400000, 8.7, 17.9],
+ [1499212800000, 6.9, 19.5],
+ [1499299200000, 6.6, 20.0],
+ [1499385600000, 9.7, 15.7],
+ [1499472000000, 11.9, 14.2],
+ [1499558400000, 8.7, 14.2],
+ [1499644800000, 9.7, 18.4],
+ [1499731200000, 10.3, 16.8],
+ [1499817600000, 10.9, 15.5],
+ [1499904000000, 10.2, 16.8],
+ [1499990400000, 6.0, 18.9],
+ [1500076800000, 9.1, 19.1],
+ [1500163200000, 11.6, 15.7],
+ [1500249600000, 8.8, 12.4],
+ [1500336000000, 9.2, 16.3],
+ [1500422400000, 6.2, 23.0],
+ [1500508800000, 8.2, 26.2],
+ [1500595200000, 11.7, 20.3],
+ [1500681600000, 13.6, 24.1],
+ [1500768000000, 13.8, 25.3],
+ [1500854400000, 13.7, 18.6],
+ [1500940800000, 12.9, 20.8],
+ [1501027200000, 12.9, 20.5],
+ [1501113600000, 13.6, 18.2],
+ [1501200000000, 12.3, 17.5],
+ [1501286400000, 10.4, 17.0],
+ [1501372800000, 12.6, 19.0],
+ [1501459200000, 12.3, 18.1],
+ [1501545600000, 11.3, 14.4],
+ [1501632000000, 11.3, 17.2],
+ [1501718400000, 10.7, 21.4],
+ [1501804800000, 12.1, 15.2],
+ [1501891200000, 12.3, 17.0],
+ [1501977600000, 12.4, 18.7],
+ [1502064000000, 11.7, 16.3],
+ [1502150400000, 10.0, 15.2],
+ [1502236800000, 8.1, 19.3],
+ [1502323200000, 11.9, 17.5],
+ [1502409600000, 15.3, 17.6],
+ [1502496000000, 12.7, 15.8],
+ [1502582400000, 9.4, 14.8],
+ [1502668800000, 9.3, 15.2],
+ [1502755200000, 10.6, 13.6],
+ [1502841600000, 10.8, 15.6],
+ [1502928000000, 10.2, 15.8],
+ [1503014400000, 12.3, 18.2],
+ [1503100800000, 11.7, 18.0],
+ [1503187200000, 11.5, 16.9],
+ [1503273600000, 11.5, 17.7],
+ [1503360000000, 7.6, 18.5],
+ [1503446400000, 6.7, 19.8],
+ [1503532800000, 8.3, 17.2],
+ [1503619200000, 7.7, 20.5],
+ [1503705600000, 8.1, 19.4],
+ [1503792000000, 6.7, 17.9],
+ [1503878400000, 12.6, 15.8],
+ [1503964800000, 9.0, 16.5],
+ [1504051200000, 10.3, 16.7],
+ [1504137600000, 9.2, 17.3],
+ [1504224000000, 10.3, 14.8],
+ [1504310400000, 5.3, 17.6],
+ [1504396800000, 5.2, 16.7],
+ [1504483200000, 7.1, 19.2],
+ [1504569600000, 10.3, 14.0],
+ [1504656000000, 11.9, 15.1],
+ [1504742400000, 11.9, 14.2],
+ [1504828800000, 9.6, 15.9],
+ [1504915200000, 9.1, 14.0],
+ [1505001600000, 8.3, 13.7],
+ [1505088000000, 6.8, 15.0],
+ [1505174400000, 6.8, 14.3],
+ [1505260800000, 7.1, 15.5],
+ [1505347200000, 5.1, 15.3],
+ [1505433600000, 6.7, 16.8],
+ [1505520000000, 4.0, 16.1],
+ [1505606400000, 3.5, 15.8],
+ [1505692800000, 8.1, 12.7],
+ [1505779200000, 10.4, 13.4],
+ [1505865600000, 7.4, 11.8],
+ [1505952000000, 4.6, 11.6],
+ [1506038400000, 9.4, 13.3],
+ [1506124800000, 7.2, 16.0],
+ [1506211200000, 6.2, 13.7],
+ [1506297600000, 6.7, 19.5],
+ [1506384000000, 7.8, 17.1],
+ [1506470400000, 10.3, 16.9],
+ [1506556800000, 11.9, 18.2],
+ [1506643200000, 10.0, 18.9],
+ [1506729600000, 9.8, 13.5],
+ [1506816000000, 9.1, 16.0],
+ [1506902400000, 9.8, 15.9],
+ [1506988800000, 8.6, 9.7],
+ [1507075200000, 6.3, 11.2],
+ [1507161600000, 6.0, 9.5],
+ [1507248000000, 8.3, 11.9],
+ [1507334400000, 5.6, 10.0],
+ [1507420800000, 0.7, 10.0],
+ [1507507200000, -0.8, 8.9],
+ [1507593600000, 1.2, 7.7],
+ [1507680000000, 5.3, 7.1],
+ [1507766400000, 5.8, 9.6],
+ [1507852800000, 4.8, 8.1],
+ [1507939200000, 7.5, 12.7],
+ [1508025600000, 7.9, 14.7],
+ [1508112000000, 7.6, 15.7],
+ [1508198400000, 6.2, 8.0],
+ [1508284800000, 0.5, 6.6],
+ [1508371200000, -1.3, 5.6],
+ [1508457600000, 3.8, 10.9],
+ [1508544000000, 6.8, 11.2],
+ [1508630400000, 7.2, 11.0],
+ [1508716800000, 3.4, 9.8],
+ [1508803200000, 4.8, 7.4],
+ [1508889600000, 4.9, 6.5],
+ [1508976000000, 2.6, 6.8],
+ [1509062400000, 4.1, 9.2],
+ [1509148800000, 3.5, 10.2],
+ [1509235200000, 4.0, 6.8],
+ [1509325200000, 3.2, 5.1],
+ [1509411600000, 3.1, 5.2],
+ [1509498000000, 5.2, 6.7],
+ [1509584400000, 1.4, 9.4],
+ [1509670800000, 1.3, 6.3],
+ [1509757200000, 4.3, 7.4],
+ [1509843600000, 4.8, 6.9],
+ [1509930000000, 0.9, 6.8],
+ [1510016400000, 2.9, 6.9],
+ [1510102800000, 4.6, 8.7],
+ [1510189200000, 3.9, 9.2],
+ [1510275600000, 1.2, 4.7],
+ [1510362000000, 1.0, 3.9],
+ [1510448400000, 2.9, 6.5],
+ [1510534800000, -0.6, 5.7],
+ [1510621200000, 0.1, 1.8],
+ [1510707600000, 1.8, 5.2],
+ [1510794000000, 1.7, 5.2],
+ [1510880400000, 2.7, 6.8],
+ [1510966800000, 1.1, 5.2],
+ [1511053200000, -0.1, 3.6],
+ [1511139600000, 0.9, 2.7],
+ [1511226000000, -4.1, 0.8],
+ [1511312400000, -3.8, -0.3],
+ [1511398800000, -1.0, 5.4],
+ [1511485200000, 2.4, 4.5],
+ [1511571600000, 1.3, 3.9],
+ [1511658000000, -3.3, 2.8],
+ [1511744400000, -3.9, -0.7],
+ [1511830800000, -5.3, -0.6],
+ [1511917200000, -8.4, -5.1],
+ [1512003600000, -8.7, -5.4],
+ [1512090000000, -8.2, -2.8],
+ [1512176400000, -2.6, 3.8],
+ [1512262800000, 1.8, 4.3],
+ [1512349200000, 0.9, 3.8],
+ [1512435600000, 0.8, 5.9],
+ [1512522000000, 1.5, 3.0],
+ [1512608400000, 2.5, 7.3],
+ [1512694800000, 2.0, 4.9],
+ [1512781200000, -0.8, 2.6],
+ [1512867600000, -1.4, 0.2],
+ [1512954000000, -2.3, -0.9],
+ [1513040400000, -9.0, -2.2],
+ [1513126800000, -8.8, -2.6],
+ [1513213200000, -7.0, -3.9],
+ [1513299600000, -8.1, -5.5],
+ [1513386000000, -7.5, -3.4],
+ [1513472400000, -8.1, -1.8],
+ [1513558800000, -1.5, 1.9],
+ [1513645200000, 1.3, 2.2],
+ [1513731600000, 2.1, 6.0],
+ [1513818000000, 2.2, 7.1],
+ [1513904400000, 2.7, 5.9],
+ [1513990800000, 2.5, 8.6],
+ [1514077200000, 1.8, 5.6],
+ [1514163600000, 1.0, 3.1],
+ [1514250000000, 1.3, 1.6],
+ [1514336400000, 0.8, 1.3],
+ [1514422800000, -3.3, -1.4],
+ [1514509200000, -1.5, -0.2],
+ [1514595600000, -2.7, -1.0],
+ [1514682000000, -2.8, 0.3],
+ ];
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-ranged/area-ranged-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-ranged/area-ranged-page.xml
new file mode 100644
index 0000000..0ec137b
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-ranged/area-ranged-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-spline/area-spline-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-spline/area-spline-page.ts
new file mode 100644
index 0000000..47a4f0a
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-spline/area-spline-page.ts
@@ -0,0 +1,79 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'areaspline',
+ },
+ title: {
+ text: 'Average fruit consumption during one week',
+ },
+ legend: {
+ layout: 'vertical',
+ align: 'left',
+ verticalAlign: 'top',
+ x: 150,
+ y: 100,
+ floating: true,
+ borderWidth: 1,
+ backgroundColor: '#FFFFFF',
+ },
+ xAxis: {
+ categories: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
+ plotBands: [
+ {
+ // visualize the weekend
+ from: 4.5,
+ to: 6.5,
+ color: 'rgba(68, 170, 213, .2)',
+ },
+ ],
+ },
+ yAxis: {
+ title: {
+ text: 'Fruit units',
+ },
+ },
+ tooltip: {
+ shared: true,
+ valueSuffix: ' units',
+ },
+ credits: {
+ enabled: false,
+ },
+ plotOptions: {
+ areaspline: {
+ fillOpacity: 0.5,
+ },
+ },
+ series: [
+ {
+ name: 'John',
+ data: [3, 4, 3, 5, 4, 10, 12],
+ },
+ {
+ name: 'Jane',
+ data: [1, 3, 4, 3, 3, 5, 4],
+ },
+ ],
+ },
+});
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-spline/area-spline-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-spline/area-spline-page.xml
new file mode 100644
index 0000000..54d0abf
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-spline/area-spline-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-stacked-percent/area-stacked-percent-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-stacked-percent/area-stacked-percent-page.ts
new file mode 100644
index 0000000..d4a5601
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-stacked-percent/area-stacked-percent-page.ts
@@ -0,0 +1,94 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'area',
+ },
+ title: {
+ text: 'Historic and Estimated Worldwide Population Distribution by Region',
+ },
+ subtitle: {
+ text: 'Source: Wikipedia.org',
+ },
+ xAxis: {
+ categories: ['1750', '1800', '1850', '1900', '1950', '1999', '2050'],
+ tickmarkPlacement: 'on',
+ title: {
+ enabled: false,
+ },
+ },
+ yAxis: {
+ labels: {
+ format: '{value}%',
+ },
+ title: {
+ enabled: false,
+ },
+ },
+ tooltip: {
+ pointFormat: '{series.name}: {point.percentage:.1f}% ({point.y:,.0f} millions)
',
+ split: true,
+ },
+ plotOptions: {
+ area: {
+ stacking: 'percent',
+ lineColor: '#ffffff',
+ lineWidth: 1,
+ marker: {
+ lineWidth: 1,
+ lineColor: '#ffffff',
+ },
+ accessibility: {
+ pointDescriptionFormatter: function (point) {
+ function round(x) {
+ return Math.round(x * 100) / 100;
+ }
+ return point.index + 1 + ', ' + point.category + ', ' + point.y + ' millions, ' + round(point.percentage) + '%, ' + point.series.name;
+ },
+ },
+ },
+ },
+ series: [
+ {
+ name: 'Asia',
+ data: [502, 635, 809, 947, 1402, 3634, 5268],
+ },
+ {
+ name: 'Africa',
+ data: [106, 107, 111, 133, 221, 767, 1766],
+ },
+ {
+ name: 'Europe',
+ data: [163, 203, 276, 408, 547, 729, 628],
+ },
+ {
+ name: 'America',
+ data: [18, 31, 54, 156, 339, 818, 1201],
+ },
+ {
+ name: 'Oceania',
+ data: [2, 2, 2, 6, 13, 30, 46],
+ },
+ ],
+ },
+});
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-stacked-percent/area-stacked-percent-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-stacked-percent/area-stacked-percent-page.xml
new file mode 100644
index 0000000..fab5696
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-stacked-percent/area-stacked-percent-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-stacked/area-stacked-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-stacked/area-stacked-page.ts
new file mode 100644
index 0000000..1e9bf95
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-stacked/area-stacked-page.ts
@@ -0,0 +1,88 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'area',
+ },
+ title: {
+ text: 'Historic and Estimated Worldwide Population Growth by Region',
+ },
+ subtitle: {
+ text: 'Source: Wikipedia.org',
+ },
+ xAxis: {
+ categories: ['1750', '1800', '1850', '1900', '1950', '1999', '2050'],
+ tickmarkPlacement: 'on',
+ title: {
+ enabled: false,
+ },
+ },
+ yAxis: {
+ title: {
+ text: 'Billions',
+ },
+ labels: {
+ formatter: function () {
+ return this.value / 1000;
+ },
+ },
+ },
+ tooltip: {
+ split: true,
+ valueSuffix: ' millions',
+ },
+ plotOptions: {
+ area: {
+ stacking: 'normal',
+ lineColor: '#666666',
+ lineWidth: 1,
+ marker: {
+ lineWidth: 1,
+ lineColor: '#666666',
+ },
+ },
+ },
+ series: [
+ {
+ name: 'Asia',
+ data: [502, 635, 809, 947, 1402, 3634, 5268],
+ },
+ {
+ name: 'Africa',
+ data: [106, 107, 111, 133, 221, 767, 1766],
+ },
+ {
+ name: 'Europe',
+ data: [163, 203, 276, 408, 547, 729, 628],
+ },
+ {
+ name: 'America',
+ data: [18, 31, 54, 156, 339, 818, 1201],
+ },
+ {
+ name: 'Oceania',
+ data: [2, 2, 2, 6, 13, 30, 46],
+ },
+ ],
+ },
+});
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-stacked/area-stacked-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-stacked/area-stacked-page.xml
new file mode 100644
index 0000000..76f570f
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/area-stacked/area-stacked-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/basic-area/basic-area-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/basic-area/basic-area-page.ts
new file mode 100644
index 0000000..4904cb5
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/basic-area/basic-area-page.ts
@@ -0,0 +1,83 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'area',
+ },
+ accessibility: {
+ description:
+ 'Image description: An area chart compares the nuclear stockpiles of the USA and the USSR/Russia between 1945 and 2017. The number of nuclear weapons is plotted on the Y-axis and the years on the X-axis. The chart is interactive, and the year-on-year stockpile levels can be traced for each country. The US has a stockpile of 6 nuclear weapons at the dawn of the nuclear age in 1945. This number has gradually increased to 369 by 1950 when the USSR enters the arms race with 6 weapons. At this point, the US starts to rapidly build its stockpile culminating in 32,040 warheads by 1966 compared to the USSR’s 7,089. From this peak in 1966, the US stockpile gradually decreases as the USSR’s stockpile expands. By 1978 the USSR has closed the nuclear gap at 25,393. The USSR stockpile continues to grow until it reaches a peak of 45,000 in 1986 compared to the US arsenal of 24,401. From 1986, the nuclear stockpiles of both countries start to fall. By 2000, the numbers have fallen to 10,577 and 21,000 for the US and Russia, respectively. The decreases continue until 2017 at which point the US holds 4,018 weapons compared to Russia’s 4,500.',
+ },
+ title: {
+ text: 'US and USSR nuclear stockpiles',
+ },
+ subtitle: {
+ text: 'Sources: ' + 'thebulletin.org & ' + 'armscontrol.org',
+ },
+ xAxis: {
+ allowDecimals: false,
+ labels: {
+ formatter: `function () { return this.value; }`,
+ },
+ accessibility: {
+ rangeDescription: 'Range: 1940 to 2017.',
+ },
+ },
+ yAxis: {
+ title: {
+ text: 'Nuclear weapon states',
+ },
+ labels: {
+ formatter: `function () { return this.value / 1000 + 'k'; }`,
+ },
+ },
+ tooltip: {
+ pointFormat: '{series.name} had stockpiled {point.y:,.0f}
warheads in {point.x}',
+ },
+ plotOptions: {
+ area: {
+ pointStart: 1940,
+ marker: {
+ enabled: false,
+ symbol: 'circle',
+ radius: 2,
+ states: {
+ hover: {
+ enabled: true,
+ },
+ },
+ },
+ },
+ },
+ series: [
+ {
+ name: 'USA',
+ data: [null, null, null, null, null, 6, 11, 32, 110, 235, 369, 640, 1005, 1436, 2063, 3057, 4618, 6444, 9822, 15468, 20434, 24126, 27387, 29459, 31056, 31982, 32040, 31233, 29224, 27342, 26662, 26956, 27912, 28999, 28965, 27826, 25579, 25722, 24826, 24605, 24304, 23464, 23708, 24099, 24357, 24237, 24401, 24344, 23586, 22380, 21004, 17287, 14747, 13076, 12555, 12144, 11009, 10950, 10871, 10824, 10577, 10527, 10475, 10421, 10358, 10295, 10104, 9914, 9620, 9326, 5113, 5113, 4954, 4804, 4761, 4717, 4368, 4018],
+ },
+ {
+ name: 'USSR/Russia',
+ data: [null, null, null, null, null, null, null, null, null, null, 5, 25, 50, 120, 150, 200, 426, 660, 869, 1060, 1605, 2471, 3322, 4238, 5221, 6129, 7089, 8339, 9399, 10538, 11643, 13092, 14478, 15915, 17385, 19055, 21205, 23044, 25393, 27935, 30062, 32049, 33952, 35804, 37431, 39197, 45000, 43000, 41000, 39000, 37000, 35000, 33000, 31000, 29000, 27000, 25000, 24000, 23000, 22000, 21000, 20000, 19000, 18000, 18000, 17000, 16000, 15537, 14162, 12787, 12600, 11400, 5500, 4512, 4502, 4502, 4500, 4500],
+ },
+ ],
+ },
+});
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/basic-area/basic-area-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/basic-area/basic-area-page.xml
new file mode 100644
index 0000000..9a5f9f8
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/area-charts/basic-area/basic-area-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/bar-negative-stack/bar-negative-stack-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/bar-negative-stack/bar-negative-stack-page.ts
new file mode 100644
index 0000000..f4ed6d9
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/bar-negative-stack/bar-negative-stack-page.ts
@@ -0,0 +1,101 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+// Data gathered from http://populationpyramid.net/germany/2015/
+// Age categories
+var categories = ['0-4', '5-9', '10-14', '15-19', '20-24', '25-29', '30-34', '35-39', '40-44', '45-49', '50-54', '55-59', '60-64', '65-69', '70-74', '75-79', '80-84', '85-89', '90-94', '95-99', '100 + '];
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'bar',
+ },
+ title: {
+ text: 'Population pyramid for Germany, 2018',
+ },
+ subtitle: {
+ text: 'Source: Population Pyramids of the World from 1950 to 2100',
+ },
+ accessibility: {
+ point: {
+ valueDescriptionFormat: '{index}. Age {xDescription}, {value}%.',
+ },
+ },
+ xAxis: [
+ {
+ categories: categories,
+ reversed: false,
+ labels: {
+ step: 1,
+ },
+ accessibility: {
+ description: 'Age (male)',
+ },
+ },
+ {
+ // mirror axis on right side
+ opposite: true,
+ reversed: false,
+ categories: categories,
+ linkedTo: 0,
+ labels: {
+ step: 1,
+ },
+ accessibility: {
+ description: 'Age (female)',
+ },
+ },
+ ],
+ yAxis: {
+ title: {
+ text: null,
+ },
+ labels: {
+ formatter: `function () { return Math.abs(this.value) + '%'; }`,
+ },
+ accessibility: {
+ description: 'Percentage population',
+ rangeDescription: 'Range: 0 to 5%',
+ },
+ },
+
+ plotOptions: {
+ series: {
+ stacking: 'normal',
+ },
+ },
+
+ tooltip: {
+ formatter: `function () { return ( '' + this.series.name + ', age ' + this.point.category + '
' + 'Population: ' + Math.abs(this.point.y) + '%' ); }`,
+ },
+
+ series: [
+ {
+ name: 'Male',
+ data: [-2.2, -2.1, -2.2, -2.4, -2.7, -3.0, -3.3, -3.2, -2.9, -3.5, -4.4, -4.1, -3.4, -2.7, -2.3, -2.2, -1.6, -0.6, -0.3, -0.0, -0.0],
+ },
+ {
+ name: 'Female',
+ data: [2.1, 2.0, 2.1, 2.3, 2.6, 2.9, 3.2, 3.1, 2.9, 3.4, 4.3, 4.0, 3.5, 2.9, 2.5, 2.7, 2.2, 1.1, 0.6, 0.2, 0.0],
+ },
+ ],
+ },
+});
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/bar-negative-stack/bar-negative-stack-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/bar-negative-stack/bar-negative-stack-page.xml
new file mode 100644
index 0000000..1924b24
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/bar-negative-stack/bar-negative-stack-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/bar-stacked/bar-stacked-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/bar-stacked/bar-stacked-page.ts
new file mode 100644
index 0000000..6d2a6fa
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/bar-stacked/bar-stacked-page.ts
@@ -0,0 +1,409 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ plotOptions: {
+ column: {
+ stacking: 'normal',
+ borderRadius: 4,
+ pointWidth: 30,
+ borderWidth: 0,
+ },
+ series: {
+ animation: true,
+ },
+ },
+ boost: {
+ enabled: true,
+ useGPUTranslations: true,
+ },
+ chart: {
+ scrollablePlotArea: {
+ minWidth: 1400,
+ scrollPositionX: 1,
+ },
+ spacingBottom: 30,
+ animation: true,
+ },
+ legend: {
+ verticalAlign: 'top',
+ },
+ yAxis: {
+ min: -360,
+ max: 360,
+ title: {
+ text: 'kWh',
+ },
+ tickAmount: 7,
+ },
+ title: {
+ text: '',
+ },
+ tooltip: {
+ enabled: false,
+ },
+ credits: {
+ enabled: false,
+ },
+ series: [
+ {
+ type: 'column',
+ yAxis: 0,
+ states: {
+ hover: {
+ enabled: false,
+ },
+ inactive: {
+ enabled: false,
+ },
+ select: {
+ enabled: false,
+ },
+ },
+ pointPadding: 0.01,
+ maxPointWidth: 30,
+ groupPadding: 0.1,
+ name: 'Stroom',
+ id: 'Electricity',
+ stack: 'verbruik',
+ color: '#5FB624',
+ data: [
+ {
+ y: 215,
+ selected: false,
+ id: '2020-10-05;2020-11-01',
+ },
+ {
+ y: 266,
+ selected: false,
+ id: '2020-11-01;2020-12-01',
+ },
+ {
+ y: 308,
+ selected: false,
+ id: '2020-12-01;2021-01-01',
+ },
+ {
+ y: 257,
+ selected: false,
+ id: '2021-01-01;2021-02-01',
+ },
+ {
+ y: 239,
+ selected: false,
+ id: '2021-02-01;2021-03-01',
+ },
+ {
+ y: 222,
+ selected: false,
+ id: '2021-03-01;2021-04-01',
+ },
+ {
+ y: 188,
+ selected: false,
+ id: '2021-04-01;2021-05-01',
+ },
+ {
+ y: 162,
+ selected: false,
+ id: '2021-05-01;2021-06-01',
+ },
+ {
+ y: 154,
+ selected: false,
+ id: '2021-06-01;2021-07-01',
+ },
+ {
+ y: 59,
+ selected: false,
+ id: '2021-07-01;2021-08-01',
+ },
+ {
+ y: 168,
+ selected: false,
+ id: '2021-08-01;2021-09-01',
+ },
+ {
+ y: 195,
+ selected: false,
+ id: '2021-09-01;2021-10-01',
+ },
+ {
+ y: 209,
+ selected: false,
+ id: '2021-10-01;2021-11-01',
+ },
+ {
+ y: 270,
+ selected: false,
+ id: '2021-11-01;2021-12-01',
+ },
+ {
+ y: 323,
+ selected: false,
+ id: '2021-12-01;2022-01-01',
+ },
+ {
+ y: 311,
+ selected: false,
+ id: '2022-01-01;2022-02-01',
+ },
+ {
+ y: 219,
+ selected: false,
+ id: '2022-02-01;2022-03-01',
+ },
+ {
+ y: 211,
+ selected: false,
+ id: '2022-03-01;2022-04-01',
+ },
+ {
+ y: 175,
+ selected: false,
+ id: '2022-04-01;2022-05-01',
+ },
+ {
+ y: 165,
+ selected: false,
+ id: '2022-05-01;2022-06-01',
+ },
+ {
+ y: 143,
+ selected: false,
+ id: '2022-06-01;2022-07-01',
+ },
+ {
+ y: 150,
+ selected: false,
+ id: '2022-07-01;2022-08-01',
+ },
+ {
+ y: 96,
+ selected: false,
+ id: '2022-08-01;2022-09-01',
+ },
+ {
+ y: 194,
+ selected: false,
+ id: '2022-09-01;2022-10-01',
+ },
+ {
+ y: 211,
+ selected: false,
+ id: '2022-10-01;2022-11-01',
+ },
+ {
+ y: 262,
+ selected: false,
+ id: '2022-11-01;2022-12-01',
+ },
+ {
+ y: 299,
+ selected: false,
+ id: '2022-12-01;2023-01-01',
+ },
+ {
+ y: 282,
+ selected: true,
+ id: '2023-01-01;2023-02-01',
+ },
+ ],
+ allowPointSelect: false,
+ },
+ {
+ type: 'column',
+ yAxis: 0,
+ states: {
+ hover: {
+ enabled: false,
+ },
+ inactive: {
+ enabled: false,
+ },
+ select: {
+ enabled: false,
+ },
+ },
+ pointPadding: 0.01,
+ maxPointWidth: 30,
+ groupPadding: 0.1,
+ name: 'Teruglevering',
+ id: 'ReturnSupply',
+ stack: 'verbruik',
+ color: '#FFC800',
+ data: [
+ {
+ y: -38,
+ selected: false,
+ id: '2020-10-05;2020-11-01',
+ },
+ {
+ y: -23,
+ selected: false,
+ id: '2020-11-01;2020-12-01',
+ },
+ {
+ y: -5,
+ selected: false,
+ id: '2020-12-01;2021-01-01',
+ },
+ {
+ y: -17,
+ selected: false,
+ id: '2021-01-01;2021-02-01',
+ },
+ {
+ y: -44,
+ selected: false,
+ id: '2021-02-01;2021-03-01',
+ },
+ {
+ y: -100,
+ selected: false,
+ id: '2021-03-01;2021-04-01',
+ },
+ {
+ y: -196,
+ selected: false,
+ id: '2021-04-01;2021-05-01',
+ },
+ {
+ y: -231,
+ selected: false,
+ id: '2021-05-01;2021-06-01',
+ },
+ {
+ y: -241,
+ selected: false,
+ id: '2021-06-01;2021-07-01',
+ },
+ {
+ y: -272,
+ selected: false,
+ id: '2021-07-01;2021-08-01',
+ },
+ {
+ y: -174,
+ selected: false,
+ id: '2021-08-01;2021-09-01',
+ },
+ {
+ y: -119,
+ selected: false,
+ id: '2021-09-01;2021-10-01',
+ },
+ {
+ y: -62,
+ selected: false,
+ id: '2021-10-01;2021-11-01',
+ },
+ {
+ y: -20,
+ selected: false,
+ id: '2021-11-01;2021-12-01',
+ },
+ {
+ y: -4,
+ selected: false,
+ id: '2021-12-01;2022-01-01',
+ },
+ {
+ y: -9,
+ selected: false,
+ id: '2022-01-01;2022-02-01',
+ },
+ {
+ y: -51,
+ selected: false,
+ id: '2022-02-01;2022-03-01',
+ },
+ {
+ y: -149,
+ selected: false,
+ id: '2022-03-01;2022-04-01',
+ },
+ {
+ y: -198,
+ selected: false,
+ id: '2022-04-01;2022-05-01',
+ },
+ {
+ y: -256,
+ selected: false,
+ id: '2022-05-01;2022-06-01',
+ },
+ {
+ y: -268,
+ selected: false,
+ id: '2022-06-01;2022-07-01',
+ },
+ {
+ y: -255,
+ selected: false,
+ id: '2022-07-01;2022-08-01',
+ },
+ {
+ y: -257,
+ selected: false,
+ id: '2022-08-01;2022-09-01',
+ },
+ {
+ y: -135,
+ selected: false,
+ id: '2022-09-01;2022-10-01',
+ },
+ {
+ y: -71,
+ selected: false,
+ id: '2022-10-01;2022-11-01',
+ },
+ {
+ y: -22,
+ selected: false,
+ id: '2022-11-01;2022-12-01',
+ },
+ {
+ y: -9,
+ selected: false,
+ id: '2022-12-01;2023-01-01',
+ },
+ {
+ y: -14,
+ selected: true,
+ id: '2023-01-01;2023-02-01',
+ },
+ ],
+ allowPointSelect: false,
+ },
+ ],
+ xAxis: {
+ categories: ['okt', 'nov', 'dec', 'jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec', 'jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec', 'jan'],
+ labels: {
+ padding: 0,
+ },
+ },
+ exporting: {
+ enabled: false,
+ },
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/bar-stacked/bar-stacked-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/bar-stacked/bar-stacked-page.xml
new file mode 100644
index 0000000..62e301a
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/bar-stacked/bar-stacked-page.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/basic-bar/basic-bar-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/basic-bar/basic-bar-page.ts
new file mode 100644
index 0000000..6cf985e
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/basic-bar/basic-bar-page.ts
@@ -0,0 +1,93 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'bar',
+ },
+ title: {
+ text: 'Historic World Population by Region',
+ },
+ subtitle: {
+ text: 'Source: Wikipedia.org',
+ },
+ xAxis: {
+ categories: ['Africa', 'America', 'Asia', 'Europe', 'Oceania'],
+ title: {
+ text: null,
+ },
+ },
+ yAxis: {
+ min: 0,
+ title: {
+ text: 'Population (millions)',
+ align: 'high',
+ },
+ labels: {
+ overflow: 'justify',
+ },
+ },
+ tooltip: {
+ valueSuffix: ' millions',
+ },
+ // TODO: dataLabels is not working
+ // plotOptions: {
+ // bar: {
+ // dataLabels: {
+ // enabled: true,
+ // },
+ // },
+ // },
+ legend: {
+ layout: 'vertical',
+ align: 'right',
+ verticalAlign: 'top',
+ x: -40,
+ y: 80,
+ floating: true,
+ borderWidth: 1,
+ backgroundColor: '#FFFFFF',
+ shadow: true,
+ },
+ credits: {
+ enabled: false,
+ },
+ series: [
+ {
+ name: 'Year 1800',
+ data: [107, 31, 635, 203, 2],
+ },
+ {
+ name: 'Year 1900',
+ data: [133, 156, 947, 408, 6],
+ },
+ {
+ name: 'Year 2000',
+ data: [814, 841, 3714, 727, 31],
+ },
+ {
+ name: 'Year 2016',
+ data: [1216, 1001, 4436, 738, 40],
+ },
+ ],
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/basic-bar/basic-bar-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/basic-bar/basic-bar-page.xml
new file mode 100644
index 0000000..94628bf
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/bar-charts/basic-bar/basic-bar-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/column-charts/basic-column/basic-column-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/column-charts/basic-column/basic-column-page.ts
new file mode 100644
index 0000000..5835235
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/column-charts/basic-column/basic-column-page.ts
@@ -0,0 +1,75 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'column',
+ },
+ title: {
+ text: 'Monthly Average Rainfall',
+ },
+ subtitle: {
+ text: 'Source: WorldClimate.com',
+ },
+ xAxis: {
+ categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+ crosshair: true,
+ },
+ yAxis: {
+ min: 0,
+ title: {
+ text: 'Rainfall (mm)',
+ },
+ },
+ tooltip: {
+ headerFormat: '{point.key}',
+ pointFormat: '| {series.name}: | ' + '{point.y:.1f} mm |
',
+ footerFormat: '
',
+ shared: true,
+ useHTML: true,
+ },
+ plotOptions: {
+ column: {
+ pointPadding: 0.2,
+ borderWidth: 0,
+ },
+ },
+ series: [
+ {
+ name: 'Tokyo',
+ data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
+ },
+ {
+ name: 'New York',
+ data: [83.6, 78.8, 98.5, 93.4, 106.0, 84.5, 105.0, 104.3, 91.2, 83.5, 106.6, 92.3],
+ },
+ {
+ name: 'London',
+ data: [48.9, 38.8, 39.3, 41.4, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2],
+ },
+ {
+ name: 'Berlin',
+ data: [42.4, 33.2, 34.5, 39.7, 52.6, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1],
+ },
+ ],
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/column-charts/basic-column/basic-column-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/column-charts/basic-column/basic-column-page.xml
new file mode 100644
index 0000000..26aaaf4
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/column-charts/basic-column/basic-column-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/column-charts/column-stacked/column-stacked-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/column-charts/column-stacked/column-stacked-page.ts
new file mode 100644
index 0000000..d2f99a1
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/column-charts/column-stacked/column-stacked-page.ts
@@ -0,0 +1,85 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'column',
+ },
+ title: {
+ text: 'Stacked column chart',
+ },
+ xAxis: {
+ categories: ['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas'],
+ },
+ yAxis: {
+ min: 0,
+ title: {
+ text: 'Total fruit consumption',
+ },
+ stackLabels: {
+ enabled: true,
+ style: {
+ fontWeight: 'bold',
+ color: 'gray',
+ },
+ },
+ },
+ legend: {
+ align: 'right',
+ x: -30,
+ verticalAlign: 'top',
+ y: 25,
+ floating: true,
+ backgroundColor: 'white',
+ borderColor: '#CCC',
+ borderWidth: 1,
+ shadow: false,
+ },
+ tooltip: {
+ headerFormat: '{point.x}
',
+ pointFormat: '{series.name}: {point.y}
Total: {point.stackTotal}',
+ },
+ plotOptions: {
+ column: {
+ stacking: 'normal',
+ // TODO: add support for dataLabels
+ // dataLabels: {
+ // enabled: true,
+ // },
+ },
+ },
+ series: [
+ {
+ name: 'John',
+ data: [5, 3, 4, 7, 2],
+ },
+ {
+ name: 'Jane',
+ data: [2, 2, 3, 2, 1],
+ },
+ {
+ name: 'Joe',
+ data: [3, 4, 4, 2, 5],
+ },
+ ],
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/column-charts/column-stacked/column-stacked-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/column-charts/column-stacked/column-stacked-page.xml
new file mode 100644
index 0000000..c136705
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/column-charts/column-stacked/column-stacked-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/basic-line/basic-line-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/basic-line/basic-line-page.ts
new file mode 100644
index 0000000..b31d8ee
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/basic-line/basic-line-page.ts
@@ -0,0 +1,193 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let viewModel;
+let chartView;
+
+export function onNavigatingTo(args: NavigatedData) {
+ viewModel = fromObject({
+ loading: true,
+
+ // onAndroid it is required for you to pass a series skeleton if the data
+ // will be loaded asynchronously
+ chartOptions: {
+ legend: {
+ enabled: false,
+ },
+ credits: {
+ enabled: false,
+ },
+ yAxis: {
+ title: {
+ text: '',
+ },
+ },
+ series: [
+ {
+ name: 'Installation',
+ data: [],
+ },
+ {
+ name: 'Manufacturing',
+ data: [],
+ },
+ {
+ name: 'Sales & Distribution',
+ data: [],
+ },
+ {
+ name: 'Project Development',
+ data: [],
+ },
+ {
+ name: 'Other',
+ data: [],
+ },
+ ],
+ },
+ });
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+
+ setTimeout(() => {
+ viewModel.set('chartOptions', {
+ title: {
+ text: 'Solar Employment Growth by Sector, 2010-2016',
+ },
+
+ subtitle: {
+ text: 'Source: thesolarfoundation.com',
+ },
+
+ yAxis: {
+ title: {
+ text: 'Number of Employees',
+ },
+ stackLabels: {
+ enabled: true,
+ style: {
+ fontWeight: 'bold',
+ color: 'gray',
+ },
+ },
+ },
+
+ xAxis: {
+ accessibility: {
+ rangeDescription: 'Range: 2010 to 2017',
+ },
+ },
+
+ legend: {
+ layout: 'horizontal',
+ align: 'center',
+ verticalAlign: 'bottom',
+ enabled: true,
+ },
+ credits: {
+ enabled: true,
+ },
+
+ plotOptions: {
+ series: {
+ label: {
+ connectorAllowed: false,
+ },
+ pointStart: 2010,
+ },
+ },
+ series: [
+ {
+ name: 'Installation',
+ data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175],
+ },
+ {
+ name: 'Manufacturing',
+ data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434],
+ },
+ {
+ name: 'Sales & Distribution',
+ data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387],
+ },
+ {
+ name: 'Project Development',
+ data: [null, null, 7988, 12169, 15112, 22452, 34400, 34227],
+ },
+ {
+ name: 'Other',
+ data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111],
+ },
+ ],
+ });
+ if (chartView) {
+ chartView.updateOptions(viewModel.get('chartOptions'));
+ }
+ viewModel.set('loading', false);
+ }, 2000);
+}
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
+
+export function changeData(args) {
+ const cOpts = viewModel.get('chartOptions');
+ if (cOpts.title.text === 'Title Changed') {
+ cOpts.title.text = 'Title Changed Again into a very long sentence making it span across multiple lines';
+ cOpts.subtitle.text = 'Subtitle Changed Again';
+ cOpts.series = [
+ {
+ name: 'Installation',
+ data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175],
+ },
+ {
+ name: 'Manufacturing',
+ data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434],
+ },
+ {
+ name: 'Sales & Distribution',
+ data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387],
+ },
+ {
+ name: 'Project Development',
+ data: [7988, 12169, 15112, 22452, 34400, 34227, null, null],
+ },
+ {
+ name: 'Other',
+ data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111],
+ },
+ ];
+ } else {
+ cOpts.title.text = 'Title Changed';
+ cOpts.subtitle.text = 'Subtitle Changed';
+ cOpts.series = [
+ {
+ name: 'Project Development',
+ data: [null, null, 7988, 12169, 15112, 22452, 34400, 34227].reverse(),
+ },
+ {
+ name: 'Installation',
+ data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175].reverse(),
+ },
+ {
+ name: 'Manufacturing',
+ data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434],
+ },
+ {
+ name: 'Other',
+ data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111],
+ },
+ ];
+ }
+
+ viewModel.set('chartOptions', Object.assign({}, cOpts));
+ chartView.updateOptions(viewModel.chartOptions);
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/basic-line/basic-line-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/basic-line/basic-line-page.xml
new file mode 100644
index 0000000..8ab7e58
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/basic-line/basic-line-page.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/spline-irregular-time/spline-irregular-time-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/spline-irregular-time/spline-irregular-time-page.ts
new file mode 100644
index 0000000..b0378c8
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/spline-irregular-time/spline-irregular-time-page.ts
@@ -0,0 +1,283 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'spline',
+ backgroundColor: {
+ linearGradient: {
+ x1: 0,
+ y1: 0,
+ x2: 0,
+ y2: 1,
+ },
+ stops: ['rgba(132, 103, 144, 1)', 'rgba(163, 95, 103, 1)'],
+ },
+ borderRadius: 6,
+ },
+ navigation: {
+ buttonOptions: {
+ symbolStroke: 'rgba(255, 255, 255, 0.6)',
+ theme: {
+ fill: 'rgba(255, 255, 255, 0)',
+ },
+ },
+ },
+ credits: {
+ style: {
+ color: 'rgba(255, 255, 255, 0.5)',
+ },
+ },
+ title: {
+ text: 'Snow depth at Vikjafjellet, Norway',
+ align: 'left',
+ style: {
+ fontFamily: 'Arial',
+ fontSize: '14px',
+ color: 'rgba(255, 255, 255, 0.7)',
+ },
+ y: 16,
+ },
+ subtitle: {
+ text: 'Irregular time data in Highcharts JS',
+ align: 'left',
+ style: {
+ fontFamily: 'Arial',
+ fontSize: '9px',
+ color: 'rgba(255, 255, 255, 0.7)',
+ },
+ y: 28,
+ },
+ legend: {
+ itemStyle: {
+ color: 'rgba(255, 255, 255, 0.7)',
+ },
+ },
+ xAxis: {
+ type: 'datetime',
+ dateTimeLabelFormats: {
+ // don't display the dummy year
+ month: '%e. %b',
+ year: '%b',
+ },
+ title: {
+ text: 'Date',
+ style: {
+ color: 'rgba(255, 255, 255, 1)',
+ },
+ },
+ gridLineWidth: 0,
+ lineWidth: 1,
+ lineColor: 'rgba(255, 255, 255, 0.3)',
+ tickColor: 'rgba(255, 255, 255, 0)',
+ labels: {
+ style: {
+ color: 'rgba(255, 255, 255, 1)',
+ fontFamily: 'Arial',
+ fontSize: '10px',
+ },
+ },
+ },
+ yAxis: {
+ title: {
+ text: 'Snow depth (m)',
+ style: {
+ color: 'rgba(255, 255, 255, 1)',
+ },
+ },
+ min: 0,
+ gridLineWidth: 0,
+ lineWidth: 1,
+ lineColor: 'rgba(255, 255, 255, 0.3)',
+ tickColor: 'rgba(255, 255, 255, 0)',
+ labels: {
+ x: -5,
+ style: {
+ color: 'rgba(255, 255, 255, 1)',
+ fontFamily: 'Arial',
+ fontSize: '10px',
+ },
+ },
+ },
+ tooltip: {
+ headerFormat: '{series.name}
',
+ pointFormat: '{point.x:%e. %b}: {point.y:.2f} m',
+ },
+
+ plotOptions: {
+ series: {
+ marker: {
+ enabled: true,
+ },
+ },
+ },
+
+ colors: ['#6CF', '#39F', '#06C', '#036', '#000'],
+
+ // Define the data points. All series have a dummy year
+ // of 1970/71 in order to be compared on the same x axis. Note
+ // that in JavaScript, months start at 0 for January, 1 for February etc.
+ series: [
+ {
+ name: 'Winter 2014-2015',
+ color: '#F5B041',
+ data: [
+ [Date.UTC(1970, 10, 25), 0],
+ [Date.UTC(1970, 11, 6), 0.25],
+ [Date.UTC(1970, 11, 20), 1.41],
+ [Date.UTC(1970, 11, 25), 1.64],
+ [Date.UTC(1971, 0, 4), 1.6],
+ [Date.UTC(1971, 0, 17), 2.55],
+ [Date.UTC(1971, 0, 24), 2.62],
+ [Date.UTC(1971, 1, 4), 2.5],
+ [Date.UTC(1971, 1, 14), 2.42],
+ [Date.UTC(1971, 2, 6), 2.74],
+ [Date.UTC(1971, 2, 14), 2.62],
+ [Date.UTC(1971, 2, 24), 2.6],
+ [Date.UTC(1971, 3, 1), 2.81],
+ [Date.UTC(1971, 3, 11), 2.63],
+ [Date.UTC(1971, 3, 27), 2.77],
+ [Date.UTC(1971, 4, 4), 2.68],
+ [Date.UTC(1971, 4, 9), 2.56],
+ [Date.UTC(1971, 4, 14), 2.39],
+ [Date.UTC(1971, 4, 19), 2.3],
+ [Date.UTC(1971, 5, 4), 2],
+ [Date.UTC(1971, 5, 9), 1.85],
+ [Date.UTC(1971, 5, 14), 1.49],
+ [Date.UTC(1971, 5, 19), 1.27],
+ [Date.UTC(1971, 5, 24), 0.99],
+ [Date.UTC(1971, 5, 29), 0.67],
+ [Date.UTC(1971, 6, 3), 0.18],
+ [Date.UTC(1971, 6, 4), 0],
+ ],
+ },
+ {
+ name: 'Winter 2015-2016',
+ color: '#41AFF4',
+ data: [
+ [Date.UTC(1970, 10, 9), 0],
+ [Date.UTC(1970, 10, 15), 0.23],
+ [Date.UTC(1970, 10, 20), 0.25],
+ [Date.UTC(1970, 10, 25), 0.23],
+ [Date.UTC(1970, 10, 30), 0.39],
+ [Date.UTC(1970, 11, 5), 0.41],
+ [Date.UTC(1970, 11, 10), 0.59],
+ [Date.UTC(1970, 11, 15), 0.73],
+ [Date.UTC(1970, 11, 20), 0.41],
+ [Date.UTC(1970, 11, 25), 1.07],
+ [Date.UTC(1970, 11, 30), 0.88],
+ [Date.UTC(1971, 0, 5), 0.85],
+ [Date.UTC(1971, 0, 11), 0.89],
+ [Date.UTC(1971, 0, 17), 1.04],
+ [Date.UTC(1971, 0, 20), 1.02],
+ [Date.UTC(1971, 0, 25), 1.03],
+ [Date.UTC(1971, 0, 30), 1.39],
+ [Date.UTC(1971, 1, 5), 1.77],
+ [Date.UTC(1971, 1, 26), 2.12],
+ [Date.UTC(1971, 3, 19), 2.1],
+ [Date.UTC(1971, 4, 9), 1.7],
+ [Date.UTC(1971, 4, 29), 0.85],
+ [Date.UTC(1971, 5, 7), 0],
+ ],
+ },
+ {
+ name: 'Winter 2016-2017',
+ color: '#A8FF96',
+ data: [
+ [Date.UTC(1970, 9, 15), 0],
+ [Date.UTC(1970, 9, 31), 0.09],
+ [Date.UTC(1970, 10, 7), 0.17],
+ [Date.UTC(1970, 10, 10), 0.1],
+ [Date.UTC(1970, 11, 10), 0.1],
+ [Date.UTC(1970, 11, 13), 0.1],
+ [Date.UTC(1970, 11, 16), 0.11],
+ [Date.UTC(1970, 11, 19), 0.11],
+ [Date.UTC(1970, 11, 22), 0.08],
+ [Date.UTC(1970, 11, 25), 0.23],
+ [Date.UTC(1970, 11, 28), 0.37],
+ [Date.UTC(1971, 0, 16), 0.68],
+ [Date.UTC(1971, 0, 19), 0.55],
+ [Date.UTC(1971, 0, 22), 0.4],
+ [Date.UTC(1971, 0, 25), 0.4],
+ [Date.UTC(1971, 0, 28), 0.37],
+ [Date.UTC(1971, 0, 31), null],
+ [Date.UTC(1971, 1, 4), null],
+ [Date.UTC(1971, 1, 7), null],
+ [Date.UTC(1971, 1, 10), null],
+ [Date.UTC(1971, 1, 13), null],
+ [Date.UTC(1971, 1, 16), null],
+ [Date.UTC(1971, 1, 19), 0.35],
+ [Date.UTC(1971, 1, 22), 0.45],
+ [Date.UTC(1971, 1, 25), 0.62],
+ [Date.UTC(1971, 1, 28), 0.68],
+ [Date.UTC(1971, 2, 4), 0.68],
+ [Date.UTC(1971, 2, 7), 0.65],
+ [Date.UTC(1971, 2, 10), 0.65],
+ [Date.UTC(1971, 2, 13), 0.75],
+ [Date.UTC(1971, 2, 16), 0.86],
+ [Date.UTC(1971, 2, 19), 1.14],
+ [Date.UTC(1971, 2, 22), 1.2],
+ [Date.UTC(1971, 2, 25), 1.27],
+ [Date.UTC(1971, 2, 27), 1.12],
+ [Date.UTC(1971, 2, 30), 0.98],
+ [Date.UTC(1971, 3, 3), 0.85],
+ [Date.UTC(1971, 3, 6), 1.04],
+ [Date.UTC(1971, 3, 9), 0.92],
+ [Date.UTC(1971, 3, 12), 0.96],
+ [Date.UTC(1971, 3, 15), 0.94],
+ [Date.UTC(1971, 3, 18), 0.99],
+ [Date.UTC(1971, 3, 21), 0.96],
+ [Date.UTC(1971, 3, 24), 1.15],
+ [Date.UTC(1971, 3, 27), 1.18],
+ [Date.UTC(1971, 3, 30), 1.12],
+ [Date.UTC(1971, 4, 3), 1.06],
+ [Date.UTC(1971, 4, 6), 0.96],
+ [Date.UTC(1971, 4, 9), 0.87],
+ [Date.UTC(1971, 4, 12), 0.88],
+ [Date.UTC(1971, 4, 15), 0.79],
+ [Date.UTC(1971, 4, 18), 0.54],
+ [Date.UTC(1971, 4, 21), 0.34],
+ [Date.UTC(1971, 4, 25), 0],
+ ],
+ },
+ ],
+
+ responsive: {
+ rules: [
+ {
+ condition: {
+ maxWidth: 500,
+ },
+ chartOptions: {
+ plotOptions: {
+ series: {
+ marker: {
+ radius: 2.5,
+ },
+ },
+ },
+ },
+ },
+ ],
+ },
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/spline-irregular-time/spline-irregular-time-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/spline-irregular-time/spline-irregular-time-page.xml
new file mode 100644
index 0000000..8c2250f
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/spline-irregular-time/spline-irregular-time-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/with-data-labels/with-data-labels-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/with-data-labels/with-data-labels-page.ts
new file mode 100644
index 0000000..e8cfbcb
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/with-data-labels/with-data-labels-page.ts
@@ -0,0 +1,60 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+
+let chartView;
+const viewModel = fromObject({
+ chartOptions: {
+ chart: {
+ type: 'line',
+ },
+ title: {
+ text: 'Monthly Average Temperature',
+ },
+ subtitle: {
+ text: 'Source: WorldClimate.com',
+ },
+ xAxis: {
+ categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+ },
+ yAxis: {
+ title: {
+ text: 'Temperature (°C)',
+ },
+ },
+ // plotOptions: {
+ // line: {
+ // dataLabels: {
+ // enabled: true,
+ // },
+ // enableMouseTracking: true,
+ // },
+ // },
+ series: [
+ {
+ name: 'Tokyo',
+ data: [7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6],
+ },
+ {
+ name: 'London',
+ data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8],
+ },
+ ],
+ },
+});
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/with-data-labels/with-data-labels-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/with-data-labels/with-data-labels-page.xml
new file mode 100644
index 0000000..12c361b
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/line-charts/with-data-labels/with-data-labels-page.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/tests/dynamic-chart-height/dynamic-chart-height-page.ts b/apps/demo/src/plugin-demos/nativescript-ui-charts/tests/dynamic-chart-height/dynamic-chart-height-page.ts
new file mode 100644
index 0000000..2d8dabb
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/tests/dynamic-chart-height/dynamic-chart-height-page.ts
@@ -0,0 +1,96 @@
+import { NavigatedData, Page } from '@nativescript/core/ui/page';
+import { fromObject } from '@nativescript/core/data/observable';
+import { action } from '@nativescript/core';
+
+let chartView;
+const viewModel = fromObject({
+ graphHeight: 300,
+ chartOptions: {
+ chart: {
+ type: 'area',
+ },
+ accessibility: {
+ description:
+ 'Image description: An area chart compares the nuclear stockpiles of the USA and the USSR/Russia between 1945 and 2017. The number of nuclear weapons is plotted on the Y-axis and the years on the X-axis. The chart is interactive, and the year-on-year stockpile levels can be traced for each country. The US has a stockpile of 6 nuclear weapons at the dawn of the nuclear age in 1945. This number has gradually increased to 369 by 1950 when the USSR enters the arms race with 6 weapons. At this point, the US starts to rapidly build its stockpile culminating in 32,040 warheads by 1966 compared to the USSR’s 7,089. From this peak in 1966, the US stockpile gradually decreases as the USSR’s stockpile expands. By 1978 the USSR has closed the nuclear gap at 25,393. The USSR stockpile continues to grow until it reaches a peak of 45,000 in 1986 compared to the US arsenal of 24,401. From 1986, the nuclear stockpiles of both countries start to fall. By 2000, the numbers have fallen to 10,577 and 21,000 for the US and Russia, respectively. The decreases continue until 2017 at which point the US holds 4,018 weapons compared to Russia’s 4,500.',
+ },
+ title: {
+ text: 'US and USSR nuclear stockpiles',
+ },
+ subtitle: {
+ text: 'Sources: ' + 'thebulletin.org & ' + 'armscontrol.org',
+ },
+ xAxis: {
+ allowDecimals: false,
+ labels: {
+ formatter: `function () { return this.value; }`,
+ },
+ accessibility: {
+ rangeDescription: 'Range: 1940 to 2017.',
+ },
+ },
+ yAxis: {
+ title: {
+ text: 'Nuclear weapon states',
+ },
+ labels: {
+ formatter: `function () { return this.value / 1000 + 'k'; }`,
+ },
+ },
+ tooltip: {
+ pointFormat: '{series.name} had stockpiled {point.y:,.0f}
warheads in {point.x}',
+ },
+ plotOptions: {
+ area: {
+ pointStart: 1940,
+ marker: {
+ enabled: false,
+ symbol: 'circle',
+ radius: 2,
+ states: {
+ hover: {
+ enabled: true,
+ },
+ },
+ },
+ },
+ },
+ series: [
+ {
+ name: 'USA',
+ data: [null, null, null, null, null, 6, 11, 32, 110, 235, 369, 640, 1005, 1436, 2063, 3057, 4618, 6444, 9822, 15468, 20434, 24126, 27387, 29459, 31056, 31982, 32040, 31233, 29224, 27342, 26662, 26956, 27912, 28999, 28965, 27826, 25579, 25722, 24826, 24605, 24304, 23464, 23708, 24099, 24357, 24237, 24401, 24344, 23586, 22380, 21004, 17287, 14747, 13076, 12555, 12144, 11009, 10950, 10871, 10824, 10577, 10527, 10475, 10421, 10358, 10295, 10104, 9914, 9620, 9326, 5113, 5113, 4954, 4804, 4761, 4717, 4368, 4018],
+ },
+ {
+ name: 'USSR/Russia',
+ data: [null, null, null, null, null, null, null, null, null, null, 5, 25, 50, 120, 150, 200, 426, 660, 869, 1060, 1605, 2471, 3322, 4238, 5221, 6129, 7089, 8339, 9399, 10538, 11643, 13092, 14478, 15915, 17385, 19055, 21205, 23044, 25393, 27935, 30062, 32049, 33952, 35804, 37431, 39197, 45000, 43000, 41000, 39000, 37000, 35000, 33000, 31000, 29000, 27000, 25000, 24000, 23000, 22000, 21000, 20000, 19000, 18000, 18000, 17000, 16000, 15537, 14162, 12787, 12600, 11400, 5500, 4512, 4502, 4502, 4500, 4500],
+ },
+ ],
+ },
+ onAdjustGraphHeight() {
+ action({
+ message: 'Select New Height',
+ actions: ['200', '250', '300', '350', '400', '450', '500', '550', '600'],
+ cancelButtonText: 'Cancel',
+ }).then((r) => {
+ if (r !== 'Cancel') {
+ this.graphHeight = Number(r);
+ }
+ });
+ },
+});
+
+export function onNavigatingTo(args: NavigatedData) {
+ const page = args.object;
+
+ if (args.isBackNavigation) return;
+
+ page.bindingContext = viewModel;
+}
+
+export function chartViewLoaded(args) {
+ chartView = args.object;
+ chartView.setOptions(viewModel.get('chartOptions'));
+}
+
+export function goBack(args) {
+ args.object.page.frame.goBack();
+}
diff --git a/apps/demo/src/plugin-demos/nativescript-ui-charts/tests/dynamic-chart-height/dynamic-chart-height-page.xml b/apps/demo/src/plugin-demos/nativescript-ui-charts/tests/dynamic-chart-height/dynamic-chart-height-page.xml
new file mode 100644
index 0000000..bcfbeb2
--- /dev/null
+++ b/apps/demo/src/plugin-demos/nativescript-ui-charts/tests/dynamic-chart-height/dynamic-chart-height-page.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/src/plugin-demos/nativescript-urban-airship.ts b/apps/demo/src/plugin-demos/nativescript-urban-airship.ts
index 3298c98..bff2bb8 100644
--- a/apps/demo/src/plugin-demos/nativescript-urban-airship.ts
+++ b/apps/demo/src/plugin-demos/nativescript-urban-airship.ts
@@ -1,12 +1,10 @@
import { Observable, EventData, Page } from '@nativescript/core';
import { DemoSharedNativescriptUrbanAirship } from '@demo/shared';
-import { } from '@essent/nativescript-urban-airship';
+import {} from '@essent/nativescript-urban-airship';
export function navigatingTo(args: EventData) {
- const page = args.object;
- page.bindingContext = new DemoModel();
+ const page = args.object;
+ page.bindingContext = new DemoModel();
}
-export class DemoModel extends DemoSharedNativescriptUrbanAirship {
-
-}
+export class DemoModel extends DemoSharedNativescriptUrbanAirship {}
diff --git a/apps/demo/src/plugin-demos/nativescript-urban-airship.xml b/apps/demo/src/plugin-demos/nativescript-urban-airship.xml
index d93b376..c7324cf 100644
--- a/apps/demo/src/plugin-demos/nativescript-urban-airship.xml
+++ b/apps/demo/src/plugin-demos/nativescript-urban-airship.xml
@@ -28,4 +28,4 @@
-
\ No newline at end of file
+
diff --git a/packages/nativescript-ui-charts/.eslintrc.json b/packages/nativescript-ui-charts/.eslintrc.json
new file mode 100644
index 0000000..53c06c8
--- /dev/null
+++ b/packages/nativescript-ui-charts/.eslintrc.json
@@ -0,0 +1,18 @@
+{
+ "extends": ["../../.eslintrc.json"],
+ "ignorePatterns": ["!**/*", "node_modules/**/*"],
+ "overrides": [
+ {
+ "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
+ "rules": {}
+ },
+ {
+ "files": ["*.ts", "*.tsx"],
+ "rules": {}
+ },
+ {
+ "files": ["*.js", "*.jsx"],
+ "rules": {}
+ }
+ ]
+}
diff --git a/packages/nativescript-ui-charts/README.md b/packages/nativescript-ui-charts/README.md
new file mode 100644
index 0000000..d1ddbfe
--- /dev/null
+++ b/packages/nativescript-ui-charts/README.md
@@ -0,0 +1,13 @@
+# @essent/nativescript-ui-charts
+
+```javascript
+ns plugin add @essent/nativescript-ui-charts
+```
+
+## Usage
+
+// TODO
+
+## License
+
+Apache License Version 2.0
diff --git a/packages/nativescript-ui-charts/angular/.eslintrc.json b/packages/nativescript-ui-charts/angular/.eslintrc.json
new file mode 100644
index 0000000..b373d84
--- /dev/null
+++ b/packages/nativescript-ui-charts/angular/.eslintrc.json
@@ -0,0 +1,24 @@
+{
+ "extends": ["../.eslintrc.json"],
+ "overrides": [
+ {
+ "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
+ "rules": {}
+ },
+ {
+ "files": ["*.ts", "*.tsx"],
+ "rules": {
+ "@nrwl/nx/enforce-module-boundaries": [
+ "error",
+ {
+ "allowCircularSelfDependency": true
+ }
+ ]
+ }
+ },
+ {
+ "files": ["*.js", "*.jsx"],
+ "rules": {}
+ }
+ ]
+}
diff --git a/packages/nativescript-ui-charts/angular/index.ts b/packages/nativescript-ui-charts/angular/index.ts
new file mode 100644
index 0000000..5e56dec
--- /dev/null
+++ b/packages/nativescript-ui-charts/angular/index.ts
@@ -0,0 +1,83 @@
+import { Directive, ElementRef, Inject, Input, NgModule, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
+import { registerElement } from '@nativescript/angular';
+import { EventData } from '@nativescript/core';
+import { UIChartsView } from '@essent/nativescript-ui-charts';
+
+registerElement('UIChartsView', () => UIChartsView);
+// the actual extended class implementing the bugfix
+@Directive({
+ // tslint:disable-next-line: directive-selector
+ selector: 'UIChartsView',
+})
+export class UIChartsViewDirective implements OnChanges, OnDestroy {
+ private _uiChartsView: UIChartsView = null;
+ private _chartViewLoaded = false;
+
+ @Input() options: any = null;
+ @Input() langOptions: any = null;
+ @Input() updateChartContent = false;
+ //////////////////////////////////////////////////////////////////////////////////////////////////
+ constructor(@Inject(ElementRef) _elementRef: ElementRef) {
+ this._uiChartsView = _elementRef.nativeElement;
+ this._uiChartsView.on('loaded', this.onChartViewLoaded, this);
+ }
+ //////////////////////////////////////////////////////////////////////////////////////////////////
+ public ngOnDestroy() {
+ this._uiChartsView.off('loaded', this.onChartViewLoaded, this);
+ }
+ //////////////////////////////////////////////////////////////////////////////////////////////////
+ onChartViewLoaded(args: EventData) {
+ this.setChartViewOptions();
+ this._chartViewLoaded = true;
+ }
+ //////////////////////////////////////////////////////////////////////////////////////////////////
+ ngOnChanges(changes: SimpleChanges) {
+ for (const propName in changes) {
+ if (changes.hasOwnProperty(propName)) {
+ switch (propName) {
+ case 'options':
+ if (changes.options.currentValue) {
+ this.options = changes.options.currentValue;
+ if (this._chartViewLoaded) {
+ this.setChartViewOptions();
+ }
+ }
+ break;
+ case 'langOptions':
+ if (changes.langOptions.currentValue) {
+ this.langOptions = changes.langOptions.currentValue;
+ if (this._chartViewLoaded) {
+ this._uiChartsView.setLangOptions(this.langOptions);
+ }
+ }
+ break;
+ case 'updateChartContent':
+ if (changes.updateChartContent) {
+ this.updateChartContent = changes.updateChartContent.currentValue === true;
+ }
+ break;
+ }
+ }
+ }
+ }
+ //////////////////////////////////////////////////////////////////////////////////////////////////
+ private setChartViewOptions() {
+ if (this.options !== null && this.options !== undefined) {
+ if (!(this._uiChartsView)._chartInitialized) {
+ this._uiChartsView.setOptions(this.options);
+ } else {
+ if (this.updateChartContent) {
+ this._uiChartsView.updateOptions(this.options);
+ } else {
+ this._uiChartsView.setOptions(this.options);
+ }
+ }
+ }
+ }
+}
+
+@NgModule({
+ declarations: [UIChartsViewDirective],
+ exports: [UIChartsViewDirective],
+})
+export class UIChartsViewModule {}
diff --git a/packages/nativescript-ui-charts/angular/ng-package.json b/packages/nativescript-ui-charts/angular/ng-package.json
new file mode 100644
index 0000000..2af046c
--- /dev/null
+++ b/packages/nativescript-ui-charts/angular/ng-package.json
@@ -0,0 +1,8 @@
+{
+ "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json",
+ "lib": {
+ "entryFile": "index.ts"
+ },
+ "allowedNonPeerDependencies": ["."],
+ "dest": "../../../dist/packages/nativescript-ui-charts/angular"
+}
diff --git a/packages/nativescript-ui-charts/angular/package.json b/packages/nativescript-ui-charts/angular/package.json
new file mode 100644
index 0000000..de0c56e
--- /dev/null
+++ b/packages/nativescript-ui-charts/angular/package.json
@@ -0,0 +1,3 @@
+{
+ "name": "@essent/nativescript-ui-charts-angular"
+}
diff --git a/packages/nativescript-ui-charts/angular/tsconfig.angular.json b/packages/nativescript-ui-charts/angular/tsconfig.angular.json
new file mode 100644
index 0000000..e9eb15e
--- /dev/null
+++ b/packages/nativescript-ui-charts/angular/tsconfig.angular.json
@@ -0,0 +1,13 @@
+{
+ "extends": "../../../node_modules/ng-packagr/lib/ts/conf/tsconfig.ngc.json",
+ "compilerOptions": {
+ "types": ["node"],
+ "baseUrl": ".",
+ "paths": {
+ "@essent/nativescript-ui-charts": ["../../../dist/packages/nativescript-ui-charts"]
+ },
+ "outDir": "../../../dist/out-tsc",
+ "declarationDir": "../../../dist/out-tsc"
+ },
+ "files": ["index.ts"]
+}
diff --git a/packages/nativescript-ui-charts/angular/tsconfig.json b/packages/nativescript-ui-charts/angular/tsconfig.json
new file mode 100644
index 0000000..0ec69de
--- /dev/null
+++ b/packages/nativescript-ui-charts/angular/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../../tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "../../../dist/out-tsc",
+ "rootDirs": [".", "../.."]
+ }
+}
diff --git a/packages/nativescript-ui-charts/common.ts b/packages/nativescript-ui-charts/common.ts
new file mode 100644
index 0000000..7eba43e
--- /dev/null
+++ b/packages/nativescript-ui-charts/common.ts
@@ -0,0 +1,12 @@
+import { Property, View } from '@nativescript/core';
+
+export class UIChartsViewBase extends View {
+ options: any;
+}
+
+export const optionsProperty = new Property({
+ name: 'options',
+ defaultValue: {},
+ affectsLayout: true,
+});
+optionsProperty.register(UIChartsViewBase);
diff --git a/packages/nativescript-ui-charts/index.android.ts b/packages/nativescript-ui-charts/index.android.ts
new file mode 100644
index 0000000..94bf793
--- /dev/null
+++ b/packages/nativescript-ui-charts/index.android.ts
@@ -0,0 +1,157 @@
+import { UIChartsViewBase } from './common';
+import { optionsHandler } from './options-handlers/options-handler';
+import { Application } from '@nativescript/core';
+import { langHandler } from './options-handlers/lang/lang-handler';
+
+export class UIChartsView extends UIChartsViewBase {
+ public _chartInitialized: boolean = false;
+ public customLayoutChangeListener;
+ public chartHeight;
+ public chartWidth;
+ public maxHeight;
+ public onLoaded() {
+ super.onLoaded();
+ this.customLayoutChangeListener = new android.view.View.OnLayoutChangeListener({
+ onLayoutChange: (v) => {
+ const w = this.nativeView.owner.get();
+ if (w && this.nativeView.getOptions()) {
+ const newWidth = w.getActualSize().width;
+ const newHeight = w.getActualSize().height;
+ if (!this.maxHeight) this.maxHeight = newHeight;
+ if (newHeight > this.maxHeight) {
+ // condition detected where android chart won't resize above this height,
+ // dont attempt resize to avoid chart being cut off at the bottom
+ } else if (this.chartHeight !== newHeight) {
+ if (this.nativeView.getOptions().getChart()) {
+ this.nativeView.getOptions().getChart().setHeight(new java.lang.Long(newHeight));
+ this.nativeView.getOptions().getChart().setWidth(new java.lang.Long(newWidth));
+ }
+ this.chartHeight = newHeight;
+ this.chartWidth = newWidth;
+ const hiOptions = optionsHandler(this.options);
+ this.nativeView.update(hiOptions);
+ }
+ }
+ },
+ });
+ this.nativeView.addOnLayoutChangeListener(this.customLayoutChangeListener);
+ }
+
+ public createNativeView() {
+ const chartView = new com.highsoft.highcharts.core.HIChartView(this._context) as any;
+ chartView.setBackgroundColor(android.graphics.Color.TRANSPARENT);
+ return chartView;
+ }
+
+ public onUnloaded() {
+ super.onUnloaded();
+ this.nativeView.removeOnLayoutChangeListener(this.customLayoutChangeListener);
+ }
+
+ /**
+ * Initializes properties/listeners of the native view.
+ */
+ initNativeView(): void {
+ // Attach the owner to nativeView.
+ // When nativeView is tapped we get the owning JS object through this field.
+ (this.nativeView).owner = new WeakRef(this);
+ (this.nativeView).generateDefaultLayoutParams();
+ (this)._orientationHandler = this.onOrientationChange.bind(this);
+ Application.on('orientationChanged', (this)._orientationHandler);
+
+ // Enable huge performance boost on Android devices
+ const layout = this.nativeViewProtected;
+ const webView = layout.getChildAt(0);
+ webView.setLayerType(android.view.View.LAYER_TYPE_HARDWARE, null);
+
+ // ensure chart does not move around when dragging on visuals while nested in a ScrollView
+ webView.setOnTouchListener(
+ new android.view.View.OnTouchListener({
+ onTouch(view: android.view.View, event: android.view.MotionEvent): boolean {
+ let scrollView: org.nativescript.widgets.VerticalScrollView;
+ while (!scrollView && view) {
+ view = view.getParent();
+ if (view instanceof org.nativescript.widgets.VerticalScrollView) {
+ scrollView = view;
+ }
+ }
+ if (scrollView) {
+ scrollView.requestDisallowInterceptTouchEvent(true);
+ const action = event.getActionMasked();
+ switch (action) {
+ case android.view.MotionEvent.ACTION_UP:
+ scrollView.requestDisallowInterceptTouchEvent(false);
+ break;
+ }
+ }
+
+ return false;
+ },
+ })
+ );
+
+ super.initNativeView();
+ }
+
+ public disposeNativeView() {
+ this._chartInitialized = false;
+ Application.off('orientationChanged', (this)._orientationHandler);
+ super.disposeNativeView();
+ }
+
+ onOrientationChange() {
+ setTimeout(() => {
+ const w = (this).nativeView.owner.get();
+ if (w) {
+ // TODO: redraw the chart here to handle orientation change
+ }
+ });
+ }
+
+ public setOptions(opts: any) {
+ this.options = opts;
+ if (this.nativeView) {
+ const hiOptions = optionsHandler(this.options);
+ this.nativeView.setOptions(hiOptions);
+ this._chartInitialized = true;
+ this.nativeView.reload();
+ }
+ }
+
+ public updateOptions(opts) {
+ this.options = opts;
+ if (this.nativeView) {
+ const hiOptions = optionsHandler(this.options);
+ // this.nativeView.setOptions(hiOptions);
+ this.nativeView.update(hiOptions, true, true);
+ }
+ }
+
+ public setLangOptions(opts: any) {
+ const hiLang = langHandler(opts);
+ if (this.nativeView) {
+ this.nativeView.lang = hiLang;
+ }
+ }
+
+ public setExtremes(newMin: any, newMax: any, xAxisIndex = 0) {
+ const nativeview = this.nativeView;
+ const opts = nativeview.getOptions() as com.highsoft.highcharts.common.hichartsclasses.HIOptions;
+ if (opts) {
+ const xaxisArr = opts.getXAxis();
+ const xaxis = xaxisArr.get(xAxisIndex);
+ xaxis.setMin(new java.lang.Long(newMin));
+ xaxis.setMax(new java.lang.Long(newMax));
+ nativeview.zoomOut();
+ nativeview.update(opts);
+ }
+ }
+
+ public enableAnnotationsModule() {
+ if (this.nativeView) {
+ const nativeArray = new java.util.ArrayList();
+ nativeArray.add('annotations');
+ this.nativeView.plugins = nativeArray;
+ }
+ }
+}
diff --git a/packages/nativescript-ui-charts/index.d.ts b/packages/nativescript-ui-charts/index.d.ts
new file mode 100644
index 0000000..20ac48a
--- /dev/null
+++ b/packages/nativescript-ui-charts/index.d.ts
@@ -0,0 +1 @@
+export * from './index.android';
diff --git a/packages/nativescript-ui-charts/index.ios.ts b/packages/nativescript-ui-charts/index.ios.ts
new file mode 100644
index 0000000..3a5ce99
--- /dev/null
+++ b/packages/nativescript-ui-charts/index.ios.ts
@@ -0,0 +1,124 @@
+import { UIChartsViewBase } from './common';
+import { optionsHandler } from './options-handlers/options-handler';
+import { langHandler } from './options-handlers/lang/lang-handler';
+
+export class UIChartsView extends UIChartsViewBase {
+ public _chartInitialized: boolean = false;
+ private _delegate: HighchartsViewDelegateImpl;
+ public onLoaded() {
+ super.onLoaded();
+ }
+
+ public createNativeView() {
+ const chartView = new HIChartView({ frame: CGRectMake(0, 0, 200, 200) }) as any;
+ // always retain delegate on owner class to ensure it doesn't inadvertently get garbage collected
+ this._delegate = new HighchartsViewDelegateImpl();
+ chartView.delegate = this._delegate;
+ const currentVC = getVisibleViewController();
+ chartView.viewController = currentVC;
+ return chartView;
+ }
+
+ public onUnloaded() {
+ super.onUnloaded();
+ }
+
+ public disposeNativeView() {
+ this._chartInitialized = false;
+ super.disposeNativeView();
+ }
+
+ /**
+ * Initializes properties/listeners of the native view.
+ */
+ initNativeView(): void {
+ // Attach the owner to nativeView.
+ // When nativeView is tapped we get the owning JS object through this field.
+ (this.nativeView).owner = new WeakRef(this);
+ super.initNativeView();
+
+ // NSNotificationCenter.defaultCenter.addObserverForNameObjectQueueUsingBlock("valueChange", null, NSOperationQueue.mainQueue, this.onValueChange);
+ }
+
+ public setOptions(opts: any) {
+ this.options = opts;
+ const hiOptions = optionsHandler(this.options);
+ if (this.nativeView) {
+ this.nativeView.options = hiOptions;
+ this._chartInitialized = true;
+ this.nativeView.reload();
+ }
+ }
+
+ public setLangOptions(opts: any) {
+ const hiLang = langHandler(opts);
+ if (this.nativeView) {
+ this.nativeView.lang = hiLang;
+ }
+ }
+
+ public updateOptions(opts) {
+ this.options = opts;
+ const hiOptions = optionsHandler(this.options);
+ if (this.nativeView) {
+ this.nativeView.updateRedrawOneToOneAnimation(hiOptions, 1, 1, new HIAnimationOptionsObject());
+ }
+ }
+
+ setExtremes(newMin, newMax, xAxisIndex = 0) {
+ const nativeview = this.nativeView;
+ if (nativeview) {
+ const opts = nativeview.options;
+ if (opts) {
+ const xaxis = opts.xAxis.objectAtIndex(xAxisIndex);
+
+ if (xaxis) {
+ xaxis.min = newMin;
+ xaxis.max = newMax;
+ }
+ nativeview.zoomOut();
+ nativeview.updateRedrawOneToOneAnimation(nativeview.options, 1, 1, new HIAnimationOptionsObject());
+ }
+ }
+ }
+
+ public enableAnnotationsModule() {
+ if (this.nativeView) {
+ this.nativeView.plugins = ['annotations'];
+ }
+ }
+}
+
+@NativeClass() // native delegates mostly always extend NSObject
+class HighchartsViewDelegateImpl extends NSObject implements HIChartViewDelegate {
+ static ObjCProtocols = [HIChartViewDelegate]; // define our native protocalls
+
+ static new(): HighchartsViewDelegateImpl {
+ return super.new(); // calls new() on the NSObject
+ }
+
+ chartViewDidLoad(chart) {
+ // console.log('HighchartsViewDelegateImpl Did load chart:', chart);
+ }
+}
+
+function getVisibleViewController(rootViewController?: UIViewController): UIViewController {
+ if (!rootViewController) {
+ const app = UIApplication.sharedApplication;
+ const window = app.keyWindow || (app.windows.count > 0 && app.windows[0]);
+ rootViewController = window.rootViewController;
+ }
+ if (rootViewController.presentedViewController) {
+ return getVisibleViewController(rootViewController.presentedViewController);
+ }
+
+ if (rootViewController.isKindOfClass(UINavigationController.class())) {
+ return getVisibleViewController((rootViewController).visibleViewController);
+ }
+
+ if (rootViewController.isKindOfClass(UITabBarController.class())) {
+ return getVisibleViewController((rootViewController).selectedViewController);
+ }
+
+ return rootViewController;
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/accessibility/accessibility-handler.ts b/packages/nativescript-ui-charts/options-handlers/accessibility/accessibility-handler.ts
new file mode 100644
index 0000000..434e0a0
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/accessibility/accessibility-handler.ts
@@ -0,0 +1,43 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function accessibilityHandler(accessibilityOptions) {
+ const accessibility = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIAccessibility() : new HIAccessibility();
+
+ const accessibilitySchema = {
+ announceNewData: 'HIAnnounceNewData',
+ axis: 'HIAxis',
+ chartContainerLabel: 'string',
+ chartTypes: 'HIChartTypes',
+ credits: 'string',
+ // customComponents: 'any',
+ defaultChartTitle: 'string',
+ definition: 'string',
+ drillUpButton: 'string',
+ enabled: 'number',
+ exporting: 'HIAccessibilityExporting',
+ exposeAsGroupOnly: 'number',
+ graphicContainerLabel: 'string',
+ // highContrastTheme: 'any',
+ keyboardNavigation: 'HIKeyboardNavigation',
+ landmarkVerbosity: 'string',
+ legend: 'HIAccessibilityLegend',
+ linkedDescription: 'string',
+ point: 'HIPoint',
+ pointDescriptionFormatter: 'HIFunction',
+ rangeDescription: 'string',
+ rangeSelector: 'HIRangeSelector',
+ screenReaderSection: 'HIScreenReaderSection',
+ series: 'HIAccessibilitySeries',
+ seriesTypeDescriptions: 'HISeriesTypeDescriptions',
+ sonification: 'HISonification',
+ svgContainerLabel: 'string',
+ svgContainerTitle: 'string',
+ table: 'HITable',
+ thousandsSep: 'string',
+ typeDescription: 'string',
+ zoom: 'HIZoom',
+ };
+
+ return optionsBuilder(accessibilitySchema, accessibilityOptions, accessibility);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/alignObject/alignObject-handler.ts b/packages/nativescript-ui-charts/options-handlers/alignObject/alignObject-handler.ts
new file mode 100644
index 0000000..667a8f5
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/alignObject/alignObject-handler.ts
@@ -0,0 +1,16 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function alignObjectHandler(exportingOptions) {
+ const exporting = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIAlignObject() : new HIAlignObject();
+
+ const exportingSchema = {
+ align: 'string',
+ alignByTranslate: 'number',
+ verticalAlign: 'string',
+ x: 'number',
+ y: 'number',
+ };
+
+ return optionsBuilder(exportingSchema, exportingOptions, exporting);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/animationOptionsObject/animationOptionsObject-handler.ts b/packages/nativescript-ui-charts/options-handlers/animationOptionsObject/animationOptionsObject-handler.ts
new file mode 100644
index 0000000..f59931f
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/animationOptionsObject/animationOptionsObject-handler.ts
@@ -0,0 +1,15 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function animationOptionsObjectHandler(animationOptionsObjectOptions) {
+ const animationOptionsObject = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIAnimationOptionsObject() : new HIAnimationOptionsObject();
+
+ const animationOptionsObjectSchema = {
+ complete: 'HIFunction',
+ duration: 'number',
+ easing: 'string',
+ step: 'HIFunction',
+ };
+
+ return optionsBuilder(animationOptionsObjectSchema, animationOptionsObjectOptions, animationOptionsObject);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/annotations/annotations-handler.ts b/packages/nativescript-ui-charts/options-handlers/annotations/annotations-handler.ts
new file mode 100644
index 0000000..af06ad4
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/annotations/annotations-handler.ts
@@ -0,0 +1,28 @@
+import { convertJSArrayToNative, optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function annotationsHandler(annotationsOptions) {
+ const annotations = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIAnnotations() : new HIAnnotations();
+
+ const annotationsSchema = {
+ controlPointOptions: 'HIControlPointOptions',
+ draggable: 'string',
+ events: 'HIEvents',
+ id: 'string',
+ labelOptions: 'HILabelOptions',
+ labels: 'HILabels', // array
+ shapeOptions: 'HIShapeOptions',
+ shapes: 'HIShapes',
+ visible: 'number',
+ zIndex: 'number',
+ };
+ if (annotationsOptions instanceof Array) {
+ var annotationsArray = [];
+ for (var i = 0; i < annotationsOptions.length; i++) {
+ annotationsArray.push(optionsBuilder(annotationsSchema, annotationsOptions[i], annotations));
+ }
+ return convertJSArrayToNative(annotationsArray);
+ } else {
+ return optionsBuilder(annotationsSchema, annotationsOptions, annotations);
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/annotationsOptions/annotationsOptions-handler.ts b/packages/nativescript-ui-charts/options-handlers/annotationsOptions/annotationsOptions-handler.ts
new file mode 100644
index 0000000..36ad5fc
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/annotationsOptions/annotationsOptions-handler.ts
@@ -0,0 +1,21 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function annotationsOptionsHandler(annotationsOptionsOptions) {
+ const annotationsOptions = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIAnnotationsOptions() : new HIAnnotationsOptions();
+
+ const annotationsOptionsSchema = {
+ controlPointOptions: 'HIControlPointOptions',
+ draggable: 'string',
+ events: 'HIEvents',
+ id: 'string',
+ labelOptions: 'HILabelOptions',
+ labels: 'HILabels',
+ shapeOptions: 'HIShapeOptions',
+ shapes: 'HIShapes',
+ visible: 'number',
+ zIndex: 'number',
+ };
+
+ return optionsBuilder(annotationsOptionsSchema, annotationsOptionsOptions, annotationsOptions);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/boost/boost-handler.ts b/packages/nativescript-ui-charts/options-handlers/boost/boost-handler.ts
new file mode 100644
index 0000000..4ff304b
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/boost/boost-handler.ts
@@ -0,0 +1,18 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+import HIBoost = com.highsoft.highcharts.common.hichartsclasses.HIBoost;
+
+export function boostHandler(chartOptions) {
+ const boost = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIBoost() : new HIBoost();
+
+ const boostSchema = {
+ allowForce: 'number',
+ debug: 'HIDebug',
+ enabled: 'number',
+ seriesThreshold: 'number',
+ useGPUTranslations: 'number',
+ usePreallocated: 'number',
+ };
+
+ return optionsBuilder(boostSchema, chartOptions, boost);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/buttonOptions/buttonOptions-handler.ts b/packages/nativescript-ui-charts/options-handlers/buttonOptions/buttonOptions-handler.ts
new file mode 100644
index 0000000..08a78c5
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/buttonOptions/buttonOptions-handler.ts
@@ -0,0 +1,26 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function buttonOptionsHandler(buttonOptionsOptions) {
+ const buttonOptions = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIButtonOptions() : new HIButtonOptions();
+
+ const buttonOptionsSchema = {
+ align: 'string',
+ buttonSpacing: 'number',
+ enabled: 'number',
+ height: 'number',
+ symbolFill: 'HIColor',
+ symbolSize: 'number',
+ symbolStroke: 'HIColor',
+ symbolStrokeWidth: 'number',
+ symbolX: 'number',
+ symbolY: 'number',
+ text: 'string',
+ theme: 'HITheme',
+ verticalAlign: 'string',
+ width: 'number',
+ y: 'number',
+ };
+
+ return optionsBuilder(buttonOptionsSchema, buttonOptionsOptions, buttonOptions);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/chart/chart-handler.ts b/packages/nativescript-ui-charts/options-handlers/chart/chart-handler.ts
new file mode 100644
index 0000000..94e1ee9
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/chart/chart-handler.ts
@@ -0,0 +1,60 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function chartHandler(chartOptions) {
+ const chart = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIChart() : new HIChart();
+
+ const chartSchema = {
+ alignTicks: 'number',
+ animation: 'HIAnimationOptionsObject',
+ backgroundColor: 'HIColor',
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ className: 'string',
+ colorCount: 'number',
+ displayErrors: 'number',
+ events: 'HIEvents',
+ height: 'number',
+ ignoreHiddenSeries: 'number',
+ inverted: 'number',
+ margin: 'Array',
+ marginBottom: 'number',
+ marginLeft: 'number',
+ marginRight: 'number',
+ marginTop: 'number',
+ numberFormatter: 'HIFunction',
+ options3d: 'HIOptions3d',
+ panKey: 'string',
+ panning: 'HIPanning',
+ parallelAxes: 'HIParallelAxes',
+ parallelCoordinates: 'number',
+ pinchType: 'string',
+ plotBackgroundColor: 'HIColor',
+ plotBackgroundImage: 'string',
+ plotBorderColor: 'HIColor',
+ plotBorderWidth: 'number',
+ plotShadow: 'HICSSObject',
+ polar: 'number',
+ reflow: 'number',
+ renderTo: 'string',
+ resetZoomButton: 'HIResetZoomButton',
+ scrollablePlotArea: 'HIScrollablePlotArea',
+ selectionMarkerFill: 'HIColor',
+ shadow: 'HICSSObject',
+ showAxes: 'number',
+ spacing: 'Array',
+ spacingBottom: 'number',
+ spacingLeft: 'number',
+ spacingRight: 'number',
+ spacingTop: 'number',
+ style: 'HICSSObject',
+ styledMode: 'number',
+ type: 'string',
+ width: 'number',
+ zoomKey: 'string',
+ zoomType: 'string',
+ };
+
+ return optionsBuilder(chartSchema, chartOptions, chart);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/credits/credits-handler.ts b/packages/nativescript-ui-charts/options-handlers/credits/credits-handler.ts
new file mode 100644
index 0000000..a904f5a
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/credits/credits-handler.ts
@@ -0,0 +1,16 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function creditsHandler(creditsOptions) {
+ const credits = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HICredits() : new HICredits();
+
+ const creditsSchema = {
+ enabled: 'number',
+ href: 'string',
+ position: 'HIAlignObject',
+ style: 'HICSSObject',
+ text: 'string',
+ };
+
+ return optionsBuilder(creditsSchema, creditsOptions, credits);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/data/data-handler.ts b/packages/nativescript-ui-charts/options-handlers/data/data-handler.ts
new file mode 100644
index 0000000..7ca72c6
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/data/data-handler.ts
@@ -0,0 +1,16 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function dataHandler(dataOptions) {
+ const data = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIData() : new HIData();
+
+ const dataSchema = {
+ selected: 'number',
+ y: 'number',
+ value: 'number',
+ id: 'string',
+ events: 'dataPointEvents',
+ };
+
+ return optionsBuilder(dataSchema, dataOptions, data);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/dataLabels/dataLabels-handler.ts b/packages/nativescript-ui-charts/options-handlers/dataLabels/dataLabels-handler.ts
new file mode 100644
index 0000000..7ad8898
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/dataLabels/dataLabels-handler.ts
@@ -0,0 +1,66 @@
+import { optionsBuilder, convertJSArrayToNative } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function dataLabelsHandler(dataLabelsOptions) {
+ const dataLabels = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIDataLabels() : new HIDataLabels();
+
+ const dataLabelsSchema = {
+ align: 'string',
+ alignTo: 'string',
+ allowOverlap: 'number',
+ alternate: 'number',
+ attributes: 'HISVGAttributes',
+ backgroundColor: 'string',
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ className: 'string',
+ color: 'HIColor',
+ connectorColor: 'HIColor',
+ connectorPadding: 'number',
+ connectorShape: 'string',
+ connectorWidth: 'number',
+ crookDistance: 'string',
+ crop: 'number',
+ defer: 'number',
+ distance: 'number',
+ enabled: 'number',
+ filter: 'HIFilter',
+ format: 'string',
+ formatter: 'HIFunction',
+ inside: 'number',
+ linkFormat: 'string',
+ linkFormatter: 'HIFunction',
+ linkTextPath: 'HILinkTextPath',
+ nodeFormat: 'string',
+ nodeFormatter: 'HIFunction',
+ nullFormat: 'number',
+ nullFormatter: 'HIFunction',
+ overflow: 'string',
+ padding: 'number',
+ parentNodeFormat: 'string',
+ parentNodeFormatter: 'HIFunction',
+ parentNodeTextPath: 'HIParentNodeTextPath',
+ position: 'string',
+ rotation: 'number',
+ rotationMode: 'string',
+ shadow: 'HIShadowOptionsObject',
+ shape: 'string',
+ softConnector: 'number',
+ style: 'HIStyle',
+ textPath: 'HITextPath',
+ useHTML: 'number',
+ verticalAlign: 'string',
+ width: 'number',
+ x: 'number',
+ xHigh: 'number',
+ xLow: 'number',
+ y: 'number',
+ yHigh: 'number',
+ yLow: 'number',
+ z: 'number',
+ zIndex: 'number',
+ };
+
+ return convertJSArrayToNative([optionsBuilder(dataLabelsSchema, dataLabelsOptions, dataLabels)]);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/dateTimeLabelFormats/dateTimeLabelFormats-handler.android.ts b/packages/nativescript-ui-charts/options-handlers/dateTimeLabelFormats/dateTimeLabelFormats-handler.android.ts
new file mode 100644
index 0000000..7c10551
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/dateTimeLabelFormats/dateTimeLabelFormats-handler.android.ts
@@ -0,0 +1,61 @@
+export function dateTimeLabelFormatsHandler(dateTimeLabelFormatsOptions) {
+ const dateTimeLabelFormats = new com.highsoft.highcharts.common.hichartsclasses.HIDateTimeLabelFormats();
+
+ if (dateTimeLabelFormatsOptions.day) {
+ const day = new com.highsoft.highcharts.common.hichartsclasses.HIDay();
+ day.setMain(dateTimeLabelFormatsOptions.day);
+
+ dateTimeLabelFormats.setDay(day);
+ }
+
+ if (dateTimeLabelFormatsOptions.hour) {
+ const hour = new com.highsoft.highcharts.common.hichartsclasses.HIHour();
+ hour.setMain(dateTimeLabelFormatsOptions.hour);
+
+ dateTimeLabelFormats.setHour(hour);
+ }
+
+ if (dateTimeLabelFormatsOptions.millisecond) {
+ const millisecond = new com.highsoft.highcharts.common.hichartsclasses.HIMillisecond();
+ millisecond.setMain(dateTimeLabelFormatsOptions.millisecond);
+
+ dateTimeLabelFormats.setMillisecond(millisecond);
+ }
+
+ if (dateTimeLabelFormatsOptions.minute) {
+ const minute = new com.highsoft.highcharts.common.hichartsclasses.HIMinute();
+ minute.setMain(dateTimeLabelFormatsOptions.minute);
+
+ dateTimeLabelFormats.setMinute(minute);
+ }
+
+ if (dateTimeLabelFormatsOptions.month) {
+ const month = new com.highsoft.highcharts.common.hichartsclasses.HIMonth();
+ month.setMain(dateTimeLabelFormatsOptions.month);
+
+ dateTimeLabelFormats.setMonth(month);
+ }
+
+ if (dateTimeLabelFormatsOptions.second) {
+ const second = new com.highsoft.highcharts.common.hichartsclasses.HISecond();
+ second.setMain(dateTimeLabelFormatsOptions.second);
+
+ dateTimeLabelFormats.setSecond(second);
+ }
+
+ if (dateTimeLabelFormatsOptions.week) {
+ const week = new com.highsoft.highcharts.common.hichartsclasses.HIWeek();
+ week.setMain(dateTimeLabelFormatsOptions.week);
+
+ dateTimeLabelFormats.setWeek(week);
+ }
+
+ if (dateTimeLabelFormatsOptions.year) {
+ const year = new com.highsoft.highcharts.common.hichartsclasses.HIYear();
+ year.setMain(dateTimeLabelFormatsOptions.year);
+
+ dateTimeLabelFormats.setYear(year);
+ }
+
+ return dateTimeLabelFormats;
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/dateTimeLabelFormats/dateTimeLabelFormats-handler.d.ts b/packages/nativescript-ui-charts/options-handlers/dateTimeLabelFormats/dateTimeLabelFormats-handler.d.ts
new file mode 100644
index 0000000..1a73036
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/dateTimeLabelFormats/dateTimeLabelFormats-handler.d.ts
@@ -0,0 +1 @@
+export function dateTimeLabelFormatsHandler(dateTimeLabelFormatsOptions: any): any;
diff --git a/packages/nativescript-ui-charts/options-handlers/dateTimeLabelFormats/dateTimeLabelFormats-handler.ios.ts b/packages/nativescript-ui-charts/options-handlers/dateTimeLabelFormats/dateTimeLabelFormats-handler.ios.ts
new file mode 100644
index 0000000..7590de1
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/dateTimeLabelFormats/dateTimeLabelFormats-handler.ios.ts
@@ -0,0 +1,61 @@
+export function dateTimeLabelFormatsHandler(dateTimeLabelFormatsOptions) {
+ const dateTimeLabelFormats = new HIDateTimeLabelFormats();
+
+ if (dateTimeLabelFormatsOptions.day) {
+ const day = new HIDay();
+ day.main = dateTimeLabelFormatsOptions.day;
+
+ dateTimeLabelFormats.day = day;
+ }
+
+ if (dateTimeLabelFormatsOptions.hour) {
+ const hour = new HIHour();
+ hour.main = dateTimeLabelFormatsOptions.hour;
+
+ dateTimeLabelFormats.hour = hour;
+ }
+
+ if (dateTimeLabelFormatsOptions.millisecond) {
+ const millisecond = new HIMillisecond();
+ millisecond.main = dateTimeLabelFormatsOptions.millisecond;
+
+ dateTimeLabelFormats.millisecond = millisecond;
+ }
+
+ if (dateTimeLabelFormatsOptions.minute) {
+ const minute = new HIMinute();
+ minute.main = dateTimeLabelFormatsOptions.minute;
+
+ dateTimeLabelFormats.minute = minute;
+ }
+
+ if (dateTimeLabelFormatsOptions.month) {
+ const month = new HIMonth();
+ month.main = dateTimeLabelFormatsOptions.month;
+
+ dateTimeLabelFormats.month = month;
+ }
+
+ if (dateTimeLabelFormatsOptions.second) {
+ const second = new HISecond();
+ second.main = dateTimeLabelFormatsOptions.second;
+
+ dateTimeLabelFormats.second = second;
+ }
+
+ if (dateTimeLabelFormatsOptions.week) {
+ const week = new HIWeek();
+ week.main = dateTimeLabelFormatsOptions.week;
+
+ dateTimeLabelFormats.week = week;
+ }
+
+ if (dateTimeLabelFormatsOptions.year) {
+ const year = new HIYear();
+ year.main = dateTimeLabelFormatsOptions.year;
+
+ dateTimeLabelFormats.year = year;
+ }
+
+ return dateTimeLabelFormats;
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/events/events-handler.ts b/packages/nativescript-ui-charts/options-handlers/events/events-handler.ts
new file mode 100644
index 0000000..672641c
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/events/events-handler.ts
@@ -0,0 +1,104 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function eventsHandler(eventsOptions) {
+ const events = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIEvents() : new HIEvents();
+
+ const eventsSchema = {
+ add: 'HIFunction',
+ addSeries: 'HIFunction',
+ afterAnimate: 'HIFunction',
+ afterBreaks: 'HIFunction',
+ afterPrint: 'HIFunction',
+ afterSetExtremes: 'HIFunction',
+ afterUpdate: 'HIFunction',
+ beforePrint: 'HIFunction',
+ checkboxClick: 'HIFunction',
+ click: 'HIFunction',
+ closePopup: 'HIFunction',
+ deselectButton: 'HIFunction',
+ drag: 'HIFunction',
+ dragStart: 'HIFunction',
+ drillToCluster: 'HIFunction',
+ drilldown: 'HIFunction',
+ drillup: 'HIFunction',
+ drillupall: 'HIFunction',
+ drop: 'HIFunction',
+ exportData: 'HIFunction',
+ hide: 'HIFunction',
+ legendItemClick: 'HIFunction',
+ load: 'HIFunction',
+ mouseOut: 'HIFunction',
+ mouseOver: 'HIFunction',
+ mousemove: 'HIFunction',
+ mouseout: 'HIFunction',
+ mouseover: 'HIFunction',
+ pointBreak: 'HIFunction',
+ pointInBreak: 'HIFunction',
+ redraw: 'HIFunction',
+ remove: 'HIFunction',
+ render: 'HIFunction',
+ select: 'HIFunction',
+ selectButton: 'HIFunction',
+ selection: 'HIFunction',
+ setExtremes: 'HIFunction',
+ setRootNode: 'HIFunction',
+ show: 'HIFunction',
+ showPopup: 'HIFunction',
+ unselect: 'HIFunction',
+ update: 'HIFunction',
+ };
+
+ return optionsBuilder(eventsSchema, eventsOptions, events);
+}
+
+export function dataPointEventsHandler(eventsOptions) {
+ const events = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIEvents() : new HIEvents();
+
+ const eventsSchema = {
+ add: 'HIFunction',
+ addSeries: 'HIFunction',
+ afterAnimate: 'HIFunction',
+ afterBreaks: 'HIFunction',
+ afterPrint: 'HIFunction',
+ afterSetExtremes: 'HIFunction',
+ afterUpdate: 'HIFunction',
+ beforePrint: 'HIFunction',
+ checkboxClick: 'HIFunction',
+ click: 'dataPointFunction',
+ closePopup: 'HIFunction',
+ deselectButton: 'HIFunction',
+ drag: 'HIFunction',
+ dragStart: 'HIFunction',
+ drillToCluster: 'HIFunction',
+ drilldown: 'HIFunction',
+ drillup: 'HIFunction',
+ drillupall: 'HIFunction',
+ drop: 'HIFunction',
+ exportData: 'HIFunction',
+ hide: 'HIFunction',
+ legendItemClick: 'HIFunction',
+ load: 'HIFunction',
+ mouseOut: 'HIFunction',
+ mouseOver: 'HIFunction',
+ mousemove: 'HIFunction',
+ mouseout: 'HIFunction',
+ mouseover: 'HIFunction',
+ pointBreak: 'HIFunction',
+ pointInBreak: 'HIFunction',
+ redraw: 'HIFunction',
+ remove: 'HIFunction',
+ render: 'HIFunction',
+ select: 'HIFunction',
+ selectButton: 'HIFunction',
+ selection: 'HIFunction',
+ setExtremes: 'HIFunction',
+ setRootNode: 'HIFunction',
+ show: 'HIFunction',
+ showPopup: 'HIFunction',
+ unselect: 'HIFunction',
+ update: 'HIFunction',
+ };
+
+ return optionsBuilder(eventsSchema, eventsOptions, events);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/exporting/exporting-handler.ts b/packages/nativescript-ui-charts/options-handlers/exporting/exporting-handler.ts
new file mode 100644
index 0000000..02a2c08
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/exporting/exporting-handler.ts
@@ -0,0 +1,37 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function exportingHandler(exportingOptions) {
+ const exporting = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIExporting() : new HIExporting();
+
+ const exportingSchema = {
+ accessibility: 'HIAccessibility',
+ allowHTML: 'number',
+ buttons: 'HIButtons',
+ chartMenuLabel: 'string',
+ // chartOptions: 'NSDictionary',
+ csv: 'HICsv',
+ enabled: 'number',
+ error: 'HIFunction',
+ exportRegionLabel: 'string',
+ fallbackToExportServer: 'number',
+ filename: 'string',
+ // formAttributes: 'NSDictionary',
+ libURL: 'string',
+ menuButtonLabel: 'string',
+ menuItemDefinitions: 'number',
+ printMaxWidth: 'number',
+ scale: 'number',
+ showTable: 'number',
+ sourceHeight: 'number',
+ sourceWidth: 'number',
+ tableCaption: 'number',
+ type: 'string',
+ url: 'string',
+ useMultiLevelHeaders: 'number',
+ useRowspanHeaders: 'number',
+ width: 'number',
+ };
+
+ return optionsBuilder(exportingSchema, exportingOptions, exporting);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/frame/back/back-handler.ts b/packages/nativescript-ui-charts/options-handlers/frame/back/back-handler.ts
new file mode 100644
index 0000000..c2f7473
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/frame/back/back-handler.ts
@@ -0,0 +1,14 @@
+import { optionsBuilder } from '../../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function backHandler(backOptions) {
+ const back = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIBack() : new HIBack();
+
+ const backSchema = {
+ color: 'HIColor',
+ size: 'number',
+ visible: 'number',
+ };
+
+ return optionsBuilder(backSchema, backOptions, back);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/frame/bottom/bottom-handler.ts b/packages/nativescript-ui-charts/options-handlers/frame/bottom/bottom-handler.ts
new file mode 100644
index 0000000..28b224a
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/frame/bottom/bottom-handler.ts
@@ -0,0 +1,14 @@
+import { optionsBuilder } from '../../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function bottomHandler(bottomOptions) {
+ const bottom = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIBottom() : new HIBottom();
+
+ const bottomSchema = {
+ color: 'HIColor',
+ size: 'number',
+ visible: 'number',
+ };
+
+ return optionsBuilder(bottomSchema, bottomOptions, bottom);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/frame/frame-handler.ts b/packages/nativescript-ui-charts/options-handlers/frame/frame-handler.ts
new file mode 100644
index 0000000..f70bfee
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/frame/frame-handler.ts
@@ -0,0 +1,19 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function frameHandler(frameOptions) {
+ const frame = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIFrame() : new HIFrame();
+
+ const frameSchema = {
+ back: 'HIBack',
+ bottom: 'HIBottom',
+ front: 'HIFront',
+ left: 'HILeft',
+ right: 'HIRight',
+ size: 'number',
+ top: 'HITop',
+ visible: 'string',
+ };
+
+ return optionsBuilder(frameSchema, frameOptions, frame);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/frame/front/front-handler.ts b/packages/nativescript-ui-charts/options-handlers/frame/front/front-handler.ts
new file mode 100644
index 0000000..d460fe4
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/frame/front/front-handler.ts
@@ -0,0 +1,14 @@
+import { optionsBuilder } from '../../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function frontHandler(frontOptions) {
+ const front = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIFront() : new HIFront();
+
+ const frontSchema = {
+ color: 'HIColor',
+ size: 'number',
+ visible: 'number',
+ };
+
+ return optionsBuilder(frontSchema, frontOptions, front);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/frame/left/left-handler.ts b/packages/nativescript-ui-charts/options-handlers/frame/left/left-handler.ts
new file mode 100644
index 0000000..117ba56
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/frame/left/left-handler.ts
@@ -0,0 +1,14 @@
+import { optionsBuilder } from '../../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function leftHandler(leftOptions) {
+ const left = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HILeft() : new HILeft();
+
+ const leftSchema = {
+ color: 'HIColor',
+ size: 'number',
+ visible: 'number',
+ };
+
+ return optionsBuilder(leftSchema, leftOptions, left);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/frame/right/right-handler.ts b/packages/nativescript-ui-charts/options-handlers/frame/right/right-handler.ts
new file mode 100644
index 0000000..3311c48
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/frame/right/right-handler.ts
@@ -0,0 +1,14 @@
+import { optionsBuilder } from '../../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function rightHandler(rightOptions) {
+ const right = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIRight() : new HIRight();
+
+ const rightSchema = {
+ color: 'HIColor',
+ size: 'number',
+ visible: 'number',
+ };
+
+ return optionsBuilder(rightSchema, rightOptions, right);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/frame/top/top-handler.ts b/packages/nativescript-ui-charts/options-handlers/frame/top/top-handler.ts
new file mode 100644
index 0000000..9ceb28f
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/frame/top/top-handler.ts
@@ -0,0 +1,14 @@
+import { optionsBuilder } from '../../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function topHandler(topOptions) {
+ const top = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HITop() : new HITop();
+
+ const topSchema = {
+ color: 'HIColor',
+ size: 'number',
+ visible: 'number',
+ };
+
+ return optionsBuilder(topSchema, topOptions, top);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/function/function-handler.ts b/packages/nativescript-ui-charts/options-handlers/function/function-handler.ts
new file mode 100644
index 0000000..9b7282a
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/function/function-handler.ts
@@ -0,0 +1,50 @@
+import { isAndroid } from '@nativescript/core';
+import { toStringArray } from '../helpers/helpers';
+
+// Old function, toString
+// export function functionHandler(functionOptions) {
+// const cleanFunction = (fun) => fun.toString().replace(/\n/g, ' ').replace(/\t/g, ' ').replace(/\r/g, ' ');
+// const hiFunction = isAndroid ?
+// new com.highsoft.highcharts.core.HIFunction(cleanFunction(functionOptions)) :
+// new HIFunction({ JSFunction: cleanFunction(functionOptions) });
+
+// return hiFunction;
+// }
+
+// Fire and forget
+// export function functionHandler(functionOptions) {
+// if (isAndroid) {
+// return new com.highsoft.highcharts.core.HIFunction(new java.lang.Runnable({
+// run: () => {
+// functionOptions();
+// }
+// }));
+// }
+
+// return new HIFunction({ closure: () => functionOptions() });
+// }
+
+// With event?
+export function functionHandler(functionOptions) {
+ if (isAndroid) {
+ return new com.highsoft.highcharts.core.HIFunction(
+ new java.lang.Runnable({
+ run: functionOptions,
+ })
+ );
+ }
+
+ return new HIFunction({ closure: (event) => functionOptions(event) });
+}
+
+export function dataPointFunctionHandler(functionOptions) {
+ if (isAndroid) {
+ return new com.highsoft.highcharts.core.HIFunction(
+ new java.lang.Runnable({
+ run: functionOptions,
+ })
+ );
+ }
+
+ return new HIFunction({ closure: (event) => functionOptions(event) });
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/helpers/_helpers.common.ts b/packages/nativescript-ui-charts/options-handlers/helpers/_helpers.common.ts
new file mode 100644
index 0000000..66f23b1
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/helpers/_helpers.common.ts
@@ -0,0 +1,235 @@
+import { accessibilityHandler } from '../accessibility/accessibility-handler';
+import { alignObjectHandler } from '../alignObject/alignObject-handler';
+import { boostHandler } from '../boost/boost-handler';
+import { chartHandler } from '../chart/chart-handler';
+import { creditsHandler } from '../credits/credits-handler';
+import { dataLabelsHandler } from '../dataLabels/dataLabels-handler';
+import { dataHandler } from '../data/data-handler';
+import { dateTimeLabelFormatsHandler } from '../dateTimeLabelFormats/dateTimeLabelFormats-handler';
+import { functionHandler, dataPointFunctionHandler } from '../function/function-handler';
+import { hoverHandler } from '../hover/hover-handler';
+import { labelHandler } from '../label/label-handler';
+import { labelsHandler } from '../labels/labels-handler';
+import { legendHandler } from '../legend/legend-handler';
+import { markerHandler } from '../marker/marker-handler';
+import { panningHandler } from '../panning/panning-handler';
+import { plotOptionsHandler } from '../plotOptions/plotOptions-handler';
+import { plotBandsHandler } from '../plotBands/plotBands-handler';
+import { plotLinesHandler } from '../plotLines/plotLines-handler';
+import { pointHandler } from '../point/point-handler';
+import { resetZoomButtonHandler } from '../resetZoomButton/resetZoomButton-handler';
+import { scrollablePlotAreaHandler } from '../scrollablePlotArea/scrollablePlotArea-handler';
+import { seriesHandler } from '../series/series-handler';
+import { stackLabelsHandler } from '../stackLabels/stackLabels-handler';
+import { statesHandler } from '../states/states-handler';
+import { styleHandler } from '../style/style-handler';
+import { subtitleHandler } from '../subtitle/subtitle-handler';
+import { titleHandler } from '../title/title-handler';
+import { timeHandler } from '../time/time-handler';
+import { tooltipHandler } from '../tooltip/tooltip-handler';
+import { xAxisHandler } from '../xAxis/xAxis-handler';
+import { yAxisHandler } from '../yAxis/yAxis-handler';
+import { zAxisHandler } from '../zAxis/zAxis-handler';
+import { zonesHandler } from '../zones/zones-handler';
+import { backHandler } from '../frame/back/back-handler';
+import { bottomHandler } from '../frame/bottom/bottom-handler';
+import { frontHandler } from '../frame/front/front-handler';
+import { leftHandler } from '../frame/left/left-handler';
+import { rightHandler } from '../frame/right/right-handler';
+import { topHandler } from '../frame/top/top-handler';
+import { layoutAlgorithmHandler } from '../layoutAlgorithm/layoutAlgorithm-handler';
+import { linkHandler } from '../link/link-handler';
+import { exportingHandler } from '../exporting/exporting-handler';
+import { frameHandler } from '../frame/frame-handler';
+import { options3dHandler } from '../options3d/options3d-handler';
+import { navigationHandler } from '../navigation/navigation-handler';
+import { annotationsOptionsHandler } from '../annotationsOptions/annotationsOptions-handler';
+import { animationOptionsObjectHandler } from '../animationOptionsObject/animationOptionsObject-handler';
+import { popupHandler } from '../popup/popup-handler';
+import { shapesHandler } from '../shapes/shapes-handler';
+import { buttonOptionsHandler } from '../buttonOptions/buttonOptions-handler';
+import { themeHandler } from '../theme/theme-handler';
+import { annotationsHandler } from '../annotations/annotations-handler';
+import { dataPointEventsHandler, eventsHandler } from '../events/events-handler';
+
+// Series Handler imports
+import { areaHandler } from '../series/area/area-handler';
+import { arearangeHandler } from '../series/arearange/arearange-handler';
+import { areasplineHandler } from '../series/areaspline/areaspline-handler';
+import { areasplinerangeHandler } from '../series/areasplinerange/areasplinerange-handler';
+import { barHandler } from '../series/bar/bar-handler';
+import { bellcurveHandler } from '../series/bellcurve/bellcurve-handler';
+import { boxplotHandler } from '../series/boxplot/boxplot-handler';
+import { bubbleHandler } from '../series/bubble/bubble-handler';
+import { bulletHandler } from '../series/bullet/bullet-handler';
+import { columnHandler } from '../series/column/column-handler';
+import { columnpyramidHandler } from '../series/columnpyramid/columnpyramid-handler';
+import { columnrangeHandler } from '../series/columnrange/columnrange-handler';
+import { cylinderHandler } from '../series/cylinder/cylinder-handler';
+import { dependencywheelHandler } from '../series/dependencywheel/dependencywheel-handler';
+import { dumbbellHandler } from '../series/dumbbell/dumbbell-handler';
+import { errorbarHandler } from '../series/errorbar/errorbar-handler';
+import { funnelHandler } from '../series/funnel/funnel-handler';
+import { funnel3dHandler } from '../series/funnel3d/funnel3d-handler';
+import { gaugeHandler } from '../series/gauge/gauge-handler';
+import { heatmapHandler } from '../series/heatmap/heatmap-handler';
+import { histogramHandler } from '../series/histogram/histogram-handler';
+import { itemHandler } from '../series/item/item-handler';
+import { lineHandler } from '../series/line/line-handler';
+import { lollipopHandler } from '../series/lollipop/lollipop-handler';
+import { networkgraphHandler } from '../series/networkgraph/networkgraph-handler';
+import { organizationHandler } from '../series/organization/organization-handler';
+import { packedbubbleHandler } from '../series/packedbubble/packedbubble-handler';
+import { paretoHandler } from '../series/pareto/pareto-handler';
+import { pieHandler } from '../series/pie/pie-handler';
+import { polygonHandler } from '../series/polygon/polygon-handler';
+import { pyramidHandler } from '../series/pyramid/pyramid-handler';
+import { pyramid3dHandler } from '../series/pyramid3d/pyramid3d-handler';
+import { sankeyHandler } from '../series/sankey/sankey-handler';
+import { scatterHandler } from '../series/scatter/scatter-handler';
+import { scatter3dHandler } from '../series/scatter3d/scatter3d-handler';
+import { solidgaugeHandler } from '../series/solidgauge/solidgauge-handler';
+import { splineHandler } from '../series/spline/spline-handler';
+import { streamgraphHandler } from '../series/streamgraph/streamgraph-handler';
+import { sunburstHandler } from '../series/sunburst/sunburst-handler';
+import { tilemapHandler } from '../series/tilemap/tilemap-handler';
+import { timelineHandler } from '../series/timeline/timeline-handler';
+import { treemapHandler } from '../series/treemap/treemap-handler';
+import { variablepieHandler } from '../series/variablepie/variablepie-handler';
+import { variwideHandler } from '../series/variwide/variwide-handler';
+import { vectorHandler } from '../series/vector/vector-handler';
+import { vennHandler } from '../series/venn/venn-handler';
+import { waterfallHandler } from '../series/waterfall/waterfall-handler';
+import { windbarbHandler } from '../series/windbarb/windbarb-handler';
+import { wordcloudHandler } from '../series/wordcloud/wordcloud-handler';
+import { xrangeHandler } from '../series/xrange/xrange-handler';
+import { selectHandler } from '../select/select-handler';
+import { inactiveHandler } from '../inactive/inactive-handler';
+
+const seriesHandlers = {
+ HIArea: (options) => areaHandler(options),
+ HIArearange: (options) => arearangeHandler(options),
+ HIAreaspline: (options) => areasplineHandler(options),
+ HIAreasplinerange: (options) => areasplinerangeHandler(options),
+ HIBar: (options) => barHandler(options),
+ HIBellcurve: (options) => bellcurveHandler(options),
+ HIBoxplot: (options) => boxplotHandler(options),
+ HIBubble: (options) => bubbleHandler(options),
+ HIBullet: (options) => bulletHandler(options),
+ HIColumn: (options) => columnHandler(options),
+ HIColumnpyramid: (options) => columnpyramidHandler(options),
+ HIColumnrange: (options) => columnrangeHandler(options),
+ HICylinder: (options) => cylinderHandler(options),
+ HIDependencywheel: (options) => dependencywheelHandler(options),
+ HIDumbbell: (options) => dumbbellHandler(options),
+ HIErrorbar: (options) => errorbarHandler(options),
+ HIFunnel: (options) => funnelHandler(options),
+ HIFunnel3d: (options) => funnel3dHandler(options),
+ HIGauge: (options) => gaugeHandler(options),
+ HIHeatmap: (options) => heatmapHandler(options),
+ HIHistogram: (options) => histogramHandler(options),
+ HIItem: (options) => itemHandler(options),
+ HILine: (options) => lineHandler(options),
+ HILollipop: (options) => lollipopHandler(options),
+ HINetworkgraph: (options) => networkgraphHandler(options),
+ HIOrganization: (options) => organizationHandler(options),
+ HIPackedbubble: (options) => packedbubbleHandler(options),
+ HIPareto: (options) => paretoHandler(options),
+ HIPie: (options) => pieHandler(options),
+ HIPolygon: (options) => polygonHandler(options),
+ HIPyramid: (options) => pyramidHandler(options),
+ HIPyramid3d: (options) => pyramid3dHandler(options),
+ HISankey: (options) => sankeyHandler(options),
+ HIScatter: (options) => scatterHandler(options),
+ HIScatter3d: (options) => scatter3dHandler(options),
+ HISolidgauge: (options) => solidgaugeHandler(options),
+ HISpline: (options) => splineHandler(options),
+ HIStreamgraph: (options) => streamgraphHandler(options),
+ HISunburst: (options) => sunburstHandler(options),
+ HITilemap: (options) => tilemapHandler(options),
+ HITimeline: (options) => timelineHandler(options),
+ HITreemap: (options) => treemapHandler(options),
+ HIVariablepie: (options) => variablepieHandler(options),
+ HIVariwide: (options) => variwideHandler(options),
+ HIVector: (options) => vectorHandler(options),
+ HIVenn: (options) => vennHandler(options),
+ HIWaterfall: (options) => waterfallHandler(options),
+ HIWindbarb: (options) => windbarbHandler(options),
+ HIWordcloud: (options) => wordcloudHandler(options),
+ HIXrange: (options) => xrangeHandler(options),
+};
+
+export const typesMap = {
+ string: (options) => options,
+ HIAccessibility: (options) => accessibilityHandler(options),
+ HIAlignObject: (options) => alignObjectHandler(options),
+ HIAnnotations: (options) => annotationsHandler(options),
+ HIAnnotationsOptions: (options) => annotationsOptionsHandler(options),
+ HIAnimationOptionsObject: (options) => animationOptionsObjectHandler(options),
+ HIBoost: (options) => boostHandler(options),
+ HIButtonOptions: (options) => buttonOptionsHandler(options),
+ // 'HICaption': (options) => captionHandler(options),
+ HIChart: (options) => chartHandler(options),
+ HICredits: (options) => creditsHandler(options),
+ HICSSObject: (options) => styleHandler(options),
+ HIDateTimeLabelFormats: (options) => dateTimeLabelFormatsHandler(options),
+ HIDataLabels: (options) => dataLabelsHandler(options),
+ // 'HIColorAxis': (options) => colorAxisHandler(options),
+ // 'HICredits': (options) => creditsHandler(options),
+ HIData: (options) => dataHandler(options),
+ // 'HIDefs': (options) => defsHandler(options),
+ // 'HIDrilldown': (options) => drilldownHandler(options),
+ HIExporting: (options) => exportingHandler(options),
+ HIEvents: (options) => eventsHandler(options),
+ HIFunction: (options) => functionHandler(options),
+ dataPointEvents: (options) => dataPointEventsHandler(options),
+ dataPointFunction: (options) => dataPointFunctionHandler(options),
+ HIHover: (options) => hoverHandler(options),
+ HISelect: (options) => selectHandler(options),
+ HIInactive: (options) => inactiveHandler(options),
+ HILabel: (options) => labelHandler(options),
+ HILabels: (options) => labelsHandler(options),
+ HILayoutAlgorithm: (options) => layoutAlgorithmHandler(options),
+ HILegend: (options) => legendHandler(options),
+ HILink: (options) => linkHandler(options),
+ HIMarker: (options) => markerHandler(options),
+ // 'HILoading': (options) => loadingHandler(options),
+ HINavigation: (options) => navigationHandler(options),
+ // 'HINoData': (options) => noDataHandler(options),
+ HIOptions3d: (options) => options3dHandler(options),
+ // 'HIPane': (options) => paneHandler(options),
+ HIPanning: (options) => panningHandler(options),
+ HIPoint: (options) => pointHandler(options),
+ HIPopup: (options) => popupHandler(options),
+ HIPlotOptions: (options) => plotOptionsHandler(options),
+ HIPlotBands: (options) => plotBandsHandler(options),
+ HIPlotLines: (options) => plotLinesHandler(options),
+ // 'HIResponsive': (options) => responsiveHandler(options),
+ HIResetZoomButton: (options) => resetZoomButtonHandler(options),
+ HIScrollablePlotArea: (options) => scrollablePlotAreaHandler(options),
+ HISeries: (options) => seriesHandler(options),
+ HIShapes: (options) => shapesHandler(options),
+ HIStackLabels: (options) => stackLabelsHandler(options),
+ HIStates: (options) => statesHandler(options),
+ HISubtitle: (options) => subtitleHandler(options),
+ HITime: (options) => timeHandler(options),
+ HITitle: (options) => titleHandler(options),
+ HITheme: (options) => themeHandler(options),
+ HITooltip: (options) => tooltipHandler(options),
+ HIXAxis: (options) => xAxisHandler(options),
+ HIYAxis: (options) => yAxisHandler(options),
+ HIZAxis: (options) => zAxisHandler(options),
+ HIZones: (options) => zonesHandler(options),
+
+ // Frame handlers
+ HIFrame: (options) => frameHandler(options),
+ HIBack: (options) => backHandler(options),
+ HIBottom: (options) => bottomHandler(options),
+ HIFront: (options) => frontHandler(options),
+ HILeft: (options) => leftHandler(options),
+ HIRight: (options) => rightHandler(options),
+ HITop: (options) => topHandler(options),
+
+ // Series handlers
+ ...seriesHandlers,
+};
diff --git a/packages/nativescript-ui-charts/options-handlers/helpers/helpers.android.ts b/packages/nativescript-ui-charts/options-handlers/helpers/helpers.android.ts
new file mode 100644
index 0000000..fa7096b
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/helpers/helpers.android.ts
@@ -0,0 +1,147 @@
+import { Color } from '@nativescript/core';
+import { typesMap as _typesMap } from './_helpers.common';
+
+const typesMap = Object.assign({}, _typesMap, {
+ number: (options) => fromJSToNativePrimitive(options),
+ boolean: (options) => fromJSToNativePrimitive(options),
+ Array: (options) => convertJSArrayToNative(options),
+ LinkedList: (options) => toLinkedList(options),
+ HIColor: (options) => toHIColor(options),
+});
+
+export function convertJSArrayToNative(jsArray: Array): java.util.ArrayList {
+ const nativeArray = new java.util.ArrayList();
+ for (let i = 0, l = jsArray.length; i < l; i++) {
+ nativeArray.add(fromJSToNativePrimitive(jsArray[i]));
+ }
+
+ return nativeArray;
+}
+
+export function fromJSToNativePrimitive(value: any): any {
+ if (typeof value === 'boolean' || value === 'false' || value === 'true') return new java.lang.Boolean(value);
+ if (typeof value === 'string') return value;
+
+ if (Number.isInteger(value)) {
+ return new java.lang.Double(value);
+ }
+
+ if (!isNaN(Number(value)) && value !== null) {
+ return new java.lang.Double(value.toString());
+ }
+
+ return value;
+}
+
+export function toArrayList(arr, isNumber = false) {
+ const arrayList = new java.util.ArrayList();
+ arr.forEach((item) => {
+ arrayList.add(item);
+ });
+ return arrayList;
+}
+
+export function toStringArray(arr) {
+ const array = Array.create(java.lang.String, arr.length);
+ for (let i = 0; i < arr.length; i++) {
+ array[i] = arr[i];
+ }
+ return array;
+}
+
+export function toLinkedList(arr, isNumber = false) {
+ const linkedList = new java.util.LinkedList();
+ arr.forEach((item, i) => {
+ linkedList.add(i, item);
+ });
+ return linkedList;
+}
+
+export function toArrayListRecursive(arr, isNumber = false) {
+ const arrayList = new java.util.ArrayList();
+ arr.forEach((item) => {
+ if (item.length) {
+ arrayList.add(toArrayListRecursive(item, isNumber));
+ } else {
+ if (isNumber) {
+ arrayList.add(fromJSToNativePrimitive(item));
+ } else {
+ arrayList.add(item);
+ }
+ }
+ });
+ return arrayList;
+}
+
+export function colorToString(color: any) {
+ const c = new Color(color);
+ return `rgba(${c.r}, ${c.g}, ${c.b}, ${c.a / 255})`;
+}
+
+export function toHIColor(color) {
+ if (color instanceof Array) {
+ const colorArray = [];
+ for (let i = 0; i < color.length; i++) {
+ const c = color[i];
+
+ if (c.radialGradient && c.stops) {
+ const grad = c.radialGradient;
+ const gradient = new com.highsoft.highcharts.common.HIGradient(grad.cx, grad.cy, grad.r);
+ const stops = c.stops.map((stop, i) => new com.highsoft.highcharts.common.HIStop(i, toHIColor(stop)));
+ const stopslist = toLinkedList(stops);
+
+ colorArray.push(com.highsoft.highcharts.common.HIColor.initWithRadialGradient(gradient, stopslist));
+ } else if (c.linearGradient && c.stops) {
+ const grad = c.linearGradient;
+ const gradient = new com.highsoft.highcharts.common.HIGradient(grad.x1, grad.y1, grad.x2, grad.y2);
+ const stops = c.stops.map((stop, i) => new com.highsoft.highcharts.common.HIStop(i, toHIColor(stop)));
+ const stopslist = toLinkedList(stops);
+
+ colorArray.push(com.highsoft.highcharts.common.HIColor.initWithLinearGradient(gradient, stopslist));
+ } else {
+ const _c = new Color(c);
+ colorArray.push(com.highsoft.highcharts.common.HIColor.initWithRGBA(_c.r, _c.g, _c.b, _c.a / 255) as any);
+ }
+ }
+
+ return convertJSArrayToNative(colorArray);
+ } else {
+ if (color.radialGradient && color.stops) {
+ const grad = color.radialGradient;
+ const gradient = new com.highsoft.highcharts.common.HIGradient(grad.cx, grad.cy, grad.r);
+ const stops = color.stops.map((stop, i) => new com.highsoft.highcharts.common.HIStop(i, toHIColor(stop)));
+ const stopslist = toLinkedList(stops);
+
+ return com.highsoft.highcharts.common.HIColor.initWithRadialGradient(gradient, stopslist);
+ } else if (color.linearGradient && color.stops) {
+ const grad = color.linearGradient;
+ const gradient = new com.highsoft.highcharts.common.HIGradient(grad.x1, grad.y1, grad.x2, grad.y2);
+ const stops = color.stops.map((stop, i) => new com.highsoft.highcharts.common.HIStop(i, toHIColor(stop)));
+ const stopslist = toLinkedList(stops);
+
+ return com.highsoft.highcharts.common.HIColor.initWithLinearGradient(gradient, stopslist);
+ } else {
+ const c = new Color(color);
+ return com.highsoft.highcharts.common.HIColor.initWithRGBA(c.r, c.g, c.b, c.a / 255) as any;
+ }
+ }
+}
+
+export function optionsBuilder(schema, options, containerObject) {
+ const schemaKeys = Object.keys(schema);
+ const optionsKeys = Object.keys(options);
+
+ for (const schemaKey of schemaKeys) {
+ if ((optionsKeys).includes(schemaKey)) {
+ if (typeof typesMap[schema[schemaKey]] === 'function') {
+ if (options[schemaKey] !== null && typeof options[schemaKey] !== 'undefined') {
+ containerObject['set' + schemaKey[0].toUpperCase() + schemaKey.slice(1)](typesMap[schema[schemaKey]](options[schemaKey]));
+ }
+ } else {
+ console.log('Handler for', schemaKey, schema[schemaKey], 'not implemented');
+ }
+ }
+ }
+
+ return containerObject;
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/helpers/helpers.d.ts b/packages/nativescript-ui-charts/options-handlers/helpers/helpers.d.ts
new file mode 100644
index 0000000..01037cb
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/helpers/helpers.d.ts
@@ -0,0 +1,9 @@
+export declare function convertJSArrayToNative(jsArray: Array): java.util.ArrayList;
+export declare function fromJSToNativePrimitive(value: any): any;
+export declare function toArrayList(arr: any, isNumber?: boolean): java.util.ArrayList;
+export declare function toLinkedList(arr: any, isNumber?: boolean): java.util.LinkedList;
+export declare function toArrayListRecursive(arr: any, isNumber?: boolean): java.util.ArrayList;
+export declare function colorToString(color: any): string;
+export declare function toHIColor(color: any): any;
+export declare function optionsBuilder(schema: any, options: any, containerObject: any): any;
+export declare function toStringArray(arr: any): java.lang.String[] | NSArray;
diff --git a/packages/nativescript-ui-charts/options-handlers/helpers/helpers.ios.ts b/packages/nativescript-ui-charts/options-handlers/helpers/helpers.ios.ts
new file mode 100644
index 0000000..fde2735
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/helpers/helpers.ios.ts
@@ -0,0 +1,115 @@
+import { Color } from '@nativescript/core';
+import { typesMap as _typesMap } from './_helpers.common';
+
+const typesMap = Object.assign({}, _typesMap, {
+ number: (options) => fromJSToNativePrimitive(options),
+ boolean: (options) => fromJSToNativePrimitive(options),
+ string: (options) => fromJSToNativePrimitive(options),
+ Array: (options) => convertJSArrayToNative(options),
+ HIColor: (options) => toHIColor(options),
+});
+
+export function convertJSArrayToNative(array) {
+ return new NSArray({ array: array });
+}
+
+export function fromJSToNativePrimitive(value) {
+ // stub
+ return value;
+}
+
+export function toArrayList(arr) {
+ // stub
+ return arr;
+}
+
+export function toLinkedList(arr) {
+ // stub
+ return arr;
+}
+
+export function toArrayListRecursive(arr) {
+ // stub
+ return arr;
+}
+
+export function toStringArray(arr: string[]) {
+ return new NSArray({ array: arr });
+}
+
+export function colorToString(color: any) {
+ const c = new Color(color);
+ return `rgba(${c.r}, ${c.g}, ${c.b}, ${c.a / 255})`;
+}
+
+export function toHIColor(color) {
+ if (color instanceof Array) {
+ const colorArray = [];
+ for (let i = 0; i < color.length; i++) {
+ const c = color[i];
+
+ if (c.radialGradient && c.stops) {
+ const stops = c.stops.map((stop, index) => [index, colorToString(stop)]);
+ const g = c.radialGradient;
+ colorArray.push(
+ new HIColor({
+ radialGradient: NSDictionary.dictionaryWithObjectsForKeys([g.cx, g.cy, g.r], ['cx', 'cy', 'r']),
+ stops: stops,
+ })
+ );
+ } else if (c.linearGradient && c.stops) {
+ const stops = c.stops.map((stop, index) => [index, colorToString(stop)]);
+ const g = c.linearGradient;
+ colorArray.push(
+ new HIColor({
+ linearGradient: NSDictionary.dictionaryWithObjectsForKeys([g.x1, g.y1, g.x2, g.y2], ['x1', 'y1', 'x2', 'y2']),
+ stops: stops,
+ })
+ );
+ } else {
+ const _c = new Color(c);
+ colorArray.push(new HIColor(_c.ios) as any);
+ }
+ }
+
+ return convertJSArrayToNative(colorArray);
+ } else {
+ if (color.radialGradient && color.stops) {
+ const stops = color.stops.map((stop, index) => [index, colorToString(stop)]);
+ const g = color.radialGradient;
+ return new HIColor({
+ radialGradient: NSDictionary.dictionaryWithObjectsForKeys([g.cx, g.cy, g.r], ['cx', 'cy', 'r']),
+ stops: stops,
+ });
+ } else if (color.linearGradient && color.stops) {
+ const stops = color.stops.map((stop, index) => [index, colorToString(stop)]);
+ const g = color.linearGradient;
+ return new HIColor({
+ linearGradient: NSDictionary.dictionaryWithObjectsForKeys([g.x1, g.y1, g.x2, g.y2], ['x1', 'y1', 'x2', 'y2']),
+ stops: stops,
+ });
+ } else {
+ const c = new Color(color);
+ return new HIColor(c.ios) as any;
+ }
+ }
+}
+
+export function optionsBuilder(schema, options, containerObject) {
+ const schemaKeys = Object.keys(schema);
+ const optionsKeys = Object.keys(options);
+
+ for (const schemaKey of schemaKeys) {
+ if ((optionsKeys).includes(schemaKey)) {
+ if (typeof typesMap[schema[schemaKey]] === 'function') {
+ if (options[schemaKey] !== null && typeof options[schemaKey] !== 'undefined') {
+ containerObject[schemaKey] = typesMap[schema[schemaKey]](options[schemaKey]);
+ }
+ } else {
+ console.log('Handler for', schemaKey, schema[schemaKey], 'not implemented');
+ }
+ }
+ }
+
+ return containerObject;
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/hover/hover-handler.ts b/packages/nativescript-ui-charts/options-handlers/hover/hover-handler.ts
new file mode 100644
index 0000000..7477311
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/hover/hover-handler.ts
@@ -0,0 +1,31 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function hoverHandler(hoverOptions) {
+ const hover = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIHover() : new HIHover();
+
+ const hoverchema = {
+ animation: 'HIAnimationOptionsObject',
+ borderColor: 'string',
+ brightness: 'number',
+ color: 'HIColor',
+ connectorWidthPlus: 'number',
+ enabled: 'number',
+ fillColor: 'HIColor',
+ halo: 'HIHalo',
+ height: 'number',
+ heightPlus: 'number',
+ lineColor: 'HIColor',
+ lineWidth: 'number',
+ lineWidthPlus: 'number',
+ linkOpacity: 'number',
+ opacity: 'number',
+ radius: 'number',
+ radiusPlus: 'number',
+ shadow: 'number',
+ width: 'number',
+ widthPlus: 'number',
+ };
+
+ return optionsBuilder(hoverchema, hoverOptions, hover);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/inactive/inactive-handler.ts b/packages/nativescript-ui-charts/options-handlers/inactive/inactive-handler.ts
new file mode 100644
index 0000000..9eb4fd4
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/inactive/inactive-handler.ts
@@ -0,0 +1,31 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function inactiveHandler(inactiveOptions) {
+ const inactive = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIInactive() : new HIInactive();
+
+ const inactiveSchema = {
+ animation: 'HIAnimationOptionsObject',
+ borderColor: 'string',
+ brightness: 'number',
+ color: 'HIColor',
+ connectorWidthPlus: 'number',
+ enabled: 'number',
+ fillColor: 'HIColor',
+ halo: 'HIHalo',
+ height: 'number',
+ heightPlus: 'number',
+ lineColor: 'HIColor',
+ lineWidth: 'number',
+ lineWidthPlus: 'number',
+ linkOpacity: 'number',
+ opacity: 'number',
+ radius: 'number',
+ radiusPlus: 'number',
+ shadow: 'number',
+ width: 'number',
+ widthPlus: 'number',
+ };
+
+ return optionsBuilder(inactiveSchema, inactiveOptions, inactive);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/label/label-handler.ts b/packages/nativescript-ui-charts/options-handlers/label/label-handler.ts
new file mode 100644
index 0000000..031f609
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/label/label-handler.ts
@@ -0,0 +1,29 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function labelHandler(labelOptions) {
+ const label = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HILabel() : new HILabel();
+
+ const labelSchema = {
+ align: 'string',
+ boxesToAvoid: 'HILabelIntersectBoxObject', // an array
+ connectorAllowed: 'number',
+ connectorNeighbourDistance: 'number',
+ enabled: 'number',
+ format: 'string',
+ formatter: 'HIFunction',
+ maxFontSize: 'number',
+ minFontSize: 'number',
+ onArea: 'number',
+ rotation: 'number',
+ style: 'HICSSObject',
+ text: 'string',
+ textAlign: 'string',
+ useHTML: 'number',
+ verticalAlign: 'string',
+ x: 'number',
+ y: 'number',
+ };
+
+ return optionsBuilder(labelSchema, labelOptions, label);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/labels/labels-handler.ts b/packages/nativescript-ui-charts/options-handlers/labels/labels-handler.ts
new file mode 100644
index 0000000..f1b963c
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/labels/labels-handler.ts
@@ -0,0 +1,55 @@
+import { optionsBuilder, convertJSArrayToNative } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function labelsHandler(labelsOptions) {
+ const labelsSchema = {
+ accessibility: 'HILabelsAccessibility',
+ align: 'string',
+ allowOverlap: 'number',
+ autoRotation: 'Array',
+ autoRotationLimit: 'number',
+ backgroundColor: 'HIColor',
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ className: 'string',
+ crop: 'number',
+ distance: 'number',
+ enabled: 'number',
+ format: 'string',
+ formatter: 'HIFunction',
+ overflow: 'string',
+ padding: 'number',
+ point: 'HIPoint',
+ position3d: 'string',
+ reserveSpace: 'number',
+ rotation: 'number',
+ shadow: 'HIShadowOptionsObject',
+ shape: 'string',
+ skew3d: 'number',
+ staggerLines: 'number',
+ step: 'number',
+ style: 'HICSSObject',
+ text: 'string',
+ useHTML: 'number',
+ verticalAlign: 'string',
+ x: 'number',
+ y: 'number',
+ zIndex: 'number',
+ };
+
+ if (labelsOptions instanceof Array || labelsOptions.length > 0) {
+ const labelsArray = [];
+
+ for (let i = 0; i < labelsOptions.length; i++) {
+ const labels = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HILabels() : new HILabels();
+ labelsArray.push(optionsBuilder(labelsSchema, labelsOptions[i], labels));
+ }
+
+ return convertJSArrayToNative(labelsArray);
+ } else {
+ const labels = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HILabels() : new HILabels();
+
+ return optionsBuilder(labelsSchema, labelsOptions, labels);
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/lang/lang-handler.ts b/packages/nativescript-ui-charts/options-handlers/lang/lang-handler.ts
new file mode 100644
index 0000000..bc70360
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/lang/lang-handler.ts
@@ -0,0 +1,40 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function langHandler(langOptions) {
+ const lang = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HILang() : new HILang();
+
+ const langSchema = {
+ accessibility: 'HIAccessibility',
+ cancelButtonTitle: 'string',
+ contextButtonTitle: 'string',
+ decimalPoint: 'string',
+ downloadCSV: 'string',
+ downloadJPEG: 'string',
+ downloadPDF: 'string',
+ downloadPNG: 'string',
+ downloadSVG: 'string',
+ downloadXLS: 'string',
+ drillUpText: 'string',
+ exitFullscreen: 'string',
+ exportData: 'HIExportData',
+ invalidDate: 'string',
+ loading: 'string',
+ months: 'Array',
+ navigation: 'HINavigation',
+ noData: 'string',
+ numericSymbolMagnitude: 'number',
+ numericSymbols: 'Array',
+ printChart: 'string',
+ resetZoom: 'string',
+ resetZoomTitle: 'string',
+ shortMonths: 'Array',
+ shortWeekdays: 'Array',
+ thousandsSep: 'string',
+ viewData: 'string',
+ viewFullscreen: 'string',
+ weekdays: 'Array',
+ };
+
+ return optionsBuilder(langSchema, langOptions, lang);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/layoutAlgorithm/layoutAlgorithm-handler.ts b/packages/nativescript-ui-charts/options-handlers/layoutAlgorithm/layoutAlgorithm-handler.ts
new file mode 100644
index 0000000..fa8f697
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/layoutAlgorithm/layoutAlgorithm-handler.ts
@@ -0,0 +1,35 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function layoutAlgorithmHandler(layoutAlgorithmOptions) {
+ const layoutAlgorithm = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HILayoutAlgorithm() : new HILayoutAlgorithm();
+
+ const layoutAlgorithmSchema = {
+ approximation: 'string',
+ attractiveForce: 'HIFunction',
+ bubblePadding: 'number',
+ distance: 'number',
+ dragBetweenSeries: 'number',
+ enableSimulation: 'number',
+ friction: 'number',
+ gravitationalConstant: 'number',
+ gridSize: 'number',
+ initialPositionRadius: 'number',
+ initialPositions: 'string',
+ integration: 'string',
+ iterations: 'number',
+ kmeansThreshold: 'number',
+ linkLength: 'number',
+ maxIterations: 'number',
+ maxSpeed: 'number',
+ parentNodeLimit: 'number',
+ parentNodeOptions: 'HIParentNodeOptions',
+ repulsiveForce: 'HIFunction',
+ seriesInteraction: 'number',
+ splitSeries: 'string',
+ theta: 'number',
+ type: 'string',
+ };
+
+ return optionsBuilder(layoutAlgorithmSchema, layoutAlgorithmOptions, layoutAlgorithm);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/legend/legend-handler.ts b/packages/nativescript-ui-charts/options-handlers/legend/legend-handler.ts
new file mode 100644
index 0000000..507bddd
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/legend/legend-handler.ts
@@ -0,0 +1,52 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function legendHandler(legendOptions) {
+ const legend = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HILegend() : new HILegend();
+
+ const legendSchema = {
+ accessibility: 'HIAccessibility',
+ align: 'string',
+ alignColumns: 'number',
+ backgroundColor: 'HIColor',
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ bubbleLegend: 'HIBubbleLegend',
+ enabled: 'number',
+ floating: 'number',
+ itemCheckboxStyle: 'HICSSObject',
+ itemDistance: 'number',
+ itemHiddenStyle: 'HICSSObject',
+ itemHoverStyle: 'HICSSObject',
+ itemMarginBottom: 'number',
+ itemMarginTop: 'number',
+ itemStyle: 'HICSSObject',
+ itemWidth: 'number',
+ labelFormat: 'string',
+ labelFormatter: 'HIFunction',
+ layout: 'string',
+ legendItem: 'string',
+ legendLabel: 'string',
+ margin: 'number',
+ maxHeight: 'number',
+ navigation: 'HINavigation',
+ padding: 'number',
+ reversed: 'number',
+ rtl: 'number',
+ shadow: isAndroid ? 'boolean' : 'HICSSObject',
+ squareSymbol: 'number',
+ symbolHeight: 'number',
+ symbolPadding: 'number',
+ symbolRadius: 'number',
+ symbolWidth: 'number',
+ title: 'HITitle',
+ useHTML: 'number',
+ verticalAlign: 'string',
+ width: 'number',
+ x: 'number',
+ y: 'number',
+ };
+
+ return optionsBuilder(legendSchema, legendOptions, legend);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/link/link-handler.ts b/packages/nativescript-ui-charts/options-handlers/link/link-handler.ts
new file mode 100644
index 0000000..5e153ae
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/link/link-handler.ts
@@ -0,0 +1,14 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function linkHandler(linkOptions) {
+ const link = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HILink() : new HILink();
+
+ const linkSchema = {
+ color: 'string',
+ dashStyle: 'string',
+ width: 'number',
+ };
+
+ return optionsBuilder(linkSchema, linkOptions, link);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/marker/marker-handler.ts b/packages/nativescript-ui-charts/options-handlers/marker/marker-handler.ts
new file mode 100644
index 0000000..0d28571
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/marker/marker-handler.ts
@@ -0,0 +1,24 @@
+import { isAndroid } from '@nativescript/core';
+import { optionsBuilder } from '../helpers/helpers';
+
+export function markerHandler(markerOptions) {
+ const marker = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIMarker() : new HIMarker();
+
+ const markerSchema = {
+ animation: 'HIAnimationOptionsObject',
+ color: 'HIColor',
+ enabled: 'number',
+ enabledThreshold: 'number',
+ fillColor: 'HIColor',
+ fillOpacity: 'number',
+ height: 'number',
+ lineColor: 'string',
+ lineWidth: 'number',
+ radius: 'number',
+ states: 'HIStates',
+ symbol: 'string',
+ width: 'number',
+ };
+
+ return optionsBuilder(markerSchema, markerOptions, marker);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/navigation/navigation-handler.ts b/packages/nativescript-ui-charts/options-handlers/navigation/navigation-handler.ts
new file mode 100644
index 0000000..be23745
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/navigation/navigation-handler.ts
@@ -0,0 +1,27 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function navigationHandler(navigationOptions) {
+ const navigation = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HINavigation() : new HINavigation();
+
+ const navigationSchema = {
+ activeColor: 'HIColor',
+ animation: 'HIAnimationOptionsObject',
+ annotationsOptions: 'HIAnnotationsOptions',
+ arrowSize: 'number',
+ bindings: 'HIBindings',
+ bindingsClassName: 'string',
+ buttonOptions: 'HIButtonOptions',
+ enabled: 'number',
+ events: 'HIEvents',
+ iconsURL: 'string',
+ inactiveColor: 'HIColor',
+ menuItemHoverStyle: 'HICSSObject',
+ menuItemStyle: 'HICSSObject',
+ menuStyle: 'HICSSObject',
+ popup: 'HIPopup',
+ style: 'HICSSObject',
+ };
+
+ return optionsBuilder(navigationSchema, navigationOptions, navigation);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/options-handler.ts b/packages/nativescript-ui-charts/options-handlers/options-handler.ts
new file mode 100644
index 0000000..6473e08
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/options-handler.ts
@@ -0,0 +1,101 @@
+import { isAndroid } from '@nativescript/core';
+import { optionsBuilder } from './helpers/helpers';
+
+const chartTypesToClassName = {
+ area: 'HIArea',
+ arearange: 'HIArearange',
+ areaspline: 'HIAreaspline',
+ areasplinerange: 'HIAreasplinerange',
+ bar: 'HIBar',
+ bellcurve: 'HIBellcurve',
+ boxplot: 'HIBoxplot',
+ bubble: 'HIBubble',
+ bullet: 'HIBullet',
+ column: 'HIColumn',
+ columnpyramid: 'HIColumnpyramid',
+ columnrange: 'HIColumnrange',
+ cylinder: 'HICylinder',
+ dependencywheel: 'HIDependencywheel',
+ dumbbell: 'HIDumbbell',
+ errorbar: 'HIErrorbar',
+ funnel: 'HIFunnel',
+ funnel3d: 'HIFunnel3d',
+ gauge: 'HIGauge',
+ heatmap: 'HIHeatmap',
+ histogram: 'HIHistogram',
+ item: 'HIItem',
+ line: 'HILine',
+ lollipop: 'HILollipop',
+ networkgraph: 'HINetworkgraph',
+ organization: 'HIOrganization',
+ packedbubble: 'HIPackedbubble',
+ pareto: 'HIPareto',
+ pie: 'HIPie',
+ polygon: 'HIPolygon',
+ pyramid: 'HIPyramid',
+ pyramid3d: 'HIPyramid3d',
+ sankey: 'HISankey',
+ scatter: 'HIScatter',
+ scatter3d: 'HIScatter3d',
+ solidgauge: 'HISolidgauge',
+ spline: 'HISpline',
+ streamgraph: 'HIStreamgraph',
+ sunburst: 'HISunburst',
+ tilemap: 'HITilemap',
+ timeline: 'HITimeline',
+ treemap: 'HITreemap',
+ variablepie: 'HIVariablepie',
+ variwide: 'HIVariwide',
+ vector: 'HIVector',
+ venn: 'HIVenn',
+ waterfall: 'HIWaterfall',
+ windbarb: 'HIWindbarb',
+ wordcloud: 'HIWordcloud',
+ xrange: 'HIXrange',
+};
+
+export const chartTypes = Object.keys(chartTypesToClassName);
+
+export function optionsHandler(options) {
+ const hiOptions = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIOptions() : new HIOptions();
+
+ const hiOptionsSchema = {
+ accessibility: 'HIAccessibility',
+ // additionalOptions: 'NSDictionary',
+ annotationsOptions: 'HIAnnotationsOptions', // array
+ annotations: 'HIAnnotations', // array
+ boost: 'HIBoost',
+ caption: 'HICaption',
+ chart: 'HIChart',
+ colorAxis: 'HIColorAxis', // array
+ colors: 'Array',
+ credits: 'HICredits',
+ data: 'HIData',
+ defs: 'HIDefs',
+ drilldown: 'HIDrilldown',
+ exporting: 'HIExporting',
+ legend: 'HILegend',
+ loading: 'HILoading',
+ navigation: 'HINavigation',
+ noData: 'HINoData',
+ pane: 'HIPane',
+ plotOptions: 'HIPlotOptions',
+ responsive: 'HIResponsive',
+ series: 'HILine',
+ subtitle: 'HISubtitle',
+ time: 'HITime',
+ title: 'HITitle',
+ tooltip: 'HITooltip',
+ xAxis: 'HIXAxis',
+ yAxis: 'HIYAxis',
+ zAxis: 'HIZAxis',
+ };
+
+ if (options && options.chart && options.chart.type) {
+ if (chartTypesToClassName[options.chart.type]) {
+ hiOptionsSchema.series = chartTypesToClassName[options.chart.type];
+ }
+ }
+
+ return optionsBuilder(hiOptionsSchema, options, hiOptions);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/options3d/options3d-handler.ts b/packages/nativescript-ui-charts/options-handlers/options3d/options3d-handler.ts
new file mode 100644
index 0000000..3c2920c
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/options3d/options3d-handler.ts
@@ -0,0 +1,19 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function options3dHandler(options3dOptions) {
+ const options3d = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIOptions3d() : new HIOptions3d();
+
+ const options3dSchema = {
+ alpha: 'number',
+ axisLabelPosition: 'string',
+ beta: 'number',
+ depth: 'number',
+ enabled: 'number',
+ fitToPlot: 'number',
+ frame: 'HIFrame',
+ viewDistance: 'number',
+ };
+
+ return optionsBuilder(options3dSchema, options3dOptions, options3d);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/panning/panning-handler.ts b/packages/nativescript-ui-charts/options-handlers/panning/panning-handler.ts
new file mode 100644
index 0000000..b5b485f
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/panning/panning-handler.ts
@@ -0,0 +1,13 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function panningHandler(panningOptions) {
+ const panning = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPanning() : new HIPanning();
+
+ const panningSchema = {
+ enabled: isAndroid ? 'boolean' : 'number',
+ type: 'string',
+ };
+
+ return optionsBuilder(panningSchema, panningOptions, panning);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/plotBands/plotBands-handler.ts b/packages/nativescript-ui-charts/options-handlers/plotBands/plotBands-handler.ts
new file mode 100644
index 0000000..698c685
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/plotBands/plotBands-handler.ts
@@ -0,0 +1,36 @@
+import { optionsBuilder, convertJSArrayToNative } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function plotBandsHandler(plotBandsOptions) {
+ const plotbands = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPlotBands() : new HIPlotBands();
+
+ const plotBandSchema = {
+ borderColor: 'HIColor',
+ borderWidth: 'number',
+ className: 'string',
+ color: 'HIColor',
+ events: 'HIEvents',
+ from: 'number',
+ id: 'string',
+ innerRadius: 'string',
+ label: 'HILabel',
+ outerRadius: 'string',
+ thickness: 'string',
+ to: 'number',
+ zIndex: 'number',
+ };
+
+ if (plotBandsOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of plotBandsOptions) {
+ const plotBand = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPlotBands() : new HIPlotBands();
+ seriesArr.push(optionsBuilder(plotBandSchema, opts, plotBand));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const plotBand = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPlotBands() : new HIPlotBands();
+ return optionsBuilder(plotBandSchema, plotBandsOptions, plotBand);
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/plotLines/plotLines-handler.ts b/packages/nativescript-ui-charts/options-handlers/plotLines/plotLines-handler.ts
new file mode 100644
index 0000000..1fda35c
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/plotLines/plotLines-handler.ts
@@ -0,0 +1,30 @@
+import { optionsBuilder, convertJSArrayToNative } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function plotLinesHandler(plotLineOptions) {
+ const plotLinesSchema = {
+ className: 'string',
+ color: 'HIColor',
+ dashStyle: 'string',
+ events: 'HIEvents',
+ id: 'string',
+ label: 'HILabel',
+ value: 'number',
+ width: 'number',
+ zIndex: 'number',
+ };
+
+ if (plotLineOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of plotLineOptions) {
+ const plotBand = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPlotLines() : new HIPlotLines();
+ seriesArr.push(optionsBuilder(plotLinesSchema, opts, plotBand));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const plotBand = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPlotLines() : new HIPlotLines();
+ return optionsBuilder(plotLinesSchema, plotLineOptions, plotBand);
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/plotOptions/plotOptions-handler.ts b/packages/nativescript-ui-charts/options-handlers/plotOptions/plotOptions-handler.ts
new file mode 100644
index 0000000..01ddfc1
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/plotOptions/plotOptions-handler.ts
@@ -0,0 +1,62 @@
+import { isAndroid } from '@nativescript/core';
+import { optionsBuilder } from '../helpers/helpers';
+
+export function plotOptionsHandler(plotOptionsOptions) {
+ const plotOptions = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPlotOptions() : new HIPlotOptions();
+
+ const plotOptionsSchema = {
+ area: 'HIArea',
+ arearange: 'HIArearange',
+ areaspline: 'HIAreaspline',
+ areasplinerange: 'HIAreasplinerange',
+ bar: 'HIBar',
+ bellcurve: 'HIBellcurve',
+ boxplot: 'HIBoxplot',
+ bubble: 'HIBubble',
+ bullet: 'HIBullet',
+ column: 'HIColumn',
+ columnpyramid: 'HIColumnpyramid',
+ columnrange: 'HIColumnrange',
+ cylinder: 'HICylinder',
+ dependencywheel: 'HIDependencywheel',
+ dumbbell: 'HIDumbbell',
+ errorbar: 'HIErrorbar',
+ funnel: 'HIFunnel',
+ funnel3d: 'HIFunnel3d',
+ gauge: 'HIGauge',
+ heatmap: 'HIHeatmap',
+ histogram: 'HIHistogram',
+ item: 'HIItem',
+ line: 'HILine',
+ lollipop: 'HILollipop',
+ networkgraph: 'HINetworkgraph',
+ organization: 'HIOrganization',
+ packedbubble: 'HIPackedbubble',
+ pareto: 'HIPareto',
+ pie: 'HIPie',
+ polygon: 'HIPolygon',
+ pyramid: 'HIPyramid',
+ pyramid3d: 'HIPyramid3d',
+ sankey: 'HISankey',
+ scatter: 'HIScatter',
+ scatter3d: 'HIScatter3d',
+ series: 'HISeries',
+ solidgauge: 'HISolidgauge',
+ spline: 'HISpline',
+ streamgraph: 'HIStreamgraph',
+ sunburst: 'HISunburst',
+ tilemap: 'HITilemap',
+ timeline: 'HITimeline',
+ treemap: 'HITreemap',
+ variablepie: 'HIVariablepie',
+ variwide: 'HIVariwide',
+ vector: 'HIVector',
+ venn: 'HIVenn',
+ waterfall: 'HIWaterfall',
+ windbarb: 'HIWindbarb',
+ wordcloud: 'HIWordcloud',
+ xrange: 'HIXrange',
+ };
+
+ return optionsBuilder(plotOptionsSchema, plotOptionsOptions, plotOptions);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/point/point-handler.ts b/packages/nativescript-ui-charts/options-handlers/point/point-handler.ts
new file mode 100644
index 0000000..02a4a8f
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/point/point-handler.ts
@@ -0,0 +1,23 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function pointHandler(pointOptions) {
+ const point = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPoint() : new HIPoint();
+
+ const pointSchema = {
+ dateFormat: 'string',
+ dateFormatter: 'HIFunction',
+ descriptionFormatter: 'HIFunction',
+ events: 'HIEvents',
+ valueDecimals: 'number',
+ valueDescriptionFormat: 'string',
+ valuePrefix: 'string',
+ valueSuffix: 'string',
+ x: 'number',
+ xAxis: 'number',
+ y: 'number',
+ yAxis: 'number',
+ };
+
+ return optionsBuilder(pointSchema, pointOptions, point);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/popup/popup-handler.ts b/packages/nativescript-ui-charts/options-handlers/popup/popup-handler.ts
new file mode 100644
index 0000000..e16815b
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/popup/popup-handler.ts
@@ -0,0 +1,74 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function popupHandler(popupOptions) {
+ const popup = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPopup() : new HIPopup();
+
+ const popupSchema = {
+ addButton: 'string',
+ arrowLine: 'string',
+ arrowRay: 'string',
+ arrowSegment: 'string',
+ background: 'string',
+ backgroundColor: 'string',
+ backgroundColors: 'string',
+ borderColor: 'string',
+ borderRadius: 'string',
+ borderWidth: 'string',
+ circle: 'string',
+ color: 'string',
+ connector: 'string',
+ crooked3: 'string',
+ crooked5: 'string',
+ crosshairX: 'string',
+ crosshairY: 'string',
+ editButton: 'string',
+ elliott3: 'string',
+ elliott5: 'string',
+ fibonacci: 'string',
+ fill: 'string',
+ flags: 'string',
+ fontSize: 'string',
+ format: 'string',
+ height: 'string',
+ horizontalLine: 'string',
+ infinityLine: 'string',
+ innerBackground: 'string',
+ label: 'string',
+ labelOptions: 'string',
+ labels: 'string',
+ line: 'string',
+ lines: 'string',
+ measure: 'string',
+ measureX: 'string',
+ measureXY: 'string',
+ measureY: 'string',
+ name: 'string',
+ outerBackground: 'string',
+ padding: 'string',
+ parallelChannel: 'string',
+ pitchfork: 'string',
+ ray: 'string',
+ rectangle: 'string',
+ removeButton: 'string',
+ saveButton: 'string',
+ segment: 'string',
+ series: 'string',
+ shapeOptions: 'string',
+ shapes: 'string',
+ simpleShapes: 'string',
+ stroke: 'string',
+ strokeWidth: 'string',
+ style: 'string',
+ title: 'string',
+ tunnel: 'string',
+ typeOptions: 'string',
+ verticalArrow: 'string',
+ verticalCounter: 'string',
+ verticalLabel: 'string',
+ verticalLine: 'string',
+ volume: 'string',
+ };
+
+ return optionsBuilder(popupSchema, popupOptions, popup);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/resetZoomButton/resetZoomButton-handler.ts b/packages/nativescript-ui-charts/options-handlers/resetZoomButton/resetZoomButton-handler.ts
new file mode 100644
index 0000000..7476b67
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/resetZoomButton/resetZoomButton-handler.ts
@@ -0,0 +1,14 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function resetZoomButtonHandler(exportingOptions) {
+ const exporting = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIResetZoomButton() : new HIResetZoomButton();
+
+ const exportingSchema = {
+ position: 'HIAlignObject',
+ relativeTo: 'string',
+ theme: 'HISVGAttributes',
+ };
+
+ return optionsBuilder(exportingSchema, exportingOptions, exporting);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/responsive/responsive-handler.ts b/packages/nativescript-ui-charts/options-handlers/responsive/responsive-handler.ts
new file mode 100644
index 0000000..3aa2289
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/responsive/responsive-handler.ts
@@ -0,0 +1,12 @@
+import { isAndroid } from '@nativescript/core';
+import { optionsBuilder } from '../helpers/helpers';
+
+export function responsiveHandler(responsiveOptions) {
+ const responsive = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIResponsive() : new HIResponsive();
+
+ const responsiveSchema = {
+ rules: 'HIRules', // array
+ };
+
+ return optionsBuilder(responsiveSchema, responsiveOptions, responsive);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/scrollablePlotArea/scrollablePlotArea-handler.ts b/packages/nativescript-ui-charts/options-handlers/scrollablePlotArea/scrollablePlotArea-handler.ts
new file mode 100644
index 0000000..70c69ea
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/scrollablePlotArea/scrollablePlotArea-handler.ts
@@ -0,0 +1,16 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function scrollablePlotAreaHandler(scrollablePlotAreaOptions) {
+ const scrollablePlotArea = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIScrollablePlotArea() : new HIScrollablePlotArea();
+
+ const scrollablePlotAreaSchema = {
+ minHeight: 'number',
+ minWidth: 'number',
+ opacity: 'number',
+ scrollPositionX: 'number',
+ scrollPositionY: 'number',
+ };
+
+ return optionsBuilder(scrollablePlotAreaSchema, scrollablePlotAreaOptions, scrollablePlotArea);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/select/select-handler.ts b/packages/nativescript-ui-charts/options-handlers/select/select-handler.ts
new file mode 100644
index 0000000..43890b5
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/select/select-handler.ts
@@ -0,0 +1,31 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function selectHandler(selectOptions) {
+ const select = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HISelect() : new HISelect();
+
+ const selectSchema = {
+ animation: 'HIAnimationOptionsObject',
+ borderColor: 'string',
+ brightness: 'number',
+ color: 'HIColor',
+ connectorWidthPlus: 'number',
+ enabled: 'number',
+ fillColor: 'HIColor',
+ halo: 'HIHalo',
+ height: 'number',
+ heightPlus: 'number',
+ lineColor: 'HIColor',
+ lineWidth: 'number',
+ lineWidthPlus: 'number',
+ linkOpacity: 'number',
+ opacity: 'number',
+ radius: 'number',
+ radiusPlus: 'number',
+ shadow: 'number',
+ width: 'number',
+ widthPlus: 'number',
+ };
+
+ return optionsBuilder(selectSchema, selectOptions, select);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/area/area-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/area/area-handler.ts
new file mode 100644
index 0000000..fef1da2
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/area/area-handler.ts
@@ -0,0 +1,29 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { optionsBuilder, convertJSArrayToNative } from '../../helpers/helpers';
+
+export function areaHandler(areaOptions) {
+ const areaSchema = {
+ fillColor: 'HIColor',
+ fillOpacity: 'number',
+ lineColor: 'HIColor',
+ negativeFillColor: 'HIColor',
+ trackByArea: 'number',
+ };
+
+ if (areaOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of areaOptions) {
+ const area = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIArea() : new HIArea();
+
+ seriesArr.push(seriesHandler(opts, optionsBuilder(areaSchema, opts, area)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const area = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIArea() : new HIArea();
+
+ return seriesHandler(areaOptions, optionsBuilder(areaSchema, areaOptions, area));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/arearange/arearange-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/arearange/arearange-handler.ts
new file mode 100644
index 0000000..53b95d1
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/arearange/arearange-handler.ts
@@ -0,0 +1,27 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function arearangeHandler(arearangeOptions) {
+ const arearangeSchema = {
+ fillColor: 'HIColor',
+ fillOpacity: 'number',
+ lineColor: 'HIColor',
+ negativeFillColor: 'HIColor',
+ trackByArea: 'number',
+ };
+
+ if (arearangeOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of arearangeOptions) {
+ const arearange = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIArearange() : new HIArearange();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(arearangeSchema, opts, arearange)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const arearange = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIArearange() : new HIArearange();
+ return seriesHandler(arearangeOptions, optionsBuilder(arearangeSchema, arearangeOptions, arearange));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/areaspline/areaspline-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/areaspline/areaspline-handler.ts
new file mode 100644
index 0000000..9723f79
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/areaspline/areaspline-handler.ts
@@ -0,0 +1,27 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function areasplineHandler(areasplineOptions) {
+ const areasplineSchema = {
+ fillColor: 'HIColor',
+ fillOpacity: 'number',
+ lineColor: 'HIColor',
+ negativeFillColor: 'HIColor',
+ trackByArea: 'number',
+ };
+
+ if (areasplineOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of areasplineOptions) {
+ const areaspline = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIAreaspline() : new HIAreaspline();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(areasplineSchema, opts, areaspline)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const areaspline = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIAreaspline() : new HIAreaspline();
+ return seriesHandler(areasplineOptions, optionsBuilder(areasplineSchema, areasplineOptions, areaspline));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/areasplinerange/areasplinerange-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/areasplinerange/areasplinerange-handler.ts
new file mode 100644
index 0000000..2ecf933
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/areasplinerange/areasplinerange-handler.ts
@@ -0,0 +1,27 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function areasplinerangeHandler(areasplinerangeOptions) {
+ const areasplinerangeSchema = {
+ fillColor: 'HIColor',
+ fillOpacity: 'number',
+ lineColor: 'HIColor',
+ negativeFillColor: 'HIColor',
+ trackByArea: 'number',
+ };
+
+ if (areasplinerangeOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of areasplinerangeOptions) {
+ const areasplinerange = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIAreasplinerange() : new HIAreasplinerange();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(areasplinerangeSchema, opts, areasplinerange)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const areasplinerange = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIAreasplinerange() : new HIAreasplinerange();
+ return seriesHandler(areasplinerangeOptions, optionsBuilder(areasplinerangeSchema, areasplinerangeOptions, areasplinerange));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/bar/bar-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/bar/bar-handler.ts
new file mode 100644
index 0000000..8351f78
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/bar/bar-handler.ts
@@ -0,0 +1,41 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { optionsBuilder, convertJSArrayToNative } from '../../helpers/helpers';
+
+export function barHandler(barOptions) {
+ const barSchema = {
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ depth: 'number',
+ edgeColor: 'HIColor',
+ edgeWidth: 'number',
+ groupPadding: 'number',
+ groupZPadding: 'number',
+ grouping: 'number',
+ maxPointWidth: 'number',
+ minPointLength: 'number',
+ pointPadding: 'number',
+ pointRange: 'number',
+ pointWidth: 'number',
+ };
+
+ if (barOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of barOptions) {
+ const bar = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIBar() : new HIBar();
+
+ seriesArr.push(seriesHandler(opts, optionsBuilder(barSchema, opts, bar)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const bar = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIBar() : new HIBar();
+
+ return seriesHandler(barOptions, optionsBuilder(barSchema, barOptions, bar));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/bellcurve/bellcurve-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/bellcurve/bellcurve-handler.ts
new file mode 100644
index 0000000..2dc319a
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/bellcurve/bellcurve-handler.ts
@@ -0,0 +1,30 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function bellcurveHandler(bellcurveOptions) {
+ const bellcurveSchema = {
+ baseSeries: 'number',
+ fillColor: 'HIColor',
+ fillOpacity: 'number',
+ intervals: 'number',
+ lineColor: 'HIColor',
+ negativeFillColor: 'HIColor',
+ pointsInInterval: 'number',
+ trackByArea: 'number',
+ };
+
+ if (bellcurveOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of bellcurveOptions) {
+ const bellcurve = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIBellcurve() : new HIBellcurve();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(bellcurveSchema, opts, bellcurve)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const bellcurve = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIBellcurve() : new HIBellcurve();
+ return seriesHandler(bellcurveOptions, optionsBuilder(bellcurveSchema, bellcurveOptions, bellcurve));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/boxplot/boxplot-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/boxplot/boxplot-handler.ts
new file mode 100644
index 0000000..3afd2b3
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/boxplot/boxplot-handler.ts
@@ -0,0 +1,46 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function boxplotHandler(boxplotOptions) {
+ const boxplotSchema = {
+ boxDashStyle: 'string',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ depth: 'number',
+ edgeColor: 'HIColor',
+ edgeWidth: 'number',
+ fillColor: 'HIColor',
+ groupPadding: 'number',
+ grouping: 'number',
+ maxPointWidth: 'number',
+ medianColor: 'HIColor',
+ medianDashStyle: 'string',
+ medianWidth: 'number',
+ minPointLength: 'number',
+ pointPadding: 'number',
+ pointRange: 'number',
+ pointWidth: 'number',
+ stemDashStyle: 'string',
+ stemWidth: 'number',
+ whiskerColor: 'HIColor',
+ whiskerDashStyle: 'string',
+ whiskerLength: 'number',
+ whiskerWidth: 'number',
+ };
+
+ if (boxplotOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of boxplotOptions) {
+ const boxplot = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIBoxplot() : new HIBoxplot();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(boxplotSchema, opts, boxplot)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const boxplot = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIBoxplot() : new HIBoxplot();
+ return seriesHandler(boxplotOptions, optionsBuilder(boxplotSchema, boxplotOptions, boxplot));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/bubble/bubble-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/bubble/bubble-handler.ts
new file mode 100644
index 0000000..139b7e1
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/bubble/bubble-handler.ts
@@ -0,0 +1,31 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function bubbleHandler(bubbleOptions) {
+ const bubbleSchema = {
+ displayNegative: 'number',
+ jitter: 'HIJitter',
+ maxSize: 'number',
+ minSize: 'number',
+ sizeBy: 'string',
+ sizeByAbsoluteValue: 'number',
+ zMax: 'number',
+ zMin: 'number',
+ zThreshold: 'number',
+ };
+
+ if (bubbleOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of bubbleOptions) {
+ const bubble = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIBubble() : new HIBubble();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(bubbleSchema, opts, bubble)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const bubble = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIBubble() : new HIBubble();
+ return seriesHandler(bubbleOptions, optionsBuilder(bubbleSchema, bubbleOptions, bubble));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/bullet/bullet-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/bullet/bullet-handler.ts
new file mode 100644
index 0000000..145ed9b
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/bullet/bullet-handler.ts
@@ -0,0 +1,40 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function bulletHandler(bulletOptions) {
+ const bulletSchema = {
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ depth: 'number',
+ edgeColor: 'HIColor',
+ edgeWidth: 'number',
+ groupPadding: 'number',
+ groupZPadding: 'number',
+ grouping: 'number',
+ maxPointWidth: 'number',
+ minPointLength: 'number',
+ pointPadding: 'number',
+ pointRange: 'number',
+ pointWidth: 'number',
+ targetOptions: 'HITargetOptions',
+ };
+
+ if (bulletOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of bulletOptions) {
+ const bullet = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIBullet() : new HIBullet();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(bulletSchema, opts, bullet)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const bullet = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIBullet() : new HIBullet();
+ return seriesHandler(bulletOptions, optionsBuilder(bulletSchema, bulletOptions, bullet));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/column/column-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/column/column-handler.ts
new file mode 100644
index 0000000..bfd949e
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/column/column-handler.ts
@@ -0,0 +1,40 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function columnHandler(columnOptions) {
+ const columnSchema = {
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ depth: 'number',
+ edgeColor: 'HIColor',
+ edgeWidth: 'number',
+ groupPadding: 'number',
+ groupZPadding: 'number',
+ grouping: 'number',
+ maxPointWidth: 'number',
+ minPointLength: 'number',
+ pointPadding: 'number',
+ pointRange: 'number',
+ pointWidth: 'number',
+ states: 'HIStates',
+ };
+
+ if (columnOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of columnOptions) {
+ const column = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIColumn() : new HIColumn();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(columnSchema, opts, column)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const column = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIColumn() : new HIColumn();
+ return seriesHandler(columnOptions, optionsBuilder(columnSchema, columnOptions, column));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/columnpyramid/columnpyramid-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/columnpyramid/columnpyramid-handler.ts
new file mode 100644
index 0000000..76025d8
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/columnpyramid/columnpyramid-handler.ts
@@ -0,0 +1,34 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function columnpyramidHandler(columnpyramidOptions) {
+ const columnpyramidSchema = {
+ borderColor: 'HIColor',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ groupPadding: 'number',
+ grouping: 'number',
+ maxPointWidth: 'number',
+ minPointLength: 'number',
+ pointPadding: 'number',
+ pointRange: 'number',
+ pointWidth: 'number',
+ };
+
+ if (columnpyramidOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of columnpyramidOptions) {
+ const columnpyramid = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIColumnpyramid() : new HIColumnpyramid();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(columnpyramidSchema, opts, columnpyramid)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const columnpyramid = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIColumnpyramid() : new HIColumnpyramid();
+ return seriesHandler(columnpyramidOptions, optionsBuilder(columnpyramidSchema, columnpyramidOptions, columnpyramid));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/columnrange/columnrange-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/columnrange/columnrange-handler.ts
new file mode 100644
index 0000000..15a48b2
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/columnrange/columnrange-handler.ts
@@ -0,0 +1,39 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function columnrangeHandler(columnrangeOptions) {
+ const columnrangeSchema = {
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ depth: 'number',
+ edgeColor: 'HIColor',
+ edgeWidth: 'number',
+ groupPadding: 'number',
+ groupZPadding: 'number',
+ grouping: 'number',
+ maxPointWidth: 'number',
+ minPointLength: 'number',
+ pointPadding: 'number',
+ pointRange: 'number', // figure out range type
+ pointWidth: 'number',
+ };
+
+ if (columnrangeOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of columnrangeOptions) {
+ const columnrange = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIColumnrange() : new HIColumnrange();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(columnrangeSchema, opts, columnrange)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const columnrange = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIColumnrange() : new HIColumnrange();
+ return seriesHandler(columnrangeOptions, optionsBuilder(columnrangeSchema, columnrangeOptions, columnrange));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/cylinder/cylinder-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/cylinder/cylinder-handler.ts
new file mode 100644
index 0000000..36e4de6
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/cylinder/cylinder-handler.ts
@@ -0,0 +1,39 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function cylinderHandler(cylinderOptions) {
+ const cylinderSchema = {
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ depth: 'number',
+ edgeColor: 'HIColor',
+ edgeWidth: 'number',
+ groupPadding: 'number',
+ groupZPadding: 'number',
+ grouping: 'number',
+ maxPointWidth: 'number',
+ minPointLength: 'number',
+ pointPadding: 'number',
+ pointRange: 'number',
+ pointWidth: 'number',
+ };
+
+ if (cylinderOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of cylinderOptions) {
+ const cylinder = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HICylinder() : new HICylinder();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(cylinderSchema, opts, cylinder)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const cylinder = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HICylinder() : new HICylinder();
+ return seriesHandler(cylinderOptions, optionsBuilder(cylinderSchema, cylinderOptions, cylinder));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/dependencywheel/dependencywheel-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/dependencywheel/dependencywheel-handler.ts
new file mode 100644
index 0000000..52e634a
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/dependencywheel/dependencywheel-handler.ts
@@ -0,0 +1,36 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function dependencywheelHandler(dependencywheelOptions) {
+ const dependencywheelSchema = {
+ borderColor: 'HIColor',
+ borderWidth: 'number',
+ center: 'Array',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ curveFactor: 'number',
+ levels: 'HILevels', // array
+ linkOpacity: 'number',
+ minLinkWidth: 'number',
+ nodePadding: 'number',
+ nodeWidth: 'number',
+ nodes: 'HINodes', // array
+ startAngle: 'number',
+ };
+
+ if (dependencywheelOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of dependencywheelOptions) {
+ const dependencywheel = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIDependencywheel() : new HIDependencywheel();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(dependencywheelSchema, opts, dependencywheel)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const dependencywheel = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIDependencywheel() : new HIDependencywheel();
+ return seriesHandler(dependencywheelOptions, optionsBuilder(dependencywheelSchema, dependencywheelOptions, dependencywheel));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/dumbbell/dumbbell-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/dumbbell/dumbbell-handler.ts
new file mode 100644
index 0000000..3ac0a88
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/dumbbell/dumbbell-handler.ts
@@ -0,0 +1,30 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function dumbbellHandler(dumbbellOptions) {
+ const dumbbellSchema = {
+ connectorColor: 'string',
+ connectorWidth: 'number',
+ groupPadding: 'number',
+ lineColor: 'HIColor',
+ lowColor: 'HIColor',
+ negativeFillColor: 'HIColor',
+ pointPadding: 'number',
+ pointRange: 'number',
+ };
+
+ if (dumbbellOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of dumbbellOptions) {
+ const dumbbell = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIDumbbell() : new HIDumbbell();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(dumbbellSchema, opts, dumbbell)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const dumbbell = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIDumbbell() : new HIDumbbell();
+ return seriesHandler(dumbbellOptions, optionsBuilder(dumbbellSchema, dumbbellOptions, dumbbell));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/errorbar/errorbar-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/errorbar/errorbar-handler.ts
new file mode 100644
index 0000000..dc4f0a9
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/errorbar/errorbar-handler.ts
@@ -0,0 +1,46 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function errorbarHandler(errorbarOptions) {
+ const errorbarSchema = {
+ boxDashStyle: 'string',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ depth: 'number',
+ edgeColor: 'HIColor',
+ edgeWidth: 'number',
+ fillColor: 'HIColor',
+ groupPadding: 'number',
+ grouping: 'number',
+ maxPointWidth: 'number',
+ medianColor: 'HIColor',
+ medianDashStyle: 'string',
+ medianWidth: 'number',
+ minPointLength: 'number',
+ pointPadding: 'number',
+ pointRange: 'number',
+ pointWidth: 'number',
+ stemDashStyle: 'string',
+ stemWidth: 'number',
+ whiskerColor: 'HIColor',
+ whiskerDashStyle: 'string',
+ whiskerLength: 'number',
+ whiskerWidth: 'number',
+ };
+
+ if (errorbarOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of errorbarOptions) {
+ const errorbar = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIErrorbar() : new HIErrorbar();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(errorbarSchema, opts, errorbar)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const errorbar = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIErrorbar() : new HIErrorbar();
+ return seriesHandler(errorbarOptions, optionsBuilder(errorbarSchema, errorbarOptions, errorbar));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/funnel/funnel-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/funnel/funnel-handler.ts
new file mode 100644
index 0000000..0ef5df0
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/funnel/funnel-handler.ts
@@ -0,0 +1,38 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function funnelHandler(funnelOptions) {
+ const funnelSchema = {
+ borderColor: 'HIColor',
+ borderWidth: 'number',
+ center: 'Array',
+ colors: 'HIColor',
+ depth: 'number',
+ endAngle: 'number',
+ fillColor: 'HIColor',
+ height: 'number',
+ ignoreHiddenPoint: 'number',
+ minSize: 'number',
+ neckHeight: 'number',
+ neckWidth: 'number',
+ reversed: 'number',
+ slicedOffset: 'number',
+ startAngle: 'number',
+ width: 'number',
+ };
+
+ if (funnelOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of funnelOptions) {
+ const funnel = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIFunnel() : new HIFunnel();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(funnelSchema, opts, funnel)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const funnel = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIFunnel() : new HIFunnel();
+ return seriesHandler(funnelOptions, optionsBuilder(funnelSchema, funnelOptions, funnel));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/funnel3d/funnel3d-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/funnel3d/funnel3d-handler.ts
new file mode 100644
index 0000000..10322c1
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/funnel3d/funnel3d-handler.ts
@@ -0,0 +1,45 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function funnel3dHandler(funnel3dOptions) {
+ const funnel3dSchema = {
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ depth: 'number',
+ edgeColor: 'HIColor',
+ edgeWidth: 'number',
+ gradientForSides: 'number',
+ groupPadding: 'number',
+ groupZPadding: 'number',
+ grouping: 'number',
+ height: 'number',
+ maxPointWidth: 'number',
+ minPointLength: 'number',
+ neckHeight: 'number',
+ neckWidth: 'number',
+ pointPadding: 'number',
+ pointRange: 'number',
+ pointWidth: 'number',
+ reversed: 'number',
+ width: 'number',
+ };
+
+ if (funnel3dOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of funnel3dOptions) {
+ const funnel3d = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIFunnel3d() : new HIFunnel3d();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(funnel3dSchema, opts, funnel3d)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const funnel3d = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIFunnel3d() : new HIFunnel3d();
+ return seriesHandler(funnel3dOptions, optionsBuilder(funnel3dSchema, funnel3dOptions, funnel3d));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/gauge/gauge-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/gauge/gauge-handler.ts
new file mode 100644
index 0000000..7d1ae82
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/gauge/gauge-handler.ts
@@ -0,0 +1,26 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function gaugeHandler(gaugeOptions) {
+ const gaugeSchema = {
+ dial: 'HIDial',
+ overshoot: 'number',
+ pivot: 'HIPivot',
+ wrap: 'number',
+ };
+
+ if (gaugeOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of gaugeOptions) {
+ const gauge = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIGauge() : new HIGauge();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(gaugeSchema, opts, gauge)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const gauge = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIGauge() : new HIGauge();
+ return seriesHandler(gaugeOptions, optionsBuilder(gaugeSchema, gaugeOptions, gauge));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/heatmap/heatmap-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/heatmap/heatmap-handler.ts
new file mode 100644
index 0000000..5e49c47
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/heatmap/heatmap-handler.ts
@@ -0,0 +1,26 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function heatmapHandler(heatmapOptions) {
+ const heatmapSchema = {
+ colsize: 'number',
+ nullColor: 'HIColor',
+ pointPadding: 'number',
+ rowsize: 'number',
+ };
+
+ if (heatmapOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of heatmapOptions) {
+ const heatmap = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIHeatmap() : new HIHeatmap();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(heatmapSchema, opts, heatmap)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const heatmap = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIHeatmap() : new HIHeatmap();
+ return seriesHandler(heatmapOptions, optionsBuilder(heatmapSchema, heatmapOptions, heatmap));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/histogram/histogram-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/histogram/histogram-handler.ts
new file mode 100644
index 0000000..5172e97
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/histogram/histogram-handler.ts
@@ -0,0 +1,42 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function histogramHandler(histogramOptions) {
+ const histogramSchema = {
+ baseSeries: 'number',
+ binWidth: 'number',
+ binsNumber: 'number',
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ depth: 'number',
+ edgeColor: 'HIColor',
+ edgeWidth: 'number',
+ groupPadding: 'number',
+ groupZPadding: 'number',
+ grouping: 'number',
+ maxPointWidth: 'number',
+ minPointLength: 'number',
+ pointPadding: 'number',
+ pointRange: 'number',
+ pointWidth: 'number',
+ };
+
+ if (histogramOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of histogramOptions) {
+ const histogram = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIHistogram() : new HIHistogram();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(histogramSchema, opts, histogram)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const histogram = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIHistogram() : new HIHistogram();
+ return seriesHandler(histogramOptions, optionsBuilder(histogramSchema, histogramOptions, histogram));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/item/item-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/item/item-handler.ts
new file mode 100644
index 0000000..dd47a41
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/item/item-handler.ts
@@ -0,0 +1,34 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function itemHandler(itemOptions) {
+ const itemSchema = {
+ center: 'Array',
+ colors: 'HIColor',
+ endAngle: 'number',
+ fillColor: 'HIColor',
+ ignoreHiddenPoint: 'number',
+ innerSize: 'number',
+ itemPadding: 'number',
+ layout: 'string',
+ minSize: 'number',
+ rows: 'number',
+ size: 'number',
+ startAngle: 'number',
+ };
+
+ if (itemOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of itemOptions) {
+ const item = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIItem() : new HIItem();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(itemSchema, opts, item)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const item = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIItem() : new HIItem();
+ return seriesHandler(itemOptions, optionsBuilder(itemSchema, itemOptions, item));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/line/line-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/line/line-handler.ts
new file mode 100644
index 0000000..267a87f
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/line/line-handler.ts
@@ -0,0 +1,19 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative } from '../../helpers/helpers';
+
+export function lineHandler(lineOptions) {
+ if (lineOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of lineOptions) {
+ const line = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HILine() : new HILine();
+ seriesArr.push(seriesHandler(opts, line));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const line = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HILine() : new HILine();
+ return seriesHandler(lineOptions, line);
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/lollipop/lollipop-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/lollipop/lollipop-handler.ts
new file mode 100644
index 0000000..8c242d1
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/lollipop/lollipop-handler.ts
@@ -0,0 +1,29 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function lollipopHandler(lollipopOptions) {
+ const lollipopSchema = {
+ connectorColor: 'string',
+ connectorWidth: 'number',
+ groupPadding: 'number',
+ lineColor: 'HIColor',
+ negativeFillColor: 'HIColor',
+ pointPadding: 'number',
+ pointRange: 'number',
+ };
+
+ if (lollipopOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of lollipopOptions) {
+ const lollipop = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HILollipop() : new HILollipop();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(lollipopSchema, opts, lollipop)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const lollipop = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HILollipop() : new HILollipop();
+ return seriesHandler(lollipopOptions, optionsBuilder(lollipopSchema, lollipopOptions, lollipop));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/networkgraph/networkgraph-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/networkgraph/networkgraph-handler.ts
new file mode 100644
index 0000000..6d9bf4a
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/networkgraph/networkgraph-handler.ts
@@ -0,0 +1,26 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function networkgraphHandler(networkgraphOptions) {
+ const networkgraphSchema = {
+ draggable: 'number',
+ layoutAlgorithm: 'HILayoutAlgorithm',
+ link: 'HILink',
+ nodes: 'HINodes', // array
+ };
+
+ if (networkgraphOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of networkgraphOptions) {
+ const networkgraph = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HINetworkgraph() : new HINetworkgraph();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(networkgraphSchema, opts, networkgraph)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const networkgraph = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HINetworkgraph() : new HINetworkgraph();
+ return seriesHandler(networkgraphOptions, optionsBuilder(networkgraphSchema, networkgraphOptions, networkgraph));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/organization/organization-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/organization/organization-handler.ts
new file mode 100644
index 0000000..8687f96
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/organization/organization-handler.ts
@@ -0,0 +1,38 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function organizationHandler(organizationOptions) {
+ const organizationSchema = {
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ hangingIndent: 'number',
+ levels: 'HILevels', // array
+ linkColor: 'HIColor',
+ linkLineWidth: 'number',
+ linkOpacity: 'number',
+ linkRadius: 'number',
+ minLinkWidth: 'number',
+ nodePadding: 'number',
+ nodeWidth: 'number',
+ nodes: 'HINodes', // array
+ };
+
+ if (organizationOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of organizationOptions) {
+ const organization = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIOrganization() : new HIOrganization();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(organizationSchema, opts, organization)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const organization = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIOrganization() : new HIOrganization();
+ return seriesHandler(organizationOptions, optionsBuilder(organizationSchema, organizationOptions, organization));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/packedbubble/packedbubble-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/packedbubble/packedbubble-handler.ts
new file mode 100644
index 0000000..26edce5
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/packedbubble/packedbubble-handler.ts
@@ -0,0 +1,31 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function packedbubbleHandler(packedbubbleOptions) {
+ const packedbubbleSchema = {
+ displayNegative: 'number',
+ draggable: 'number',
+ layoutAlgorithm: 'HILayoutAlgorithm',
+ maxSize: 'number',
+ minSize: 'number',
+ parentNode: 'HIParentNode',
+ sizeBy: 'string',
+ useSimulation: 'number',
+ zThreshold: 'number',
+ };
+
+ if (packedbubbleOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of packedbubbleOptions) {
+ const packedbubble = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPackedbubble() : new HIPackedbubble();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(packedbubbleSchema, opts, packedbubble)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const packedbubble = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPackedbubble() : new HIPackedbubble();
+ return seriesHandler(packedbubbleOptions, optionsBuilder(packedbubbleSchema, packedbubbleOptions, packedbubble));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/pareto/pareto-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/pareto/pareto-handler.ts
new file mode 100644
index 0000000..d2515af
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/pareto/pareto-handler.ts
@@ -0,0 +1,23 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function paretoHandler(paretoOptions) {
+ const paretoSchema = {
+ baseSeries: 'number',
+ };
+
+ if (paretoOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of paretoOptions) {
+ const pareto = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPareto() : new HIPareto();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(paretoSchema, opts, pareto)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const pareto = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPareto() : new HIPareto();
+ return seriesHandler(paretoOptions, optionsBuilder(paretoSchema, paretoOptions, pareto));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/pie/pie-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/pie/pie-handler.ts
new file mode 100644
index 0000000..d01b462
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/pie/pie-handler.ts
@@ -0,0 +1,35 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function pieHandler(pieOptions) {
+ const pieSchema = {
+ borderColor: 'HIColor',
+ borderWidth: 'number',
+ center: 'Array',
+ colors: 'HIColor',
+ depth: 'number',
+ endAngle: 'number',
+ fillColor: 'HIColor',
+ ignoreHiddenPoint: 'number',
+ innerSize: 'number',
+ minSize: 'number',
+ size: 'number',
+ slicedOffset: 'number',
+ startAngle: 'number',
+ };
+
+ if (pieOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of pieOptions) {
+ const pie = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPie() : new HIPie();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(pieSchema, opts, pie)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const pie = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPie() : new HIPie();
+ return seriesHandler(pieOptions, optionsBuilder(pieSchema, pieOptions, pie));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/polygon/polygon-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/polygon/polygon-handler.ts
new file mode 100644
index 0000000..0d1c79b
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/polygon/polygon-handler.ts
@@ -0,0 +1,23 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function polygonHandler(polygonOptions) {
+ const polygonSchema = {
+ trackByArea: 'number',
+ };
+
+ if (polygonOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of polygonOptions) {
+ const polygon = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPolygon() : new HIPolygon();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(polygonSchema, opts, polygon)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const polygon = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPolygon() : new HIPolygon();
+ return seriesHandler(polygonOptions, optionsBuilder(polygonSchema, polygonOptions, polygon));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/pyramid/pyramid-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/pyramid/pyramid-handler.ts
new file mode 100644
index 0000000..96a1c2d
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/pyramid/pyramid-handler.ts
@@ -0,0 +1,38 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function pyramidHandler(pyramidOptions) {
+ const pyramidSchema = {
+ borderColor: 'HIColor',
+ borderWidth: 'number',
+ center: 'Array',
+ colors: 'HIColor',
+ depth: 'number',
+ endAngle: 'number',
+ fillColor: 'HIColor',
+ height: 'number',
+ ignoreHiddenPoint: 'number',
+ minSize: 'number',
+ neckHeight: 'string',
+ neckWidth: 'string',
+ reversed: 'number',
+ slicedOffset: 'number',
+ startAngle: 'number',
+ width: 'number',
+ };
+
+ if (pyramidOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of pyramidOptions) {
+ const pyramid = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPyramid() : new HIPyramid();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(pyramidSchema, opts, pyramid)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const pyramid = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPyramid() : new HIPyramid();
+ return seriesHandler(pyramidOptions, optionsBuilder(pyramidSchema, pyramidOptions, pyramid));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/pyramid3d/pyramid3d-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/pyramid3d/pyramid3d-handler.ts
new file mode 100644
index 0000000..39d0da9
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/pyramid3d/pyramid3d-handler.ts
@@ -0,0 +1,43 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function pyramid3dHandler(pyramid3dOptions) {
+ const pyramid3dSchema = {
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ depth: 'number',
+ edgeColor: 'HIColor',
+ edgeWidth: 'number',
+ gradientForSides: 'number',
+ groupPadding: 'number',
+ groupZPadding: 'number',
+ grouping: 'number',
+ height: 'number',
+ maxPointWidth: 'number',
+ minPointLength: 'number',
+ pointPadding: 'number',
+ pointRange: 'number',
+ pointWidth: 'number',
+ reversed: 'number',
+ width: 'number',
+ };
+
+ if (pyramid3dOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of pyramid3dOptions) {
+ const pyramid3d = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPyramid3d() : new HIPyramid3d();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(pyramid3dSchema, opts, pyramid3d)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const pyramid3d = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIPyramid3d() : new HIPyramid3d();
+ return seriesHandler(pyramid3dOptions, optionsBuilder(pyramid3dSchema, pyramid3dOptions, pyramid3d));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/sankey/sankey-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/sankey/sankey-handler.ts
new file mode 100644
index 0000000..1fea76d
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/sankey/sankey-handler.ts
@@ -0,0 +1,34 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function sankeyHandler(sankeyOptions) {
+ const sankeySchema = {
+ borderColor: 'HIColor',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ curveFactor: 'number',
+ levels: 'HILevels', // array
+ linkOpacity: 'number',
+ minLinkWidth: 'number',
+ nodePadding: 'number',
+ nodeWidth: 'number',
+ nodes: 'HINodes', // array
+ };
+
+ if (sankeyOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of sankeyOptions) {
+ const sankey = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HISankey() : new HISankey();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(sankeySchema, opts, sankey)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const sankey = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HISankey() : new HISankey();
+ return seriesHandler(sankeyOptions, optionsBuilder(sankeySchema, sankeyOptions, sankey));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/scatter/scatter-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/scatter/scatter-handler.ts
new file mode 100644
index 0000000..116235a
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/scatter/scatter-handler.ts
@@ -0,0 +1,24 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function scatterHandler(scatterOptions) {
+ const scatterSchema = {
+ cluster: 'HICluster',
+ jitter: 'HIJitter',
+ };
+
+ if (scatterOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of scatterOptions) {
+ const scatter = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIScatter() : new HIScatter();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(scatterSchema, opts, scatter)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const scatter = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIScatter() : new HIScatter();
+ return seriesHandler(scatterOptions, optionsBuilder(scatterSchema, scatterOptions, scatter));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/scatter3d/scatter3d-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/scatter3d/scatter3d-handler.ts
new file mode 100644
index 0000000..d6f83ba
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/scatter3d/scatter3d-handler.ts
@@ -0,0 +1,23 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function scatter3dHandler(scatter3dOptions) {
+ const scatter3dSchema = {
+ jitter: 'HIJitter',
+ };
+
+ if (scatter3dOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of scatter3dOptions) {
+ const scatter3d = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIScatter3d() : new HIScatter3d();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(scatter3dSchema, opts, scatter3d)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const scatter3d = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIScatter3d() : new HIScatter3d();
+ return seriesHandler(scatter3dOptions, optionsBuilder(scatter3dSchema, scatter3dOptions, scatter3d));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/series-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/series-handler.ts
new file mode 100644
index 0000000..23f95d8
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/series-handler.ts
@@ -0,0 +1,129 @@
+import { isAndroid } from '@nativescript/core';
+import { dataHandler } from '../data/data-handler';
+import { optionsBuilder, toArrayList, convertJSArrayToNative, fromJSToNativePrimitive } from '../helpers/helpers';
+
+export function seriesHandler(seriesOptions, seriesSubClass?) {
+ const seriesSchema = {
+ accessibility: 'HIAccessibility',
+ allowPointSelect: 'number',
+ animation: 'HIAnimationOptionsObject',
+ animationLimit: 'number',
+ boostBlending: 'string',
+ boostThreshold: 'number',
+ className: 'string',
+ clip: 'number',
+ color: 'HIColor',
+ colorAxis: 'number',
+ colorIndex: 'number',
+ colorKey: 'string',
+ connectEnds: 'number',
+ connectNulls: 'number',
+ crisp: 'number',
+ cropThreshold: 'number',
+ cursor: 'string',
+ // custom: 'NSDictionary',
+ // data: 'handled manually',
+ dashStyle: 'string',
+ dataLabels: 'HIDataLabels', // array
+ dataSorting: 'HIDataSortingOptionsObject',
+ definition: 'string',
+ describeSingleSeries: 'number',
+ descriptionFormatter: 'HIFunction',
+ dragDrop: 'HIDragDrop',
+ enableMouseTracking: 'number',
+ events: 'HIEvents',
+ findNearestPointBy: 'string',
+ getExtremesFromAll: 'number',
+ id: 'string',
+ includeInDataExport: 'number',
+ index: 'number',
+ keys: 'Array',
+ label: 'HILabel',
+ legendIndex: 'number',
+ lineWidth: 'number',
+ linecap: 'string',
+ linkedTo: 'string',
+ marker: 'HIMarker',
+ name: 'string',
+ negativeColor: 'HIColor',
+ nullPointValue: 'string',
+ opacity: 'number',
+ point: 'HIPoint',
+ pointAnnotationsDescription: 'string',
+ pointDescriptionEnabledThreshold: 'number',
+ pointDescriptionFormatter: 'HIFunction',
+ pointInterval: 'number',
+ pointIntervalUnit: 'string',
+ pointPlacement: 'number',
+ pointStart: 'number',
+ selected: 'number',
+ shadow: 'HIShadowOptionsObject',
+ showCheckbox: 'number',
+ showInLegend: isAndroid ? 'boolean' : 'number',
+ skipKeyboardNavigation: 'number',
+ softThreshold: 'number',
+ stack: 'string',
+ stacking: 'string',
+ states: 'HIStates',
+ step: 'string',
+ stickyTracking: 'number',
+ summary: 'HISummary',
+ threshold: 'number',
+ tooltip: 'HITooltip',
+ turboThreshold: 'number',
+ type: 'string',
+ visible: 'number',
+ xAxis: 'number',
+ xAxisDescription: 'string',
+ yAxis: 'number',
+ yAxisDescription: 'string',
+ zIndex: 'number',
+ zoneAxis: 'string',
+ zones: 'HIZones', // array
+ };
+
+ const series = isAndroid ? seriesSubClass || new com.highsoft.highcharts.common.hichartsclasses.HISeries() : seriesSubClass || new HISeries();
+ const sOpts = seriesOptions;
+ if (sOpts.data && isAndroid) {
+ if (sOpts.data[0] !== null && typeof sOpts.data[0] !== 'undefined' && sOpts.data[0].length) {
+ const data = sOpts.data.map((item) => {
+ const innerArray = [];
+ for (let i = 0; i < item.length; i++) {
+ if (i === 0) {
+ if (typeof item[0] === 'string') {
+ innerArray.push(item[0]);
+ } else {
+ innerArray.push(new java.lang.Long(item[0]));
+ }
+ } else {
+ innerArray.push(fromJSToNativePrimitive(item[i]));
+ }
+ }
+
+ return toArrayList(innerArray);
+ });
+ (series).setData(toArrayList(data));
+ } else if (sOpts.data.length && typeof sOpts.data[0] === 'object') {
+ const data = convertJSArrayToNative(
+ sOpts.data.map((item) => {
+ return item ? dataHandler(item) : undefined;
+ })
+ );
+ (series).setData(data);
+ } else {
+ (series).setData(convertJSArrayToNative(sOpts.data));
+ }
+ } else if (sOpts.data) {
+ (series).data = new NSArray({
+ array: sOpts.data.map((v) => {
+ if (v instanceof Array) {
+ v = v.map((i) => (i === null ? NSNull.new() : i));
+ }
+
+ return v === null ? NSNull.new() : dataHandler(v);
+ }),
+ });
+ }
+
+ return optionsBuilder(seriesSchema, seriesOptions, series);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/solidgauge/solidgauge-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/solidgauge/solidgauge-handler.ts
new file mode 100644
index 0000000..57bbb3c
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/solidgauge/solidgauge-handler.ts
@@ -0,0 +1,27 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function solidgaugeHandler(solidgaugeOptions) {
+ const solidgaugeSchema = {
+ colorByPoint: 'number',
+ innerRadius: 'number',
+ overshoot: 'number',
+ radius: 'number',
+ rounded: 'number',
+ };
+
+ if (solidgaugeOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of solidgaugeOptions) {
+ const solidgauge = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HISolidgauge() : new HISolidgauge();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(solidgaugeSchema, opts, solidgauge)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const solidgauge = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HISolidgauge() : new HISolidgauge();
+ return seriesHandler(solidgaugeOptions, optionsBuilder(solidgaugeSchema, solidgaugeOptions, solidgauge));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/spline/spline-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/spline/spline-handler.ts
new file mode 100644
index 0000000..f84175f
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/spline/spline-handler.ts
@@ -0,0 +1,19 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function splineHandler(splineOptions) {
+ if (splineOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of splineOptions) {
+ const spline = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HISpline() : new HISpline();
+ seriesArr.push(seriesHandler(opts, spline));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const spline = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HISpline() : new HISpline();
+ return seriesHandler(splineOptions, spline);
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/streamgraph/streamgraph-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/streamgraph/streamgraph-handler.ts
new file mode 100644
index 0000000..2aa0403
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/streamgraph/streamgraph-handler.ts
@@ -0,0 +1,27 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function streamgraphHandler(streamgraphOptions) {
+ const streamgraphSchema = {
+ fillColor: 'HIColor',
+ fillOpacity: 'number',
+ lineColor: 'HIColor',
+ negativeFillColor: 'HIColor',
+ trackByArea: 'number',
+ };
+
+ if (streamgraphOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of streamgraphOptions) {
+ const streamgraph = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIStreamgraph() : new HIStreamgraph();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(streamgraphSchema, opts, streamgraph)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const streamgraph = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIStreamgraph() : new HIStreamgraph();
+ return seriesHandler(streamgraphOptions, optionsBuilder(streamgraphSchema, streamgraphOptions, streamgraph));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/sunburst/sunburst-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/sunburst/sunburst-handler.ts
new file mode 100644
index 0000000..0bc2805
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/sunburst/sunburst-handler.ts
@@ -0,0 +1,37 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function sunburstHandler(sunburstOptions) {
+ const sunburstSchema = {
+ allowTraversingTree: 'number',
+ borderColor: 'HIColor',
+ borderWidth: 'number',
+ center: 'Array',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ fillColor: 'HIColor',
+ levelIsConstant: 'number',
+ levelSize: 'HILevelSize',
+ levels: 'HILevels', // array
+ rootId: 'string',
+ size: 'number',
+ slicedOffset: 'number',
+ startAngle: 'number',
+ traverseUpButton: 'HITraverseUpButton',
+ };
+
+ if (sunburstOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of sunburstOptions) {
+ const sunburst = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HISunburst() : new HISunburst();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(sunburstSchema, opts, sunburst)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const sunburst = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HISunburst() : new HISunburst();
+ return seriesHandler(sunburstOptions, optionsBuilder(sunburstSchema, sunburstOptions, sunburst));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/tilemap/tilemap-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/tilemap/tilemap-handler.ts
new file mode 100644
index 0000000..af6eba5
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/tilemap/tilemap-handler.ts
@@ -0,0 +1,27 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function tilemapHandler(tilemapOptions) {
+ const tilemapSchema = {
+ colsize: 'number',
+ nullColor: 'HIColor',
+ pointPadding: 'number',
+ rowsize: 'number',
+ tileShape: 'string',
+ };
+
+ if (tilemapOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of tilemapOptions) {
+ const tilemap = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HITilemap() : new HITilemap();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(tilemapSchema, opts, tilemap)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const tilemap = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HITilemap() : new HITilemap();
+ return seriesHandler(tilemapOptions, optionsBuilder(tilemapSchema, tilemapOptions, tilemap));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/timeline/timeline-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/timeline/timeline-handler.ts
new file mode 100644
index 0000000..e23da1b
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/timeline/timeline-handler.ts
@@ -0,0 +1,25 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function timelineHandler(timelineOptions) {
+ const timelineSchema = {
+ colorByPoint: 'number',
+ ignoreHiddenPoint: 'number',
+ legendType: 'string',
+ };
+
+ if (timelineOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of timelineOptions) {
+ const timeline = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HITimeline() : new HITimeline();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(timelineSchema, opts, timeline)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const timeline = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HITimeline() : new HITimeline();
+ return seriesHandler(timelineOptions, optionsBuilder(timelineSchema, timelineOptions, timeline));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/treemap/treemap-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/treemap/treemap-handler.ts
new file mode 100644
index 0000000..728a4d1
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/treemap/treemap-handler.ts
@@ -0,0 +1,35 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function treemapHandler(treemapOptions) {
+ const treemapSchema = {
+ allowTraversingTree: 'number',
+ alternateStartingDirection: 'number',
+ cluster: 'HICluster',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ ignoreHiddenPoint: 'number',
+ interactByLeaf: 'number',
+ layoutAlgorithm: 'string',
+ layoutStartingDirection: 'string',
+ levelIsConstant: 'number',
+ levels: 'HILevels', // array
+ sortIndex: 'number',
+ traverseUpButton: 'HITraverseUpButton',
+ };
+
+ if (treemapOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of treemapOptions) {
+ const treemap = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HITreemap() : new HITreemap();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(treemapSchema, opts, treemap)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const treemap = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HITreemap() : new HITreemap();
+ return seriesHandler(treemapOptions, optionsBuilder(treemapSchema, treemapOptions, treemap));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/variablepie/variablepie-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/variablepie/variablepie-handler.ts
new file mode 100644
index 0000000..94b0388
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/variablepie/variablepie-handler.ts
@@ -0,0 +1,40 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function variablepieHandler(variablepieOptions) {
+ const variablepieSchema = {
+ borderColor: 'HIColor',
+ borderWidth: 'number',
+ center: 'Array',
+ colors: 'HIColor',
+ depth: 'number',
+ endAngle: 'number',
+ fillColor: 'HIColor',
+ ignoreHiddenPoint: 'number',
+ innerSize: 'number',
+ maxPointSize: 'number',
+ minPointSize: 'number',
+ minSize: 'number',
+ size: 'number',
+ sizeBy: 'string',
+ slicedOffset: 'number',
+ startAngle: 'number',
+ zMax: 'number',
+ zMin: 'number',
+ };
+
+ if (variablepieOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of variablepieOptions) {
+ const variablepie = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIVariablepie() : new HIVariablepie();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(variablepieSchema, opts, variablepie)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const variablepie = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIVariablepie() : new HIVariablepie();
+ return seriesHandler(variablepieOptions, optionsBuilder(variablepieSchema, variablepieOptions, variablepie));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/variwide/variwide-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/variwide/variwide-handler.ts
new file mode 100644
index 0000000..4a05fb3
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/variwide/variwide-handler.ts
@@ -0,0 +1,35 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function variwideHandler(variwideOptions) {
+ const variwideSchema = {
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ groupPadding: 'number',
+ grouping: 'number',
+ maxPointWidth: 'number',
+ minPointLength: 'number',
+ pointPadding: 'number',
+ pointRange: 'number',
+ pointWidth: 'number',
+ };
+
+ if (variwideOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of variwideOptions) {
+ const variwide = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIVariwide() : new HIVariwide();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(variwideSchema, opts, variwide)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const variwide = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIVariwide() : new HIVariwide();
+ return seriesHandler(variwideOptions, optionsBuilder(variwideSchema, variwideOptions, variwide));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/vector/vector-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/vector/vector-handler.ts
new file mode 100644
index 0000000..52f3688
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/vector/vector-handler.ts
@@ -0,0 +1,25 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function vectorHandler(vectorOptions) {
+ const vectorSchema = {
+ cluster: 'HICluster',
+ rotationOrigin: 'string',
+ vectorLength: 'number',
+ };
+
+ if (vectorOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of vectorOptions) {
+ const vector = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIVector() : new HIVector();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(vectorSchema, opts, vector)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const vector = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIVector() : new HIVector();
+ return seriesHandler(vectorOptions, optionsBuilder(vectorSchema, vectorOptions, vector));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/venn/venn-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/venn/venn-handler.ts
new file mode 100644
index 0000000..917f0af
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/venn/venn-handler.ts
@@ -0,0 +1,26 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function vennHandler(vennOptions) {
+ const vennSchema = {
+ borderDashStyle: 'string',
+ brighten: 'number',
+ cluster: 'HICluster',
+ colorByPoint: 'number',
+ };
+
+ if (vennOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of vennOptions) {
+ const venn = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIVenn() : new HIVenn();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(vennSchema, opts, venn)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const venn = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIVenn() : new HIVenn();
+ return seriesHandler(vennOptions, optionsBuilder(vennSchema, vennOptions, venn));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/waterfall/waterfall-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/waterfall/waterfall-handler.ts
new file mode 100644
index 0000000..7c1dbf4
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/waterfall/waterfall-handler.ts
@@ -0,0 +1,41 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function waterfallHandler(waterfallOptions) {
+ const waterfallSchema = {
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ depth: 'number',
+ edgeColor: 'HIColor',
+ edgeWidth: 'number',
+ groupPadding: 'number',
+ groupZPadding: 'number',
+ grouping: 'number',
+ lineColor: 'HIColor',
+ maxPointWidth: 'number',
+ minPointLength: 'number',
+ pointPadding: 'number',
+ pointRange: 'number',
+ pointWidth: 'number',
+ upColor: 'HIColor',
+ };
+
+ if (waterfallOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of waterfallOptions) {
+ const waterfall = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIWaterfall() : new HIWaterfall();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(waterfallSchema, opts, waterfall)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const waterfall = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIWaterfall() : new HIWaterfall();
+ return seriesHandler(waterfallOptions, optionsBuilder(waterfallSchema, waterfallOptions, waterfall));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/windbarb/windbarb-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/windbarb/windbarb-handler.ts
new file mode 100644
index 0000000..ae5c896
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/windbarb/windbarb-handler.ts
@@ -0,0 +1,44 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function windbarbHandler(windbarbOptions) {
+ const windbarbSchema = {
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ dataGrouping: 'HIDataGrouping',
+ depth: 'number',
+ edgeColor: 'HIColor',
+ edgeWidth: 'number',
+ groupPadding: 'number',
+ groupZPadding: 'number',
+ grouping: 'number',
+ maxPointWidth: 'number',
+ minPointLength: 'number',
+ onSeries: 'string',
+ pointPadding: 'number',
+ pointRange: 'number',
+ pointWidth: 'number',
+ vectorLength: 'number',
+ xOffset: 'number',
+ yOffset: 'number',
+ };
+
+ if (windbarbOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of windbarbOptions) {
+ const windbarb = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIWindbarb() : new HIWindbarb();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(windbarbSchema, opts, windbarb)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const windbarb = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIWindbarb() : new HIWindbarb();
+ return seriesHandler(windbarbOptions, optionsBuilder(windbarbSchema, windbarbOptions, windbarb));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/wordcloud/wordcloud-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/wordcloud/wordcloud-handler.ts
new file mode 100644
index 0000000..9e04f51
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/wordcloud/wordcloud-handler.ts
@@ -0,0 +1,36 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function wordcloudHandler(wordcloudOptions) {
+ const wordcloudSchema = {
+ allowExtendPlayingField: 'number',
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ edgeWidth: 'number',
+ maxFontSize: 'number',
+ minFontSize: 'number',
+ placementStrategy: 'string',
+ rotation: 'HIRotation',
+ spiral: 'string',
+ style: 'HICSSObject',
+ };
+
+ if (wordcloudOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of wordcloudOptions) {
+ const wordcloud = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIWordcloud() : new HIWordcloud();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(wordcloudSchema, opts, wordcloud)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const wordcloud = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIWordcloud() : new HIWordcloud();
+ return seriesHandler(wordcloudOptions, optionsBuilder(wordcloudSchema, wordcloudOptions, wordcloud));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/series/xrange/xrange-handler.ts b/packages/nativescript-ui-charts/options-handlers/series/xrange/xrange-handler.ts
new file mode 100644
index 0000000..99ab378
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/series/xrange/xrange-handler.ts
@@ -0,0 +1,36 @@
+import { isAndroid } from '@nativescript/core';
+import { seriesHandler } from '../series-handler';
+import { convertJSArrayToNative, optionsBuilder } from '../../helpers/helpers';
+
+export function xrangeHandler(xrangeOptions) {
+ const xrangeSchema = {
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ centerInCategory: 'number',
+ colorByPoint: 'number',
+ colors: 'HIColor',
+ groupPadding: 'number',
+ groupZPadding: 'number',
+ grouping: 'number',
+ maxPointWidth: 'number',
+ minPointLength: 'number',
+ partialFill: 'HIPartialFill',
+ pointPadding: 'number',
+ pointWidth: 'number',
+ };
+
+ if (xrangeOptions instanceof Array) {
+ const seriesArr = [];
+
+ for (const opts of xrangeOptions) {
+ const xrange = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIXrange() : new HIXrange();
+ seriesArr.push(seriesHandler(opts, optionsBuilder(xrangeSchema, opts, xrange)));
+ }
+
+ return convertJSArrayToNative(seriesArr);
+ } else {
+ const xrange = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIXrange() : new HIXrange();
+ return seriesHandler(xrangeOptions, optionsBuilder(xrangeSchema, xrangeOptions, xrange));
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/shapes/shapes-handler.ts b/packages/nativescript-ui-charts/options-handlers/shapes/shapes-handler.ts
new file mode 100644
index 0000000..c138eb9
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/shapes/shapes-handler.ts
@@ -0,0 +1,36 @@
+import { optionsBuilder, convertJSArrayToNative } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function shapesHandler(shapesOptions) {
+ const shapesSchema = {
+ dashStyle: 'string',
+ fill: 'HIColor',
+ height: 'number',
+ markerEnd: 'string',
+ markerStart: 'string',
+ point: 'HIPoint',
+ points: 'HIPoints', // array
+ r: 'number',
+ snap: 'number',
+ src: 'string',
+ stroke: 'HIColor',
+ strokeWidth: 'number',
+ type: 'string',
+ width: 'number',
+ };
+
+ if (shapesOptions instanceof Array) {
+ const shapesArray = [];
+
+ for (let i = 0; i < shapesOptions.length; i++) {
+ const shapes = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIShapes() : new HIShapes();
+ shapesArray.push(optionsBuilder(shapesSchema, shapesOptions, shapes));
+ }
+
+ return convertJSArrayToNative(shapesArray);
+ } else {
+ const shapes = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIShapes() : new HIShapes();
+
+ return optionsBuilder(shapesSchema, shapesOptions, shapes);
+ }
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/stackLabels/stackLabels-handler.ts b/packages/nativescript-ui-charts/options-handlers/stackLabels/stackLabels-handler.ts
new file mode 100644
index 0000000..029e9af
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/stackLabels/stackLabels-handler.ts
@@ -0,0 +1,29 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function stackLabelsHandler(stackLabelsOptions) {
+ const stackLabels = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIStackLabels() : new HIStackLabels();
+
+ const stackLabelsSchema = {
+ align: 'string',
+ allowOverlap: 'number',
+ backgroundColor: 'HIColor',
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ crop: 'number',
+ enabled: 'number',
+ format: 'string',
+ formatter: 'HIFunction',
+ overflow: 'string',
+ rotation: 'number',
+ style: 'HICSSObject',
+ textAlign: 'string',
+ useHTML: 'number',
+ verticalAlign: 'string',
+ x: 'number',
+ y: 'number',
+ };
+
+ return optionsBuilder(stackLabelsSchema, stackLabelsOptions, stackLabels);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/states/states-handler.ts b/packages/nativescript-ui-charts/options-handlers/states/states-handler.ts
new file mode 100644
index 0000000..276b1eb
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/states/states-handler.ts
@@ -0,0 +1,15 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function statesHandler(statesOptions) {
+ const states = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIStates() : new HIStates();
+
+ const statesSchema = {
+ hover: 'HIHover',
+ inactive: 'HIInactive',
+ normal: 'HINormal',
+ select: 'HISelect',
+ };
+
+ return optionsBuilder(statesSchema, statesOptions, states);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/style/style-handler.ts b/packages/nativescript-ui-charts/options-handlers/style/style-handler.ts
new file mode 100644
index 0000000..c294db7
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/style/style-handler.ts
@@ -0,0 +1,34 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function styleHandler(styleOptions) {
+ const style = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HICSSObject() : new HICSSObject();
+
+ const styleSchema = {
+ background: 'string',
+ backgroundColor: 'string',
+ border: 'string',
+ borderRadius: 'number',
+ color: 'string',
+ cursor: 'string',
+ fontFamily: 'string',
+ fontSize: 'string',
+ fontWeight: 'string',
+ height: 'number',
+ lineWidth: 'number',
+ opacity: 'number',
+ padding: 'string',
+ pointerEvents: 'string',
+ position: 'string',
+ textAlign: 'string',
+ textDecoration: 'string',
+ textOutline: 'string',
+ textOverflow: 'string',
+ top: 'string',
+ transition: 'string',
+ whiteSpace: 'string',
+ width: 'number',
+ };
+
+ return optionsBuilder(styleSchema, styleOptions, style);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/subtitle/subtitle-handler.ts b/packages/nativescript-ui-charts/options-handlers/subtitle/subtitle-handler.ts
new file mode 100644
index 0000000..5db1e26
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/subtitle/subtitle-handler.ts
@@ -0,0 +1,20 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function subtitleHandler(subtitleOptions) {
+ const subtitle = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HISubtitle() : new HISubtitle();
+
+ const subtitleSchema = {
+ align: 'string',
+ floating: 'number',
+ style: 'HICSSObject',
+ text: 'string',
+ useHTML: 'number',
+ verticalAlign: 'string',
+ widthAdjust: 'number',
+ x: 'number',
+ y: 'number',
+ };
+
+ return optionsBuilder(subtitleSchema, subtitleOptions, subtitle);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/theme/theme-handler.ts b/packages/nativescript-ui-charts/options-handlers/theme/theme-handler.ts
new file mode 100644
index 0000000..5fe856b
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/theme/theme-handler.ts
@@ -0,0 +1,15 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function themeHandler(themeOptions) {
+ const theme = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HITheme() : new HITheme();
+
+ const themeSchema = {
+ fill: 'HIColor',
+ padding: 'number',
+ stroke: 'HIColor',
+ zIndex: 'number',
+ };
+
+ return optionsBuilder(themeSchema, themeOptions, theme);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/time/time-handler.ts b/packages/nativescript-ui-charts/options-handlers/time/time-handler.ts
new file mode 100644
index 0000000..c61bd58
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/time/time-handler.ts
@@ -0,0 +1,16 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function timeHandler(titleOptions) {
+ const time = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HITime() : new HITime();
+
+ const timeSchema = {
+ Date: 'string',
+ getTimezoneOffset: 'HIFunction',
+ timezone: 'string',
+ timezoneOffset: 'number',
+ useUTC: 'number',
+ };
+
+ return optionsBuilder(timeSchema, titleOptions, time);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/title/title-handler.ts b/packages/nativescript-ui-charts/options-handlers/title/title-handler.ts
new file mode 100644
index 0000000..b751817
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/title/title-handler.ts
@@ -0,0 +1,27 @@
+import { optionsBuilder } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function titleHandler(titleOptions) {
+ const title = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HITitle() : new HITitle();
+
+ const titleSchema = {
+ align: 'string',
+ floating: 'number',
+ margin: 'number',
+ offset: 'number',
+ position3d: 'string',
+ reserveSpace: 'number',
+ rotation: 'number',
+ skew3d: 'number',
+ style: 'HICSSObject',
+ text: 'string',
+ textAlign: 'string',
+ useHTML: 'number',
+ verticalAlign: 'string',
+ widthAdjust: 'number',
+ x: 'number',
+ y: 'number',
+ };
+
+ return optionsBuilder(titleSchema, titleOptions, title);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/tooltip/tooltip-handler.ts b/packages/nativescript-ui-charts/options-handlers/tooltip/tooltip-handler.ts
new file mode 100644
index 0000000..35a62df
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/tooltip/tooltip-handler.ts
@@ -0,0 +1,49 @@
+import { isAndroid } from '@nativescript/core';
+import { optionsBuilder } from '../helpers/helpers';
+
+export function tooltipHandler(tooltipOptions) {
+ const tooltip = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HITooltip() : new HITooltip();
+
+ const tooltipSchema = {
+ animation: 'number',
+ backgroundColor: 'HIColor',
+ borderColor: 'HIColor',
+ borderRadius: 'number',
+ borderWidth: 'number',
+ className: 'string',
+ clusterFormat: 'string',
+ dateTimeLabelFormats: 'HIDateTimeLabelFormats',
+ distance: 'number',
+ enabled: 'number',
+ followPointer: 'number',
+ followTouchMove: isAndroid ? 'boolean' : 'number',
+ footerFormat: 'string',
+ formatter: 'HIFunction',
+ headerFormat: 'string',
+ headerShape: 'string',
+ hideDelay: 'number',
+ nodeFormat: 'string',
+ nodeFormatter: 'HIFunction',
+ nullFormat: 'string',
+ nullFormatter: 'HIFunction',
+ outside: 'number',
+ padding: 'number',
+ pointFormat: 'string',
+ pointFormatter: 'HIFunction',
+ positioner: 'HIFunction',
+ shadow: 'HIShadowOptionsObject',
+ shape: 'string',
+ shared: 'number',
+ snap: 'number',
+ split: 'number',
+ stickOnContact: 'number',
+ style: 'HICSSObject',
+ useHTML: 'number',
+ valueDecimals: 'number',
+ valuePrefix: 'string',
+ valueSuffix: 'string',
+ xDateFormat: 'string',
+ };
+
+ return optionsBuilder(tooltipSchema, tooltipOptions, tooltip);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/xAxis/xAxis-handler.ts b/packages/nativescript-ui-charts/options-handlers/xAxis/xAxis-handler.ts
new file mode 100644
index 0000000..8579e02
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/xAxis/xAxis-handler.ts
@@ -0,0 +1,94 @@
+import { optionsBuilder, convertJSArrayToNative } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function xAxisHandler(xAxisOptions) {
+ const xAxisSchema = {
+ accessibility: 'HIAccessibility',
+ alignTicks: 'number',
+ allowDecimals: 'number',
+ alternateGridColor: 'HIColor',
+ angle: 'number',
+ breaks: 'HIBreaks', // array
+ categories: 'Array',
+ ceiling: 'number',
+ className: 'string',
+ crosshair: 'HICrosshair',
+ dateTimeLabelFormats: 'HIDateTimeLabelFormats',
+ endOnTick: 'number',
+ events: 'HIEvents',
+ floor: 'number',
+ gridLineColor: 'HIColor',
+ gridLineDashStyle: 'string',
+ gridLineInterpolation: 'string',
+ gridLineWidth: 'number',
+ gridZIndex: 'number',
+ height: 'number',
+ id: 'string',
+ labels: 'HILabels',
+ left: 'number',
+ lineColor: 'HIColor',
+ lineWidth: 'number',
+ linkedTo: 'number',
+ margin: 'number',
+ max: 'number',
+ maxPadding: 'number',
+ min: 'number',
+ minPadding: 'number',
+ minRange: 'number',
+ minTickInterval: 'number',
+ minorGridLineColor: 'HIColor',
+ minorGridLineDashStyle: 'string',
+ minorGridLineWidth: 'number',
+ minorTickColor: 'HIColor',
+ minorTickInterval: 'number',
+ minorTickLength: 'number',
+ minorTickPosition: 'string',
+ minorTickWidth: 'number',
+ minorTicks: 'number',
+ offset: 'number',
+ opposite: 'number',
+ pane: 'number',
+ plotBands: 'HIPlotBands', // array
+ plotLines: 'HIPlotLines', // array
+ reversed: 'number',
+ reversedStacks: 'number',
+ showEmpty: 'number',
+ showFirstLabel: 'number',
+ showLastLabel: 'number',
+ softMax: 'number',
+ softMin: 'number',
+ startOfWeek: 'number',
+ startOnTick: 'number',
+ tickAmount: 'number',
+ tickColor: 'HIColor',
+ tickInterval: 'number',
+ tickLength: 'number',
+ tickPixelInterval: 'number',
+ tickPosition: 'string',
+ tickPositioner: 'HIFunction',
+ tickPositions: 'Array',
+ tickWidth: 'number',
+ tickmarkPlacement: 'string',
+ title: 'HITitle',
+ top: 'number',
+ type: 'string',
+ uniqueNames: 'number',
+ // units: 'NSArray>',
+ visible: 'number',
+ width: 'number',
+ zoomEnabled: 'number',
+ };
+
+ const axisArray = [];
+ if (xAxisOptions instanceof Array) {
+ xAxisOptions.forEach((axisOpts) => {
+ const xAxis = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIXAxis() : new HIXAxis();
+ axisArray.push(optionsBuilder(xAxisSchema, axisOpts, xAxis));
+ });
+ } else {
+ const xAxis = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIXAxis() : new HIXAxis();
+ axisArray.push(optionsBuilder(xAxisSchema, xAxisOptions, xAxis));
+ }
+
+ return convertJSArrayToNative(axisArray);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/yAxis/yAxis-handler.ts b/packages/nativescript-ui-charts/options-handlers/yAxis/yAxis-handler.ts
new file mode 100644
index 0000000..eaad2c2
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/yAxis/yAxis-handler.ts
@@ -0,0 +1,101 @@
+import { optionsBuilder, convertJSArrayToNative } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function yAxisHandler(yAxisOptions) {
+ const yAxis = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIYAxis() : new HIYAxis();
+
+ const yAxisSchema = {
+ accessibility: 'HIAccessibility',
+ alignTicks: 'number',
+ allowDecimals: 'number',
+ alternateGridColor: 'HIColor',
+ angle: 'number',
+ breaks: 'HIBreaks', // array
+ categories: 'Array',
+ ceiling: 'number',
+ className: 'string',
+ crosshair: 'HICrosshair',
+ dateTimeLabelFormats: 'HIDateTimeLabelFormats',
+ endOnTick: 'number',
+ events: 'HIEvents',
+ floor: 'number',
+ gridLineColor: 'HIColor',
+ gridLineDashStyle: 'string',
+ gridLineInterpolation: 'string',
+ gridLineWidth: 'number',
+ gridZIndex: 'number',
+ height: 'number',
+ id: 'string',
+ labels: 'HILabels',
+ left: 'number',
+ lineColor: 'HIColor',
+ lineWidth: 'number',
+ linkedTo: 'number',
+ margin: 'number',
+ max: 'number',
+ maxColor: 'HIColor',
+ maxPadding: 'number',
+ min: 'number',
+ minColor: 'HIColor',
+ minPadding: 'number',
+ minRange: 'number',
+ minTickInterval: 'number',
+ minorGridLineColor: 'HIColor',
+ minorGridLineDashStyle: 'string',
+ minorGridLineWidth: 'number',
+ minorTickColor: 'HIColor',
+ minorTickInterval: 'number',
+ minorTickLength: 'number',
+ minorTickPosition: 'string',
+ minorTickWidth: 'number',
+ minorTicks: 'number',
+ offset: 'number',
+ opposite: 'number',
+ pane: 'number',
+ plotBands: 'HIPlotBands', // array
+ plotLines: 'HIPlotLines', // array
+ reversed: 'number',
+ reversedStacks: 'number',
+ showEmpty: 'number',
+ showFirstLabel: 'number',
+ showLastLabel: 'number',
+ softMax: 'number',
+ softMin: 'number',
+ stackLabels: 'HIStackLabels',
+ startOfWeek: 'number',
+ startOnTick: 'number',
+ stops: 'HIGradientColorStopObject', // array
+ tickAmount: 'number',
+ tickColor: 'HIColor',
+ tickInterval: 'number',
+ tickLength: 'number',
+ tickPixelInterval: 'number',
+ tickPosition: 'string',
+ tickPositioner: 'HIFunction',
+ tickPositions: 'Array',
+ tickWidth: 'number',
+ tickmarkPlacement: 'string',
+ title: 'HITitle',
+ tooltipValueFormat: 'string',
+ top: 'number',
+ type: 'string',
+ uniqueNames: 'number',
+ // units: 'NSArray>',
+ visible: 'number',
+ width: 'number',
+ zoomEnabled: 'number',
+ };
+
+ const axisArray = [];
+ if (yAxisOptions instanceof Array) {
+ yAxisOptions.forEach((axisOpts) => {
+ const yAxis = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIYAxis() : new HIYAxis();
+ axisArray.push(optionsBuilder(yAxisSchema, axisOpts, yAxis));
+ });
+ } else {
+ const yAxis = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIYAxis() : new HIYAxis();
+ axisArray.push(optionsBuilder(yAxisSchema, yAxisOptions, yAxis));
+ }
+
+ return convertJSArrayToNative(axisArray);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/zAxis/zAxis-handler.ts b/packages/nativescript-ui-charts/options-handlers/zAxis/zAxis-handler.ts
new file mode 100644
index 0000000..d4cfd28
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/zAxis/zAxis-handler.ts
@@ -0,0 +1,87 @@
+import { optionsBuilder, convertJSArrayToNative } from '../helpers/helpers';
+import { isAndroid } from '@nativescript/core';
+
+export function zAxisHandler(zAxisOptions) {
+ const zAxis = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIZAxis() : new HIZAxis();
+
+ const zAxisSchema = {
+ accessibility: 'HIAccessibility',
+ alignTicks: 'number',
+ allowDecimals: 'number',
+ alternateGridColor: 'HIColor',
+ angle: 'number',
+ categories: 'Array',
+ ceiling: 'number',
+ className: 'string',
+ dateTimeLabelFormats: 'HIDateTimeLabelFormats',
+ endOnTick: 'number',
+ events: 'HIEvents',
+ floor: 'number',
+ gridLineColor: 'HIColor',
+ gridLineDashStyle: 'string',
+ gridLineInterpolation: 'string',
+ gridLineWidth: 'number',
+ gridZIndex: 'number',
+ id: 'string',
+ labels: 'HILabels',
+ linkedTo: 'number',
+ margin: 'number',
+ max: 'number',
+ maxPadding: 'number',
+ min: 'number',
+ minPadding: 'number',
+ minRange: 'number',
+ minTickInterval: 'number',
+ minorGridLineColor: 'HIColor',
+ minorGridLineDashStyle: 'string',
+ minorGridLineWidth: 'number',
+ minorTickColor: 'HIColor',
+ minorTickInterval: 'number',
+ minorTickLength: 'number',
+ minorTickPosition: 'string',
+ minorTickWidth: 'number',
+ minorTicks: 'number',
+ offset: 'number',
+ opposite: 'number',
+ pane: 'number',
+ plotBands: 'HIPlotBands', // array
+ plotLines: 'HIPlotLines', // array
+ reversed: 'number',
+ reversedStacks: 'number',
+ showFirstLabel: 'number',
+ showLastLabel: 'number',
+ softMax: 'number',
+ softMin: 'number',
+ startOfWeek: 'number',
+ startOnTick: 'number',
+ tickAmount: 'number',
+ tickColor: 'HIColor',
+ tickInterval: 'number',
+ tickLength: 'number',
+ tickPixelInterval: 'number',
+ tickPosition: 'string',
+ tickPositioner: 'HIFunction',
+ tickPositions: 'Array',
+ tickWidth: 'number',
+ tickmarkPlacement: 'string',
+ title: 'HITitle',
+ type: 'string',
+ uniqueNames: 'number',
+ // units: 'NSArray>',
+ visible: 'number',
+ zoomEnabled: 'number',
+ };
+
+ const axisArray = [];
+ if (zAxisOptions instanceof Array) {
+ zAxisOptions.forEach((axisOpts) => {
+ const zAxis = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIZAxis() : new HIZAxis();
+ axisArray.push(optionsBuilder(zAxisSchema, axisOpts, zAxis));
+ });
+ } else {
+ const zAxis = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIZAxis() : new HIZAxis();
+ axisArray.push(optionsBuilder(zAxisSchema, zAxisOptions, zAxis));
+ }
+
+ return convertJSArrayToNative(axisArray);
+}
diff --git a/packages/nativescript-ui-charts/options-handlers/zones/zones-handler.ts b/packages/nativescript-ui-charts/options-handlers/zones/zones-handler.ts
new file mode 100644
index 0000000..1724337
--- /dev/null
+++ b/packages/nativescript-ui-charts/options-handlers/zones/zones-handler.ts
@@ -0,0 +1,26 @@
+import { isAndroid } from '@nativescript/core';
+import { convertJSArrayToNative, optionsBuilder } from '../helpers/helpers';
+
+export function zonesHandler(zonesOptions) {
+ const zones = isAndroid ? new com.highsoft.highcharts.common.hichartsclasses.HIZones() : new HIZones();
+
+ const zonesSchema = {
+ className: 'string',
+ color: 'HIColor',
+ dashStyle: 'string',
+ fillColor: 'HIColor',
+ from: 'number',
+ marker: 'HIMarker',
+ to: 'number',
+ value: 'number',
+ };
+
+ let zonesArray = [];
+ if (zonesOptions instanceof Array) {
+ zonesArray = zonesOptions.map((zoneOpts) => {
+ return optionsBuilder(zonesSchema, zoneOpts, zones);
+ });
+ }
+
+ return convertJSArrayToNative(zonesArray);
+}
diff --git a/packages/nativescript-ui-charts/package.json b/packages/nativescript-ui-charts/package.json
new file mode 100644
index 0000000..53563e6
--- /dev/null
+++ b/packages/nativescript-ui-charts/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "@essent/nativescript-ui-charts",
+ "version": "1.0.0",
+ "description": "Nativescript wrapper for Highcharts iOS and Android SDKs",
+ "main": "index",
+ "typings": "index.d.ts",
+ "nativescript": {
+ "platforms": {
+ "ios": "6.0.0",
+ "android": "6.0.0"
+ }
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/Essent/nativescript-plugins.git"
+ },
+ "keywords": [
+ "NativeScript",
+ "JavaScript",
+ "TypeScript",
+ "iOS",
+ "Android"
+ ],
+ "author": {
+ "name": "Essent",
+ "email": "frontend-licenties@essent.nl"
+ },
+ "bugs": {
+ "url": "https://github.com/Essent/nativescript-plugins/issues"
+ },
+ "license": "Apache-2.0",
+ "homepage": "https://github.com/Essent/nativescript-plugins",
+ "readmeFilename": "README.md",
+ "bootstrapper": "@nativescript/plugin-seed"
+}
diff --git a/packages/nativescript-ui-charts/platforms/android/include.gradle b/packages/nativescript-ui-charts/platforms/android/include.gradle
new file mode 100644
index 0000000..67ab954
--- /dev/null
+++ b/packages/nativescript-ui-charts/platforms/android/include.gradle
@@ -0,0 +1,18 @@
+/* Include.gradle configuration: http://docs.nativescript.org/plugins/plugins#includegradle-specification */
+
+android {
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+repositories {
+ maven { url 'https://jitpack.io' }
+}
+
+dependencies {
+ implementation 'com.google.code.gson:gson:2.8.1'
+ implementation 'com.github.highcharts:highcharts-android:10.3.2'
+}
+
diff --git a/packages/nativescript-ui-charts/platforms/ios/Info.plist b/packages/nativescript-ui-charts/platforms/ios/Info.plist
new file mode 100644
index 0000000..1beb9c0
--- /dev/null
+++ b/packages/nativescript-ui-charts/platforms/ios/Info.plist
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/packages/nativescript-ui-charts/platforms/ios/Podfile b/packages/nativescript-ui-charts/platforms/ios/Podfile
new file mode 100644
index 0000000..633c161
--- /dev/null
+++ b/packages/nativescript-ui-charts/platforms/ios/Podfile
@@ -0,0 +1 @@
+pod 'Highcharts', '10.3.1'
diff --git a/packages/nativescript-ui-charts/platforms/ios/README.md b/packages/nativescript-ui-charts/platforms/ios/README.md
new file mode 100644
index 0000000..5692508
--- /dev/null
+++ b/packages/nativescript-ui-charts/platforms/ios/README.md
@@ -0,0 +1,40 @@
+# nativescript-highcharts
+
+Add your plugin badges here. See [nativescript-urlhandler](https://github.com/hypery2k/nativescript-urlhandler) for example.
+
+Then describe what's the purpose of your plugin.
+
+In case you develop UI plugin, this is where you can add some screenshots.
+
+## (Optional) Prerequisites / Requirements
+
+Describe the prerequisites that the user need to have installed before using your plugin. See [nativescript-firebase plugin](https://github.com/eddyverbruggen/nativescript-plugin-firebase) for example.
+
+## Installation
+
+Describe your plugin installation steps. Ideally it would be something like:
+
+```javascript
+tns plugin add nativescript-highcharts
+```
+
+## Usage
+
+Describe any usage specifics for your plugin. Give examples for Android, iOS, Angular if needed. See [nativescript-drop-down](https://www.npmjs.com/package/nativescript-drop-down) for example.
+
+ ```javascript
+ Usage code snippets here
+ ```)
+
+## API
+
+Describe your plugin methods and properties here. See [nativescript-feedback](https://github.com/EddyVerbruggen/nativescript-feedback) for example.
+
+| Property | Default | Description |
+| --- | --- | --- |
+| some property | property default value | property description, default values, etc.. |
+| another property | property default value | property description, default values, etc.. |
+
+## License
+
+Apache License Version 2.0, January 2004
diff --git a/packages/nativescript-ui-charts/platforms/ios/build.xcconfig b/packages/nativescript-ui-charts/platforms/ios/build.xcconfig
new file mode 100644
index 0000000..e69de29
diff --git a/packages/nativescript-ui-charts/project.json b/packages/nativescript-ui-charts/project.json
new file mode 100644
index 0000000..b909f54
--- /dev/null
+++ b/packages/nativescript-ui-charts/project.json
@@ -0,0 +1,64 @@
+{
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
+ "projectType": "library",
+ "sourceRoot": "packages/nativescript-ui-charts",
+ "targets": {
+ "build": {
+ "executor": "@nrwl/js:tsc",
+ "options": {
+ "outputPath": "dist/packages/nativescript-ui-charts",
+ "tsConfig": "packages/nativescript-ui-charts/tsconfig.json",
+ "packageJson": "packages/nativescript-ui-charts/package.json",
+ "main": "packages/nativescript-ui-charts/index.d.ts",
+ "assets": [
+ "packages/nativescript-ui-charts/*.md",
+ "packages/nativescript-ui-charts/index.d.ts",
+ "LICENSE",
+ {
+ "glob": "**/*",
+ "input": "packages/nativescript-ui-charts/platforms/",
+ "output": "./platforms/"
+ }
+ ],
+ "dependsOn": [
+ {
+ "target": "build.all",
+ "projects": "dependencies"
+ }
+ ]
+ }
+ },
+ "build.all": {
+ "executor": "nx:run-commands",
+ "options": {
+ "commands": ["node tools/scripts/build-finish.ts nativescript-ui-charts"],
+ "parallel": false
+ },
+ "outputs": ["dist/packages/nativescript-ui-charts"],
+ "dependsOn": [
+ {
+ "target": "build.all",
+ "projects": "dependencies"
+ },
+ {
+ "target": "build",
+ "projects": "self"
+ }
+ ]
+ },
+ "focus": {
+ "executor": "nx:run-commands",
+ "options": {
+ "commands": ["nx g @nativescript/plugin-tools:focus-packages nativescript-ui-charts"],
+ "parallel": false
+ }
+ },
+ "lint": {
+ "executor": "@nrwl/linter:eslint",
+ "options": {
+ "lintFilePatterns": ["packages/nativescript-ui-charts/**/*.ts"]
+ }
+ }
+ },
+ "tags": []
+}
diff --git a/packages/nativescript-ui-charts/references.d.ts b/packages/nativescript-ui-charts/references.d.ts
new file mode 100644
index 0000000..7c54ed9
--- /dev/null
+++ b/packages/nativescript-ui-charts/references.d.ts
@@ -0,0 +1,3 @@
+///
+///
+///
diff --git a/packages/nativescript-ui-charts/tsconfig.json b/packages/nativescript-ui-charts/tsconfig.json
new file mode 100644
index 0000000..aed7323
--- /dev/null
+++ b/packages/nativescript-ui-charts/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "../../dist/out-tsc",
+ "rootDir": "."
+ },
+ "exclude": ["**/*.spec.ts", "**/*.test.ts", "angular"],
+ "include": ["**/*.ts", "references.d.ts"]
+}
diff --git a/packages/nativescript-ui-charts/typings/android-highcharts.d.ts b/packages/nativescript-ui-charts/typings/android-highcharts.d.ts
new file mode 100644
index 0000000..2e2f1ca
--- /dev/null
+++ b/packages/nativescript-ui-charts/typings/android-highcharts.d.ts
@@ -0,0 +1,11311 @@
+///
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export class BuildConfig {
+ public static class: java.lang.Class;
+ public static DEBUG: boolean;
+ public static LIBRARY_PACKAGE_NAME: string;
+ public static BUILD_TYPE: string;
+ public constructor();
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export class HIChartsJSONSerializable {
+ public static class: java.lang.Class;
+ /**
+ * Constructs a new instance of the com.highsoft.highcharts.common.HIChartsJSONSerializable interface with the provided implementation. An empty constructor exists calling super() when extending the interface class.
+ */
+ public constructor(implementation: { getParams(): java.util.Map });
+ public constructor();
+ public getParams(): java.util.Map;
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export class HIColor {
+ public static class: java.lang.Class;
+ public getData(): any;
+ public static initWithHexValue(param0: string): com.highsoft.highcharts.common.HIColor;
+ public static initWithLinearGradient(param0: com.highsoft.highcharts.common.HIGradient, param1: java.util.LinkedList): com.highsoft.highcharts.common.HIColor;
+ public static initWithRadialGradient(param0: com.highsoft.highcharts.common.HIGradient, param1: java.util.LinkedList): com.highsoft.highcharts.common.HIColor;
+ public static initWithRGBA(param0: number, param1: number, param2: number, param3: number): com.highsoft.highcharts.common.HIColor;
+ public static initWithName(param0: string): com.highsoft.highcharts.common.HIColor;
+ public static initWithRGB(param0: number, param1: number, param2: number): com.highsoft.highcharts.common.HIColor;
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export class HIGradient {
+ public static class: java.lang.Class;
+ public constructor(param0: number, param1: number, param2: number, param3: number);
+ public getGradient(): java.util.Map;
+ public constructor();
+ public constructor(param0: number, param1: number, param2: number);
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export class HIStop extends java.util.LinkedList {
+ public static class: java.lang.Class;
+ public constructor(param0: number, param1: com.highsoft.highcharts.common.HIColor);
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAST extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getAllowedReferences(): any;
+ public getAllowedTags(): any;
+ public setAllowedAttributes(param0: any): void;
+ public setAllowedReferences(param0: any): void;
+ public getAllowedAttributes(): any;
+ public getParams(): java.util.HashMap;
+ public setAllowedTags(param0: any): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIASTNode extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public getChildren(): java.util.ArrayList;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getAttributes(): com.highsoft.highcharts.common.hichartsclasses.HISVGAttributes;
+ public setAttributes(param0: com.highsoft.highcharts.common.hichartsclasses.HISVGAttributes): void;
+ public setTagName(param0: string): void;
+ public setChildren(param0: java.util.ArrayList): void;
+ public getTagName(): string;
+ public getTextContent(): string;
+ public getParams(): java.util.HashMap;
+ public setTextContent(param0: string): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAccessibility extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public getExposeAsGroupOnly(): java.lang.Boolean;
+ public getAnnounceNewData(): com.highsoft.highcharts.common.hichartsclasses.HIAnnounceNewData;
+ public getEnabled(): java.lang.Boolean;
+ public setHighContrastTheme(param0: any): void;
+ public setExporting(param0: com.highsoft.highcharts.common.hichartsclasses.HIExporting): void;
+ public getKeyboardNavigation(): com.highsoft.highcharts.common.hichartsclasses.HIKeyboardNavigation;
+ public setChartTypes(param0: com.highsoft.highcharts.common.hichartsclasses.HIChartTypes): void;
+ public getAxis(): com.highsoft.highcharts.common.hichartsclasses.HIAxis;
+ public setPoint(param0: com.highsoft.highcharts.common.hichartsclasses.HIPoint): void;
+ public setAxis(param0: com.highsoft.highcharts.common.hichartsclasses.HIAxis): void;
+ public setSeries(param0: com.highsoft.highcharts.common.hichartsclasses.HISeries): void;
+ public setCustomComponents(param0: any): void;
+ public setSonification(param0: com.highsoft.highcharts.common.hichartsclasses.HISonification): void;
+ public getSvgContainerLabel(): string;
+ public setScreenReaderSection(param0: com.highsoft.highcharts.common.hichartsclasses.HIScreenReaderSection): void;
+ public setTable(param0: com.highsoft.highcharts.common.hichartsclasses.HITable): void;
+ public setCredits(param0: string): void;
+ public constructor();
+ public setTypeDescription(param0: string): void;
+ public setAnnounceNewData(param0: com.highsoft.highcharts.common.hichartsclasses.HIAnnounceNewData): void;
+ public getHighContrastTheme(): any;
+ public setSvgContainerLabel(param0: string): void;
+ public setLandmarkVerbosity(param0: string): void;
+ public setRangeSelector(param0: com.highsoft.highcharts.common.hichartsclasses.HIRangeSelector): void;
+ public getSonification(): com.highsoft.highcharts.common.hichartsclasses.HISonification;
+ public setZoom(param0: com.highsoft.highcharts.common.hichartsclasses.HIZoom): void;
+ public setDrillUpButton(param0: string): void;
+ public setLinkedDescription(param0: string): void;
+ public setSeriesTypeDescriptions(param0: com.highsoft.highcharts.common.hichartsclasses.HISeriesTypeDescriptions): void;
+ public getThousandsSep(): string;
+ public setDefinition(param0: string): void;
+ public getLegend(): com.highsoft.highcharts.common.hichartsclasses.HILegend;
+ public getGraphicContainerLabel(): string;
+ public getLinkedDescription(): string;
+ public setRangeDescription(param0: string): void;
+ public getDefinition(): string;
+ public getParams(): java.util.Map;
+ public getSeries(): com.highsoft.highcharts.common.hichartsclasses.HISeries;
+ public getTypeDescription(): string;
+ public setLegend(param0: com.highsoft.highcharts.common.hichartsclasses.HILegend): void;
+ public getScreenReaderSection(): com.highsoft.highcharts.common.hichartsclasses.HIScreenReaderSection;
+ public getParams(): java.util.HashMap;
+ public setGraphicContainerLabel(param0: string): void;
+ public getCustomComponents(): any;
+ public getChartTypes(): com.highsoft.highcharts.common.hichartsclasses.HIChartTypes;
+ public getCredits(): string;
+ public getChartContainerLabel(): string;
+ public getTable(): com.highsoft.highcharts.common.hichartsclasses.HITable;
+ public setChartContainerLabel(param0: string): void;
+ public setSvgContainerTitle(param0: string): void;
+ public getSeriesTypeDescriptions(): com.highsoft.highcharts.common.hichartsclasses.HISeriesTypeDescriptions;
+ public getLandmarkVerbosity(): string;
+ public setEnabled(param0: java.lang.Boolean): void;
+ public getRangeDescription(): string;
+ public getDefaultChartTitle(): string;
+ public getDrillUpButton(): string;
+ public setThousandsSep(param0: string): void;
+ public getRangeSelector(): com.highsoft.highcharts.common.hichartsclasses.HIRangeSelector;
+ public getZoom(): com.highsoft.highcharts.common.hichartsclasses.HIZoom;
+ public setDefaultChartTitle(param0: string): void;
+ public setKeyboardNavigation(param0: com.highsoft.highcharts.common.hichartsclasses.HIKeyboardNavigation): void;
+ public getExporting(): com.highsoft.highcharts.common.hichartsclasses.HIExporting;
+ public getPoint(): com.highsoft.highcharts.common.hichartsclasses.HIPoint;
+ public setExposeAsGroupOnly(param0: java.lang.Boolean): void;
+ public getSvgContainerTitle(): string;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIActiveDataLabelStyle extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getCursor(): string;
+ public getColor(): string;
+ public getTextDecoration(): string;
+ public setFontWeight(param0: string): void;
+ public setCursor(param0: string): void;
+ public getParams(): java.util.HashMap;
+ public setColor(param0: string): void;
+ public getFontWeight(): string;
+ public setTextDecoration(param0: string): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAjaxSettingsObject extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getType(): string;
+ public setData(param0: string): void;
+ public getError(): com.highsoft.highcharts.core.HIFunction;
+ public setSuccess(param0: com.highsoft.highcharts.core.HIFunction): void;
+ public getUrl(): string;
+ public getData(): string;
+ public setError(param0: com.highsoft.highcharts.core.HIFunction): void;
+ public getParams(): java.util.HashMap;
+ public setType(param0: string): void;
+ public setHeaders(param0: java.util.HashMap): void;
+ public setUrl(param0: string): void;
+ public getSuccess(): com.highsoft.highcharts.core.HIFunction;
+ public getDataType(): string;
+ public getHeaders(): java.util.HashMap;
+ public setDataType(param0: string): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAlignObject extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getParams(): java.util.HashMap;
+ public setX(param0: java.lang.Number): void;
+ public setY(param0: java.lang.Number): void;
+ public setAlignByTranslate(param0: java.lang.Boolean): void;
+ public getAlign(): string;
+ public getVerticalAlign(): string;
+ public setAlign(param0: string): void;
+ public getAlignByTranslate(): java.lang.Boolean;
+ public getY(): java.lang.Number;
+ public setVerticalAlign(param0: string): void;
+ public getX(): java.lang.Number;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAnimation extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setDuration(param0: java.lang.Number): void;
+ public getDuration(): java.lang.Number;
+ public getParams(): java.util.HashMap;
+ public getDefer(): java.lang.Number;
+ public setDefer(param0: java.lang.Number): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAnimationOptionsObject extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public getEasing(): string;
+ public setStep(param0: com.highsoft.highcharts.core.HIFunction): void;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setComplete(param0: com.highsoft.highcharts.core.HIFunction): void;
+ public getDuration(): java.lang.Number;
+ public getParams(): java.util.HashMap;
+ public setDefer(param0: java.lang.Number): void;
+ public setDuration(param0: java.lang.Number): void;
+ public setEasing(param0: string): void;
+ public getComplete(): com.highsoft.highcharts.core.HIFunction;
+ public getDefer(): java.lang.Number;
+ public getStep(): com.highsoft.highcharts.core.HIFunction;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAnnotation extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public setOptions(param0: any): void;
+ public getLabelsGroup(): com.highsoft.highcharts.common.hichartsclasses.HISVGElement;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getShapesGroup(): com.highsoft.highcharts.common.hichartsclasses.HISVGElement;
+ public getUserOptions(): any;
+ public getOptions(): any;
+ public setUserOptions(param0: any): void;
+ public getParams(): java.util.HashMap;
+ public setShapesGroup(param0: com.highsoft.highcharts.common.hichartsclasses.HISVGElement): void;
+ public getGroup(): com.highsoft.highcharts.common.hichartsclasses.HISVGElement;
+ public setGroup(param0: com.highsoft.highcharts.common.hichartsclasses.HISVGElement): void;
+ public setLabelsGroup(param0: com.highsoft.highcharts.common.hichartsclasses.HISVGElement): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAnnotationControllable extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getAnnotation(): com.highsoft.highcharts.common.hichartsclasses.HIAnnotation;
+ public getChart(): com.highsoft.highcharts.common.hichartsclasses.HIChart;
+ public getPoints(): java.util.ArrayList;
+ public setCollection(param0: string): void;
+ public setAnnotation(param0: com.highsoft.highcharts.common.hichartsclasses.HIAnnotation): void;
+ public getCollection(): string;
+ public setPoints(param0: java.util.ArrayList): void;
+ public getParams(): java.util.HashMap;
+ public setChart(param0: com.highsoft.highcharts.common.hichartsclasses.HIChart): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAnnotationMockPointOptionsObject extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public setXAxis(param0: any): void;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getXAxis(): any;
+ public setYAxis(param0: any): void;
+ public getYAxis(): any;
+ public getY(): java.lang.Number;
+ public getParams(): java.util.HashMap;
+ public setX(param0: java.lang.Number): void;
+ public setY(param0: java.lang.Number): void;
+ public getX(): java.lang.Number;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAnnotations extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public setDescriptionMultiplePoints(param0: string): void;
+ public setAnimation(param0: com.highsoft.highcharts.common.hichartsclasses.HIAnimationOptionsObject): void;
+ public redrawLabelItems(param0: java.util.List, param1: boolean): void;
+ public destroy(): void;
+ public setLabels(param0: java.util.ArrayList): void;
+ public redrawLabelItem(param0: com.highsoft.highcharts.common.hichartsclasses.HILabels, param1: boolean): void;
+ public destroyLabelItem(param0: com.highsoft.highcharts.common.hichartsclasses.HILabels): void;
+ public getCrop(): java.lang.Boolean;
+ public setVisibility(param0: boolean): void;
+ public getZIndex(): java.lang.Number;
+ public getLabels(): java.util.ArrayList;
+ public redrawShapeItem(param0: com.highsoft.highcharts.common.hichartsclasses.HIShapes): void;
+ public setItemDelimiter(param0: string): void;
+ public constructor();
+ public setEvents(param0: com.highsoft.highcharts.common.hichartsclasses.HIEvents): void;
+ public setLabelOptions(param0: com.highsoft.highcharts.common.hichartsclasses.HILabelOptions): void;
+ public redrawShapeItems(param0: java.util.List, param1: boolean): void;
+ public setShapes(param0: java.util.ArrayList): void;
+ public redrawShapeItems(param0: java.util.List): void;
+ public setCrop(param0: java.lang.Boolean): void;
+ public getControlPointOptions(): com.highsoft.highcharts.common.hichartsclasses.HIControlPointOptions;
+ public setDescriptionNoPoints(param0: string): void;
+ public setDescriptionSinglePoint(param0: string): void;
+ public getDraggable(): string;
+ public setControlPointOptions(param0: com.highsoft.highcharts.common.hichartsclasses.HIControlPointOptions): void;
+ public remove(): void;
+ public getShapes(): java.util.ArrayList;
+ public setOptions(): void;
+ public getParams(): java.util.Map;
+ public getDescriptionMultiplePoints(): string;
+ public setVisible(param0: java.lang.Boolean): void;
+ public redrawLabelItems(param0: java.util.List): void;
+ public getHeading(): string;
+ public getParams(): java.util.HashMap;
+ public setHeading(param0: string): void;
+ public getId(): any;
+ public redrawShapeItem(param0: com.highsoft.highcharts.common.hichartsclasses.HIShapes, param1: boolean): void;
+ public getVisible(): java.lang.Boolean;
+ public initShape(param0: com.highsoft.highcharts.common.hichartsclasses.HIShapes): void;
+ public adjustShapeVisibility(param0: com.highsoft.highcharts.common.hichartsclasses.HIShapes): void;
+ public setZIndex(param0: java.lang.Number): void;
+ public setShapeOptions(param0: com.highsoft.highcharts.common.hichartsclasses.HIShapeOptions): void;
+ public getDescriptionSinglePoint(): string;
+ public getEvents(): com.highsoft.highcharts.common.hichartsclasses.HIEvents;
+ public setDraggable(param0: string): void;
+ public getAnimation(): com.highsoft.highcharts.common.hichartsclasses.HIAnimationOptionsObject;
+ public setId(param0: any): void;
+ public setJoin(param0: java.lang.Boolean): void;
+ public destroyShapeItem(param0: com.highsoft.highcharts.common.hichartsclasses.HIShapes): void;
+ public getShapeOptions(): com.highsoft.highcharts.common.hichartsclasses.HIShapeOptions;
+ public initLabel(param0: com.highsoft.highcharts.common.hichartsclasses.HILabels): void;
+ public getJoin(): java.lang.Boolean;
+ public getDescriptionNoPoints(): string;
+ public getItemDelimiter(): string;
+ public adjustLabelVisibility(param0: com.highsoft.highcharts.common.hichartsclasses.HILabels): void;
+ public setVisibility(): void;
+ public redrawLabelItem(param0: com.highsoft.highcharts.common.hichartsclasses.HILabels): void;
+ public getLabelOptions(): com.highsoft.highcharts.common.hichartsclasses.HILabelOptions;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAnnotationsOptions extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public getShapes(): java.util.ArrayList;
+ public setAnimation(param0: com.highsoft.highcharts.common.hichartsclasses.HIAnimationOptionsObject): void;
+ public getParams(): java.util.Map;
+ public setVisible(param0: java.lang.Boolean): void;
+ public setLabels(param0: java.util.ArrayList): void;
+ public getParams(): java.util.HashMap;
+ public getCrop(): java.lang.Boolean;
+ public getId(): any;
+ public getVisible(): java.lang.Boolean;
+ public getZIndex(): java.lang.Number;
+ public getLabels(): java.util.ArrayList;
+ public setZIndex(param0: java.lang.Number): void;
+ public constructor();
+ public setEvents(param0: com.highsoft.highcharts.common.hichartsclasses.HIEvents): void;
+ public setShapeOptions(param0: com.highsoft.highcharts.common.hichartsclasses.HIShapeOptions): void;
+ public setLabelOptions(param0: com.highsoft.highcharts.common.hichartsclasses.HILabelOptions): void;
+ public getEvents(): com.highsoft.highcharts.common.hichartsclasses.HIEvents;
+ public setDraggable(param0: string): void;
+ public getAnimation(): com.highsoft.highcharts.common.hichartsclasses.HIAnimationOptionsObject;
+ public setId(param0: any): void;
+ public setShapes(param0: java.util.ArrayList): void;
+ public setCrop(param0: java.lang.Boolean): void;
+ public getControlPointOptions(): com.highsoft.highcharts.common.hichartsclasses.HIControlPointOptions;
+ public getShapeOptions(): com.highsoft.highcharts.common.hichartsclasses.HIShapeOptions;
+ public getLabelOptions(): com.highsoft.highcharts.common.hichartsclasses.HILabelOptions;
+ public getDraggable(): string;
+ public setControlPointOptions(param0: com.highsoft.highcharts.common.hichartsclasses.HIControlPointOptions): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAnnounceNewData extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getNewSeriesAnnounceMultiple(): string;
+ public getNewPointAnnounceMultiple(): string;
+ public setNewPointAnnounceSingle(param0: string): void;
+ public getNewPointAnnounceSingle(): string;
+ public getInterruptUser(): java.lang.Boolean;
+ public getEnabled(): java.lang.Boolean;
+ public setMinAnnounceInterval(param0: java.lang.Number): void;
+ public getParams(): java.util.HashMap;
+ public setNewDataAnnounce(param0: string): void;
+ public setNewSeriesAnnounceSingle(param0: string): void;
+ public getAnnouncementFormatter(): any;
+ public getMinAnnounceInterval(): java.lang.Number;
+ public setNewPointAnnounceMultiple(param0: string): void;
+ public setEnabled(param0: java.lang.Boolean): void;
+ public setInterruptUser(param0: java.lang.Boolean): void;
+ public setNewSeriesAnnounceMultiple(param0: string): void;
+ public getNewSeriesAnnounceSingle(): string;
+ public getNewDataAnnounce(): string;
+ public setAnnouncementFormatter(param0: any): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIArea extends com.highsoft.highcharts.common.hichartsclasses.HISeries {
+ public static class: java.lang.Class;
+ public getLineColor(): com.highsoft.highcharts.common.HIColor;
+ public setLineColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setNegativeFillColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public getTrackByArea(): java.lang.Boolean;
+ public getParams(): java.util.HashMap;
+ public getFillColor(): com.highsoft.highcharts.common.HIColor;
+ public setFillColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public setFillOpacity(param0: java.lang.Number): void;
+ public setTrackByArea(param0: java.lang.Boolean): void;
+ public getNegativeFillColor(): com.highsoft.highcharts.common.HIColor;
+ public getFillOpacity(): java.lang.Number;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIArearange extends com.highsoft.highcharts.common.hichartsclasses.HISeries {
+ public static class: java.lang.Class;
+ public getLineColor(): com.highsoft.highcharts.common.HIColor;
+ public setLineColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setNegativeFillColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public getTrackByArea(): java.lang.Boolean;
+ public getParams(): java.util.HashMap;
+ public getFillColor(): com.highsoft.highcharts.common.HIColor;
+ public setFillColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public setFillOpacity(param0: java.lang.Number): void;
+ public setTrackByArea(param0: java.lang.Boolean): void;
+ public getNegativeFillColor(): com.highsoft.highcharts.common.HIColor;
+ public getFillOpacity(): java.lang.Number;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAreaspline extends com.highsoft.highcharts.common.hichartsclasses.HISeries {
+ public static class: java.lang.Class;
+ public getLineColor(): com.highsoft.highcharts.common.HIColor;
+ public setLineColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setNegativeFillColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public getTrackByArea(): java.lang.Boolean;
+ public getParams(): java.util.HashMap;
+ public getFillColor(): com.highsoft.highcharts.common.HIColor;
+ public setFillColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public setFillOpacity(param0: java.lang.Number): void;
+ public setTrackByArea(param0: java.lang.Boolean): void;
+ public getNegativeFillColor(): com.highsoft.highcharts.common.HIColor;
+ public getFillOpacity(): java.lang.Number;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAreasplinerange extends com.highsoft.highcharts.common.hichartsclasses.HISeries {
+ public static class: java.lang.Class;
+ public getLineColor(): com.highsoft.highcharts.common.HIColor;
+ public setLineColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setNegativeFillColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public getTrackByArea(): java.lang.Boolean;
+ public getParams(): java.util.HashMap;
+ public getFillColor(): com.highsoft.highcharts.common.HIColor;
+ public setFillColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public setFillOpacity(param0: java.lang.Number): void;
+ public setTrackByArea(param0: java.lang.Boolean): void;
+ public getNegativeFillColor(): com.highsoft.highcharts.common.HIColor;
+ public getFillOpacity(): java.lang.Number;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIArrow extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public getChildren(): java.util.ArrayList;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getAttributes(): com.highsoft.highcharts.common.hichartsclasses.HIAttributes;
+ public setTagName(param0: string): void;
+ public setChildren(param0: java.util.ArrayList): void;
+ public getTagName(): string;
+ public getParams(): java.util.HashMap;
+ public setAttributes(param0: com.highsoft.highcharts.common.hichartsclasses.HIAttributes): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAttributes extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public setZIndex(param0: java.lang.Number): void;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getMarkerWidth(): java.lang.Number;
+ public setId(param0: string): void;
+ public setMarkerHeight(param0: java.lang.Number): void;
+ public getParams(): java.util.HashMap;
+ public getMarkerHeight(): java.lang.Number;
+ public getRefX(): java.lang.Number;
+ public getZIndex(): java.lang.Number;
+ public setRefY(param0: java.lang.Number): void;
+ public getRefY(): java.lang.Number;
+ public setMarkerWidth(param0: java.lang.Number): void;
+ public setRefX(param0: java.lang.Number): void;
+ public getId(): string;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAxis extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public setOptions(param0: any): void;
+ public getXAxisDescriptionPlural(): string;
+ public getUserOptions(): any;
+ public setUserOptions(param0: any): void;
+ public getYAxisDescriptionSingular(): string;
+ public setCrosshair(param0: any): void;
+ public getChart(): com.highsoft.highcharts.common.hichartsclasses.HIChart;
+ public setYAxisDescriptionSingular(param0: string): void;
+ public getRangeFromTo(): string;
+ public setMinorTicks(param0: any): void;
+ public setColl(param0: string): void;
+ public getHoriz(): java.lang.Boolean;
+ public setReversed(param0: java.lang.Boolean): void;
+ public constructor();
+ public setIsXAxis(param0: java.lang.Boolean): void;
+ public getMin(): java.lang.Number;
+ public setCategories(param0: java.util.ArrayList): void;
+ public setTimeRangeDays(param0: string): void;
+ public getMinorTicks(): any;
+ public getOptions(): any;
+ public getYAxisDescriptionPlural(): string;
+ public setHoriz(param0: java.lang.Boolean): void;
+ public getCrosshair(): any;
+ public getCategories(): java.util.ArrayList;
+ public setMax(param0: java.lang.Number): void;
+ public getIsXAxis(): java.lang.Boolean;
+ public setTimeRangeMinutes(param0: string): void;
+ public setTimeRangeSeconds(param0: string): void;
+ public setRangeFromTo(param0: string): void;
+ public getParams(): java.util.Map;
+ public setRangeCategories(param0: string): void;
+ public getParams(): java.util.HashMap;
+ public setXAxisDescriptionSingular(param0: string): void;
+ public getTickPositions(): java.util.ArrayList;
+ public getRangeCategories(): string;
+ public setXAxisDescriptionPlural(param0: string): void;
+ public getSide(): java.lang.Number;
+ public getXAxisDescriptionSingular(): string;
+ public getTicks(): any;
+ public setMin(param0: java.lang.Number): void;
+ public setSeries(param0: java.util.ArrayList): void;
+ public getReversed(): java.lang.Boolean;
+ public setTimeRangeHours(param0: string): void;
+ public setChart(param0: com.highsoft.highcharts.common.hichartsclasses.HIChart): void;
+ public getTimeRangeMinutes(): string;
+ public setSide(param0: java.lang.Number): void;
+ public getSeries(): java.util.ArrayList;
+ public setTicks(param0: any): void;
+ public getColl(): string;
+ public setYAxisDescriptionPlural(param0: string): void;
+ public setTickPositions(param0: java.util.ArrayList): void;
+ public getTimeRangeHours(): string;
+ public getTimeRangeDays(): string;
+ public getMax(): java.lang.Number;
+ public getTimeRangeSeconds(): string;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAxisLabelsFormatterContextObject extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setIsFirst(param0: java.lang.Boolean): void;
+ public getValue(): any;
+ public setTick(param0: com.highsoft.highcharts.common.hichartsclasses.HITick): void;
+ public getParams(): java.util.HashMap;
+ public getTick(): com.highsoft.highcharts.common.hichartsclasses.HITick;
+ public getText(): string;
+ public getPos(): java.lang.Number;
+ public setChart(param0: com.highsoft.highcharts.common.hichartsclasses.HIChart): void;
+ public setValue(param0: any): void;
+ public getAxis(): com.highsoft.highcharts.common.hichartsclasses.HIAxis;
+ public getIsFirst(): java.lang.Boolean;
+ public setAxis(param0: com.highsoft.highcharts.common.hichartsclasses.HIAxis): void;
+ public getChart(): com.highsoft.highcharts.common.hichartsclasses.HIChart;
+ public setText(param0: string): void;
+ public setPos(param0: java.lang.Number): void;
+ public getIsLast(): java.lang.Boolean;
+ public setIsLast(param0: java.lang.Boolean): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAxisPlotLinePathOptionsObject extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public setAcrossPanes(param0: java.lang.Boolean): void;
+ public setTranslatedValue(param0: java.lang.Number): void;
+ public getTranslatedValue(): java.lang.Number;
+ public getAcrossPanes(): java.lang.Boolean;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setForce(param0: string): void;
+ public getOld(): java.lang.Boolean;
+ public getLineWidth(): java.lang.Number;
+ public setLineWidth(param0: java.lang.Number): void;
+ public setValue(param0: java.lang.Number): void;
+ public setOld(param0: java.lang.Boolean): void;
+ public getParams(): java.util.HashMap;
+ public getForce(): string;
+ public setReverse(param0: java.lang.Boolean): void;
+ public getReverse(): java.lang.Boolean;
+ public getValue(): java.lang.Number;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAxisPointBreakEventObject extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public getBrk(): java.util.HashMap;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getType(): string;
+ public setTarget(param0: com.highsoft.highcharts.common.hichartsclasses.HISVGElement): void;
+ public setBrk(param0: java.util.HashMap): void;
+ public getParams(): java.util.HashMap;
+ public setType(param0: string): void;
+ public setPoint(param0: com.highsoft.highcharts.common.hichartsclasses.HIPoint): void;
+ public getTarget(): com.highsoft.highcharts.common.hichartsclasses.HISVGElement;
+ public getPreventDefault(): com.highsoft.highcharts.core.HIFunction;
+ public setPreventDefault(param0: com.highsoft.highcharts.core.HIFunction): void;
+ public getPoint(): com.highsoft.highcharts.common.hichartsclasses.HIPoint;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAxisSetExtremesEventObject extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getTarget(): com.highsoft.highcharts.common.hichartsclasses.HISVGElement;
+ public getPreventDefault(): com.highsoft.highcharts.core.HIFunction;
+ public getTrigger(): string;
+ public setPreventDefault(param0: com.highsoft.highcharts.core.HIFunction): void;
+ public setTrigger(param0: string): void;
+ public getType(): string;
+ public setTarget(param0: com.highsoft.highcharts.common.hichartsclasses.HISVGElement): void;
+ public getParams(): java.util.HashMap;
+ public setType(param0: string): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIAxisTickPositionsArray extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public setInfo(param0: com.highsoft.highcharts.common.hichartsclasses.HITimeTicksInfoObject): void;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getInfo(): com.highsoft.highcharts.common.hichartsclasses.HITimeTicksInfoObject;
+ public getParams(): java.util.HashMap;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBBoxObject extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setWidth(param0: java.lang.Number): void;
+ public getHeight(): java.lang.Number;
+ public getWidth(): java.lang.Number;
+ public getY(): java.lang.Number;
+ public getParams(): java.util.HashMap;
+ public setX(param0: java.lang.Number): void;
+ public setY(param0: java.lang.Number): void;
+ public setHeight(param0: java.lang.Number): void;
+ public getX(): java.lang.Number;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBack extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public getColor(): com.highsoft.highcharts.common.HIColor;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getVisible(): any;
+ public setColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public setVisible(param0: any): void;
+ public getSize(): java.lang.Number;
+ public setSize(param0: java.lang.Number): void;
+ public getParams(): java.util.HashMap;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBackground extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public getInnerRadius(): any;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getBackgroundColor(): com.highsoft.highcharts.common.HIColor;
+ public setInnerRadius(param0: any): void;
+ public setBorderWidth(param0: java.lang.Number): void;
+ public setBackgroundColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public getBorderColor(): com.highsoft.highcharts.common.HIColor;
+ public setClassName(param0: string): void;
+ public getClassName(): string;
+ public getParams(): java.util.HashMap;
+ public getShape(): string;
+ public setOuterRadius(param0: any): void;
+ public getOuterRadius(): any;
+ public setShape(param0: string): void;
+ public getBorderWidth(): java.lang.Number;
+ public setBorderColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBar extends com.highsoft.highcharts.common.hichartsclasses.HISeries {
+ public static class: java.lang.Class;
+ public setMinPointLength(param0: java.lang.Number): void;
+ public getMinPointLength(): java.lang.Number;
+ public setGroupPadding(param0: java.lang.Number): void;
+ public getParams(): java.util.Map;
+ public getEdgeWidth(): java.lang.Number;
+ public setGroupZPadding(param0: java.lang.Number): void;
+ public getColors(): java.util.ArrayList;
+ public setPointWidth(param0: java.lang.Number): void;
+ public getParams(): java.util.HashMap;
+ public getColorByPoint(): java.lang.Boolean;
+ public getBorderRadius(): java.lang.Number;
+ public getPointRange(): java.lang.Number;
+ public getGroupPadding(): java.lang.Number;
+ public setColors(param0: java.util.ArrayList): void;
+ public setBorderRadius(param0: java.lang.Number): void;
+ public getMaxPointWidth(): java.lang.Number;
+ public getGroupZPadding(): java.lang.Number;
+ public setColorByPoint(param0: java.lang.Boolean): void;
+ public getCenterInCategory(): java.lang.Boolean;
+ public constructor();
+ public setPointRange(param0: java.lang.Number): void;
+ public getDepth(): java.lang.Number;
+ public setBorderWidth(param0: java.lang.Number): void;
+ public getBorderColor(): com.highsoft.highcharts.common.HIColor;
+ public setEdgeColor(param0: any): void;
+ public setCenterInCategory(param0: java.lang.Boolean): void;
+ public setMaxPointWidth(param0: java.lang.Number): void;
+ public getPointWidth(): java.lang.Number;
+ public setDepth(param0: java.lang.Number): void;
+ public setEdgeWidth(param0: java.lang.Number): void;
+ public setGrouping(param0: java.lang.Boolean): void;
+ public getBorderWidth(): java.lang.Number;
+ public setPointPadding(param0: java.lang.Number): void;
+ public setBorderColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public getEdgeColor(): any;
+ public getGrouping(): java.lang.Boolean;
+ public getPointPadding(): java.lang.Number;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBellcurve extends com.highsoft.highcharts.common.hichartsclasses.HISeries {
+ public static class: java.lang.Class;
+ public getLineColor(): com.highsoft.highcharts.common.HIColor;
+ public getIntervals(): java.lang.Number;
+ public setLineColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setPointsInInterval(param0: java.lang.Number): void;
+ public setNegativeFillColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public getTrackByArea(): java.lang.Boolean;
+ public getParams(): java.util.HashMap;
+ public getFillColor(): com.highsoft.highcharts.common.HIColor;
+ public setFillColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public getBaseSeries(): any;
+ public setFillOpacity(param0: java.lang.Number): void;
+ public setIntervals(param0: java.lang.Number): void;
+ public getPointsInInterval(): java.lang.Number;
+ public setTrackByArea(param0: java.lang.Boolean): void;
+ public getNegativeFillColor(): com.highsoft.highcharts.common.HIColor;
+ public getFillOpacity(): java.lang.Number;
+ public setBaseSeries(param0: any): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBindings extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public setEllipseAnnotation(param0: com.highsoft.highcharts.common.hichartsclasses.HIEllipseAnnotation): void;
+ public getRectangleAnnotation(): com.highsoft.highcharts.common.hichartsclasses.HINavigationBindingsOptionsObject;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setLabelAnnotation(param0: com.highsoft.highcharts.common.hichartsclasses.HINavigationBindingsOptionsObject): void;
+ public getCircleAnnotation(): com.highsoft.highcharts.common.hichartsclasses.HINavigationBindingsOptionsObject;
+ public setRectangleAnnotation(param0: com.highsoft.highcharts.common.hichartsclasses.HINavigationBindingsOptionsObject): void;
+ public getLabelAnnotation(): com.highsoft.highcharts.common.hichartsclasses.HINavigationBindingsOptionsObject;
+ public setCircleAnnotation(param0: com.highsoft.highcharts.common.hichartsclasses.HINavigationBindingsOptionsObject): void;
+ public getParams(): java.util.HashMap;
+ public getEllipseAnnotation(): com.highsoft.highcharts.common.hichartsclasses.HIEllipseAnnotation;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBoost extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public getDebug(): com.highsoft.highcharts.common.hichartsclasses.HIDebug;
+ public getUseGPUTranslations(): java.lang.Boolean;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setUsePreallocated(param0: java.lang.Boolean): void;
+ public setAllowForce(param0: java.lang.Boolean): void;
+ public getEnabled(): java.lang.Boolean;
+ public setSeriesThreshold(param0: java.lang.Number): void;
+ public getUsePreallocated(): java.lang.Boolean;
+ public getParams(): java.util.HashMap;
+ public setUseGPUTranslations(param0: java.lang.Boolean): void;
+ public setDebug(param0: com.highsoft.highcharts.common.hichartsclasses.HIDebug): void;
+ public setEnabled(param0: java.lang.Boolean): void;
+ public getSeriesThreshold(): java.lang.Number;
+ public getAllowForce(): java.lang.Boolean;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBottom extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public getColor(): com.highsoft.highcharts.common.HIColor;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getVisible(): any;
+ public setColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public setVisible(param0: any): void;
+ public getSize(): java.lang.Number;
+ public setSize(param0: java.lang.Number): void;
+ public getParams(): java.util.HashMap;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBoxplot extends com.highsoft.highcharts.common.hichartsclasses.HISeries {
+ public static class: java.lang.Class;
+ public setMinPointLength(param0: java.lang.Number): void;
+ public getMinPointLength(): java.lang.Number;
+ public setMedianWidth(param0: java.lang.Number): void;
+ public setGroupPadding(param0: java.lang.Number): void;
+ public getEdgeWidth(): java.lang.Number;
+ public setStemDashStyle(param0: string): void;
+ public setWhiskerWidth(param0: java.lang.Number): void;
+ public getWhiskerWidth(): java.lang.Number;
+ public getColors(): java.util.ArrayList;
+ public getPointRange(): java.lang.Number;
+ public getGroupPadding(): java.lang.Number;
+ public setWhiskerLength(param0: any): void;
+ public getMedianDashStyle(): string;
+ public getMedianColor(): com.highsoft.highcharts.common.HIColor;
+ public setColorByPoint(param0: java.lang.Boolean): void;
+ public getCenterInCategory(): java.lang.Boolean;
+ public constructor();
+ public setWhiskerColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public getDepth(): java.lang.Number;
+ public setEdgeColor(param0: any): void;
+ public getFillColor(): com.highsoft.highcharts.common.HIColor;
+ public setMaxPointWidth(param0: java.lang.Number): void;
+ public getStemDashStyle(): string;
+ public setEdgeWidth(param0: java.lang.Number): void;
+ public setGrouping(param0: java.lang.Boolean): void;
+ public setPointPadding(param0: java.lang.Number): void;
+ public getStemWidth(): java.lang.Number;
+ public setStemWidth(param0: java.lang.Number): void;
+ public getParams(): java.util.Map;
+ public getBoxDashStyle(): string;
+ public setPointWidth(param0: java.lang.Number): void;
+ public getParams(): java.util.HashMap;
+ public getMedianWidth(): java.lang.Number;
+ public getColorByPoint(): java.lang.Boolean;
+ public getWhiskerDashStyle(): string;
+ public setFillColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public setWhiskerDashStyle(param0: string): void;
+ public setColors(param0: java.util.ArrayList): void;
+ public getMaxPointWidth(): java.lang.Number;
+ public setMedianColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public setPointRange(param0: java.lang.Number): void;
+ public getWhiskerLength(): any;
+ public setCenterInCategory(param0: java.lang.Boolean): void;
+ public setMedianDashStyle(param0: string): void;
+ public getPointWidth(): java.lang.Number;
+ public setDepth(param0: java.lang.Number): void;
+ public getWhiskerColor(): com.highsoft.highcharts.common.HIColor;
+ public getEdgeColor(): any;
+ public getGrouping(): java.lang.Boolean;
+ public setBoxDashStyle(param0: string): void;
+ public getPointPadding(): java.lang.Number;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBreaks extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public getTo(): java.lang.Number;
+ public getBreakSize(): java.lang.Number;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setFrom(param0: java.lang.Number): void;
+ public getFrom(): java.lang.Number;
+ public getRepeat(): java.lang.Number;
+ public setBreakSize(param0: java.lang.Number): void;
+ public setTo(param0: java.lang.Number): void;
+ public getParams(): java.util.HashMap;
+ public setRepeat(param0: java.lang.Number): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBubble extends com.highsoft.highcharts.common.hichartsclasses.HISeries {
+ public static class: java.lang.Class;
+ public setDisplayNegative(param0: java.lang.Boolean): void;
+ public getZThreshold(): java.lang.Number;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getSizeByAbsoluteValue(): java.lang.Boolean;
+ public setZThreshold(param0: java.lang.Number): void;
+ public setMaxSize(param0: any): void;
+ public getDisplayNegative(): java.lang.Boolean;
+ public getParams(): java.util.HashMap;
+ public getJitter(): com.highsoft.highcharts.common.hichartsclasses.HIJitter;
+ public getZMax(): java.lang.Number;
+ public setSizeBy(param0: string): void;
+ public getZMin(): java.lang.Number;
+ public setSizeByAbsoluteValue(param0: java.lang.Boolean): void;
+ public setZMin(param0: java.lang.Number): void;
+ public setMinSize(param0: any): void;
+ public setJitter(param0: com.highsoft.highcharts.common.hichartsclasses.HIJitter): void;
+ public getMaxSize(): any;
+ public setZMax(param0: java.lang.Number): void;
+ public getSizeBy(): string;
+ public getMinSize(): any;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBubbleLegend extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public getParams(): java.util.Map;
+ public getSizeByAbsoluteValue(): java.lang.Boolean;
+ public getRanges(): java.util.ArrayList;
+ public getConnectorWidth(): java.lang.Number;
+ public getEnabled(): java.lang.Boolean;
+ public getClassName(): string;
+ public getParams(): java.util.HashMap;
+ public setConnectorClassName(param0: string): void;
+ public getConnectorDistance(): java.lang.Number;
+ public setConnectorWidth(param0: java.lang.Number): void;
+ public getZIndex(): java.lang.Number;
+ public setSizeBy(param0: string): void;
+ public setLegendIndex(param0: java.lang.Number): void;
+ public setRanges(param0: java.util.ArrayList): void;
+ public setMaxSize(param0: java.lang.Number): void;
+ public setZIndex(param0: java.lang.Number): void;
+ public getColor(): com.highsoft.highcharts.common.HIColor;
+ public getLabels(): com.highsoft.highcharts.common.hichartsclasses.HILabels;
+ public getZThreshold(): java.lang.Number;
+ public constructor();
+ public setColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public setLabels(param0: com.highsoft.highcharts.common.hichartsclasses.HILabels): void;
+ public setZThreshold(param0: java.lang.Number): void;
+ public setBorderWidth(param0: java.lang.Number): void;
+ public getBorderColor(): com.highsoft.highcharts.common.HIColor;
+ public setClassName(param0: string): void;
+ public getMinSize(): java.lang.Number;
+ public getMaxSize(): java.lang.Number;
+ public getLegendIndex(): java.lang.Number;
+ public setConnectorColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public setSizeByAbsoluteValue(param0: java.lang.Boolean): void;
+ public setEnabled(param0: java.lang.Boolean): void;
+ public getBorderWidth(): java.lang.Number;
+ public getConnectorColor(): com.highsoft.highcharts.common.HIColor;
+ public getConnectorClassName(): string;
+ public setBorderColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public setConnectorDistance(param0: java.lang.Number): void;
+ public getSizeBy(): string;
+ public setMinSize(param0: java.lang.Number): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBubbleLegendFormatterContextObject extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getCenter(): java.lang.Number;
+ public setRadius(param0: java.lang.Number): void;
+ public setValue(param0: java.lang.Number): void;
+ public getParams(): java.util.HashMap;
+ public getRadius(): java.lang.Number;
+ public getValue(): java.lang.Number;
+ public setCenter(param0: java.lang.Number): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIBullet extends com.highsoft.highcharts.common.hichartsclasses.HISeries {
+ public static class: java.lang.Class;
+ public setMinPointLength(param0: java.lang.Number): void;
+ public getMinPointLength(): java.lang.Number;
+ public setGroupPadding(param0: java.lang.Number): void;
+ public getParams(): java.util.Map;
+ public getEdgeWidth(): java.lang.Number;
+ public setGroupZPadding(param0: java.lang.Number): void;
+ public getColors(): java.util.ArrayList;
+ public setPointWidth(param0: java.lang.Number): void;
+ public getParams(): java.util.HashMap;
+ public getColorByPoint(): java.lang.Boolean;
+ public getBorderRadius(): java.lang.Number;
+ public getPointRange(): java.lang.Number;
+ public getGroupPadding(): java.lang.Number;
+ public setColors(param0: java.util.ArrayList): void;
+ public setBorderRadius(param0: java.lang.Number): void;
+ public getMaxPointWidth(): java.lang.Number;
+ public getTargetOptions(): com.highsoft.highcharts.common.hichartsclasses.HITargetOptions;
+ public getGroupZPadding(): java.lang.Number;
+ public setColorByPoint(param0: java.lang.Boolean): void;
+ public getCenterInCategory(): java.lang.Boolean;
+ public constructor();
+ public setPointRange(param0: java.lang.Number): void;
+ public getDepth(): java.lang.Number;
+ public setBorderWidth(param0: java.lang.Number): void;
+ public getBorderColor(): com.highsoft.highcharts.common.HIColor;
+ public setEdgeColor(param0: any): void;
+ public setCenterInCategory(param0: java.lang.Boolean): void;
+ public setMaxPointWidth(param0: java.lang.Number): void;
+ public getPointWidth(): java.lang.Number;
+ public setDepth(param0: java.lang.Number): void;
+ public setEdgeWidth(param0: java.lang.Number): void;
+ public setGrouping(param0: java.lang.Boolean): void;
+ public getBorderWidth(): java.lang.Number;
+ public setPointPadding(param0: java.lang.Number): void;
+ public setTargetOptions(param0: com.highsoft.highcharts.common.hichartsclasses.HITargetOptions): void;
+ public setBorderColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public getEdgeColor(): any;
+ public getGrouping(): java.lang.Boolean;
+ public getPointPadding(): java.lang.Number;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIButtonOptions extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public constructor();
+ public getParams(): java.util.Map;
+ public setEnabled(param0: java.lang.Boolean): void;
+ public setText(param0: string): void;
+ public setTheme(param0: com.highsoft.highcharts.common.hichartsclasses.HITheme): void;
+ public getEnabled(): java.lang.Boolean;
+ public getY(): java.lang.Number;
+ public getParams(): java.util.HashMap;
+ public setY(param0: java.lang.Number): void;
+ public getText(): string;
+ public getTheme(): com.highsoft.highcharts.common.hichartsclasses.HITheme;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIButtons extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getContextButton(): com.highsoft.highcharts.common.hichartsclasses.HIContextButton;
+ public getParams(): java.util.HashMap;
+ public setContextButton(param0: com.highsoft.highcharts.common.hichartsclasses.HIContextButton): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HICSSObject extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public getPosition(): string;
+ public getHeight(): java.lang.Number;
+ public getLineWidth(): java.lang.Number;
+ public getFontSize(): string;
+ public getBorderRadius(): java.lang.Number;
+ public getTextOverflow(): string;
+ public setTextOverflow(param0: string): void;
+ public setOpacity(param0: java.lang.Number): void;
+ public setBorderRadius(param0: java.lang.Number): void;
+ public setCursor(param0: string): void;
+ public setTextDecoration(param0: string): void;
+ public setBackgroundColor(param0: any): void;
+ public getColor(): com.highsoft.highcharts.common.HIColor;
+ public constructor();
+ public setWidth(param0: java.lang.Number): void;
+ public setTop(param0: string): void;
+ public setTransition(param0: string): void;
+ public setPosition(param0: string): void;
+ public getTextOutline(): string;
+ public getCursor(): string;
+ public getPointerEvents(): string;
+ public getBackgroundColor(): any;
+ public getBackground(): string;
+ public setBackground(param0: string): void;
+ public getPadding(): string;
+ public getFontFamily(): string;
+ public getTransition(): string;
+ public getParams(): java.util.Map;
+ public setFontSize(param0: string): void;
+ public setFontWeight(param0: string): void;
+ public setLineWidth(param0: java.lang.Number): void;
+ public getParams(): java.util.HashMap;
+ public getTextAlign(): string;
+ public getWhiteSpace(): string;
+ public getTextDecoration(): string;
+ public setPointerEvents(param0: string): void;
+ public setTextAlign(param0: string): void;
+ public setColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public setBorder(param0: string): void;
+ public setWhiteSpace(param0: string): void;
+ public getFontWeight(): string;
+ public getOpacity(): java.lang.Number;
+ public setHeight(param0: java.lang.Number): void;
+ public setFontFamily(param0: string): void;
+ public setPadding(param0: string): void;
+ public getBorder(): string;
+ public getTop(): string;
+ public getWidth(): java.lang.Number;
+ public setTextOutline(param0: string): void;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HICaption extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public setUseHTML(param0: java.lang.Boolean): void;
+ public setStyle(param0: com.highsoft.highcharts.common.hichartsclasses.HICSSObject): void;
+ public constructor();
+ public getParams(): java.util.Map;
+ public getFloating(): java.lang.Boolean;
+ public getParams(): java.util.HashMap;
+ public setY(param0: java.lang.Number): void;
+ public setX(param0: java.lang.Number): void;
+ public getText(): string;
+ public getMargin(): java.lang.Number;
+ public getUseHTML(): java.lang.Boolean;
+ public getStyle(): com.highsoft.highcharts.common.hichartsclasses.HICSSObject;
+ public getVerticalAlign(): string;
+ public getAlign(): string;
+ public setText(param0: string): void;
+ public setAlign(param0: string): void;
+ public setMargin(param0: java.lang.Number): void;
+ public getY(): java.lang.Number;
+ public setFloating(param0: java.lang.Boolean): void;
+ public setVerticalAlign(param0: string): void;
+ public getX(): java.lang.Number;
+ }
+ }
+ }
+ }
+ }
+}
+
+declare module com {
+ export module highsoft {
+ export module highcharts {
+ export module common {
+ export module hichartsclasses {
+ export class HIChart extends com.highsoft.highcharts.core.HIFoundation {
+ public static class: java.lang.Class;
+ public setStyle(param0: com.highsoft.highcharts.common.hichartsclasses.HICSSObject): void;
+ public getHoverSeries(): com.highsoft.highcharts.common.hichartsclasses.HISeries;
+ public getTooltip(): com.highsoft.highcharts.common.hichartsclasses.HITooltip;
+ public getZoomType(): string;
+ public setAnimation(param0: com.highsoft.highcharts.common.hichartsclasses.HIAnimationOptionsObject): void;
+ public getPinchType(): string;
+ public getPlotLeft(): java.lang.Number;
+ public getXAxis(): java.util.ArrayList;
+ public setRenderer(param0: com.highsoft.highcharts.common.hichartsclasses.HISVGRenderer): void;
+ public getNumberFormatter(): com.highsoft.highcharts.core.HIFunction;
+ public setPlotHeight(param0: java.lang.Number): void;
+ public setRenderTo(param0: string): void;
+ public setResetZoomButton(param0: com.highsoft.highcharts.common.hichartsclasses.HIResetZoomButton): void;
+ public getDisplayErrors(): java.lang.Boolean;
+ public getPlotBorderColor(): com.highsoft.highcharts.common.HIColor;
+ public getContainer(): any;
+ public setBorderRadius(param0: java.lang.Number): void;
+ public setPlotBackgroundColor(param0: com.highsoft.highcharts.common.HIColor): void;
+ public getMargin(): java.util.ArrayList;
+ public getHoverPoint(): com.highsoft.highcharts.common.hichartsclasses.HIPoint;
+ public constructor();
+ public getBackgroundColor(): com.highsoft.highcharts.common.HIColor;
+ public setEvents(param0: com.highsoft.highcharts.common.hichartsclasses.HIEvents): void;
+ public setAlignTicks(param0: java.lang.Boolean): void;
+ public setData(param0: com.highsoft.highcharts.common.hichartsclasses.HIData): void;
+ public setUserOptions(param0: java.util.HashMap): void;
+ public getMarginRight(): java.lang.Number;
+ public getHasParallelCoordinates(): java.lang.Boolean;
+ public setSelectionMarkerFill(param0: com.highsoft.highcharts.common.HIColor): void;
+ public setNumberFormatter(param0: com.highsoft.highcharts.core.HIFunction): void;
+ public getRenderTo(): string;
+ public setMarginBottom(param0: java.lang.Number): void;
+ public setMarginLeft(param0: java.lang.Number): void;
+ public getStyledMode(): java.lang.Boolean;
+ public getMarginTop(): java.lang.Number;
+ public getLegend(): com.highsoft.highcharts.common.hichartsclasses.HILegend;
+ public getReflow(): java.lang.Boolean;
+ public setPlotWidth(param0: java.lang.Number): void;
+ public getPlotTop(): java.lang.Number;
+ public setFullscreen(param0: com.highsoft.highcharts.common.hichartsclasses.HIFullscreen): void;
+ public getParams(): java.util.Map;
+ public setTitle(param0: com.highsoft.highcharts.common.hichartsclasses.HITitle): void;
+ public getType(): string;
+ public getClassName(): string;
+ public getCredits(): com.highsoft.highcharts.common.hichartsclasses.HISVGElement;
+ public setIndex(param0: java.lang.Number): void;
+ public getParams(): java.util.HashMap;
+ public setSpacingRight(param0: java.lang.Number): void;
+ public setShowAxes(param0: java.lang.Boolean): void;
+ public setParallelCoordinates(param0: java.lang.Boolean): void;
+ public setHoverPoints(param0: java.util.ArrayList): void;
+ public getOptions3d(): com.highsoft.highcharts.common.hichartsclasses.HIOptions3d;
+ public getPlotBorderWidth(): java.lang.Number;
+ public setChartHeight(param0: java.lang.Number): void;
+ public setPanning(param0: com.highsoft.highcharts.common.hichartsclasses.HIPanning): void;
+ public setContainer(param0: any): void;
+ public setHeight(param0: any): void;
+ public getData(): com.highsoft.highcharts.common.hichartsclasses.HIData;
+ public setPlotBorderWidth(param0: java.lang.Number): void;
+ public setPlotLeft(param0: java.lang.Number): void;
+ public setColorCount(param0: java.lang.Number): void;
+ public setMargin(param0: java.util.ArrayList): void;
+ public setStyledMode(param0: java.lang.Boolean): void;
+ public setZoomType(param0: string): void;
+ public getPlotHeight(): java.lang.Number;
+ public setClassName(param0: string): void;
+ public setPlotTop(param0: java.lang.Number): void;
+ public getScrollablePlotArea(): com.highsoft.highcharts.common.hichartsclasses.HIScrollablePlotArea;
+ public getSpacingBottom(): java.lang.Number;
+ public getSpacingRight(): java.lang.Number;
+ public setSpacingLeft(param0: java.lang.Number): void;
+ public getTime(): com.highsoft.highcharts.common.hichartsclasses.HITime;
+ public setCredits(param0: com.highsoft.highcharts.common.hichartsclasses.HISVGElement): void;
+ public setZoomKey(param0: string): void;
+ public getPanning(): com.highsoft.highcharts.common.hichartsclasses.HIPanning;
+ public getResetZoomButton(): com.highsoft.highcharts.common.hichartsclasses.HIResetZoomButton;
+ public getSeries(): java.util.ArrayList