termcast 1.4.1 → 1.5.0
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.
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +8 -7
- package/dist/build.js.map +1 -1
- package/dist/cli.js +0 -40
- package/dist/cli.js.map +1 -1
- package/dist/components/bar-graph.d.ts +23 -8
- package/dist/components/bar-graph.d.ts.map +1 -1
- package/dist/components/bar-graph.js +84 -40
- package/dist/components/bar-graph.js.map +1 -1
- package/dist/components/dotted-line-graph.d.ts +86 -0
- package/dist/components/dotted-line-graph.d.ts.map +1 -0
- package/dist/components/dotted-line-graph.js +260 -0
- package/dist/components/dotted-line-graph.js.map +1 -0
- package/dist/components/extension-preferences.d.ts.map +1 -1
- package/dist/components/extension-preferences.js +1 -10
- package/dist/components/extension-preferences.js.map +1 -1
- package/dist/components/graph.d.ts.map +1 -1
- package/dist/components/graph.js +7 -1
- package/dist/components/graph.js.map +1 -1
- package/dist/components/histogram.d.ts +42 -0
- package/dist/components/histogram.d.ts.map +1 -0
- package/dist/components/histogram.js +115 -0
- package/dist/components/histogram.js.map +1 -0
- package/dist/components/horizontal-bar-graph.d.ts +47 -0
- package/dist/components/horizontal-bar-graph.d.ts.map +1 -0
- package/dist/components/horizontal-bar-graph.js +137 -0
- package/dist/components/horizontal-bar-graph.js.map +1 -0
- package/dist/components/list.d.ts +2 -0
- package/dist/components/list.d.ts.map +1 -1
- package/dist/components/list.js +10 -10
- package/dist/components/list.js.map +1 -1
- package/dist/examples/bar-graph-weekly.js +2 -2
- package/dist/examples/bar-graph-weekly.js.map +1 -1
- package/dist/examples/charts-showcase-barchart.d.ts +2 -0
- package/dist/examples/charts-showcase-barchart.d.ts.map +1 -0
- package/dist/examples/charts-showcase-barchart.js +10 -0
- package/dist/examples/charts-showcase-barchart.js.map +1 -0
- package/dist/examples/charts-showcase-bargraph.d.ts +2 -0
- package/dist/examples/charts-showcase-bargraph.d.ts.map +1 -0
- package/dist/examples/charts-showcase-bargraph.js +60 -0
- package/dist/examples/charts-showcase-bargraph.js.map +1 -0
- package/dist/examples/charts-showcase-candle.d.ts +2 -0
- package/dist/examples/charts-showcase-candle.d.ts.map +1 -0
- package/dist/examples/charts-showcase-candle.js +30 -0
- package/dist/examples/charts-showcase-candle.js.map +1 -0
- package/dist/examples/charts-showcase-graph.d.ts +2 -0
- package/dist/examples/charts-showcase-graph.d.ts.map +1 -0
- package/dist/examples/charts-showcase-graph.js +33 -0
- package/dist/examples/charts-showcase-graph.js.map +1 -0
- package/dist/examples/charts-showcase-heatmap.d.ts +2 -0
- package/dist/examples/charts-showcase-heatmap.d.ts.map +1 -0
- package/dist/examples/charts-showcase-heatmap.js +36 -0
- package/dist/examples/charts-showcase-heatmap.js.map +1 -0
- package/dist/examples/charts-showcase-mixed.d.ts +2 -0
- package/dist/examples/charts-showcase-mixed.d.ts.map +1 -0
- package/dist/examples/charts-showcase-mixed.js +30 -0
- package/dist/examples/charts-showcase-mixed.js.map +1 -0
- package/dist/examples/charts-showcase-progress.d.ts +2 -0
- package/dist/examples/charts-showcase-progress.d.ts.map +1 -0
- package/dist/examples/charts-showcase-progress.js +10 -0
- package/dist/examples/charts-showcase-progress.js.map +1 -0
- package/dist/examples/graph-multi-series.js +1 -1
- package/dist/examples/graph-multi-series.js.map +1 -1
- package/dist/examples/horizontal-bar-graph-weekly.d.ts +2 -0
- package/dist/examples/horizontal-bar-graph-weekly.d.ts.map +1 -0
- package/dist/examples/horizontal-bar-graph-weekly.js +67 -0
- package/dist/examples/horizontal-bar-graph-weekly.js.map +1 -0
- package/dist/examples/simple-dotted-line-graph.d.ts +2 -0
- package/dist/examples/simple-dotted-line-graph.d.ts.map +1 -0
- package/dist/examples/simple-dotted-line-graph.js +39 -0
- package/dist/examples/simple-dotted-line-graph.js.map +1 -0
- package/dist/examples/simple-histogram.d.ts +2 -0
- package/dist/examples/simple-histogram.d.ts.map +1 -0
- package/dist/examples/simple-histogram.js +47 -0
- package/dist/examples/simple-histogram.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/platform/node/sqlite.d.ts +6 -5
- package/dist/platform/node/sqlite.d.ts.map +1 -1
- package/dist/platform/node/sqlite.js +30 -14
- package/dist/platform/node/sqlite.js.map +1 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +11 -9
- package/dist/theme.js.map +1 -1
- package/dist/utils/run-command.d.ts.map +1 -1
- package/dist/utils/run-command.js +8 -19
- package/dist/utils/run-command.js.map +1 -1
- package/dist/utils.d.ts +1 -19
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -100
- package/dist/utils.js.map +1 -1
- package/package.json +6 -8
- package/src/build.tsx +11 -10
- package/src/cli.tsx +3 -40
- package/src/compile.vitest.tsx +3 -3
- package/src/components/bar-graph.tsx +217 -111
- package/src/components/dotted-line-graph.tsx +407 -0
- package/src/components/extension-preferences.tsx +2 -12
- package/src/components/graph.tsx +5 -1
- package/src/components/histogram.tsx +228 -0
- package/src/components/horizontal-bar-graph.tsx +279 -0
- package/src/components/list.tsx +20 -15
- package/src/examples/action-shortcut.vitest.tsx +17 -17
- package/src/examples/bar-graph-weekly.tsx +2 -2
- package/src/examples/bar-graph-weekly.vitest.tsx +63 -62
- package/src/examples/charts-showcase-bargraph.tsx +103 -0
- package/src/examples/detail-metadata-showcase.vitest.tsx +12 -12
- package/src/examples/form-basic.vitest.tsx +11 -11
- package/src/examples/form-dropdown.vitest.tsx +11 -11
- package/src/examples/form-scroll.vitest.tsx +1 -1
- package/src/examples/form-tagpicker.vitest.tsx +11 -11
- package/src/examples/github.vitest.tsx +22 -22
- package/src/examples/graph-bar-chart.vitest.tsx +8 -8
- package/src/examples/graph-multi-series.tsx +1 -1
- package/src/examples/graph-row.vitest.tsx +14 -14
- package/src/examples/graph-styles.vitest.tsx +77 -77
- package/src/examples/horizontal-bar-graph-weekly.tsx +138 -0
- package/src/examples/horizontal-bar-graph-weekly.vitest.tsx +164 -0
- package/src/examples/list-detail-metadata.vitest.tsx +4 -4
- package/src/examples/list-with-detail.vitest.tsx +46 -46
- package/src/examples/simple-candle-chart.vitest.tsx +8 -8
- package/src/examples/simple-dotted-line-graph.tsx +53 -0
- package/src/examples/simple-dotted-line-graph.vitest.tsx +62 -0
- package/src/examples/simple-grid.vitest.tsx +4 -4
- package/src/examples/simple-heatmap.vitest.tsx +9 -9
- package/src/examples/simple-histogram.tsx +90 -0
- package/src/examples/simple-navigation.vitest.tsx +4 -4
- package/src/examples/swift-extension.vitest.tsx +3 -3
- package/src/extensions/dev.vitest.tsx +8 -8
- package/src/index.tsx +21 -0
- package/src/platform/node/sqlite.ts +29 -13
- package/src/theme.tsx +11 -10
- package/src/utils/run-command.tsx +10 -19
- package/src/utils.tsx +0 -163
- package/src/examples/store.tsx +0 -4
- package/src/examples/store.vitest.tsx +0 -78
- package/src/extensions/home.tsx +0 -227
- package/src/extensions/store.tsx +0 -375
|
@@ -147,7 +147,7 @@ test('form tagpicker shows inline options', async () => {
|
|
|
147
147
|
|
|
148
148
|
|
|
149
149
|
|
|
150
|
-
|
|
150
|
+
▪︎ TagPicker Component Demo
|
|
151
151
|
│ Test tag picker with multiple selection support
|
|
152
152
|
│
|
|
153
153
|
◆ Favorite Sport
|
|
@@ -207,7 +207,7 @@ test('form tagpicker shows inline options', async () => {
|
|
|
207
207
|
|
|
208
208
|
|
|
209
209
|
|
|
210
|
-
|
|
210
|
+
▪︎ TagPicker Component Demo
|
|
211
211
|
│ Test tag picker with multiple selection support
|
|
212
212
|
│
|
|
213
213
|
◆ Favorite Sport
|
|
@@ -264,7 +264,7 @@ test('form tagpicker shows inline options', async () => {
|
|
|
264
264
|
|
|
265
265
|
|
|
266
266
|
|
|
267
|
-
|
|
267
|
+
▪︎ TagPicker Component Demo
|
|
268
268
|
│ Test tag picker with multiple selection support
|
|
269
269
|
│
|
|
270
270
|
◆ Favorite Sport
|
|
@@ -389,7 +389,7 @@ test('form tagpicker keyboard navigation', async () => {
|
|
|
389
389
|
|
|
390
390
|
|
|
391
391
|
|
|
392
|
-
|
|
392
|
+
▪︎ TagPicker Component Demo
|
|
393
393
|
│ Test tag picker with multiple selection support
|
|
394
394
|
│
|
|
395
395
|
◆ Favorite Sport
|
|
@@ -446,7 +446,7 @@ test('form tagpicker keyboard navigation', async () => {
|
|
|
446
446
|
|
|
447
447
|
|
|
448
448
|
|
|
449
|
-
|
|
449
|
+
▪︎ TagPicker Component Demo
|
|
450
450
|
│ Test tag picker with multiple selection support
|
|
451
451
|
│
|
|
452
452
|
◆ Favorite Sport
|
|
@@ -503,7 +503,7 @@ test('form tagpicker keyboard navigation', async () => {
|
|
|
503
503
|
|
|
504
504
|
|
|
505
505
|
|
|
506
|
-
|
|
506
|
+
▪︎ TagPicker Component Demo
|
|
507
507
|
│ Test tag picker with multiple selection support
|
|
508
508
|
│
|
|
509
509
|
◆ Favorite Sport
|
|
@@ -560,7 +560,7 @@ test('form tagpicker keyboard navigation', async () => {
|
|
|
560
560
|
|
|
561
561
|
|
|
562
562
|
|
|
563
|
-
|
|
563
|
+
▪︎ TagPicker Component Demo
|
|
564
564
|
│ Test tag picker with multiple selection support
|
|
565
565
|
│
|
|
566
566
|
◆ Favorite Sport
|
|
@@ -625,7 +625,7 @@ test('form tagpicker with default value', async () => {
|
|
|
625
625
|
|
|
626
626
|
|
|
627
627
|
|
|
628
|
-
|
|
628
|
+
▪︎ TagPicker Component Demo
|
|
629
629
|
│ Test tag picker with multiple selection support
|
|
630
630
|
│
|
|
631
631
|
◆ Favorite Sport
|
|
@@ -682,7 +682,7 @@ test('form tagpicker with default value', async () => {
|
|
|
682
682
|
|
|
683
683
|
|
|
684
684
|
|
|
685
|
-
|
|
685
|
+
▪︎ TagPicker Component Demo
|
|
686
686
|
│ Test tag picker with multiple selection support
|
|
687
687
|
│
|
|
688
688
|
◆ Favorite Sport
|
|
@@ -746,7 +746,7 @@ test('form tagpicker with default value', async () => {
|
|
|
746
746
|
|
|
747
747
|
|
|
748
748
|
|
|
749
|
-
|
|
749
|
+
▪︎ TagPicker Component Demo
|
|
750
750
|
│ Test tag picker with multiple selection support
|
|
751
751
|
│
|
|
752
752
|
◆ Favorite Sport
|
|
@@ -770,7 +770,7 @@ test('form tagpicker with default value', async () => {
|
|
|
770
770
|
│ ○ Poland
|
|
771
771
|
│
|
|
772
772
|
│
|
|
773
|
-
|
|
773
|
+
▪︎ Submitted Data
|
|
774
774
|
│ {
|
|
775
775
|
│ "sports": [
|
|
776
776
|
│ "basketball"
|
|
@@ -57,19 +57,19 @@ test.skipIf(!extensionExists)('github extension shows command list on launch', a
|
|
|
57
57
|
// Wait for command list to appear (extension has multiple commands)
|
|
58
58
|
// Don't match "Commands" alone - it falsely matches "Building 18 commands..." build log
|
|
59
59
|
const initialView = await session.text({
|
|
60
|
-
waitFor: (text) => /My
|
|
60
|
+
waitFor: (text) => /My Pu.*uest|Search .*sitories/i.test(text),
|
|
61
61
|
timeout: 30000,
|
|
62
62
|
})
|
|
63
63
|
|
|
64
64
|
// Wait for the full command list to render.
|
|
65
65
|
// The list can paint the first item before all descendants are registered.
|
|
66
66
|
await session.text({
|
|
67
|
-
waitFor: (text) => text.includes('My
|
|
67
|
+
waitFor: (text) => text.includes('My Pu...uest') && text.includes('Search ...sitories'),
|
|
68
68
|
timeout: 30000,
|
|
69
69
|
})
|
|
70
70
|
|
|
71
|
-
expect(initialView).toContain('My
|
|
72
|
-
expect(initialView).toContain('Search
|
|
71
|
+
expect(initialView).toContain('My Pu...uest')
|
|
72
|
+
expect(initialView).toContain('Search ...sitories')
|
|
73
73
|
expect(initialView).toMatchInlineSnapshot(`
|
|
74
74
|
"
|
|
75
75
|
|
|
@@ -79,19 +79,19 @@ test.skipIf(!extensionExists)('github extension shows command list on launch', a
|
|
|
79
79
|
> Search commands...
|
|
80
80
|
|
|
81
81
|
Commands
|
|
82
|
-
›My
|
|
83
|
-
Search
|
|
84
|
-
Create
|
|
85
|
-
My
|
|
82
|
+
›My Pu...uest List pull requests you cre...d in, or were mentioned in. view
|
|
83
|
+
Search ...RequestsSearch recent pull reque...lly in all repositories. view
|
|
84
|
+
Create ...RequestCreate a pull request in...your GitHub repositories. view
|
|
85
|
+
My IssuesList issues created by you, ...ned to you or mentioning you. view
|
|
86
86
|
Search Issues Search recent issues globally in all repositories. view
|
|
87
87
|
Create Issue Create an issue in one of your GitHub repositories. view
|
|
88
88
|
Create Branch Create a branch in one of your GitHub repositories view
|
|
89
|
-
Search
|
|
89
|
+
Search ...sitoriesSearch in your public or...te repositories by name. view
|
|
90
90
|
My Latest Repositories List your repositories by latest updated view
|
|
91
91
|
My Starred Repositories List repositories you have starred view
|
|
92
92
|
Workflow Runs Manage workflow runs for a selected GitHub repository. view
|
|
93
|
-
|
|
94
|
-
Search
|
|
93
|
+
Noti...ionsList inbox notifications fr...es or a selected repository. view
|
|
94
|
+
Search ...ussionsSearch recent Discussion...bally in all repositories view
|
|
95
95
|
My Discussions Show your Discussions view
|
|
96
96
|
My Projects Show your Projects view
|
|
97
97
|
|
|
@@ -108,7 +108,7 @@ test.skipIf(!extensionExists)('github extension shows command list on launch', a
|
|
|
108
108
|
test.skipIf(!extensionExists)('github extension can navigate commands', async () => {
|
|
109
109
|
// Wait for command list
|
|
110
110
|
await session.text({
|
|
111
|
-
waitFor: (text) => text.includes('My
|
|
111
|
+
waitFor: (text) => text.includes('My Pu...uest') && text.includes('Search ...sitories'),
|
|
112
112
|
timeout: 30000,
|
|
113
113
|
})
|
|
114
114
|
|
|
@@ -128,19 +128,19 @@ test.skipIf(!extensionExists)('github extension can navigate commands', async ()
|
|
|
128
128
|
> Search commands...
|
|
129
129
|
|
|
130
130
|
Commands
|
|
131
|
-
My
|
|
132
|
-
Search
|
|
133
|
-
›Create
|
|
134
|
-
My
|
|
131
|
+
My Pu...uest List pull requests you cre...d in, or were mentioned in. view
|
|
132
|
+
Search ...RequestsSearch recent pull reque...lly in all repositories. view
|
|
133
|
+
›Create ...RequestCreate a pull request in...your GitHub repositories. view
|
|
134
|
+
My IssuesList issues created by you, ...ned to you or mentioning you. view
|
|
135
135
|
Search Issues Search recent issues globally in all repositories. view
|
|
136
136
|
Create Issue Create an issue in one of your GitHub repositories. view
|
|
137
137
|
Create Branch Create a branch in one of your GitHub repositories view
|
|
138
|
-
Search
|
|
138
|
+
Search ...sitoriesSearch in your public or...te repositories by name. view
|
|
139
139
|
My Latest Repositories List your repositories by latest updated view
|
|
140
140
|
My Starred Repositories List repositories you have starred view
|
|
141
141
|
Workflow Runs Manage workflow runs for a selected GitHub repository. view
|
|
142
|
-
|
|
143
|
-
Search
|
|
142
|
+
Noti...ionsList inbox notifications fr...es or a selected repository. view
|
|
143
|
+
Search ...ussionsSearch recent Discussion...bally in all repositories view
|
|
144
144
|
My Discussions Show your Discussions view
|
|
145
145
|
My Projects Show your Projects view
|
|
146
146
|
|
|
@@ -157,7 +157,7 @@ test.skipIf(!extensionExists)('github extension can navigate commands', async ()
|
|
|
157
157
|
test.skipIf(!extensionExists)('github extension can open actions panel', async () => {
|
|
158
158
|
// Wait for command list
|
|
159
159
|
await session.text({
|
|
160
|
-
waitFor: (text) => /My
|
|
160
|
+
waitFor: (text) => /My Pu.*uest|Search .*sitories/i.test(text),
|
|
161
161
|
timeout: 30000,
|
|
162
162
|
})
|
|
163
163
|
|
|
@@ -209,7 +209,7 @@ test.skipIf(!extensionExists)('github extension can open actions panel', async (
|
|
|
209
209
|
test.skipIf(!extensionExists)('github extension can search commands', async () => {
|
|
210
210
|
// Wait for command list
|
|
211
211
|
await session.text({
|
|
212
|
-
waitFor: (text) => /My
|
|
212
|
+
waitFor: (text) => /My Pu.*uest|Search .*sitories/i.test(text),
|
|
213
213
|
timeout: 30000,
|
|
214
214
|
})
|
|
215
215
|
|
|
@@ -219,7 +219,7 @@ test.skipIf(!extensionExists)('github extension can search commands', async () =
|
|
|
219
219
|
await session.type('workflow')
|
|
220
220
|
|
|
221
221
|
const filteredList = await session.text({
|
|
222
|
-
waitFor: (text) => /Workflow Runs/i.test(text) && !/My
|
|
222
|
+
waitFor: (text) => /Workflow Runs/i.test(text) && !/My Pu.*uest/i.test(text),
|
|
223
223
|
timeout: 5000,
|
|
224
224
|
})
|
|
225
225
|
|
|
@@ -36,7 +36,7 @@ test('initial render shows bar chart for Monthly Budget', async () => {
|
|
|
36
36
|
|
|
37
37
|
›Monthly Budget Spent / Remaining / Savings │ ┌Spent: 78.6%┐
|
|
38
38
|
Disk Usage System / Apps / Media / Free │
|
|
39
|
-
|
|
39
|
+
Inves...tfolioStocks / Bonds...o / Real Estate │
|
|
40
40
|
CPU Time User / System / IO Wait / Idle │ ────────────────────────────────────────────
|
|
41
41
|
Revenue by Product 6 product lines │
|
|
42
42
|
A/B Test Split Control vs Variant (50/50) │ Total: $6,174
|
|
@@ -45,7 +45,7 @@ test('initial render shows bar chart for Monthly Budget', async () => {
|
|
|
45
45
|
Equal Distribution 10 equal segments │
|
|
46
46
|
Custom Colors Explicit color per segment │ Saved: 10.0%
|
|
47
47
|
Needs vs Wants 50/30/20 budget rule │
|
|
48
|
-
Stress Test (20 items
|
|
48
|
+
Stress Test (20 items Many small...al segments │
|
|
49
49
|
│
|
|
50
50
|
│
|
|
51
51
|
↵ open detail ↑↓ navigate ^k actions :vi │
|
|
@@ -93,7 +93,7 @@ test('navigate to Market Share - dominant + tiny segments', async () => {
|
|
|
93
93
|
|
|
94
94
|
Monthly Budget Spent / Remaining / Savings │ ┌Leader: 85.0%┐
|
|
95
95
|
Disk Usage System / Apps / Media / Free │
|
|
96
|
-
|
|
96
|
+
Inves...tfolioStocks / Bonds...o / Real Estate │
|
|
97
97
|
CPU Time User / System / IO Wait / Idle │ ────────────────────────────────────────────
|
|
98
98
|
Revenue by Product 6 product lines │
|
|
99
99
|
A/B Test Split Control vs Variant (50/50) │ HHI: 7,264 (monopoly)
|
|
@@ -102,7 +102,7 @@ test('navigate to Market Share - dominant + tiny segments', async () => {
|
|
|
102
102
|
Equal Distribution 10 equal segments │
|
|
103
103
|
Custom Colors Explicit color per segment │ Visible: Tiny ones hidden
|
|
104
104
|
Needs vs Wants 50/30/20 budget rule │
|
|
105
|
-
Stress Test (20 items
|
|
105
|
+
Stress Test (20 items Many small...al segments │
|
|
106
106
|
│
|
|
107
107
|
│
|
|
108
108
|
↵ open detail ↑↓ navigate ^k actions :vi │
|
|
@@ -149,7 +149,7 @@ test('navigate to Equal Distribution - 10 segments', async () => {
|
|
|
149
149
|
|
|
150
150
|
Monthly Budget Spent / Remaining / Savings │
|
|
151
151
|
Disk Usage System / Apps / Media / Free │
|
|
152
|
-
|
|
152
|
+
Inves...tfolioStocks / Bonds...o / Real Estate │ ────────────────────────────────────────────
|
|
153
153
|
CPU Time User / System / IO Wait / Idle │
|
|
154
154
|
Revenue by Product 6 product lines │ Segments: 10
|
|
155
155
|
A/B Test Split Control vs Variant (50/50) │
|
|
@@ -158,7 +158,7 @@ test('navigate to Equal Distribution - 10 segments', async () => {
|
|
|
158
158
|
›Equal Distribution 10 equal segments │
|
|
159
159
|
Custom Colors Explicit color per segment │
|
|
160
160
|
Needs vs Wants 50/30/20 budget rule │
|
|
161
|
-
Stress Test (20 items
|
|
161
|
+
Stress Test (20 items Many small...al segments │
|
|
162
162
|
│
|
|
163
163
|
│
|
|
164
164
|
↵ open detail ↑↓ navigate ^k actions :vi │
|
|
@@ -205,7 +205,7 @@ test('navigate to Stress Test - 20 segments', async () => {
|
|
|
205
205
|
|
|
206
206
|
Monthly Budget Spent / Remaining / Savings │
|
|
207
207
|
Disk Usage System / Apps / Media / Free │
|
|
208
|
-
|
|
208
|
+
Inves...tfolioStocks / Bonds...o / Real Estate │ ────────────────────────────────────────────
|
|
209
209
|
CPU Time User / System / IO Wait / Idle │
|
|
210
210
|
Revenue by Product 6 product lines │ Segments: 20
|
|
211
211
|
A/B Test Split Control vs Variant (50/50) │
|
|
@@ -214,7 +214,7 @@ test('navigate to Stress Test - 20 segments', async () => {
|
|
|
214
214
|
Equal Distribution 10 equal segments │
|
|
215
215
|
Custom Colors Explicit color per segment │
|
|
216
216
|
Needs vs Wants 50/30/20 budget rule │
|
|
217
|
-
›Stress Test (20 items
|
|
217
|
+
›Stress Test (20 items Many small...al segments │
|
|
218
218
|
│
|
|
219
219
|
│
|
|
220
220
|
↵ open detail ↑↓ navigate ^k actions :vi │
|
|
@@ -24,7 +24,7 @@ function GraphMultiSeries() {
|
|
|
24
24
|
<Detail
|
|
25
25
|
markdown="# Multi-Series Chart"
|
|
26
26
|
metadata={
|
|
27
|
-
<Graph height={12} xLabels={xLabels} yTicks={5}>
|
|
27
|
+
<Graph variant='area' height={12} xLabels={xLabels} yTicks={5}>
|
|
28
28
|
<Graph.Line data={prices} color={Color.Orange} title="Price" />
|
|
29
29
|
<Graph.Line data={sma} color={Color.Blue} title="SMA(5)" />
|
|
30
30
|
</Graph>
|
|
@@ -32,13 +32,13 @@ test('side detail shows two graphs in a row', async () => {
|
|
|
32
32
|
|
|
33
33
|
> Search...
|
|
34
34
|
|
|
35
|
-
›CPU vs Memory Area + Filled side by side │
|
|
35
|
+
›CPU vs Memory Area + Filled side by side │ CPU vs Memory ▲
|
|
36
36
|
Disk I/O Read vs Write operations │ █
|
|
37
37
|
Revenue vs Expenses Striped comparison │ █
|
|
38
|
-
Weather Station Temperature + Humidity │
|
|
39
|
-
Mixed Variants Area left, Striped right │
|
|
40
|
-
Sparse
|
|
41
|
-
│
|
|
38
|
+
Weather Station Temperature + Humidity │ Area chart (left) shows CPU with high █
|
|
39
|
+
Mixed Variants Area left, Striped right │ variance. █
|
|
40
|
+
Sparse ...(Zeros Filled vs Str...h zero values │ Filled chart (right) shows memory steadily █
|
|
41
|
+
│ climbing. █
|
|
42
42
|
│ █
|
|
43
43
|
│ 100│ ⡀ 100│ █
|
|
44
44
|
│ │ ⡄ ⣼⣷⡀ │ ▖▖▌▌ █
|
|
@@ -48,7 +48,7 @@ test('side detail shows two graphs in a row', async () => {
|
|
|
48
48
|
│ 33│⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧ 33│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
|
|
49
49
|
│ │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
|
|
50
50
|
│ 0│⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 0│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
|
|
51
|
-
│ 0h 6h 12h
|
|
51
|
+
│ 0h 6h 12h 18h 0h 6h 12h 18h
|
|
52
52
|
│
|
|
53
53
|
│ ───────────────────────────────────────────
|
|
54
54
|
│
|
|
@@ -156,7 +156,7 @@ test('esc returns from detail to list', async () => {
|
|
|
156
156
|
Revenue vs Expenses Striped comparison │ █
|
|
157
157
|
Weather Station Temperature + Humidity │ Area chart (left) shows CPU with high █
|
|
158
158
|
Mixed Variants Area left, Striped right │ variance. █
|
|
159
|
-
Sparse
|
|
159
|
+
Sparse ...(Zeros Filled vs Str...h zero values │ Filled chart (right) shows memory steadily █
|
|
160
160
|
│ climbing. █
|
|
161
161
|
│ █
|
|
162
162
|
│ 100│ ⡀ 100│ █
|
|
@@ -167,7 +167,7 @@ test('esc returns from detail to list', async () => {
|
|
|
167
167
|
│ 33│⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧ 33│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
|
|
168
168
|
│ │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
|
|
169
169
|
│ 0│⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 0│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
|
|
170
|
-
│ 0h 6h 12h
|
|
170
|
+
│ 0h 6h 12h 18h 0h 6h 12h 18h
|
|
171
171
|
│
|
|
172
172
|
│ ───────────────────────────────────────────
|
|
173
173
|
│
|
|
@@ -183,7 +183,7 @@ test('esc returns from detail to list', async () => {
|
|
|
183
183
|
test('sparse data with zeros shows baseline', async () => {
|
|
184
184
|
await session.text({
|
|
185
185
|
waitFor: (text) => {
|
|
186
|
-
return text.includes('Sparse
|
|
186
|
+
return text.includes('Sparse ...')
|
|
187
187
|
},
|
|
188
188
|
timeout: 10000,
|
|
189
189
|
})
|
|
@@ -195,7 +195,7 @@ test('sparse data with zeros shows baseline', async () => {
|
|
|
195
195
|
|
|
196
196
|
const text = await session.text({
|
|
197
197
|
waitFor: (text) => {
|
|
198
|
-
return text.includes('›Sparse
|
|
198
|
+
return text.includes('›Sparse ...')
|
|
199
199
|
},
|
|
200
200
|
timeout: 5000,
|
|
201
201
|
})
|
|
@@ -213,7 +213,7 @@ test('sparse data with zeros shows baseline', async () => {
|
|
|
213
213
|
Revenue vs Expenses Striped comparison │ █
|
|
214
214
|
Weather Station Temperature + Humidity │ Data with many zero values should show a █
|
|
215
215
|
Mixed Variants Area left, Striped right │ thin █
|
|
216
|
-
›Sparse
|
|
216
|
+
›Sparse ...(Zeros Filled vs Str...h zero values │ baseline line so bars are visible even at █
|
|
217
217
|
│ zero. █
|
|
218
218
|
│ █
|
|
219
219
|
│ 100│ ▖ 100│ ▖ █
|
|
@@ -224,7 +224,7 @@ test('sparse data with zeros shows baseline', async () => {
|
|
|
224
224
|
│ 33│ ▖ ▌▌▌ ▌▌▖ ▌▌▌ 33│ ▖ ▌▌▌ ▌▌▖ ▌▌▌
|
|
225
225
|
│ │ ▌▌▌▌▌▌▌▌▌▌ ▌▌▌ │ ▌▌▌▌▌▌▌▌▌▌ ▌▌▌
|
|
226
226
|
│ 0│▖▌▌▌▌▌▌▌▌▌▌▌▖▌▌▌▖ 0│▖▌▌▌▌▌▌▌▌▌▌▌▖▌▌▌▖
|
|
227
|
-
│ 0h 6h 12h
|
|
227
|
+
│ 0h 6h 12h 18h 0h 6h 12h 18h
|
|
228
228
|
│
|
|
229
229
|
│ ───────────────────────────────────────────
|
|
230
230
|
│
|
|
@@ -234,7 +234,7 @@ test('sparse data with zeros shows baseline', async () => {
|
|
|
234
234
|
"
|
|
235
235
|
`)
|
|
236
236
|
|
|
237
|
-
expect(text).toContain('›Sparse
|
|
237
|
+
expect(text).toContain('›Sparse ...')
|
|
238
238
|
}, 30000)
|
|
239
239
|
|
|
240
240
|
test('navigate to striped pair', async () => {
|
|
@@ -269,7 +269,7 @@ test('navigate to striped pair', async () => {
|
|
|
269
269
|
›Revenue vs Expenses Striped comparison │ █
|
|
270
270
|
Weather Station Temperature + Humidity │ Revenue growing faster than expenses. █
|
|
271
271
|
Mixed Variants Area left, Striped right │ Profit margin widening over the year. █
|
|
272
|
-
Sparse
|
|
272
|
+
Sparse ...(Zeros Filled vs Str...h zero values │ - Revenue: $10k** to **$75k █
|
|
273
273
|
│ - Expenses: $8k** to **$45k
|
|
274
274
|
│
|
|
275
275
|
│ 78│ ▖ 47│ ▖
|