Merge pull request #4778 from vertxxyz/feature/4771_tickInterval-support-for-sec-and-ms

Added support for millisecond and second to gantt tickInterval
This commit is contained in:
Sidharth Vinod 2023-09-06 13:03:05 +00:00 committed by GitHub
commit c212490248
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 68 additions and 10 deletions

View File

@ -330,6 +330,48 @@ describe('Gantt diagram', () => {
); );
}); });
it('should render a gantt diagram with tick is 2 milliseconds', () => {
imgSnapshotTest(
`
gantt
title A Gantt Diagram
dateFormat SSS
axisFormat %Lms
tickInterval 2millisecond
excludes weekends
section Section
A task : a1, 000, 6ms
Another task : after a1, 6ms
section Another
Task in sec : a2, 006, 3ms
another task : 3ms
`,
{}
);
});
it('should render a gantt diagram with tick is 2 seconds', () => {
imgSnapshotTest(
`
gantt
title A Gantt Diagram
dateFormat ss
axisFormat %Ss
tickInterval 2second
excludes weekends
section Section
A task : a1, 00, 6s
Another task : after a1, 6s
section Another
Task in sec : 06, 3s
another task : 3s
`,
{}
);
});
it('should render a gantt diagram with tick is 15 minutes', () => { it('should render a gantt diagram with tick is 15 minutes', () => {
imgSnapshotTest( imgSnapshotTest(
` `

View File

@ -241,7 +241,7 @@ The following formatting strings are supported:
More info in: <https://github.com/d3/d3-time-format/tree/v4.0.0#locale_format> More info in: <https://github.com/d3/d3-time-format/tree/v4.0.0#locale_format>
### Axis ticks ### Axis ticks (v10.3.0+)
The default output ticks are auto. You can custom your `tickInterval`, like `1day` or `1week`. The default output ticks are auto. You can custom your `tickInterval`, like `1day` or `1week`.
@ -252,7 +252,7 @@ tickInterval 1day
The pattern is: The pattern is:
```javascript ```javascript
/^([1-9][0-9]*)(minute|hour|day|week|month)$/; /^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/;
``` ```
More info in: <https://github.com/d3/d3-time#interval_every> More info in: <https://github.com/d3/d3-time#interval_every>
@ -271,7 +271,7 @@ gantt
weekday monday weekday monday
``` ```
Support: v10.3.0+ > **Warning** > `millisecond` and `second` support was added in vMERMAID_RELEASE_VERSION
## Output in compact mode ## Output in compact mode

View File

@ -1048,7 +1048,7 @@ export interface GanttDiagramConfig extends BaseDiagramConfig {
* Pattern is: * Pattern is:
* *
* ```javascript * ```javascript
* /^([1-9][0-9]*)(minute|hour|day|week|month)$/ * /^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/
* ``` * ```
* *
*/ */

View File

@ -10,6 +10,8 @@ import {
axisBottom, axisBottom,
axisTop, axisTop,
timeFormat, timeFormat,
timeMillisecond,
timeSecond,
timeMinute, timeMinute,
timeHour, timeHour,
timeDay, timeDay,
@ -573,7 +575,7 @@ export const draw = function (text, id, version, diagObj) {
.tickSize(-h + theTopPad + conf.gridLineStartPadding) .tickSize(-h + theTopPad + conf.gridLineStartPadding)
.tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || '%Y-%m-%d')); .tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));
const reTickInterval = /^([1-9]\d*)(minute|hour|day|week|month)$/; const reTickInterval = /^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/;
const resultTickInterval = reTickInterval.exec( const resultTickInterval = reTickInterval.exec(
diagObj.db.getTickInterval() || conf.tickInterval diagObj.db.getTickInterval() || conf.tickInterval
); );
@ -584,6 +586,12 @@ export const draw = function (text, id, version, diagObj) {
const weekday = diagObj.db.getWeekday() || conf.weekday; const weekday = diagObj.db.getWeekday() || conf.weekday;
switch (interval) { switch (interval) {
case 'millisecond':
bottomXAxis.ticks(timeMillisecond.every(every));
break;
case 'second':
bottomXAxis.ticks(timeSecond.every(every));
break;
case 'minute': case 'minute':
bottomXAxis.ticks(timeMinute.every(every)); bottomXAxis.ticks(timeMinute.every(every));
break; break;
@ -625,6 +633,12 @@ export const draw = function (text, id, version, diagObj) {
const weekday = diagObj.db.getWeekday() || conf.weekday; const weekday = diagObj.db.getWeekday() || conf.weekday;
switch (interval) { switch (interval) {
case 'millisecond':
topXAxis.ticks(timeMillisecond.every(every));
break;
case 'second':
topXAxis.ticks(timeSecond.every(every));
break;
case 'minute': case 'minute':
topXAxis.ticks(timeMinute.every(every)); topXAxis.ticks(timeMinute.every(every));
break; break;

View File

@ -173,7 +173,7 @@ The following formatting strings are supported:
More info in: [https://github.com/d3/d3-time-format/tree/v4.0.0#locale_format](https://github.com/d3/d3-time-format/tree/v4.0.0#locale_format) More info in: [https://github.com/d3/d3-time-format/tree/v4.0.0#locale_format](https://github.com/d3/d3-time-format/tree/v4.0.0#locale_format)
### Axis ticks ### Axis ticks (v10.3.0+)
The default output ticks are auto. You can custom your `tickInterval`, like `1day` or `1week`. The default output ticks are auto. You can custom your `tickInterval`, like `1day` or `1week`.
@ -184,7 +184,7 @@ tickInterval 1day
The pattern is: The pattern is:
```javascript ```javascript
/^([1-9][0-9]*)(minute|hour|day|week|month)$/; /^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/;
``` ```
More info in: [https://github.com/d3/d3-time#interval_every](https://github.com/d3/d3-time#interval_every) More info in: [https://github.com/d3/d3-time#interval_every](https://github.com/d3/d3-time#interval_every)
@ -197,7 +197,9 @@ gantt
weekday monday weekday monday
``` ```
Support: v10.3.0+ ```warning
`millisecond` and `second` support was added in vMERMAID_RELEASE_VERSION
```
## Output in compact mode ## Output in compact mode

View File

@ -1524,10 +1524,10 @@ $defs: # JSON Schema definition (maybe we should move these to a seperate file)
Pattern is: Pattern is:
```javascript ```javascript
/^([1-9][0-9]*)(minute|hour|day|week|month)$/ /^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/
``` ```
type: string type: string
pattern: ^([1-9][0-9]*)(minute|hour|day|week|month)$ pattern: ^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$
topAxis: topAxis:
description: | description: |
When this flag is set, date labels will be added to the top of the chart When this flag is set, date labels will be added to the top of the chart