resolve PR comments

This commit is contained in:
darshanr0107
2025-07-10 15:49:53 +05:30
parent fce7cabb71
commit 35a92efcdc
3 changed files with 36 additions and 6 deletions

View File

@@ -661,6 +661,35 @@ describe('Gantt diagram', () => {
);
});
it('should render a gantt diagram excluding saturday and sunday in YYYY-MM-DD HH:mm:ss format', () => {
imgSnapshotTest(
`
gantt
dateFormat YYYY-MM-DD HH:mm:ss
excludes weekends
weekend saturday
section Section
A task :a1, 2025-07-04 20:30:30, 2025-07-08 10:30:30
Another task:after a1, 20h
`,
{}
);
});
it('should render a gantt diagram excluding friday and saturday in YYYY-MM-DD HH:mm:ss format', () => {
imgSnapshotTest(
`
gantt
dateFormat YYYY-MM-DD HH:mm:ss
excludes weekends
weekend friday
section Section
A task :a1, 2025-07-04 20:30:30, 2025-07-08 10:30:30
Another task:after a1, 20h
`,
{}
);
});
it("should render when there's a semicolon in the title", () => {
imgSnapshotTest(
`

View File

@@ -167,7 +167,10 @@ export const getTasks = function () {
};
export const isInvalidDate = function (date, dateFormat, excludes, includes) {
if (includes.includes(date.format(dateFormat.trim()))) {
const formattedDate = date.format(dateFormat.trim());
const dateOnly = date.format('YYYY-MM-DD');
if (includes.includes(formattedDate) || includes.includes(dateOnly)) {
return false;
}
if (
@@ -180,7 +183,7 @@ export const isInvalidDate = function (date, dateFormat, excludes, includes) {
if (excludes.includes(date.format('dddd').toLowerCase())) {
return true;
}
return excludes.includes(date.format(dateFormat.trim()));
return excludes.includes(formattedDate) || excludes.includes(dateOnly);
};
export const setWeekday = function (txt) {

View File

@@ -554,14 +554,12 @@ export const draw = function (text, id, version, diagObj) {
return;
}
const normalizedExcludes = excludes.map((d) => dayjs(d).format('YYYY-MM-DD'));
const normalizedIncludes = includes.map((d) => dayjs(d).format('YYYY-MM-DD'));
const dateFormat = diagObj.db.getDateFormat();
const excludeRanges = [];
let range = null;
let d = dayjs(minTime);
while (d.valueOf() <= maxTime) {
const dStr = d.format('YYYY-MM-DD');
if (normalizedExcludes.includes(dStr) && !normalizedIncludes.includes(dStr)) {
if (diagObj.db.isInvalidDate(d, dateFormat, excludes, includes)) {
if (!range) {
range = {
start: d,