@progress/kendo-angular-schematics 13.5.0-develop.3 → 13.5.0-develop.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/collection.json +9 -27
  2. package/e2e/utils.d.ts +17 -0
  3. package/e2e/utils.js +71 -0
  4. package/e2e/utils.js.map +1 -0
  5. package/package.json +5 -2
  6. package/src/chart/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.__style__.template +6 -0
  7. package/src/chart/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.html.template +1 -0
  8. package/src/chart/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template +21 -0
  9. package/src/chart/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template +34 -0
  10. package/src/chart/files/chart.html.include +103 -0
  11. package/src/{charts/circular → chart}/index.d.ts +2 -2
  12. package/src/chart/index.js +238 -0
  13. package/src/chart/index.js.map +1 -0
  14. package/src/chart/schema.d.ts +230 -0
  15. package/src/chart/schema.js +72 -0
  16. package/src/chart/schema.js.map +1 -0
  17. package/src/chart/schema.json +235 -0
  18. package/src/grid/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.__style__.template +6 -0
  19. package/src/grid/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.html.template +1 -0
  20. package/src/grid/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template +21 -0
  21. package/src/grid/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template +37 -0
  22. package/src/grid/files/__name@dasherize@if-flat__/__name@dasherize__.sample-data.ts.template +1233 -0
  23. package/src/grid/files/{html/__name@dasherize__/__name@dasherize__.component.html → grid.html.include} +4 -9
  24. package/src/grid/index.d.ts +2 -2
  25. package/src/grid/index.js +77 -61
  26. package/src/grid/index.js.map +1 -1
  27. package/src/grid/schema.d.ts +12 -11
  28. package/src/grid/schema.js +16 -5
  29. package/src/grid/schema.js.map +1 -1
  30. package/src/grid/schema.json +82 -37
  31. package/src/ngAdd/index.js +2 -1
  32. package/src/ngAdd/index.js.map +1 -1
  33. package/src/rules/index.js +2 -1
  34. package/src/rules/index.js.map +1 -1
  35. package/src/scheduler/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.__style__.template +6 -0
  36. package/src/scheduler/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.html.template +1 -0
  37. package/src/scheduler/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template +21 -0
  38. package/src/scheduler/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template +26 -0
  39. package/src/scheduler/files/{events-utc.ts → __name@dasherize@if-flat__/__name@dasherize__.sample-data.ts.template} +0 -6
  40. package/src/scheduler/files/scheduler.html.include +7 -0
  41. package/src/scheduler/index.d.ts +2 -2
  42. package/src/scheduler/index.js +54 -32
  43. package/src/scheduler/index.js.map +1 -1
  44. package/src/scheduler/schema.d.ts +10 -2
  45. package/src/scheduler/schema.json +78 -2
  46. package/src/third_party/d3fc/d3fc-rebind/rebindAll.js +32 -0
  47. package/src/third_party/d3fc/day.js +61 -0
  48. package/src/third_party/d3fc/duration.js +34 -0
  49. package/src/third_party/d3fc/filter/skipWeekends.js +32 -0
  50. package/src/third_party/d3fc/financial.js +184 -0
  51. package/src/third_party/d3fc/fn.js +31 -0
  52. package/src/third_party/d3fc/geometricBrownianMotion.js +94 -0
  53. package/src/third_party/d3fc/interval.js +89 -0
  54. package/src/third_party/d3fc/randomNormal.js +49 -0
  55. package/src/third_party/d3fc/year.js +71 -0
  56. package/src/third_party/index.d.ts +28 -0
  57. package/src/third_party/index.js +40 -0
  58. package/src/third_party/index.js.map +1 -0
  59. package/src/third_party/index.v13.d.ts +13 -0
  60. package/src/third_party/index.v13.js +67 -0
  61. package/src/third_party/index.v13.js.map +1 -0
  62. package/src/utils/ast-utils.js +2 -1
  63. package/src/utils/ast-utils.js.map +1 -1
  64. package/src/utils/bootstrap-module.js +2 -1
  65. package/src/utils/bootstrap-module.js.map +1 -1
  66. package/src/{charts/scatter/schema.js → utils/parse-complex-options.d.ts} +1 -3
  67. package/src/utils/parse-complex-options.js +32 -0
  68. package/src/utils/parse-complex-options.js.map +1 -0
  69. package/src/charts/categorical/files/data.d.ts +0 -5
  70. package/src/charts/categorical/files/data.js +0 -29
  71. package/src/charts/categorical/files/data.js.map +0 -1
  72. package/src/charts/categorical/files/data.ts +0 -25
  73. package/src/charts/categorical/files/html/__name@dasherize__/__name@dasherize__.component.html +0 -46
  74. package/src/charts/categorical/files/html/__name@dasherize__/__name@dasherize__.component.ts +0 -25
  75. package/src/charts/categorical/files/inline/__name@dasherize__/__name@dasherize__.component.ts +0 -69
  76. package/src/charts/categorical/index.d.ts +0 -7
  77. package/src/charts/categorical/index.js +0 -124
  78. package/src/charts/categorical/index.js.map +0 -1
  79. package/src/charts/categorical/schema.d.ts +0 -92
  80. package/src/charts/categorical/schema.js +0 -54
  81. package/src/charts/categorical/schema.js.map +0 -1
  82. package/src/charts/categorical/schema.json +0 -253
  83. package/src/charts/circular/files/data.d.ts +0 -5
  84. package/src/charts/circular/files/data.js +0 -15
  85. package/src/charts/circular/files/data.js.map +0 -1
  86. package/src/charts/circular/files/data.ts +0 -11
  87. package/src/charts/circular/files/html/__name@dasherize__/__name@dasherize__.component.html +0 -27
  88. package/src/charts/circular/files/html/__name@dasherize__/__name@dasherize__.component.ts +0 -23
  89. package/src/charts/circular/files/inline/__name@dasherize__/__name@dasherize__.component.ts +0 -52
  90. package/src/charts/circular/index.js +0 -50
  91. package/src/charts/circular/index.js.map +0 -1
  92. package/src/charts/circular/schema.d.ts +0 -31
  93. package/src/charts/circular/schema.js +0 -7
  94. package/src/charts/circular/schema.js.map +0 -1
  95. package/src/charts/circular/schema.json +0 -175
  96. package/src/charts/scatter/files/data.d.ts +0 -5
  97. package/src/charts/scatter/files/data.js +0 -25
  98. package/src/charts/scatter/files/data.js.map +0 -1
  99. package/src/charts/scatter/files/data.ts +0 -21
  100. package/src/charts/scatter/files/html/__name@dasherize__/__name@dasherize__.component.html +0 -35
  101. package/src/charts/scatter/files/html/__name@dasherize__/__name@dasherize__.component.ts +0 -21
  102. package/src/charts/scatter/files/inline/__name@dasherize__/__name@dasherize__.component.ts +0 -58
  103. package/src/charts/scatter/index.d.ts +0 -7
  104. package/src/charts/scatter/index.js +0 -50
  105. package/src/charts/scatter/index.js.map +0 -1
  106. package/src/charts/scatter/schema.d.ts +0 -32
  107. package/src/charts/scatter/schema.js.map +0 -1
  108. package/src/charts/scatter/schema.json +0 -209
  109. package/src/charts/stock/files/data.d.ts +0 -5
  110. package/src/charts/stock/files/data.js +0 -418
  111. package/src/charts/stock/files/data.js.map +0 -1
  112. package/src/charts/stock/files/data.ts +0 -414
  113. package/src/charts/stock/files/html/__name@dasherize__/__name@dasherize__.component.html +0 -57
  114. package/src/charts/stock/files/html/__name@dasherize__/__name@dasherize__.component.ts +0 -23
  115. package/src/charts/stock/files/inline/__name@dasherize__/__name@dasherize__.component.ts +0 -83
  116. package/src/charts/stock/index.d.ts +0 -7
  117. package/src/charts/stock/index.js +0 -50
  118. package/src/charts/stock/index.js.map +0 -1
  119. package/src/charts/stock/schema.d.ts +0 -36
  120. package/src/charts/stock/schema.js +0 -7
  121. package/src/charts/stock/schema.js.map +0 -1
  122. package/src/charts/stock/schema.json +0 -285
  123. package/src/grid/files/data.d.ts +0 -5
  124. package/src/grid/files/data.js +0 -1241
  125. package/src/grid/files/data.js.map +0 -1
  126. package/src/grid/files/data.ts +0 -1237
  127. package/src/grid/files/html/__name@dasherize__/__name@dasherize__.component.ts +0 -29
  128. package/src/grid/files/inline/__name@dasherize__/__name@dasherize__.component.ts +0 -79
  129. package/src/scheduler/files/events-utc.d.ts +0 -5
  130. package/src/scheduler/files/events-utc.js +0 -846
  131. package/src/scheduler/files/events-utc.js.map +0 -1
  132. package/src/scheduler/files/html/__name@dasherize__/__name@dasherize__.component.html +0 -29
  133. package/src/scheduler/files/html/__name@dasherize__/__name@dasherize__.component.ts +0 -17
  134. package/src/scheduler/files/inline/__name@dasherize__/__name@dasherize__.component.ts +0 -48
package/collection.json CHANGED
@@ -16,38 +16,20 @@
16
16
  "grid": {
17
17
  "progress:scaffold-category": "page",
18
18
  "description": "Generates a component containing Kendo Angular Grid component.",
19
- "factory": "./src/grid/index#grid",
19
+ "factory": "./src/grid",
20
20
  "schema": "./src/grid/schema.json"
21
21
  },
22
- "scheduler": {
23
- "progress:scaffold-category": "page",
24
- "description": "Generates a component containing Kendo Angular Scheduler component.",
25
- "factory": "./src/scheduler/index#scheduler",
26
- "schema": "./src/scheduler/schema.json"
27
- },
28
- "categorical-chart": {
22
+ "chart": {
29
23
  "progress:scaffold-category": "page",
30
24
  "description": "Generates a component containing Kendo Angular Chart component.",
31
- "factory": "./src/charts/categorical/index#chart",
32
- "schema": "./src/charts/categorical/schema.json"
25
+ "factory": "./src/chart",
26
+ "schema": "./src/chart/schema.json"
33
27
  },
34
- "circular-chart": {
35
- "progress:scaffold-category": "page",
36
- "description": "Generates a component containing Kendo Angular Pie or Donut Chart component.",
37
- "factory": "./src/charts/circular/index#chart",
38
- "schema": "./src/charts/circular/schema.json"
39
- },
40
- "scatter-chart": {
28
+ "scheduler": {
41
29
  "progress:scaffold-category": "page",
42
- "description": "Generates a component containing Kendo Angular Scatter Chart component.",
43
- "factory": "./src/charts/scatter/index#chart",
44
- "schema": "./src/charts/scatter/schema.json"
45
- },
46
- "stock-chart": {
47
- "progress:scaffold-category": "page",
48
- "description": "Generates a component containing Kendo Angular Stock Chart component.",
49
- "factory": "./src/charts/stock/index#chart",
50
- "schema": "./src/charts/stock/schema.json"
51
- }
30
+ "description": "Generates a component containing Kendo Angular Scheduler component.",
31
+ "factory": "./src/scheduler",
32
+ "schema": "./src/scheduler/schema.json"
33
+ }
52
34
  }
53
35
  }
package/e2e/utils.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2023 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ /// <reference types="node" />
6
+ import { ChildProcess } from "child_process";
7
+ import { Browser } from "@progress/kendo-e2e";
8
+ export declare function cleanFolder(dir: string): void;
9
+ export declare function replaceStringInFile(filePath: string, oldString: string, newString: string): void;
10
+ export declare function replaceAllStringInFile(filePath: string, oldString: string, newString: string): void;
11
+ export declare function exec(cmd: string, wd: string): Promise<{
12
+ stdout: string;
13
+ stderr: string;
14
+ }>;
15
+ export declare function execAsync(cmd: string, wd: string): ChildProcess;
16
+ export declare function kill(process: ChildProcess): void;
17
+ export declare function loadUrl(browser: Browser, url: string): Promise<void>;
package/e2e/utils.js ADDED
@@ -0,0 +1,71 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2023 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ "use strict";
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.loadUrl = exports.kill = exports.execAsync = exports.exec = exports.replaceAllStringInFile = exports.replaceStringInFile = exports.cleanFolder = void 0;
8
+ const tslib_1 = require("tslib");
9
+ const fs = tslib_1.__importStar(require("fs"));
10
+ const path_1 = require("path");
11
+ const child_process_1 = require("child_process");
12
+ const util_1 = require("util");
13
+ const execSync = (0, util_1.promisify)(child_process_1.exec);
14
+ function cleanFolder(dir) {
15
+ const resolvedDir = (0, path_1.resolve)(dir);
16
+ if (fs.existsSync(resolvedDir)) {
17
+ console.log(`Cleanup: ${resolvedDir}`);
18
+ fs.rmSync(resolvedDir, { recursive: true, force: true });
19
+ }
20
+ console.log(`Create: ${resolvedDir}`);
21
+ fs.mkdirSync(resolvedDir, { recursive: true });
22
+ }
23
+ exports.cleanFolder = cleanFolder;
24
+ function replaceStringInFile(filePath, oldString, newString) {
25
+ const absolutePath = (0, path_1.resolve)(filePath);
26
+ const content = fs.readFileSync(absolutePath, 'utf8');
27
+ fs.writeFileSync(absolutePath, content.replace(oldString, newString), 'utf8');
28
+ }
29
+ exports.replaceStringInFile = replaceStringInFile;
30
+ function replaceAllStringInFile(filePath, oldString, newString) {
31
+ const absolutePath = (0, path_1.resolve)(filePath);
32
+ const content = fs.readFileSync(absolutePath, 'utf8');
33
+ const regex = new RegExp(oldString, 'g');
34
+ fs.writeFileSync(absolutePath, content.replace(regex, newString), 'utf8');
35
+ }
36
+ exports.replaceAllStringInFile = replaceAllStringInFile;
37
+ async function exec(cmd, wd) {
38
+ const cwd = (0, path_1.resolve)(wd);
39
+ console.log(`Execute: ${cmd}\nCwd: ${cwd}`);
40
+ return await execSync(cmd, { cwd: cwd });
41
+ }
42
+ exports.exec = exec;
43
+ function execAsync(cmd, wd) {
44
+ const cwd = (0, path_1.resolve)(wd);
45
+ console.log(`Execute: ${cmd}\nCwd: ${cwd}`);
46
+ return (0, child_process_1.exec)(cmd, { cwd: cwd });
47
+ }
48
+ exports.execAsync = execAsync;
49
+ function kill(process) {
50
+ // FIXES PIPEWRAP open handle
51
+ process.stdout.destroy();
52
+ process.stderr.destroy();
53
+ process.stdin.destroy();
54
+ // FIXES PROCESSWRAP open handle
55
+ process.kill(); // (Optional: Just if you want to kill the process)
56
+ process.unref(); // Necessary: fixes PROCESSWRAP
57
+ }
58
+ exports.kill = kill;
59
+ async function loadUrl(browser, url) {
60
+ await browser.wait(async () => {
61
+ try {
62
+ await browser.navigateTo(url);
63
+ return true;
64
+ }
65
+ catch {
66
+ return false;
67
+ }
68
+ }, 90000, `Failed to load ${url}`, 1000);
69
+ }
70
+ exports.loadUrl = loadUrl;
71
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../libs/schematics/e2e/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-schematics",
3
- "version": "13.5.0-develop.3",
3
+ "version": "13.5.0-develop.4",
4
4
  "description": "Kendo UI Schematics for Angular",
5
5
  "license": "SEE LICENSE in LICENSE.md",
6
6
  "author": "Progress",
@@ -26,10 +26,13 @@
26
26
  "@angular/core": "13 - 16",
27
27
  "@angular-devkit/core": "13 - 16",
28
28
  "@angular-devkit/schematics": "13 - 16",
29
+ "@schematics/angular": "13 - 16",
29
30
  "rxjs": "^6.5.3 || ^7.0.0"
30
31
  },
31
32
  "dependencies": {
32
- "@progress/kendo-angular-schematics": "13.5.0-develop.3"
33
+ "@progress/kendo-angular-schematics": "13.5.0-develop.4",
34
+ "semver": "^7.5.3",
35
+ "@types/semver": "^7.5.0"
33
36
  },
34
37
  "main": "./src/index.js",
35
38
  "typings": "./src/index.d.ts"
@@ -0,0 +1,6 @@
1
+ <% if(displayBlock){ if(style != 'sass') { %>:host {
2
+ display: block;
3
+ }
4
+ <% } else { %>\:host
5
+ display: block;
6
+ <% }} %>
@@ -0,0 +1,21 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { <%= classify(name) %><%= classify(type) %> } from './<%= dasherize(name) %><%= type ? '.' + dasherize(type): '' %>';
4
+
5
+ describe('<%= classify(name) %><%= classify(type) %>', () => {
6
+ let component: <%= classify(name) %><%= classify(type) %>;
7
+ let fixture: ComponentFixture<<%= classify(name) %><%= classify(type) %>>;
8
+
9
+ beforeEach(() => {
10
+ TestBed.configureTestingModule({
11
+ <%= standalone ? 'imports' : 'declarations' %>: [<%= classify(name) %><%= classify(type) %>]
12
+ });
13
+ fixture = TestBed.createComponent(<%= classify(name) %><%= classify(type) %>);
14
+ component = fixture.componentInstance;
15
+ fixture.detectChanges();
16
+ });
17
+
18
+ it('should create', () => {
19
+ expect(component).toBeTruthy();
20
+ });
21
+ });
@@ -0,0 +1,34 @@
1
+ import { <% if(changeDetection !== 'Default') { %>ChangeDetectionStrategy, <% }%>Component<% if(!!viewEncapsulation) { %>, ViewEncapsulation<% }%> } from '@angular/core';<% if(standalone) {%>
2
+ import { CommonModule } from '@angular/common';<% } %>
3
+ import { sampleData } from './<%= dasherize(name) %>.sample-data';
4
+ <% if (chartType == "circular") { %>
5
+ import { SeriesLabelsContentArgs } from '@progress/kendo-angular-charts';<% } %><% if (legend) {%>
6
+ import { LegendTitle } from '@progress/kendo-angular-charts';<% } %>
7
+
8
+ @Component({<% if(!skipSelector) {%>
9
+ selector: '<%= selector %>',<%}%><% if(standalone) {%>
10
+ standalone: true,
11
+ imports: [CommonModule],<%}%><% if(inlineTemplate) { %>
12
+ template: `<%= include("chart.html.include") %>`<% } else { %>
13
+ templateUrl: './<%= dasherize(name) %><%= type ? '.' + dasherize(type): '' %>.html'<% } if(inlineStyle) { %>,
14
+ styles: [<% if(displayBlock){ %>
15
+ `
16
+ :host {
17
+ display: block;
18
+ }
19
+ `<% } %>
20
+ ]<% } else if (style !== 'none') { %>,
21
+ styleUrls: ['./<%= dasherize(name) %><%= type ? '.' + dasherize(type): '' %>.<%= style %>']<% } %><% if(!!viewEncapsulation) { %>,
22
+ encapsulation: ViewEncapsulation.<%= viewEncapsulation %><% } if (changeDetection !== 'Default') { %>,
23
+ changeDetection: ChangeDetectionStrategy.<%= changeDetection %><% } %>
24
+ })
25
+ export class <%= classify(name) %><%= classify(type) %> {
26
+ public seriesData = sampleData;
27
+ <% if (legend) { %>
28
+ public title: LegendTitle = { text: "<%= capitalize(name) %>" };
29
+ <% } %>
30
+ <% if (chartType == "stock" && navigator) { %>
31
+ public navigatorFrom: Date = <%=navigatorFrom%>;
32
+ public navigatorTo: Date = <%=navigatorTo%>;
33
+ <% } %>
34
+ }
@@ -0,0 +1,103 @@
1
+ <% if (chartType == "stock") { %>
2
+ <kendo-stockchart renderAs="<%=renderAs%>">
3
+ <% } else { %>
4
+ <kendo-chart renderAs="<%=renderAs%>">
5
+ <% } %>
6
+ <% if (title) { %>
7
+ <kendo-chart-title
8
+ text="<%= capitalize(name) %>"
9
+ position="top"
10
+ align="left">
11
+ </kendo-chart-title>
12
+ <% } %>
13
+ <% if (legend) { %>
14
+ <kendo-chart-legend
15
+ align="center"
16
+ position="right"
17
+ orientation="vertical"
18
+ [title]="title">
19
+ </kendo-chart-legend>
20
+ <% } %>
21
+ <kendo-chart-series>
22
+ <% if (chartType == "scatter") { %>
23
+ <kendo-chart-series-item
24
+ type="scatter"
25
+ [data]="seriesData"
26
+ xField="rainfall"
27
+ yField="windSpeed">
28
+ </kendo-chart-series-item>
29
+ <% } else { %>
30
+ <% for (let item of series) { %>
31
+ <kendo-chart-series-item
32
+ name="<%=capitalize(item)%>"
33
+ categoryField="<%=camelize(category)%>"
34
+ [data]="seriesData"
35
+ <% if (chartType == "stock") { %>
36
+ openField="<%=item%>Open"
37
+ closeField="<%=item%>Close"
38
+ lowField="<%=item%>Low"
39
+ highField="<%=item%>High"
40
+ type="candlestick"
41
+ <% } else if (chartType == "rangeArea" || chartType == "rangeBar" || chartType == "rangeColumn") { %>
42
+ fromField="<%=camelize(item)%>Min"
43
+ toField="<%=camelize(item)%>Max"
44
+ type="<%=chartType%>"
45
+ <% } else if (chartType == "scatter") { %>
46
+ xField="rainfall"
47
+ yField="windSpeed"
48
+ type="<%=chartType%>"
49
+ <% } else { %>
50
+ field="<%=camelize(item)%>"
51
+ type="<%=chartType%>"
52
+ <% } %>
53
+ >
54
+ </kendo-chart-series-item>
55
+ <% } %>
56
+ <% } %>
57
+ </kendo-chart-series>
58
+ <% if (chartType == "scatter") { %>
59
+ <kendo-chart-x-axis>
60
+ <kendo-chart-x-axis-item [title]="{ text: 'Wind Speed [km/h]' }">
61
+ </kendo-chart-x-axis-item>
62
+ </kendo-chart-x-axis>
63
+ <kendo-chart-y-axis>
64
+ <kendo-chart-y-axis-item [title]="{ text: 'Rainfall [mm]' }">
65
+ </kendo-chart-y-axis-item>
66
+ </kendo-chart-y-axis>
67
+ <% } else { %>
68
+ <kendo-chart-category-axis>
69
+ <kendo-chart-category-axis-item name="category" type="<% if (time) { %>date<% } else { %>category<% } %>">
70
+ <kendo-chart-category-axis-item-title text="<%=capitalize(category)%>"></kendo-chart-category-axis-item-title>
71
+ </kendo-chart-category-axis-item>
72
+ </kendo-chart-category-axis>
73
+
74
+ <kendo-chart-value-axis>
75
+ <kendo-chart-value-axis-item type="<% if (log) { %>log<% } else { %>numeric<% } %>">
76
+ <kendo-chart-value-axis-item-title text="<%=capitalize(value)%>"></kendo-chart-value-axis-item-title>
77
+ </kendo-chart-value-axis-item>
78
+ </kendo-chart-value-axis>
79
+ <% } %>
80
+ <% if (chartType == "stock" && navigator) { %>
81
+ <kendo-chart-navigator>
82
+ <kendo-chart-navigator-select
83
+ [from]="navigatorFrom"
84
+ [to]="navigatorTo">
85
+ </kendo-chart-navigator-select>
86
+ <kendo-chart-navigator-series>
87
+ <% for (let item of series) { %>
88
+ <kendo-chart-navigator-series-item
89
+ categoryField="<%=camelize(category)%>"
90
+ field="<%=item%>Close"
91
+ [data]="seriesData"
92
+ name="<%=capitalize(item)%>"
93
+ type="line">
94
+ </kendo-chart-navigator-series-item>
95
+ <% } %>
96
+ </kendo-chart-navigator-series>
97
+ </kendo-chart-navigator>
98
+ <% } %>
99
+ <% if (chartType == "stock") { %>
100
+ </kendo-stockchart>
101
+ <% } else { %>
102
+ </kendo-chart>
103
+ <% } %>
@@ -3,5 +3,5 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Rule } from '@angular-devkit/schematics';
6
- import { SchemaCircular } from './schema';
7
- export declare function chart(_options: SchemaCircular): Rule;
6
+ import { KendoAngularChartSchema } from './schema';
7
+ export default function (options: KendoAngularChartSchema): Rule;
@@ -0,0 +1,238 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2023 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ "use strict";
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const tslib_1 = require("tslib");
8
+ const schematics_1 = require("@angular-devkit/schematics");
9
+ const third_party_1 = require("../third_party");
10
+ const schema_1 = require("./schema");
11
+ const financial_1 = tslib_1.__importDefault(require("../third_party/d3fc/financial"));
12
+ const skipWeekends_1 = tslib_1.__importDefault(require("../third_party/d3fc/filter/skipWeekends"));
13
+ // The code for the schematic is forked from:
14
+ // https://github.com/angular/angular-cli/blob/main/packages/schematics/angular/component/index.ts
15
+ // We have some added code that we will have to merge.
16
+ function formatMonth(month) {
17
+ return month.toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
18
+ }
19
+ function templateOptions(options) {
20
+ if (options.chartType == "pie" || options.chartType == "donut") {
21
+ options.time = false;
22
+ if (!options.value)
23
+ options.value = "value";
24
+ options.series = [third_party_1.strings.camelize(options.value)];
25
+ if (!options.category)
26
+ options.category = "season";
27
+ const catTitlePrefix = third_party_1.strings.capitalize(options.category) || "";
28
+ if (!options.time && !options.categories?.length)
29
+ options.categories = options.category == "season" ?
30
+ ["spring", "summer", "fall", "winter"] :
31
+ [`${catTitlePrefix}1`, `${catTitlePrefix}2`, `${catTitlePrefix}3`, `${catTitlePrefix}4`];
32
+ }
33
+ else if (options.chartType == "scatter") {
34
+ // nothing to do here
35
+ }
36
+ else if (options.chartType == "stock") {
37
+ // options.time = true;
38
+ // if (!options.category) options.category = "date";
39
+ if (!options.time)
40
+ options.time = true;
41
+ if (!options.value)
42
+ options.value = "value";
43
+ if (!options.series?.length)
44
+ options.series = ["lemons", "apples", "mangos"];
45
+ if (!options.category)
46
+ options.category = options.time ? "date" : "season";
47
+ const now = new Date();
48
+ const navigatorFrom = new Date(now.getFullYear(), now.getMonth() - 11);
49
+ const navigatorTo = new Date(now.getFullYear(), now.getMonth() + 0);
50
+ options.navigatorFrom = `new Date("${navigatorFrom.getFullYear()}-${formatMonth(navigatorFrom.getMonth() + 1)}-01T00:00:00.000Z")`;
51
+ options.navigatorTo = `new Date("${navigatorTo.getFullYear()}-${formatMonth(navigatorTo.getMonth() + 1)}-01T00:00:00.000Z")`;
52
+ }
53
+ else {
54
+ if (!options.category)
55
+ options.category = options.time ? "date" : "season";
56
+ if (!options.value)
57
+ options.value = "value";
58
+ if (!options.series?.length)
59
+ options.series = ["lemons", "apples", "mangos"];
60
+ options.navigator = false;
61
+ const catTitlePrefix = third_party_1.strings.capitalize(options.category) || "";
62
+ if (!options.time && !options.categories?.length)
63
+ options.categories = options.category == "season" ?
64
+ ["spring", "summer", "fall", "winter"] :
65
+ [`${catTitlePrefix}1`, `${catTitlePrefix}2`, `${catTitlePrefix}3`, `${catTitlePrefix}4`];
66
+ }
67
+ }
68
+ function createDataSource(options) {
69
+ return async (tree, context) => {
70
+ try {
71
+ let dataSourceCode;
72
+ if (options.chartType == "scatter") {
73
+ dataSourceCode = `export const sampleData = ${JSON.stringify([
74
+ { windSpeed: 16.4, rainfall: 5.4 },
75
+ { windSpeed: 21.7, rainfall: 2 },
76
+ { windSpeed: 25.4, rainfall: 3 },
77
+ { windSpeed: 19, rainfall: 2 },
78
+ { windSpeed: 10.9, rainfall: 1 },
79
+ { windSpeed: 13.6, rainfall: 3.2 },
80
+ { windSpeed: 10.9, rainfall: 7.4 },
81
+ { windSpeed: 10.9, rainfall: 0 },
82
+ { windSpeed: 10.9, rainfall: 8.2 },
83
+ { windSpeed: 16.4, rainfall: 0 },
84
+ { windSpeed: 16.4, rainfall: 1.8 },
85
+ { windSpeed: 13.6, rainfall: 0.3 },
86
+ { windSpeed: 29.9, rainfall: 0 },
87
+ { windSpeed: 27.1, rainfall: 2.3 },
88
+ { windSpeed: 16.4, rainfall: 0 },
89
+ ], null, " ")};\nexport default sampleData;`;
90
+ }
91
+ else if (options.chartType == "stock") {
92
+ dataSourceCode = `export const sampleData = [`;
93
+ const now = new Date();
94
+ const seriesFrom = new Date(now.getFullYear(), now.getMonth() - 11);
95
+ const seriesTo = new Date(now.getFullYear(), now.getMonth() + 0);
96
+ const stockSomewhatSimilarStartingPoint = 30 + Math.random() * 10;
97
+ const randomPerSeriesData = options.series.map(series => (0, financial_1.default)()
98
+ .startDate(seriesFrom)
99
+ .startPrice(stockSomewhatSimilarStartingPoint * (0.95 + Math.random() * 0.1))
100
+ .filter(skipWeekends_1.default)
101
+ .stream()
102
+ .until(d => d.date > seriesTo)
103
+ .map(({ date, open, high, low, close, volume }) => ({
104
+ [third_party_1.strings.camelize(options.category)]: `/Date(${date.getTime()})/`,
105
+ [`${series}Open`]: open,
106
+ [`${series}High`]: high,
107
+ [`${series}Low`]: low,
108
+ [`${series}Close`]: close,
109
+ [`${series}Volume`]: volume,
110
+ })));
111
+ let l = randomPerSeriesData.reduce((prev, current) => Math.min(prev, current.length), Number.MAX_SAFE_INTEGER);
112
+ if (l == Number.MAX_SAFE_INTEGER)
113
+ l = 0;
114
+ const sampleData = [];
115
+ for (let i = 0; i < l; i++) {
116
+ let dataPoint = {};
117
+ for (let s = 0; s < randomPerSeriesData.length; s++) {
118
+ dataPoint = { ...randomPerSeriesData[s][i], ...dataPoint };
119
+ }
120
+ sampleData.push(dataPoint);
121
+ }
122
+ dataSourceCode = `export const sampleData = ${JSON.stringify(sampleData, null, " ")};\nexport default sampleData;`;
123
+ }
124
+ else {
125
+ dataSourceCode = `export const sampleData = [`;
126
+ if (options.time) {
127
+ const now = new Date();
128
+ for (let i = -11; i <= 0; i++) {
129
+ dataSourceCode += i == -11 ? `{\n` : ` {\n`;
130
+ const seriesDate = new Date(now.getFullYear(), now.getMonth() + i);
131
+ dataSourceCode += ` ${third_party_1.strings.camelize(options.category)}: new Date("${seriesDate.getFullYear()}-${formatMonth(seriesDate.getMonth() + 1)}-01T00:00:00.000Z"),\n`;
132
+ for (let s = 0; s < options.series.length; s++) {
133
+ if ((0, schema_1.isCategorical)(options)) {
134
+ const value = Math.random() * 7 + s * 3 + (12 + i);
135
+ dataSourceCode += ` ${third_party_1.strings.camelize(options.series[s])}: ${value.toFixed(2)},\n`;
136
+ }
137
+ else if ((0, schema_1.isCategoricalRange)(options)) {
138
+ const minValue = Math.random() * 7 + s * 3 + (12 + i);
139
+ const maxValue = minValue + 2 + Math.random() * 2;
140
+ dataSourceCode += ` ${third_party_1.strings.camelize(options.series[s])}Min: ${minValue.toFixed(2)},\n`;
141
+ dataSourceCode += ` ${third_party_1.strings.camelize(options.series[s])}Max: ${maxValue.toFixed(2)},\n`;
142
+ }
143
+ }
144
+ dataSourceCode += i == 0 ? ` }` : ` },`;
145
+ }
146
+ }
147
+ else {
148
+ const categoryFieldName = third_party_1.strings.camelize(options.category);
149
+ for (let i = 0; i < options.categories.length; i++) {
150
+ const category = options.categories[i];
151
+ dataSourceCode += i == 0 ? `{\n` : ` {\n`;
152
+ const categoryValue = JSON.stringify(third_party_1.strings.capitalize(category));
153
+ dataSourceCode += ` ${categoryFieldName}: ${categoryValue},\n`;
154
+ for (let s = 0; s < options.series.length; s++) {
155
+ if ((0, schema_1.isCategorical)(options) || options.chartType == "pie" || options.chartType == "donut") {
156
+ const value = Math.random() * 7 + s * 3 + i * 2;
157
+ dataSourceCode += ` ${third_party_1.strings.camelize(options.series[s])}: ${value.toFixed(2)},\n`;
158
+ }
159
+ else if ((0, schema_1.isCategoricalRange)(options)) {
160
+ const minValue = Math.random() * 7 + s * 3 + i * 2;
161
+ const maxValue = minValue + 2 + Math.random() * 2;
162
+ dataSourceCode += ` ${third_party_1.strings.camelize(options.series[s])}Min: ${minValue.toFixed(2)},\n`;
163
+ dataSourceCode += ` ${third_party_1.strings.camelize(options.series[s])}Max: ${maxValue.toFixed(2)},\n`;
164
+ }
165
+ }
166
+ dataSourceCode += i == (options.categories.length - 1) ? ` }` : ` },`;
167
+ }
168
+ }
169
+ dataSourceCode += `\n];\n`;
170
+ dataSourceCode += `export default sampleData;`;
171
+ }
172
+ tree.create(`${options.path}/${third_party_1.strings.dasherize(options.name)}/${third_party_1.strings.dasherize(options.name)}.sample-data.ts`, dataSourceCode);
173
+ }
174
+ catch (e) {
175
+ console.error(e);
176
+ }
177
+ };
178
+ }
179
+ function default_1(options) {
180
+ return async (host, context) => {
181
+ const workspace = await (0, third_party_1.getWorkspace)(host);
182
+ const project = workspace.projects.get(options.project);
183
+ if (!project) {
184
+ throw new schematics_1.SchematicsException(`Project "${options.project}" does not exist.`);
185
+ }
186
+ if (options.path === undefined) {
187
+ options.path = (0, third_party_1.buildDefaultPath)(project);
188
+ }
189
+ options.module = (0, third_party_1.findModuleFromOptions)(host, options);
190
+ const parsedPath = (0, third_party_1.parseName)(options.path, options.name);
191
+ options.name = parsedPath.name;
192
+ options.path = parsedPath.path;
193
+ options.selector =
194
+ options.selector || (0, third_party_1.buildSelector)(options, (project && project.prefix) || '');
195
+ (0, third_party_1.validateHtmlSelector)(options.selector);
196
+ const skipStyleFile = options.inlineStyle || options.style === third_party_1.Style.None;
197
+ // Kendo specific template options
198
+ templateOptions(options);
199
+ const templateSource = (0, schematics_1.apply)((0, schematics_1.url)('./files'), [
200
+ // Kendo specific, filters all .include files used as partials in templates.
201
+ (0, schematics_1.filter)(path => !path.endsWith('.include')),
202
+ options.skipTests ? (0, schematics_1.filter)((path) => !path.endsWith('.spec.ts.template')) : (0, schematics_1.noop)(),
203
+ skipStyleFile ? (0, schematics_1.filter)((path) => !path.endsWith('.__style__.template')) : (0, schematics_1.noop)(),
204
+ options.inlineTemplate ? (0, schematics_1.filter)((path) => !path.endsWith('.html.template')) : (0, schematics_1.noop)(),
205
+ (0, schematics_1.applyTemplates)({
206
+ ...third_party_1.strings,
207
+ 'if-flat': (s) => (options.flat ? '' : s),
208
+ ...options,
209
+ // Kendo specific, allows the component content to be included in inline and html files.
210
+ include(path) {
211
+ return (0, schematics_1.applyContentTemplate)(this)((0, schematics_1.url)("./files")(context).get(path)).content.toString();
212
+ },
213
+ }),
214
+ !options.type
215
+ ? (0, schematics_1.forEach)(((file) => {
216
+ return file.path.includes('..')
217
+ ? {
218
+ content: file.content,
219
+ path: file.path.replace('..', '.'),
220
+ }
221
+ : file;
222
+ }))
223
+ : (0, schematics_1.noop)(),
224
+ (0, schematics_1.move)(parsedPath.path),
225
+ ]);
226
+ return (0, schematics_1.chain)([
227
+ (0, third_party_1.addDeclarationToNgModule)({
228
+ type: 'component',
229
+ ...options,
230
+ }),
231
+ (0, schematics_1.mergeWith)(templateSource),
232
+ // Kendo template specific, will add a sample data source file
233
+ createDataSource(options),
234
+ ]);
235
+ };
236
+ }
237
+ exports.default = default_1;
238
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/schematics/src/chart/index.ts"],"names":[],"mappings":"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"}